diff --git a/.github/workflows/chart-library-benchmarks.yml b/.github/workflows/chart-library-benchmarks.yml
index e1f5f80..e85928a 100644
--- a/.github/workflows/chart-library-benchmarks.yml
+++ b/.github/workflows/chart-library-benchmarks.yml
@@ -44,6 +44,7 @@ jobs:
- run: pnpm format:check
- run: pnpm docs:check
- run: pnpm typecheck
+ - run: pnpm react-native:poc:types
- run: pnpm test
- run: pnpm package:check
- run: pnpm bundle:check
diff --git a/API-FRICTION.md b/API-FRICTION.md
index 6d3eb04..97e6695 100644
--- a/API-FRICTION.md
+++ b/API-FRICTION.md
@@ -177,6 +177,12 @@ Each entry records:
| F-139 | Top-level entries bypassed tarball validation | Tooling/Release | resolved |
| F-140 | Behavior config could erase responsive datum inference | API | monitoring |
| F-141 | Root barrels crossed the browser host boundary | API/Tooling | resolved |
+| F-142 | D3 declarations require a browser image global | Tooling | monitoring |
+| F-143 | Native interaction copied DOM-renderer policy | API | monitoring |
+| F-144 | CSS theme defaults reach the native scene compiler | API | monitoring |
+| F-145 | Text measurement omits native typography | API | monitoring |
+| F-146 | Packed declarations assume one platform global set | Tooling | monitoring |
+| F-147 | Metro skipped the fixture-owned Babel runtime | Tooling | resolved |
## Findings
@@ -3420,3 +3426,110 @@ Each entry records:
export, reconciliation, renderer, and SVG surface modules. That full
portable barrel measures 55.26 kB minified and 17.04 kB gzip; granular
subpaths remain the bundle-sensitive option.
+
+### F-142 — D3 declarations require a browser image global
+
+- Status: monitoring
+- Severity: medium
+- Owner: Tooling
+- Observed in: strict DOM-free React Native consumer typecheck
+- Friction: after Charts' DOM types were removed from the selected declaration
+ graph, `skipLibCheck: false` with native libraries still failed in
+ `@types/d3-array`. Its `blurImage` signature references the browser global
+ `ImageData`, even though the chart consumer does not import or call that API.
+- Current decision: keep the strict configuration as a sentinel. Do not add a
+ fake `ImageData` declaration, enable DOM libraries, or weaken the package's
+ runtime boundary to conceal an upstream declaration issue. The normal
+ React Native configuration passes.
+- Verification: the native type gate accepts only the two known
+ `@types/d3-array` diagnostics or a clean result after the upstream
+ declaration is fixed. It rejects every other diagnostic.
+
+### F-143 — Native interaction copied DOM-renderer policy
+
+- Status: monitoring
+- Severity: high
+- Owner: API
+- Observed in: React Native focus, selection, and tooltip proof
+- Friction: focus preset resolution, stable-point restoration, navigation
+ order, tooltip content construction, anchor resolution, and placement math
+ are pure behavior but live as private functions inside `renderer.ts`. The
+ native proof reproduced them to exercise realistic interaction.
+- Current decision: keep the duplication confined to the private proof. A
+ supported native package requires extracting renderer-neutral interaction
+ and tooltip state, with the DOM and native hosts consuming the same
+ implementation.
+- Verification: focused native tests cover strategy selection, grouping,
+ restoration, navigation, supported default content, and placement. The
+ default native tooltip still lacks the complete `items` formatting contract.
+
+### F-144 — CSS theme defaults reach the native scene compiler
+
+- Status: monitoring
+- Severity: high
+- Owner: API
+- Observed in: React Native paint resolution
+- Friction: the shared default theme contains `currentColor`, system CSS names,
+ and CSS custom properties. The native proof can resolve final paint strings
+ and their fallbacks, but a dynamic chart builder still receives the web
+ default theme before the host sees the scene.
+- Current decision: the private host resolves final paints explicitly and
+ never evaluates application CSS. Before release, runtime construction needs
+ an additive platform-default-theme option used both by dynamic build context
+ and final theme merging. Structured paint references may be warranted if
+ more host semantics appear.
+- Verification: native paint and full-scene tests contain no unresolved CSS
+ variable or `currentColor` output. Device themes and dynamic native-theme
+ builders remain unverified.
+
+### F-145 — Text measurement omits native typography
+
+- Status: monitoring
+- Severity: high
+- Owner: API
+- Observed in: React Native SVG labels and automatic guide layout
+- Friction: `ChartTextMeasureOptions` carries size and weight but not font
+ family, style, stretch, letter spacing, direction, locale, or font-scale
+ policy. The native painter accepts a `fontFamily`, while the shared layout
+ cannot ask a native measurer for the same font.
+- Current decision: expose the existing injected measurer in the proof and do
+ not claim text parity. Production work must complete the typography contract
+ and decide how native asynchronous measurement feeds deterministic scene
+ layout without hidden mounted views.
+- Verification: injected-measurer core tests pass. No iOS or Android font-scale
+ and clipping matrix has been run.
+
+### F-146 — Packed declarations assume one platform global set
+
+- Status: monitoring
+- Severity: medium
+- Owner: Tooling
+- Observed in: evaluating a release gate for the private React Native package
+- Friction: the existing packed fixture compiles web packages under DOM
+ libraries. Loading React Native declarations in that same TypeScript program
+ introduces incompatible duplicate globals. Removing DOM libraries makes the
+ web contracts invalid and also exposes F-142.
+- Current decision: keep the private proof out of the publishable-package
+ matrix. Its source package, native consumer, isolated bundle, Metro bundles,
+ and no-browser source-map boundary are checked separately.
+- Follow-up: add a native-specific build, pack, install, declaration, Metro,
+ and platform-condition fixture before making the package publishable.
+
+### F-147 — Metro skipped the fixture-owned Babel runtime
+
+- Status: resolved
+- Severity: medium
+- Owner: Tooling
+- Observed in: rebuilding the React Native POC after removing redundant root
+ dependencies
+- Friction: the example correctly declared `@babel/runtime`, but Metro resolved
+ React Native from pnpm's physical store path and searched that path's
+ ancestors instead of the example's `node_modules`. Production bundling
+ failed on `@babel/runtime/helpers/interopRequireDefault` unless the dependency
+ was duplicated at the workspace root.
+- Decision: configure Metro's `resolver.nodeModulesPaths` with the example and
+ workspace module roots. Keep Babel ownership in the example rather than
+ masking the monorepo resolution boundary with a root dependency.
+- Verification: all eight blank, RNSVG, core, and full-chart production bundles
+ complete for iOS and Android. The full-chart source-map checks also exclude
+ every guarded browser implementation module.
diff --git a/NATIVE-PLATFORM-SUPPORT-SPIKE.md b/NATIVE-PLATFORM-SUPPORT-SPIKE.md
new file mode 100644
index 0000000..e7959c7
--- /dev/null
+++ b/NATIVE-PLATFORM-SUPPORT-SPIKE.md
@@ -0,0 +1,874 @@
+# Native platform support spike
+
+Research date: 2026-07-30
+
+## Decision
+
+Full React Native support is feasible without replacing the chart grammar or
+the D3-based compiler. It is not an adapter-only project. The reusable unit is
+the keyed `ChartScene`; sizing, text, paint resolution, rendering, gestures,
+tooltips, animation, accessibility, and raster export need native
+implementations.
+
+Build in this order:
+
+1. Keep the compiler and existing focus algorithms DOM-free, extract the
+ browser-owned interaction state, and introduce a renderer-neutral
+ transition plan.
+2. Ship `react-native-svg` as the default React Native renderer.
+3. Add React Native Skia as an optional renderer for dense or frequently
+ updated charts, after measuring the crossover.
+4. Use the same core refactor to test a NativeScript Core view backed by
+ `@nativescript/canvas`.
+5. Treat Compose, SwiftUI, and Flutter as separate native products consuming a
+ portable definition or scene schema. They cannot share the live TypeScript
+ API.
+
+React Native is the highest-confidence target because its JavaScript runtime
+can execute the existing definitions, accessors, imported D3 modules, scales,
+and scene compiler. NativeScript is expected to reuse those layers, subject to
+a bundler and runtime proof. Kotlin, Swift, and Dart cannot preserve arbitrary
+JavaScript callbacks without embedding a JavaScript runtime.
+
+## What “everything” should mean
+
+Parity should be measured by outcome, not by reproducing browser mechanics.
+
+| Contract | Native parity |
+| ---------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| Data-to-scene behavior | The same definition and data produce equal normalized domains, mark keys, topology, and focus order; numeric geometry and runtime-formatted labels meet explicit tolerances. |
+| Visual behavior | Every current scene primitive, mark family, coordinate system, guide, legend, gradient, and clip renders within documented tolerances. |
+| Interaction behavior | Library-owned focus, grouped focus, activation, and pinning match. App-owned brush, zoom, scrub, range selection, and editing use documented native integration patterns. |
+| Motion behavior | Stable-key enter/update/exit, interruption, reduced motion, and incompatible-path fallback retain the same semantics. |
+| Accessibility behavior | A user can discover the chart, traverse or adjust the current datum, hear values, activate selections, and reach an application-provided complete data representation. |
+| Export behavior | JavaScript targets retain deterministic resource-aware SVG. Native renderers add platform bitmap snapshots and file/share integration. |
+| Web-only behavior | SSR, hydration, DOM callbacks, CSS selectors, and mouse-specific input remain supported by the web renderer; they are not native device requirements. |
+
+Pixel-identical text across browser engines, Core Text, Android text, and Skia
+is not a useful acceptance criterion. Geometry can be exact when renderers
+consume the same scene; independently ported compilers need numeric tolerances
+for geometry too.
+
+## Current repository boundary
+
+The repository already has most of the right compiler boundary:
+
+- `createChartRuntime` and `createChartScene` take definitions and logical
+ dimensions and produce a scene.
+- Marks emit seven portable node types: group, rule, polyline, area, dot,
+ rectangle, and label.
+- Cartesian, facet, polar, and geographic marks all end at those primitives.
+ Polar and geographic shapes carry path strings instead of requiring a DOM.
+- Focusable `ChartPoint` records are separate from painted nodes. This permits
+ renderer batching without losing datum identity or hit testing.
+- Resource-aware static SVG serialization through
+ `renderChartSvgWithResources` is already independent of a mounted browser
+ surface. The lower-level `renderChartSvg` does not emit gradient and clip
+ resources by itself.
+- The conformance corpus contains 100 cases, including 16 executable
+ interaction cases and 51 interaction scenarios. It supplies coverage, but
+ many cases combine definition, DOM mount, controls, selectors, and
+ DOM-specific gesture code. Native conformance first requires extracting
+ platform-neutral data and definition factories, then replacing mounts,
+ application controllers, and drivers.
+
+The public renderer and host boundary is browser-shaped:
+
+| Evidence | Native consequence |
+| --------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- |
+| `ChartSurface.element` is `Element`; `ChartRenderer.mount` accepts `HTMLElement`; render callbacks expose `HTMLElement` and `SVGSVGElement`. | A native renderer cannot implement the current public contract honestly. |
+| `renderer.ts` owns `ResizeObserver`, pointer and keyboard events, animation frames, DOM tooltips, focus, and reduced-motion queries. | Reusable interaction state is mixed with browser services. |
+| `canvas.ts` creates HTML canvases and reads `devicePixelRatio` and media queries. | Its painter can be extracted, but the current Canvas renderer cannot run in NativeScript or React Native. |
+| `dom-text.ts` reads computed CSS and measures through browser Canvas 2D. | Native layout needs a different font-resolution and measurement service. |
+| `RendererChart.tsx` imports `react-dom`, mounts `
` elements, injects HTML, and portals tooltips into DOM elements. | The React adapter is a web adapter, not a portable React component. |
+| Default theme colors use `currentColor` and CSS custom properties. | Native renderers need concrete colors or platform-resolved semantic tokens. |
+| Gradient references are emitted as SVG/CSS `url(#id)` strings; scene nodes also carry `className` and `ariaHidden`. | Structured paint references and semantic metadata should be separated from web serialization. |
+| `SceneLabel` and `ChartTextMeasureOptions` expose size and weight, but not family, style, stretch, direction, letter spacing, or locale. | Native guide layout cannot reproduce the font that will paint the label. |
+| `ResolvedScale.map` is a function and `ChartPoint.datum` can contain any live value. | The in-process scene is portable between JavaScript renderers, but is not a language-neutral serialized schema. |
+| The root remains browser-inclusive; `@tanstack/charts/portable` and `@tanstack/charts/types` select the DOM-free value and declaration graph. | Native code has a supported boundary, while strict dependency checking still exposes the upstream `ImageData` declaration issue. |
+
+Directional code inventory:
+
+- The browser-heavy renderer, Canvas host, DOM export, DOM text measurement,
+ and reconciliation files remain a substantial but isolated implementation
+ layer.
+- Most mark, scale, layout, polar, geographic, and scene construction code is
+ renderer-independent.
+
+Source counts change too quickly to serve as a credible reuse guarantee.
+`types.ts` is now DOM-free, while `renderer.ts` and `canvas.ts` still mix
+portable behavior with browser services. The React web adapter remains a
+rewrite target because its UI is HTML plus `react-dom`.
+
+## Required architecture
+
+```mermaid
+flowchart TD
+ Definition["Live TypeScript chart definition"] --> Runtime["Shared runtime
marks · D3 · scales · guides · layout"]
+ CompileInputs["Compiler inputs
logical size · text metrics · theme input"] --> Runtime
+ Runtime --> Scene["In-process ChartScene
geometry · keys · points · scale metadata"]
+ Scene --> State["Shared controller
focus restoration · activation · pinning · transition plan · semantics"]
+ Host["Host capabilities
frame clock · input · overlays · accessibility · snapshots"] --> State
+ State --> Web["Web
SVG · Canvas · DOM overlays"]
+ State --> RNSVG["React Native
react-native-svg · RN overlays"]
+ State --> Skia["React Native
Skia · RN semantic overlays"]
+ State --> NS["NativeScript
Canvas · native overlays"]
+ Portable["Portable definition / scene DTO"] --> Compose["Compose"]
+ Portable --> Flutter["Flutter"]
+ Portable --> Apple["SwiftUI / Core Graphics"]
+```
+
+Use narrow capabilities, not DOM-shaped polyfills.
+
+Compiler inputs:
+
+- `measureText(request)`: resolved font properties in; advance width and line
+ metrics out, with optional ink bounds.
+- `resolvePaint(token)`: semantic or CSS-like theme input to renderer-usable
+ paint.
+- `layoutSize`: logical dimensions supplied by the host.
+
+Host, controller, and surface capabilities:
+
+- `requestFrame`, `cancelFrame`, and reduced-motion state.
+- Platform coordinates to logical scene coordinates.
+- Tooltip and application-owned overlay presentation.
+- Focus-indicator geometry, style, visibility, and paint.
+- Accessible summary, active-datum controls, actions, and announcements.
+- Optional renderer-specific bitmap snapshots.
+
+The compiler must remain a normal JavaScript operation. React Native worklets
+should only own frame-critical numeric state, such as gesture coordinates,
+crosshair position, preview transforms, paint interpolation, and a
+worklet-safe nearest-point index. Arbitrary accessors, D3 modules, tooltip
+formatters, and custom marks should not be serialized into the UI runtime.
+[Reanimated worklets](https://docs.swmansion.com/react-native-reanimated/docs/guides/worklets/)
+are a separate JavaScript context with serialization constraints.
+
+### Two scene contracts
+
+Do not freeze the current `ChartScene` as a cross-language wire format.
+
+1. **In-process scene:** retains live data references, scale mapping functions,
+ extension objects, and efficient indexes. React Native and NativeScript can
+ consume this directly.
+2. **Portable scene DTO:** versioned JSON-compatible geometry, resolved paints,
+ scale metadata, datum IDs, semantic descriptions, and interaction policies.
+ Compose, SwiftUI, and Flutter can consume this, but live callbacks stay in
+ their host language.
+
+The proposed [`PORTABLE-CHART-SPEC.md`](./PORTABLE-CHART-SPEC.md) registry
+model is the right definition-level companion. `$call` and `$data` can describe
+a supported portable subset. It should never claim to serialize arbitrary
+JavaScript accessors, custom tooltip components, or renderer plugins.
+
+### Core refactor
+
+1. Keep the completed portable/DOM declaration split. Further separate shared
+ renderer, focus, semantic, and transition contracts from browser host
+ implementations.
+2. Keep the existing focus strategies, grouping, and spatial contracts. Move
+ focus restoration/order, pinned state, host input orchestration, default
+ tooltip content, and render-reason policy out of `renderer.ts` into a
+ renderer-neutral controller.
+3. Introduce keyed scene diffing, interpolation instructions, and interruption
+ state as a transition planner. Current SVG motion is DOM attribute
+ reconciliation; current Canvas motion is a whole-frame crossfade.
+4. Extract the Canvas 2D painter behind a structural drawing-context
+ interface. Keep HTML canvas creation, pixel ratio, media queries, and export
+ in the web host.
+5. Resolve theme colors before painting. Keep CSS variables and
+ `currentColor` as web-adapter inputs, not scene paints.
+6. Expand typography to include family, size, weight, style, stretch, letter
+ spacing, direction, locale, and font-scale policy. Measurement cache keys
+ must include all of them.
+7. Preserve the resolved F-106 ownership rule: dynamic builders receive the
+ default theme; application and platform overrides enter through typed
+ inputs or the returned definition and merge during scene creation. Do not
+ pass a builder the theme that it is itself responsible for returning.
+8. Keep deterministic, resource-aware SVG serialization in the shared
+ JavaScript package.
+9. Define capability fallbacks for unsupported paint, path, filter, snapshot,
+ and semantic features.
+10. Give gradients and other resources structured scene references; serialize
+ `url(#id)` only in the SVG renderer.
+11. Treat typography and structured paints as public API migrations. Add
+ backward-compatible unions and normalization first, or version the change;
+ update migration docs and conformance before removing string paints or
+ existing text-measure options.
+
+This can remain additive for web consumers: add new internal contracts and
+make the DOM host implement them. The browser-oriented root remains compatible;
+portable consumers opt into `@tanstack/charts/portable` and
+`@tanstack/charts/types`.
+
+## React Native
+
+As of this research, React Native 0.86 is current stable. React Native 0.82
+made the New Architecture mandatory. Set the initial support floor to React
+Native 0.85 and test Expo SDK 56 / React Native 0.85 plus bare React Native
+0.86. Supporting 0.82–0.84 later requires adding those CI lanes; a nominal
+floor without tests is not support. Version-one product scope is iOS and
+Android. Renderer dependencies may also run on macOS, Windows, web, or TV, but
+those platforms need their own input, accessibility, packaging, and
+conformance gates.
+[React Native versions](https://reactnative.dev/versions.html) ·
+[React Native 0.82](https://reactnative.dev/blog/2025/10/08/react-native-0.82) ·
+[Expo SDK 56](https://docs.expo.dev/versions/v56.0.0/)
+
+The two supported dependency lanes differ:
+
+| Dependency | Expo SDK 56 / RN 0.85 | Bare RN 0.86 |
+| ------------------ | -------------------------------------------- | ----------------------------------------------------- |
+| `react-native-svg` | Expo-pinned 15.15.4 | current compatible 15.15.x |
+| Skia | Expo-pinned 2.6.2 | current compatible 2.x |
+| Reanimated | Expo-pinned 4.3.1 | 4.4+ line that declares RN 0.86 support |
+| Worklets | managed with the Expo/Reanimated combination | matching line from the Reanimated compatibility table |
+| Gesture Handler | Expo-pinned ~2.31.1 | current RN 0.86-compatible line |
+
+Reanimated 4 is New-Architecture-only. Expo configures its supported plugin
+combination; bare apps must install the matching Worklets package and plugin.
+Gesture Handler also requires `GestureHandlerRootView`.
+[Expo Reanimated](https://docs.expo.dev/versions/v56.0.0/sdk/reanimated/) ·
+[Expo Gesture Handler](https://docs.expo.dev/versions/v56.0.0/sdk/gesture-handler/) ·
+[Expo SVG](https://docs.expo.dev/versions/v56.0.0/sdk/svg/) ·
+[Expo Skia](https://docs.expo.dev/versions/v56.0.0/sdk/skia/) ·
+[Reanimated compatibility](https://docs.swmansion.com/react-native-reanimated/docs/guides/compatibility/)
+
+D3 is not expected to be the blocker. The imported `d3-array`, `d3-scale`,
+`d3-shape`, and `d3-geo` code paths should be audited and executed under
+Hermes rather than relying on a blanket package-family claim. `d3-shape`
+explicitly supports path-string or Canvas-context output.
+[d3-shape](https://d3js.org/d3-shape)
+
+### Default renderer: `react-native-svg`
+
+The scene maps directly:
+
+| Scene primitive | React Native SVG |
+| ---------------------- | -------------------------------- |
+| group, translate, clip | `G`, `ClipPath`, `Rect` |
+| rule | `Line` or `Path` |
+| polyline and area | `Path` |
+| dot | `Circle` |
+| rectangle | `Rect` |
+| label | `Text` |
+| linear gradient | `Defs`, `LinearGradient`, `Stop` |
+
+`react-native-svg` supports Fabric and the relevant primitives on iOS,
+Android, macOS, Windows, and web. Its 15.13+ compatibility line requires React
+Native 0.78+, below the proposed floor. This is dependency support, not a
+promise that the chart package supports every one of those platforms.
+[react-native-svg repository](https://github.com/software-mansion/react-native-svg) ·
+[usage reference](https://github.com/software-mansion/react-native-svg/blob/main/USAGE.md)
+
+Why it should ship first:
+
+- The current scene is already SVG-shaped.
+- D3-generated polar and geographic path strings transfer directly.
+- A retained node tree makes initial keyed updates and visual inspection
+ straightforward.
+- It avoids a required Skia binary for ordinary charts.
+- It keeps the public renderer replaceable.
+
+Known limits:
+
+- The package Codegen configuration creates native component types for SVG
+ primitives. A large tree may make React construction and Fabric commits
+ expensive, but that is a benchmark hypothesis rather than a pre-measured
+ limit.
+- Native text metrics and baseline behavior differ from DOM SVG.
+- The documented filter set is incomplete, and Android cannot apply a radial
+ gradient focal point.
+- `getBBox`, `isPointInFill`, and related synchronous shape methods are marked
+ experimental; core layout and hit testing must not depend on them.
+ [Shape implementation](https://github.com/software-mansion/react-native-svg/blob/main/src/elements/Shape.tsx)
+- RNSVG can parse stylesheet classes through `SvgCss`, but the typed production
+ renderer should resolve styles to props instead of depending on reparsed CSS.
+- `strokeDasharray` and uncommon line joins need normalization and
+ compatibility tests.
+
+Parsing the existing SVG string through `SvgXml` is useful as a one-day visual
+probe, not a production architecture. `SvgXml` and `SvgCss` reparse markup,
+lose scene identities and transition keys, and cannot preserve the current DOM
+interaction and accessibility model.
+[RNSVG package Codegen configuration](https://github.com/software-mansion/react-native-svg/blob/main/package.json) ·
+[RNSVG filter support](https://github.com/software-mansion/react-native-svg/blob/main/USAGE.md#filters) ·
+[RNSVG CSS support](https://github.com/software-mansion/react-native-svg/blob/main/USAGE.md#css-support)
+
+### Optional renderer: React Native Skia
+
+Skia should consume the same scene and host controller. It is the likely
+choice for dense scatterplots, heatmaps, streaming data, gesture-heavy charts,
+and animation, but the renderer crossover must be measured.
+
+React Native Skia 2.x currently requires React Native 0.79+, React 19+, iOS
+14+, and Android API 21+. Its documented binary contribution is roughly 6 MB
+on iOS and 4 MB on Android, so it should remain an isolated optional entry.
+[Skia installation](https://shopify.github.io/react-native-skia/docs/getting-started/installation/)
+
+Skia provides paths, clipping, gradients, synchronous font metrics, snapshots,
+and direct Reanimated shared-value integration.
+[Canvas](https://shopify.github.io/react-native-skia/docs/canvas/overview/) ·
+[text](https://shopify.github.io/react-native-skia/docs/text/text/) ·
+[gradients](https://shopify.github.io/react-native-skia/docs/shaders/gradients/) ·
+[animation](https://shopify.github.io/react-native-skia/docs/animations/animations/)
+
+Do not replace the current web renderer with Skia. Its web target loads
+CanvasKit, adds roughly 2.9 MB compressed, and has different WebGL and API
+constraints.
+[Skia web support](https://shopify.github.io/react-native-skia/docs/getting-started/web/)
+
+Do not begin with a custom Fabric surface. If profiling proves that SVG and
+Skia both fail a required workload, a single Codegen-backed native chart
+surface could accept a compact scene buffer. That decision would add iOS,
+Android, Codegen, serialization, and React Native version maintenance.
+[React Native Codegen](https://reactnative.dev/docs/the-new-architecture/what-is-codegen)
+
+### Layout and text
+
+Text is the largest visual-parity risk.
+
+The current synchronous `ChartTextMeasurer` is a useful compiler seam, but a
+React Native `Text` measurement may arrive after layout. The native host should
+use this protocol:
+
+1. Resolve the complete font descriptor and issue keyed measurement requests.
+2. Return cached metrics synchronously when present.
+3. Use deterministic estimates for cache misses.
+4. Batch native measurement of misses.
+5. Rebuild the scene once when real measurements materially change guide
+ bounds.
+
+For the SVG renderer, test an offscreen native `Text` measurement surface and
+`onTextLayout`; do not depend on experimental SVG bounding-box calls. For
+Skia, `Font` can synchronously measure a resolved font, while complex scripts,
+fallback, wrapping, and bidirectional text require Paragraph shaping. An
+offscreen React Native `Text` result may not match RNSVG `Text`; measured and
+painted output must agree closely enough to keep guide layout stable.
+[Skia font interface](https://github.com/Shopify/react-native-skia/blob/main/packages/skia/src/skia/types/Font/Font.ts) ·
+[Skia Paragraph](https://shopify.github.io/react-native-skia/docs/text/paragraph/)
+
+The test matrix must include:
+
+- system and bundled fonts;
+- unavailable weight fallback;
+- emoji and mixed scripts;
+- RTL;
+- locale-specific shaping and number formatting;
+- timezone, daylight-saving transitions, and non-Gregorian calendar settings;
+- letter spacing and rotated labels;
+- dynamic font scale;
+- font loading after first render.
+
+The public API needs an explicit choice for chart text scaling. Blindly
+applying unbounded system font scale can make a chart unreadable, while
+ignoring it harms accessibility. The likely contract is a host-level
+font-scaling policy plus an accessible nonvisual data representation.
+
+### Sizing and paint
+
+- The React Native root `View` supplies logical width and height through
+ `onLayout`.
+- Scene coordinates should use density-independent logical units. Each
+ renderer handles physical pixel density at paint or snapshot time.
+- Orientation and container changes schedule a new scene build; they do not
+ require a `ResizeObserver`.
+- `PlatformColor` and `DynamicColorIOS` are opaque platform values, not
+ portable strings. Each renderer resolves them, subscribes to appearance and
+ accessibility changes, and uses `processColor` where native or animated
+ props require it. Deterministic SVG export requires an explicit color
+ scheme.
+- High-contrast capabilities differ across iOS and Android; the adapter maps
+ the available accessibility state to semantic theme input rather than
+ promising one cross-platform flag.
+- `currentColor`, CSS variables, inherited `font-family`, and CSS class styles
+ remain web-only resolution mechanisms.
+
+[React Native Appearance](https://reactnative.dev/docs/appearance) ·
+[React Native AccessibilityInfo](https://reactnative.dev/docs/accessibilityinfo)
+
+### Gestures, focus, and application interactions
+
+Use one chart-level gesture detector, not one responder per mark:
+
+1. Convert touch, pointer, or hover coordinates to logical scene coordinates.
+2. Query the shared focus strategy and spatial index.
+3. Update the visual focus overlay at frame cadence.
+4. Commit semantic focus and pinned state at a coalesced cadence or gesture
+ end, and emit application activation or domain-change events through typed
+ integration points.
+
+Simple tap and activation can use React Native responders. Scrubbing, pinch,
+pan, long press, and composed gestures should use Gesture Handler where
+available. For app-owned brush, zoom, scrubber, and editor behavior, the
+package supplies coordinates, focus primitives, integration contracts, and
+examples; it does not take ownership of application domain or range state.
+Gesture Handler recognizes gestures using native platform facilities and
+integrates with Reanimated.
+[Gesture Handler](https://docs.swmansion.com/react-native-gesture-handler/)
+
+Input parity is capability-based:
+
+| Web input | Native behavior |
+| -------------------- | -------------------------------------------------------------------- |
+| hover / pointer move | touch scrub, stylus/trackpad hover where available |
+| click | tap |
+| pinned click tooltip | tap or long press, with explicit dismiss |
+| wheel zoom | pinch; trackpad/wheel where the platform reports it |
+| drag brush | pan gesture with visible handles and minimum touch targets |
+| arrow-key focus | adjustable screen-reader actions; hardware keys on supported targets |
+| Escape | dismiss action, back action, or hardware key |
+
+The 16 interaction conformance cases should call semantic drivers such as
+`focusAt`, `activate`, `pan`, `zoom`, `setBrush`, and `adjustDatum`. Each
+platform harness translates those operations to real input separately. Cases
+whose controller is application-owned must extract and port that controller;
+they are integration conformance, not new core behavior.
+
+Launch gates include:
+
+- arbitration with nested `ScrollView`, navigation, and parent gestures;
+- axis locking, cancellation, and responder loss;
+- coordinate conversion under view and chart transforms;
+- Android back behavior for pinned state;
+- the copy and memory cost of moving any spatial index into a worklet;
+- minimum touch targets and handles near safe areas.
+
+### Accessibility
+
+Painted geometry and accessibility must be separate outputs of the controller.
+Skia explicitly requires overlaid React Native views to make inner canvas
+elements accessible, and an SVG node per datum is not a scalable semantic
+tree.
+[Skia canvas accessibility](https://shopify.github.io/react-native-skia/docs/canvas/overview/) ·
+[React Native accessibility](https://reactnative.dev/docs/accessibility)
+
+Recommended native model:
+
+- A non-accessible layout container with sibling semantic elements. React
+ Native warns that VoiceOver can suppress nested accessible elements.
+- One accessible summary element with label, description, and concise chart
+ summary.
+- One sibling adjustable active-datum controller with increment, decrement,
+ and activate actions.
+- `accessibilityValue.text` containing series, category or time, value, and
+ relevant interval.
+- Platform-appropriate announcement or live status when the active value
+ changes; live-region behavior differs between iOS and Android.
+- A visible focus marker and tooltip rendered through ordinary React Native
+ views.
+- Semantics and data hooks that let the application supply a virtualized list
+ or table for complete inspection. Shipping that table is a new feature, not
+ current package parity.
+- Reduced-motion behavior driven by `AccessibilityInfo`.
+- Visual renderer descendants hidden with the platform-appropriate
+ `importantForAccessibility`, `accessibilityElementsHidden`, or equivalent
+ props to prevent duplicate or unusably large traversal.
+
+VoiceOver and TalkBack testing on physical devices is an exit criterion.
+Thousands of transparent focusable views are not an acceptable implementation.
+
+The shared semantic model can supply series and datum descriptions for
+Apple’s `AXChartDescriptor` and audio graphs. React Native core, RNSVG, and
+Skia do not expose that API; using it would require a custom iOS native
+accessibility component and is not part of the first renderer.
+[Apple chart accessibility](https://developer.apple.com/documentation/swiftui/view/accessibilitychartdescriptor%28_%3A%29)
+
+### Motion
+
+The shared transition planner should produce stable-key enter, update, and
+exit operations from the currently painted state, not only previous and next
+scenes. Renderers then execute:
+
+- numeric geometry and opacity interpolation;
+- color interpolation;
+- path interpolation when topology is compatible;
+- a documented resampling or crossfade fallback when it is not;
+- cancellation and restart from the current visual value;
+- zero-duration output under reduced motion.
+
+Skia’s path interpolation requires compatible path commands, so arbitrary
+path morphing cannot be delegated without normalization.
+[Skia path interpolation](https://shopify.github.io/react-native-skia/docs/animations/hooks/)
+
+Per-frame React/RNSVG prop commits are safe only as a small-scene proof, not
+the assumed production default. The motion spike must compare animated props
+and UI-thread execution early, including path normalization, color processing,
+and interruption from the value actually painted on the UI thread.
+[Reanimated `useAnimatedProps`](https://docs.swmansion.com/react-native-reanimated/docs/core/useAnimatedProps/)
+
+Transition state must live outside React render side effects. It must discard
+stale concurrent scene builds, rebase after font/theme/size invalidation, and
+pause or rebase when `AppState` moves between background and foreground.
+
+### Export and web
+
+- Keep resource-aware SVG string export in the shared JavaScript core. It does
+ not require a mounted native surface.
+- Define whether a PNG captures only chart paint or also React Native tooltip,
+ legend, and focus overlays. Add explicit scale, background, color-scheme,
+ and font-readiness options.
+- Skia’s asynchronous snapshot runs on the UI thread and is required when
+ textures are present. Generic view capture has separate native-surface and
+ view-collapsing constraints; both paths need device proof.
+- Add file and share helpers only in platform integration packages.
+- Keep browser consumers on the existing root and DOM/SVG React adapter. React
+ Native Web can render native components, but the current web implementation
+ already has better SSR, hydration, CSS, text measurement, and semantic SVG
+ behavior.
+- Keep native callbacks typed to native surface and layout data; do not expose
+ fake `HTMLElement` or `SVGSVGElement` values.
+
+[Skia canvas snapshots](https://shopify.github.io/react-native-skia/docs/canvas/overview/) ·
+[Skia view snapshots](https://shopify.github.io/react-native-skia/docs/snapshotviews/)
+
+A WebView can demonstrate visual reuse, but it is not native support. Expo DOM
+components use a separate JavaScript engine, JSON-serialized asynchronous
+props, whole-tree rerenders, and no SSR/SSG or native children.
+[Expo DOM components](https://docs.expo.dev/guides/dom-components/)
+
+### Package shape
+
+```text
+@tanstack/charts
+ browser-compatible root
+ ./portable
+ DOM-free definitions, marks, D3 integration, scene, focus, semantics
+ ./types
+ DOM-free public contracts
+
+@tanstack/react-charts
+ existing web React adapter
+
+@tanstack/react-native-charts
+ native React adapter and react-native-svg renderer
+ ./skia
+ optional Skia renderer subpath
+```
+
+The base native entry should peer-depend on React, React Native, and
+`react-native-svg`. Skia, Reanimated, Worklets, and Gesture Handler should be
+optional peers, declared through `peerDependenciesMeta.optional`, so a static
+SVG chart does not acquire or autolink unrelated native modules. Do not use
+`optionalDependencies`. The base implementation and declaration graph must
+have no static reference to optional peers.
+
+Package exports need explicit `browser`, `react-native`, and `default`
+conditions, with `browser` before `react-native`, plus matching type
+declarations. Once an export matches, Metro does not append `.native` or `.web`
+to that target. Test resolution through Metro/Expo, Vite or Webpack, Jest, and
+TypeScript. An export target cannot point into another package, so a browser
+re-export needs a local shim and declared dependency or peer.
+[Metro package exports](https://metrobundler.dev/docs/package-exports/)
+
+## NativeScript
+
+NativeScript is the second-best reuse target because its runtime can execute
+the JavaScript built from the TypeScript core and expose native platform APIs
+directly. NativeScript Core supports custom native views, gestures, animation,
+and accessibility. Its Canvas project provides native-backed Canvas 2D, WebGL,
+and WebGPU packages. Ordinary JavaScript runs on the UI thread; Workers are
+isolated and communicate through JSON-serializable messages. Large scene
+compilation plus Canvas painting is therefore a first-order benchmark, not
+assumed reuse.
+[NativeScript documentation](https://docs.nativescript.org/) ·
+[native APIs](https://docs.nativescript.org/guide/adding-native-code) ·
+[custom native views](https://docs.nativescript.org/guide/create-custom-native-elements) ·
+[gestures](https://docs.nativescript.org/guide/gestures) ·
+[accessibility](https://docs.nativescript.org/guide/accessibility) ·
+[multithreading](https://docs.nativescript.org/guide/multithreading) ·
+[NativeScript Canvas](https://github.com/NativeScript/canvas)
+
+Recommended implementation:
+
+1. Extract the current Canvas painter from HTML canvas creation and DOM host
+ behavior.
+2. Implement a NativeScript Core chart view that supplies size, pixel ratio,
+ a Canvas context, frame scheduling, and gestures.
+3. Prove that the same definition and in-process scene compiler run unchanged
+ through NativeScript’s bundler and runtime.
+4. Add Angular, Vue, Solid, Svelte, or React wrappers only after the Core view
+ is stable.
+
+React NativeScript is a React renderer over NativeScript views, not React
+Native compatibility. React Native components and ecosystem packages do not
+transfer. It should be a thin wrapper around a NativeScript Core chart view
+rather than the foundation.
+[NativeScript React tutorial](https://docs.nativescript.org/tutorials/build-a-master-detail-app-with-react) ·
+[React NativeScript repository](https://github.com/shirakaba/react-nativescript)
+
+NativeScript proof requirements:
+
+- correct text metrics, baselines, font fallback, and pixel ratio;
+- `Path2D`, clipping, gradients, dash arrays, joins, and transforms;
+- image snapshot/export;
+- touch coordinate conversion and gesture composition;
+- an accessible root and active-datum control implemented either with a small
+ number of real NativeScript views or custom iOS/Android accessibility
+ containers; NativeScript documents accessibility for `View` objects but no
+ Canvas virtual-child semantic tree;
+- long-running animation and streaming stability;
+- scene build and paint time at 1k, 10k, and 50k primitives;
+- memory and UI-thread responsiveness on low-end Android.
+
+If its Canvas implementation cannot meet these gates without platform-specific
+patches, stop rather than maintain a browser API imitation with divergent
+behavior.
+
+## Other native UI stacks
+
+| Target | Source reuse | Technical fit | Recommendation |
+| ----------------------------------------- | ----------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- |
+| Compose Multiplatform | No executable TypeScript reuse; definitions, scene DTOs, fixtures, and semantics can transfer. | Shared Kotlin API; Android uses Jetpack Compose and iOS Compose is canvas-rendered through Skiko. Custom Canvas semantics must be authored. | Best candidate for a shared Kotlin/Compose product after the portable contract is proven. |
+| Flutter | No TypeScript reuse on native; requires a Dart port of the compiler/runtime or a Dart scene consumer. | `CustomPainter` maps cleanly to the scene and supports hit testing and virtual semantics; Flutter paints through its own engine/Impeller. | Build only as a first-class Flutter product with dedicated ownership and add-to-app cost. |
+| SwiftUI `Canvas` | Schema and fixtures only. | Uses `GraphicsContext`; Apple excludes per-element interaction and accessibility, so synthetic children/representations are required. | Apple-only product or accessibility reference, not the cross-platform starting point. |
+| UIKit / Core Graphics | Schema and fixtures only. | Separate lower-level custom-view path with maximum Apple control and no Android implementation. | Use only if SwiftUI Canvas cannot meet required fidelity or integration. |
+| Swift Charts | Semantic mapping, not scene parity. | Supplies native marks, axes, legends, and chart accessibility, but owns layout and styling. | Optional native-style backend, not feature-for-feature TanStack rendering. |
+| Lynx / ReactLynx | Pure TypeScript compiler may transfer after DOM removal. React Native components do not. | Lynx 4 exposes static-oriented SVG as one native view and no public Canvas element; per-mark input and semantics need overlays or custom native elements. | Watchlist until its graphics layer can support interactive dynamic scenes. |
+| Separate UIKit and Android View renderers | Schema and fixtures only unless a JavaScript runtime is embedded. | Maximum control and maximum duplicated implementation. | Avoid unless profiling and commercial demand justify two permanent native engines. |
+
+Primary references:
+
+- [Compose Multiplatform](https://kotlinlang.org/docs/multiplatform/compose-multiplatform-and-jetpack-compose.html),
+ [iOS renderer explanation](https://blog.jetbrains.com/kotlin/2023/05/compose-multiplatform-for-ios-is-in-alpha/),
+ [iOS stable announcement](https://blog.jetbrains.com/kotlin/2025/05/compose-multiplatform-1-8-0-released-compose-multiplatform-for-ios-is-stable-and-production-ready/),
+ [Compose custom graphics](https://developer.android.com/develop/ui/compose/graphics/draw/overview),
+ [Compose semantics](https://developer.android.com/develop/ui/compose/accessibility/semantics),
+ and [Compose iOS accessibility](https://kotlinlang.org/docs/multiplatform/compose-ios-accessibility.html)
+- [Flutter `CustomPainter`](https://api.flutter.dev/flutter/rendering/CustomPainter-class.html),
+ [Flutter architecture](https://docs.flutter.dev/resources/architectural-overview),
+ [add-to-app](https://docs.flutter.dev/add-to-app), and
+ [Flutter semantics](https://api.flutter.dev/flutter/widgets/Semantics-class.html)
+- [SwiftUI `Canvas`](https://developer.apple.com/documentation/swiftui/canvas),
+ [accessibility representations](https://developer.apple.com/documentation/swiftui/view/accessibilityrepresentation%28representation%3A%29),
+ [AXChart](https://developer.apple.com/documentation/accessibility/axchart),
+ and [Swift Charts](https://developer.apple.com/documentation/charts)
+- [Lynx 4 elements](https://lynxjs.org/4.0/api/),
+ [SVG element](https://lynxjs.org/4.0/api/elements/built-in/svg.html), and
+ [custom native components](https://lynxjs.org/4.0/guide/custom-native-component)
+
+For non-JavaScript targets, “same API” can mean equivalent chart concepts and
+conformance, not source compatibility. Accessors, formatters, custom scales,
+tooltip bodies, callbacks, and plugins must be declared as one of:
+
+- portable declarative input;
+- a named registry function;
+- a host-language callback;
+- JavaScript-only.
+
+Sending a complete scene across a JavaScript-to-native or host-language
+boundary on every frame is not a durable dynamic-chart design. A portable
+scene DTO is appropriate for static charts, fixtures, export, and an initial
+renderer proof. A production native-language library eventually needs local
+layout, interaction, and animation logic.
+
+## Feature parity matrix
+
+| Capability | Shared work | React Native | NativeScript | Non-JS native |
+| --------------------------------------------- | --------------------------------------------- | ------------------------------- | ------------------------------------------------- | -------------------------------------------- |
+| Definitions, accessors, transforms, D3 scales | Existing compiler through portable entries | Direct reuse after Hermes proof | Expected reuse after runtime proof | Declarative subset or reimplementation |
+| Cartesian marks and guides | Existing scene | Render primitives | Canvas painter | Render DTO or reimplement |
+| Facets and layered charts | Existing layout and groups | Direct reuse | Expected after runtime proof | Scene-compatible |
+| Polar, pie, radar, gauge | Existing path-producing marks | SVG/Skia paths | Canvas paths | Scene-compatible |
+| Geography and projections | Existing D3-generated paths | SVG/Skia paths | Canvas paths | Scene-compatible |
+| Gradients and clipping | Existing scene data plus capability rules | New mapping, platform tests | New mapping, platform tests | New mapping |
+| Text, axes, legend margins | Shared request/cache protocol | New native measurement | New native measurement | New native measurement |
+| Theme and color | Shared semantic theme | New RN resolution | New NativeScript resolution | New platform resolution |
+| Focus and grouped tooltip logic | Extract from web renderer | Reuse controller; new overlay | Reuse controller; new overlay | Port controller |
+| Activation / `onSelect` | Shared callback contract | Tap and accessibility actions | Tap and accessibility actions | Platform input |
+| Brush, zoom, scrubber, editor | Application-owned state plus semantic drivers | Native integration examples | Native integration examples | Platform implementations |
+| Keyed animation | New shared transition planner | SVG and Skia execution | Canvas execution | Port planner |
+| Focus indicator | New shared overlay contract | RN overlay or renderer layer | Canvas/native overlay | Platform overlay |
+| Accessibility | New shared semantic model | RN sibling semantic controls | Feasibility gate: real views or native containers | Native semantics |
+| Custom marks using scene primitives | Existing extension model | Reuse | Reuse | Equivalent host-language API |
+| Renderer-specific custom output | None | Native renderer callback | Canvas/native callback | Platform-specific |
+| Pure SVG export | Resource-aware JavaScript serializer | Reuse | Reuse if runtime proof passes | Native serializer or externally supplied SVG |
+| Mounted PNG export | Platform capability | Snapshot/view capture | Canvas or platform capture, pending proof | Platform snapshot |
+| SSR and hydration | Existing browser root and React host | Not applicable on device | Web target only | Not applicable on device |
+
+## Validation program
+
+### Stage 1: portability proof
+
+Run the compiler under Hermes and NativeScript without DOM globals.
+
+Pass conditions:
+
+- Representative definitions import through Metro and NativeScript bundling.
+- With locale, calendar, and timezone fixed, web, Hermes, and NativeScript
+ produce exact normalized domains, keys, topology, and explicitly formatted
+ labels. Compare numeric coordinates and normalized path data with a defined
+ epsilon.
+- DOM types are absent from the Charts declaration graph; strict dependency
+ checking reaches only the known upstream `ImageData` declaration.
+- Theme and text services are injected.
+- No browser polyfill is required.
+- Conditional exports and optional-peer isolation resolve through Expo/Metro,
+ bare Metro, TypeScript, Jest, and a browser bundler.
+
+### Stage 2: renderer sentinels
+
+Render a deliberately small set before porting all 100 cases:
+
+1. multi-line chart with gaps, rotated ticks, and a legend;
+2. stacked area with stable-key update;
+3. grouped and stacked bars;
+4. 10k-point scatter;
+5. labeled heatmap with clipping and gradients;
+6. faceted chart;
+7. pie/donut plus radar or gauge;
+8. geographic projection;
+9. grouped tooltip with touch scrub and pinning;
+10. zoom/pan or brush interaction;
+11. streaming update with interruption;
+12. custom scene mark.
+
+Pass conditions:
+
+- iOS and Android screenshots meet geometry and visual tolerances.
+- Every sentinel has a usable VoiceOver and TalkBack path.
+- Visible focus-indicator geometry, style, and visibility match the semantic
+ focus state.
+- Custom fonts, RTL, dark mode, high contrast, reduced motion, and orientation
+ changes work.
+- SVG and Skia consume the same scene and interaction controller.
+
+### Stage 3: performance crossover
+
+Use release or `debugOptimized` builds on a low-end Android device and a
+representative iPhone. Standard Android debug builds are not valid evidence.
+
+Test 100, 1k, 10k, and 50k painted primitives, with an optional 100k stress
+case. Record:
+
+- scene preparation and layout time;
+- first paint;
+- single-datum update;
+- full data replacement;
+- streaming update cadence;
+- orientation and resize;
+- touch scrub, pan, and zoom latency;
+- nested-scroll arbitration, cancellation, and transformed hit coordinates;
+- JS and UI frame time;
+- memory;
+- Fabric node count;
+- native binary and application bundle delta;
+- snapshot time and size.
+
+The measured SVG/Skia crossover becomes documentation. Do not choose a point
+count from intuition.
+
+### Stage 4: conformance
+
+- Run all 100 visual cases on iOS and Android for the default renderer.
+- Run the performance and renderer-sensitive subset on Skia and NativeScript.
+- Extract platform-neutral definition/data factories from all 100 cases.
+- Translate all 16 interaction cases to semantic platform drivers, with
+ application controllers remaining application-owned integration fixtures.
+- Compare normalized domains, keys, and topology exactly; compare numeric
+ geometry and normalized paths with the agreed tolerance before screenshot
+ tolerances.
+- Keep the DOM-free TypeScript compile and Metro import smoke alongside the
+ current jsdom-oriented unit suite; add Hermes execution coverage.
+- Test current web SSR, hydration, SVG, Canvas, and export to catch refactor
+ regressions.
+- Test stale-scene cancellation, concurrent updates, mid-flight interruption,
+ font/theme/size invalidation, and app background/foreground rebasing.
+- Use React Native Testing Library for adapter state and semantics, but require
+ device tests for native drawing, gestures, and accessibility. Its own
+ guidance notes that native behavior needs simulator or device validation.
+ [React Native Testing Library boundary](https://callstack.github.io/react-native-testing-library/12.x/docs/guides/faq)
+
+### Stop conditions
+
+Pause a public native package if any of these remain unresolved after the
+proof:
+
+- text measurement causes repeated layout oscillation or materially wrong
+ guides, or the measuring and painting stacks disagree on shaped text;
+- the default renderer misses interaction frame budgets on ordinary charts;
+- the semantic model cannot provide useful VoiceOver and TalkBack navigation;
+- Metro requires DOM declarations or browser polyfills;
+- SVG and Skia require divergent public chart definitions;
+- native output depends on reparsing SVG strings;
+- NativeScript requires project-local patches to its graphics runtime.
+
+## Estimated effort
+
+An engineer-week means one experienced library engineer working full time.
+Ranges include implementation, tests, examples, and documentation, but not
+unrelated chart features or store release work.
+
+| Deliverable | Estimate | Confidence |
+| ----------------------------------------------------------------------------------------------------------------------------------------------------------- | -----------------------------------------: | ----------------------- |
+| Shared controller extraction, transition design, platform theme/typography contracts, and device harness | 2–4 engineer-weeks | Medium |
+| React Native SVG proof productionization: gestures, complete tooltips, packaging, and release gates | 3–5 engineer-weeks | Medium |
+| React Native full applicable parity: text, themes, keyed motion, gestures, tooltips, accessibility, export, API migration, 100-case hardening, Expo/bare CI | 5–8 engineer-weeks | Low–medium |
+| Production React Native SVG package total | 10–16 engineer-weeks | Low–medium |
+| Optional Skia execution/optimization of the shared motion contract, snapshots, and crossover benchmarks | +4–7 engineer-weeks | Low–medium |
+| NativeScript Core Canvas package after shared refactor | +6–10 engineer-weeks | Low |
+| Portable scene DTO plus one Compose or Flutter rendering proof | +3–6 engineer-weeks | Low |
+| Production Compose, Flutter, or Swift implementation | Separate multi-month product per ecosystem | Low until the DTO proof |
+
+Directional implementation size is 5–8k production lines plus 3–6k lines of
+tests and fixtures for first-class React Native parity. A NativeScript
+framework/view wrapper could remain near 1k lines only after a portable painter
+and backend exist. The renderer/backend itself is likely another 2–4k lines;
+device testing, accessibility feasibility, performance work, and hardening
+explain the 6–10 week estimate.
+
+Two experienced engineers could overlap core/controller work, React Native
+rendering, and device harness work. A realistic calendar range for a
+production React Native package with both SVG and Skia is roughly 8–12 weeks,
+assuming the text and accessibility proofs pass early. NativeScript should not
+be scheduled as a committed package until its Canvas proof passes.
+
+Ongoing maintenance is material:
+
+- React Native, Expo, Metro, `react-native-svg`, Skia, Reanimated, and Gesture
+ Handler compatibility;
+- physical-device screenshot, performance, VoiceOver, and TalkBack coverage;
+- renderer-specific bug triage;
+- font and graphics differences across iOS and Android;
+- conformance updates whenever the scene grammar grows.
+
+## Recommended first commitment
+
+Fund a two-week, two-engineer device and shared-behavior proof rather than
+announce the private package.
+
+Engineer A:
+
+- extract the shared interaction and tooltip controller;
+- define platform theme and typography ownership;
+- replace the responder proof with scroll-safe gesture arbitration;
+- exercise representative definitions under Hermes and on devices.
+
+Engineer B:
+
+- build the iOS/Android visual, performance, and binary-size harness;
+- define semantic output and VoiceOver/TalkBack flows;
+- test the existing SVG host across density and gesture sentinels;
+- scope the later Canvas/NativeScript proof from measured bottlenecks.
+
+At the end of the proof, decide from evidence:
+
+1. whether `react-native-svg` is a viable default;
+2. whether Skia is required for the first release or can follow;
+3. whether the typography contract is stable enough for public API;
+4. whether NativeScript meets the bar without runtime patches;
+5. whether to stabilize a portable scene DTO for non-JavaScript targets.
+
+## Explicit non-goals
+
+- No DOM emulation layer on native.
+- No WebView marketed as native support.
+- No D3 or arbitrary user callbacks in UI-thread worklets.
+- No Skia dependency in the base package.
+- No point-count threshold before device benchmarks.
+- No thousands of invisible accessible views.
+- No pixel-perfect cross-engine promise.
+- No claim that a JSON subset preserves the complete live TypeScript API.
+- No custom Fabric, UIKit, or Android renderer before the shared renderers are
+ measured.
diff --git a/REACT-NATIVE-HOST-POC.md b/REACT-NATIVE-HOST-POC.md
new file mode 100644
index 0000000..5c45900
--- /dev/null
+++ b/REACT-NATIVE-HOST-POC.md
@@ -0,0 +1,343 @@
+# React Native host proof of concept
+
+Research and implementation date: 2026-07-30
+
+## Decision
+
+A React Native SVG host is viable. The chart grammar, D3 scales, marks,
+responsive scene compiler, gradients, clips, polar and geographic paths, point
+identity, and most focus algorithms can run unchanged. The current web
+`ChartRenderer` cannot be the native abstraction: its public contract requires
+DOM elements, string prerendering, client coordinates, and browser-owned
+surface lifecycle.
+
+The proof should advance only as a separate package and host:
+
+```text
+definition + D3 scales + marks
+ │
+ ▼
+ shared @tanstack/charts runtime
+ │
+ ▼
+ ChartScene
+ │
+ ▼
+ React Native interaction + react-native-svg
+```
+
+This can remain additive for current consumers. Do not generalize
+`ChartRenderer` or remove DOM types from the root API to make native fit.
+
+The POC establishes technical feasibility, package isolation, approximate
+JavaScript cost, and the main API boundaries. It does not establish device
+visual parity, application binary cost, Hermes runtime performance, or
+production support.
+
+## Implemented proof
+
+The private `@tanstack/react-native-charts` package includes:
+
+- a generic React Native `Chart` component that owns `createChartRuntime`;
+- responsive sizing from explicit dimensions, aspect ratio, or `onLayout`;
+- a direct keyed `ChartScene` visitor using `react-native-svg`;
+- groups, rules, polylines, areas, dots, rectangles, labels, linear gradients,
+ nested translation, and rectangular clips;
+- current-color and CSS-variable-fallback paint resolution;
+- nearest, axis-nearest, and grouped focus;
+- tap selection, sticky pinning, focus restoration, and accessibility actions;
+- a separate SVG focus overlay;
+- a native in-tree tooltip with point, pointer, group-center, and custom
+ anchors, collision-aware placement, custom content, and a custom React body;
+- an optional injected text measurer;
+- a Metro fixture using React Native 0.86.0 and `react-native-svg` 15.15.5;
+- source-map checks that reject browser renderer code in iOS and Android
+ bundles.
+
+The host imports runtime values from narrow core subpaths. It does not import
+the root barrel, `react-dom`, a browser adapter, the DOM renderer, the Canvas
+host, or the SVG string/reconciliation pipeline. The narrow imports keep this
+measurement bundle-sensitive; application definitions can instead use the
+environment-safe `@tanstack/charts/portable` barrel.
+
+That distinction matters to shared application source. A Metro probe using
+`defineChart` and `lineY` from the browser-oriented root
+`@tanstack/charts` barrel traversed the DOM renderer, DOM text, reconciliation,
+SVG surface, and adapters. The prerequisite portable-barrels PR adds
+`@tanstack/charts/portable` for normal environment-neutral authoring while
+retaining granular entries for tighter bundles.
+
+That prerequisite also adds `@tanstack/charts/types` and moves DOM host types
+to an internal `dom-types.ts` module while preserving their root re-exports.
+This POC branch adds no further core public API.
+
+## Bundle measurements
+
+### Isolated esbuild entries
+
+Production, minified ESM; React, React Native, and `react-native-svg` are
+external in the native entries.
+
+| Entry | Minified | Gzip |
+| -------------------------------- | -------: | -------: |
+| React Native SVG host | 28.70 kB | 10.75 kB |
+| React Native line consumer | 50.67 kB | 19.44 kB |
+| Shared line scene | 35.46 kB | 13.79 kB |
+| Existing React web adapter | 45.25 kB | 16.51 kB |
+| Existing React web line consumer | 67.05 kB | 25.11 kB |
+
+The native host entry includes the host plus every shared runtime and D3 module
+reachable from exporting `Chart`; it is not isolated adapter-only overhead.
+The native line consumer additionally includes the line mark and D3 scale code
+while leaving platform peers external. It is the closest comparison to the
+existing React line entry, but the two platforms do not have identical runtime
+baselines. Both native entries are informational measurements, not locked
+budgets.
+
+### Metro application deltas
+
+React Native production bundles were minified for both platforms. Each row is
+measured against a blank React Native application built with the same Metro
+configuration.
+
+| Platform | Full chart minified JS delta | `react-native-svg` gzip delta | Core line gzip delta | Full chart gzip delta | Full chart module delta |
+| -------- | ---------------------------: | ----------------------------: | -------------------: | --------------------: | ----------------------: |
+| iOS | 308.63 KiB | 27.75 KiB | 37.80 KiB | 72.29 KiB | 280 |
+| Android | 308.77 KiB | 27.69 KiB | 37.82 KiB | 72.34 KiB | 280 |
+
+The full iOS bundle was 1,200,113 bytes and 288,404 bytes gzip, versus 884,080
+and 214,381 for blank. Android was 1,205,629 and 289,473, versus 889,448 and
+215,395 for blank.
+
+These are JavaScript bundle measurements, not Hermes bytecode or installed
+application sizes. They exclude the native iOS and Android code linked by
+`react-native-svg`. A clean release-binary before/after comparison is still
+required.
+
+The full-chart source maps include the native host and exclude every guarded
+browser module: adapters, DOM host, DOM text measurement, renderer, Canvas,
+reconciliation, SVG serialization/surface code, `react-dom`, React web charts,
+and Octane charts.
+
+## Parity and boundaries
+
+| Capability | POC result | Production boundary |
+| -------------------------------------- | ------------------------------------------ | ------------------------------------------------------------------------------ |
+| Definitions, D3 scales, marks, layout | Shared unchanged | High confidence |
+| Cartesian, facet, polar, geo geometry | Shared scene paths | Needs device conformance |
+| All seven scene node kinds | Implemented | Needs iOS/Android visual tests |
+| Linear gradients and rectangular clips | Implemented | Device and nested-clip tests remain |
+| Responsive sizing | `onLayout`, explicit size, aspect ratio | Scroll/layout integration remains |
+| Paint | `currentColor` and CSS fallback resolution | Dynamic definitions still see the web default theme |
+| Text | SVG text plus injected core measurer | Exact native typography and async measurement are unresolved |
+| Nearest and grouped focus | Implemented | Logic is duplicated from the DOM renderer |
+| Tap, selection, sticky tooltip | Implemented | Responder ownership may conflict with scrolling and gestures |
+| Tooltip | Native in-tree overlay | Web `className`, portal semantics, and full item formatting are not equivalent |
+| Accessibility | Labeled adjustable root and actions | No per-point native accessibility tree or data-table escape |
+| Motion | Not implemented | Requires a renderer-neutral transition model |
+| SVG/PNG export | Not implemented | Needs native snapshot/share APIs |
+| Large-data renderer | Not measured | SVG node pressure may require an optional Skia host |
+| SSR and hydration | Intentionally absent | Web-only behavior |
+
+### Rendering details that are not exact
+
+- SVG `arcs` and `miter-clip` joins are explicitly normalized to `round` and
+ `miter`, respectively, because the React Native SVG type surface does not
+ expose them.
+- The native paint resolver can consume CSS variable fallbacks, but it cannot
+ evaluate application CSS. A production host needs concrete native theme
+ values before scene compilation.
+- The current text-measure contract does not carry font family, font style,
+ letter spacing, direction, or locale. Passing `fontFamily` to the painter
+ cannot make guide layout measure the same font.
+- `react-native-svg` supports the required primitive family and Fabric, but
+ SVG compatibility must be verified on real iOS and Android renderers rather
+ than inferred from server-rendered component markup.
+
+### Interaction details that are not exact
+
+- Focus preset resolution, point restoration, navigation order, tooltip
+ content, anchor, and placement are private functions inside the DOM renderer.
+ The POC had to reproduce those policies. A supported package must extract
+ the pure behavior and make both hosts consume it.
+- The POC does not implement the complete `tooltip.items` channel, datum, and
+ derived-row contract. Custom `content`, `format`, `formatGroup`, and a custom
+ React body work, but default structured content is only partial.
+- The root `View` currently claims touch responder ownership on press.
+ `ScrollView`, pan, brush, zoom, and application gestures require an explicit
+ arbitration model, likely through Pressability or Gesture Handler rather
+ than more responder callbacks.
+- Native accessibility cannot reuse DOM focus and ARIA. The adjustable-root
+ behavior proves a useful minimum, not parity with keyboard traversal or a
+ complete accessible data representation.
+- The chart is one accessible root. Nested controls in a custom pinned tooltip
+ may be hidden by platform accessibility grouping, and
+ `accessibilityLiveRegion` is Android-specific. This needs VoiceOver and
+ TalkBack design rather than prop translation.
+- A local absolute tooltip cannot escape clipped native ancestors. Native
+ portal/modal behavior needs a separate definition from the browser top-layer
+ implementation.
+
+## API and compatibility impact
+
+No existing public call needs to break for an SVG-native release.
+
+Prerequisite changes delivered by the portable-barrels PR:
+
+- additive `@tanstack/charts/portable` export;
+- additive `@tanstack/charts/types` export;
+- mechanical split between portable and DOM host types, with root re-exports
+ preserved.
+
+This proof adds a separate private React Native package and component contract.
+
+Additive changes likely required before release:
+
+- a shared, renderer-neutral interaction state module;
+- a shared tooltip content/anchor/placement model;
+- a runtime option for platform default themes;
+- a complete typography and text-measurement contract;
+- structured paint references or a host paint-resolution contract;
+- native-specific tooltip overlay and gesture integration points.
+
+Changes to avoid:
+
+- making the current `ChartRenderer` union over DOM and native surfaces;
+- making string prerendering optional inside that renderer contract;
+- importing React Native from the core package;
+- shipping CSS tokens to native and silently substituting arbitrary colors;
+- claiming compatibility outside the tested React Native 0.86.0 and
+ `react-native-svg` 15.15.5 pair;
+- adding Skia before an on-device density/performance crossover is measured.
+
+The root type API remains compatible. Consumers that want a DOM-free
+declaration graph can opt into `@tanstack/charts/types`. Shared definitions can
+replace browser-root imports with `@tanstack/charts/portable`; granular entries
+remain the bundle-sensitive option. Neither path changes existing published
+web behavior.
+
+The private package is not publishable as it stands. Metro resolves its
+workspace source, and the package has no production build or published export
+map. A native-specific build, declaration, tarball, install,
+conditional-export, and Metro-consumer gate is part of productionization.
+
+## Pros and cons
+
+### Advantages
+
+- Most data-to-geometry behavior remains one implementation.
+- Existing definitions, accessors, D3 scales, custom marks, polar charts, and
+ geographic paths remain usable.
+- The direct scene visitor is small and avoids an SVG XML parse/reconcile step.
+- `react-native-svg` provides one renderer across iOS and Android and supports
+ the current React Native architecture.
+- Native callbacks receive the original datum objects because the scene and
+ interaction model stay in one JavaScript runtime.
+- The separate package keeps native dependencies and platform assumptions out
+ of web bundles.
+
+### Costs
+
+- Rendering parity is only the easy half; text, input, tooltips, animation,
+ accessibility, and export are host products.
+- `react-native-svg` adds both JavaScript and native binary code.
+- Many SVG nodes can become expensive before the shared scene compiler does.
+- Native support needs devices, release builds, TalkBack/VoiceOver testing,
+ and two platform-specific failure surfaces.
+- Current interaction and tooltip ownership must be refactored out of a mature
+ DOM renderer without regressing web behavior.
+- A publishable native package needs a separate packed-declaration gate because
+ React Native and DOM global declarations conflict in the current web fixture.
+
+## Verification performed
+
+- 13 focused POC tests cover every scene primitive, gradients, clips, paint
+ resolution, focus modes, point restoration, placement, chart compilation,
+ and no-speculative-size behavior. Component mapping tests use React DOM
+ server rendering with native modules mocked; they are structural tests, not
+ native renderer tests.
+- The native package and the normal React Native application configuration
+ typecheck.
+- The repository-wide typecheck passes with the native dependency graph.
+- The prerequisite PR's packed gate validates both portable entries without
+ changing the browser root.
+- Existing locked web bundle baselines remain unchanged.
+- Production Metro bundles complete for iOS and Android.
+- Source-map gates prove the full native entries do not include guarded browser
+ implementation files.
+
+A strict native consumer with `skipLibCheck: false` now gets past the Charts
+DOM boundary and stops in `@types/d3-array`, whose `blurImage` declaration
+references the browser global `ImageData`. An automated diagnostic accepts
+only those two known errors, or a clean result after the upstream declaration
+is fixed. The POC does not add a fake global or pull DOM libraries into native
+to hide the upstream declaration problem.
+
+The native declaration check and isolated esbuild boundary run in the normal
+validation workflow. The eight-build iOS/Android Metro measurement remains a
+local spike command rather than a mandatory CI gate.
+
+Not performed:
+
+- simulator or physical-device rendering;
+- native component interaction tests;
+- visual comparison against the conformance corpus;
+- Hermes execution or profiling;
+- 1k/10k-point interaction and memory tests;
+- release application binary comparison;
+- VoiceOver and TalkBack validation;
+- Expo managed-workflow validation;
+- motion, export, or Skia implementation.
+
+## Production path
+
+### Phase 1: shared behavior and a releasable SVG host
+
+Extract interaction and tooltip policy, add native theme ownership, complete
+the typography contract, replace the proof's responder policy, and add a
+native-specific package gate. Keep the package scoped to the tested RN/RNSVG
+pair.
+
+Estimated effort: 3–5 engineering weeks.
+
+### Phase 2: device confidence
+
+Add bare and Expo fixtures, iOS and Android release builds, a platform-neutral
+definition corpus, screenshot/geometry comparison, VoiceOver/TalkBack flows,
+binary-size measurement, and sustained interaction benchmarks.
+
+Estimated effort: 3–5 engineering weeks.
+
+### Phase 3: broader parity
+
+Add renderer-neutral motion, native export/share, advanced gesture recipes,
+and a Skia renderer only if measured SVG node pressure justifies it. Expand the
+supported version matrix from evidence.
+
+Estimated effort: 4–10 engineering weeks, strongly dependent on motion,
+accessibility, and dense-data requirements.
+
+An honest SVG-native MVP is therefore roughly 6–10 weeks. Broad parity with
+the current web product is closer to 10–20 weeks. These are engineering ranges,
+not schedule commitments.
+
+## Recommendation
+
+Proceed to Phase 1 if a real React Native product is planned. The architecture
+is sound and the JavaScript cost is reasonable for a charting package. Keep the
+package private if the immediate goal is only optional ecosystem coverage.
+
+Do not start a NativeScript adapter in parallel. The earlier
+[native platform support spike](./NATIVE-PLATFORM-SUPPORT-SPIKE.md) remains the
+architecture comparison; this proof increases confidence specifically for
+React Native because its runtime, Metro pipeline, SVG implementation, and
+interaction surface were exercised.
+
+## Primary platform references
+
+- [React Native 0.86 release](https://reactnative.dev/blog/2026/06/11/react-native-0.86)
+- [React Native version support status](https://reactnative.dev/versions.html)
+- [React Native layout events](https://reactnative.dev/docs/layoutevent)
+- [React Native accessibility](https://reactnative.dev/docs/accessibility)
+- [`react-native-svg` support and compatibility](https://github.com/software-mansion/react-native-svg)
+- [Metro package exports and the `react-native` condition](https://metrobundler.dev/docs/package-exports/)
diff --git a/benchmarks/entries/charts-react-native-line.ts b/benchmarks/entries/charts-react-native-line.ts
new file mode 100644
index 0000000..88ab0a3
--- /dev/null
+++ b/benchmarks/entries/charts-react-native-line.ts
@@ -0,0 +1,11 @@
+import { scaleLinear } from 'd3-scale'
+import { lineY } from '@tanstack/charts/line'
+import { defineChart } from '@tanstack/charts/scene'
+
+export { Chart } from '@tanstack/react-native-charts'
+
+export const definition = defineChart({
+ marks: [lineY([4, 9, 7])],
+ x: { scale: scaleLinear().domain([0, 2]) },
+ y: { scale: scaleLinear().domain([0, 10]) },
+})
diff --git a/benchmarks/entries/charts-react-native.ts b/benchmarks/entries/charts-react-native.ts
new file mode 100644
index 0000000..c7629dd
--- /dev/null
+++ b/benchmarks/entries/charts-react-native.ts
@@ -0,0 +1 @@
+export { Chart } from '@tanstack/react-native-charts'
diff --git a/examples/charts-react-native/App.tsx b/examples/charts-react-native/App.tsx
new file mode 100644
index 0000000..77dcaef
--- /dev/null
+++ b/examples/charts-react-native/App.tsx
@@ -0,0 +1,66 @@
+import * as React from 'react'
+import { SafeAreaView, Text, View } from 'react-native'
+import { scaleLinear } from 'd3-scale'
+import { lineY } from '@tanstack/charts/line'
+import { defineChart } from '@tanstack/charts/scene'
+import { Chart } from '@tanstack/react-native-charts'
+
+const data = [
+ { month: 1, revenue: 12 },
+ { month: 2, revenue: 18 },
+ { month: 3, revenue: 15 },
+ { month: 4, revenue: 26 },
+ { month: 5, revenue: 31 },
+]
+
+const definition = defineChart(
+ {
+ marks: [
+ lineY(data, {
+ x: 'month',
+ y: 'revenue',
+ stroke: 'var(--revenue, #2563eb)',
+ strokeWidth: 3,
+ points: true,
+ }),
+ ],
+ x: {
+ label: 'Month',
+ scale: scaleLinear().domain([1, 5]),
+ },
+ y: {
+ label: 'Revenue',
+ grid: true,
+ scale: scaleLinear().domain([0, 35]),
+ },
+ },
+ {
+ focus: 'nearest-x',
+ tooltip: { sticky: true },
+ },
+)
+
+export default function App() {
+ return (
+
+
+ (
+
+ {defaultBody}
+ {pinned ? (
+
+ Pinned
+
+ ) : null}
+
+ )}
+ />
+
+
+ )
+}
diff --git a/examples/charts-react-native/app.json b/examples/charts-react-native/app.json
new file mode 100644
index 0000000..af4d3ea
--- /dev/null
+++ b/examples/charts-react-native/app.json
@@ -0,0 +1,4 @@
+{
+ "name": "ChartsNativePoc",
+ "displayName": "Charts Native POC"
+}
diff --git a/examples/charts-react-native/babel.config.cjs b/examples/charts-react-native/babel.config.cjs
new file mode 100644
index 0000000..3e0218e
--- /dev/null
+++ b/examples/charts-react-native/babel.config.cjs
@@ -0,0 +1,3 @@
+module.exports = {
+ presets: ['module:@react-native/babel-preset'],
+}
diff --git a/examples/charts-react-native/index.blank.js b/examples/charts-react-native/index.blank.js
new file mode 100644
index 0000000..d5f656f
--- /dev/null
+++ b/examples/charts-react-native/index.blank.js
@@ -0,0 +1,9 @@
+import * as React from 'react'
+import { AppRegistry, View } from 'react-native'
+import { name as appName } from './app.json'
+
+function BlankApp() {
+ return React.createElement(View)
+}
+
+AppRegistry.registerComponent(appName, () => BlankApp)
diff --git a/examples/charts-react-native/index.core.js b/examples/charts-react-native/index.core.js
new file mode 100644
index 0000000..98759e7
--- /dev/null
+++ b/examples/charts-react-native/index.core.js
@@ -0,0 +1,23 @@
+import * as React from 'react'
+import { AppRegistry, View } from 'react-native'
+import { scaleLinear } from 'd3-scale'
+import { lineY } from '@tanstack/charts/line'
+import { createChartRuntime } from '@tanstack/charts/runtime'
+import { defineChart } from '@tanstack/charts/scene'
+import { name as appName } from './app.json'
+
+const definition = defineChart({
+ marks: [lineY([4, 9, 7])],
+ x: { scale: scaleLinear().domain([0, 2]) },
+ y: { scale: scaleLinear().domain([0, 10]) },
+})
+const runtime = createChartRuntime()
+const scene = runtime.render(definition, { width: 320, height: 240 })
+
+function CoreApp() {
+ return React.createElement(View, {
+ accessibilityLabel: `${scene.points.length} chart points`,
+ })
+}
+
+AppRegistry.registerComponent(appName, () => CoreApp)
diff --git a/examples/charts-react-native/index.js b/examples/charts-react-native/index.js
new file mode 100644
index 0000000..33fbb36
--- /dev/null
+++ b/examples/charts-react-native/index.js
@@ -0,0 +1,5 @@
+import { AppRegistry } from 'react-native'
+import App from './App'
+import { name as appName } from './app.json'
+
+AppRegistry.registerComponent(appName, () => App)
diff --git a/examples/charts-react-native/index.svg.js b/examples/charts-react-native/index.svg.js
new file mode 100644
index 0000000..0e7e94f
--- /dev/null
+++ b/examples/charts-react-native/index.svg.js
@@ -0,0 +1,23 @@
+import * as React from 'react'
+import { AppRegistry, View } from 'react-native'
+import { Circle, Svg } from 'react-native-svg'
+import { name as appName } from './app.json'
+
+function SvgApp() {
+ return React.createElement(
+ View,
+ null,
+ React.createElement(
+ Svg,
+ { width: 100, height: 100 },
+ React.createElement(Circle, {
+ cx: 50,
+ cy: 50,
+ r: 20,
+ fill: '#2563eb',
+ }),
+ ),
+ )
+}
+
+AppRegistry.registerComponent(appName, () => SvgApp)
diff --git a/examples/charts-react-native/metro.config.cjs b/examples/charts-react-native/metro.config.cjs
new file mode 100644
index 0000000..51160f8
--- /dev/null
+++ b/examples/charts-react-native/metro.config.cjs
@@ -0,0 +1,14 @@
+const path = require('node:path')
+const { getDefaultConfig, mergeConfig } = require('@react-native/metro-config')
+
+const workspaceRoot = path.resolve(__dirname, '../..')
+
+module.exports = mergeConfig(getDefaultConfig(__dirname), {
+ watchFolders: [workspaceRoot],
+ resolver: {
+ nodeModulesPaths: [
+ path.resolve(__dirname, 'node_modules'),
+ path.resolve(workspaceRoot, 'node_modules'),
+ ],
+ },
+})
diff --git a/examples/charts-react-native/package.json b/examples/charts-react-native/package.json
new file mode 100644
index 0000000..e2ad3e6
--- /dev/null
+++ b/examples/charts-react-native/package.json
@@ -0,0 +1,30 @@
+{
+ "name": "@charts-poc/react-native-example",
+ "version": "0.0.0",
+ "private": true,
+ "license": "MIT",
+ "scripts": {
+ "bundle:android": "react-native bundle --entry-file index.js --platform android --dev false --minify true --bundle-output ../../.bundle-output/react-native-chart.android.js --sourcemap-output ../../.bundle-output/react-native-chart.android.map",
+ "bundle:ios": "react-native bundle --entry-file index.js --platform ios --dev false --minify true --bundle-output ../../.bundle-output/react-native-chart.ios.js --sourcemap-output ../../.bundle-output/react-native-chart.ios.map",
+ "start": "react-native start"
+ },
+ "dependencies": {
+ "@tanstack/charts": "workspace:*",
+ "@tanstack/react-native-charts": "workspace:*",
+ "d3-scale": "4.0.2",
+ "react": "19.2.3",
+ "react-native": "0.86.0",
+ "react-native-svg": "15.15.5"
+ },
+ "devDependencies": {
+ "@babel/core": "^7.25.2",
+ "@babel/runtime": "^7.25.0",
+ "@react-native-community/cli": "20.1.0",
+ "@react-native/babel-preset": "0.86.0",
+ "@react-native/metro-config": "0.86.0",
+ "@react-native/typescript-config": "0.86.0"
+ },
+ "engines": {
+ "node": ">=22.11.0"
+ }
+}
diff --git a/examples/charts-react-native/tsconfig.json b/examples/charts-react-native/tsconfig.json
new file mode 100644
index 0000000..e441498
--- /dev/null
+++ b/examples/charts-react-native/tsconfig.json
@@ -0,0 +1,9 @@
+{
+ "extends": "@react-native/typescript-config",
+ "compilerOptions": {
+ "lib": ["es2022"],
+ "types": ["react", "react-native"]
+ },
+ "include": ["App.tsx"],
+ "exclude": ["node_modules"]
+}
diff --git a/examples/charts-react-native/tsconfig.strict.json b/examples/charts-react-native/tsconfig.strict.json
new file mode 100644
index 0000000..8c174d9
--- /dev/null
+++ b/examples/charts-react-native/tsconfig.strict.json
@@ -0,0 +1,6 @@
+{
+ "extends": "./tsconfig.json",
+ "compilerOptions": {
+ "skipLibCheck": false
+ }
+}
diff --git a/package.json b/package.json
index 7db1474..ba2696d 100644
--- a/package.json
+++ b/package.json
@@ -46,6 +46,8 @@
"conformance:quick": "node scripts/compare-plot-catalog.mjs --profile=quick",
"conformance:size": "node scripts/compare-plot-catalog.mjs --size-only",
"performance": "node scripts/measure-rendering.mjs",
+ "react-native:poc:bundle": "node scripts/measure-react-native-poc.mjs",
+ "react-native:poc:types": "node scripts/check-react-native-types.mjs",
"package:check": "node scripts/check-packed-consumers.mjs && pnpm adapters:check",
"release:artifacts": "node scripts/build-release-artifacts.mjs",
"release:check": "node scripts/publish-release.mjs --check",
@@ -65,6 +67,7 @@
"@tanstack/charts": "workspace:*",
"@tanstack/charts-d3": "workspace:*",
"@tanstack/octane-charts": "workspace:*",
+ "@tanstack/react-native-charts": "workspace:*",
"@tanstack/react-charts": "workspace:*",
"@types/d3-array": "^3.2.2",
"@types/d3-brush": "^3.0.6",
diff --git a/packages/charts-core/src/reconcile.test.ts b/packages/charts-core/src/reconcile.test.ts
index 9fe0fc2..a17e1ce 100644
--- a/packages/charts-core/src/reconcile.test.ts
+++ b/packages/charts-core/src/reconcile.test.ts
@@ -142,7 +142,7 @@ describe('keyed SVG reconciliation', () => {
const cancelFrame = vi
.spyOn(window, 'cancelAnimationFrame')
.mockImplementation((handle) => {
- callbacks.delete(handle)
+ if (typeof handle === 'number') callbacks.delete(handle)
})
reconcileChartSvg(
container,
diff --git a/packages/react-native-charts/LICENSE b/packages/react-native-charts/LICENSE
new file mode 100644
index 0000000..cce7e25
--- /dev/null
+++ b/packages/react-native-charts/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2026 TanStack
+
+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/react-native-charts/README.md b/packages/react-native-charts/README.md
new file mode 100644
index 0000000..fbbb30e
--- /dev/null
+++ b/packages/react-native-charts/README.md
@@ -0,0 +1,6 @@
+# React Native Charts host spike
+
+Experimental React Native host for the shared `@tanstack/charts` definition,
+runtime, and scene graph. It renders with `react-native-svg`.
+
+This package is a proof of concept, not a supported release.
diff --git a/packages/react-native-charts/package.json b/packages/react-native-charts/package.json
new file mode 100644
index 0000000..5d29c34
--- /dev/null
+++ b/packages/react-native-charts/package.json
@@ -0,0 +1,19 @@
+{
+ "name": "@tanstack/react-native-charts",
+ "version": "0.0.0",
+ "private": true,
+ "license": "MIT",
+ "type": "module",
+ "sideEffects": false,
+ "exports": {
+ ".": "./src/index.ts"
+ },
+ "dependencies": {
+ "@tanstack/charts": "workspace:*"
+ },
+ "peerDependencies": {
+ "react": "^19.2.3",
+ "react-native": "^0.86.0",
+ "react-native-svg": "^15.15.5"
+ }
+}
diff --git a/packages/react-native-charts/src/Chart.test.tsx b/packages/react-native-charts/src/Chart.test.tsx
new file mode 100644
index 0000000..ee89018
--- /dev/null
+++ b/packages/react-native-charts/src/Chart.test.tsx
@@ -0,0 +1,71 @@
+import * as React from 'react'
+import { renderToStaticMarkup } from 'react-dom/server'
+import { scaleLinear } from 'd3-scale'
+import { describe, expect, it, vi } from 'vitest'
+import { lineY } from '@tanstack/charts/line'
+import { defineChart } from '@tanstack/charts/scene'
+import { Chart } from './Chart'
+
+vi.mock('react-native', () => ({
+ Text: 'span',
+ View: 'div',
+}))
+
+vi.mock('react-native-svg', () => ({
+ Circle: 'circle',
+ ClipPath: 'clipPath',
+ Defs: 'defs',
+ G: 'g',
+ Line: 'line',
+ LinearGradient: 'linearGradient',
+ Path: 'path',
+ Rect: 'rect',
+ Stop: 'stop',
+ Svg: 'svg',
+ Text: 'text',
+}))
+
+const data = [
+ { month: 1, value: 8 },
+ { month: 2, value: 12 },
+]
+const definition = defineChart({
+ marks: [
+ lineY(data, {
+ x: 'month',
+ y: 'value',
+ stroke: 'var(--series, #2563eb)',
+ points: true,
+ }),
+ ],
+ x: { scale: scaleLinear().domain([1, 2]) },
+ y: { scale: scaleLinear().domain([8, 12]) },
+})
+
+describe('React Native Chart', () => {
+ it('compiles a shared definition directly into native SVG components', () => {
+ const markup = renderToStaticMarkup(
+
,
+ )
+
+ expect(markup).toContain('
{
+ const markup = renderToStaticMarkup(
+ ,
+ )
+
+ expect(markup).not.toContain(' {
+ scene: ChartScene
+}
+
+export interface ChartProps<
+ TDatum = unknown,
+ TXValue extends ChartValue = ChartValue,
+ TYValue extends ChartValue = ChartValue,
+> {
+ definition: ChartDefinition
+ accessibilityLabel: string
+ accessibilityHint?: string
+ width?: number
+ height?: number
+ aspectRatio?: number
+ style?: StyleProp
+ color?: ColorValue
+ focusFill?: ColorValue
+ fontFamily?: string
+ idPrefix?: string
+ testID?: string
+ measureText?: ChartTextMeasurer
+ resolvePaint?: NativePaintResolver
+ onFocusChange?: (point: ChartPoint | null) => void
+ onFocusGroupChange?: (
+ points: readonly ChartPoint[],
+ ) => void
+ onSelect?: (point: ChartPoint | null) => void
+ onRender?: (
+ context: NativeChartRenderContext,
+ ) => void
+ renderTooltip?: (
+ context: NativeChartTooltipRenderContext,
+ ) => React.ReactNode
+}
+
+export function Chart<
+ TDatum,
+ TXValue extends ChartValue = ChartValue,
+ TYValue extends ChartValue = ChartValue,
+>({
+ definition,
+ accessibilityLabel,
+ accessibilityHint,
+ width,
+ height,
+ aspectRatio,
+ style,
+ color = '#111827',
+ focusFill = '#ffffff',
+ fontFamily,
+ idPrefix: idPrefixOption,
+ testID,
+ measureText,
+ resolvePaint = resolveNativePaint,
+ onFocusChange,
+ onFocusGroupChange,
+ onSelect,
+ onRender,
+ renderTooltip,
+}: ChartProps) {
+ const generatedId = React.useId()
+ const idPrefix =
+ idPrefixOption ??
+ `ts-chart-${generatedId.replaceAll(/[^a-zA-Z0-9_-]/g, '')}`
+ const runtime = React.useMemo(
+ () => createChartRuntime(),
+ [],
+ )
+ const [layout, setLayout] = React.useState<{
+ width: number
+ height: number
+ } | null>(null)
+ const resolvedAspectRatio = positiveFinite(aspectRatio)
+ const explicitWidth = positiveFinite(width)
+ const explicitHeight = positiveFinite(height)
+ const sceneSize = resolveSceneSize(
+ explicitWidth,
+ explicitHeight,
+ resolvedAspectRatio,
+ layout,
+ )
+ const scene = React.useMemo(
+ () =>
+ sceneSize ? runtime.render(definition, sceneSize, { measureText }) : null,
+ [definition, measureText, runtime, sceneSize?.height, sceneSize?.width],
+ )
+ const focusModel = React.useMemo(
+ () => (scene ? createNativeChartFocusModel(scene, definition) : null),
+ [definition, scene],
+ )
+ const [focusedPoints, setFocusedPoints] = React.useState<
+ readonly ChartPoint[]
+ >([])
+ const focusedPointsRef = React.useRef(focusedPoints)
+ const [pinnedKey, setPinnedKey] = React.useState(null)
+ const [pointer, setPointer] = React.useState(
+ null,
+ )
+ const tooltipOptions =
+ definition.tooltip && typeof definition.tooltip === 'object'
+ ? (definition.tooltip as ChartTooltipOptions)
+ : undefined
+ const sticky = Boolean(definition.tooltip) && tooltipOptions?.sticky !== false
+ const interactive = Boolean(scene?.points.length)
+
+ const commitFocus = React.useCallback(
+ (points: readonly ChartPoint[]) => {
+ if (samePointList(points, focusedPointsRef.current)) return
+ focusedPointsRef.current = points
+ setFocusedPoints(points)
+ onFocusChange?.(points[0] ?? null)
+ onFocusGroupChange?.(points)
+ },
+ [onFocusChange, onFocusGroupChange],
+ )
+
+ React.useEffect(() => () => runtime.destroy(), [runtime])
+ React.useEffect(() => {
+ if (scene) onRender?.({ scene })
+ }, [onRender, scene])
+ React.useEffect(() => {
+ const previous = focusedPointsRef.current[0]
+ if (!focusModel || !previous) return
+ const restored = focusModel.restore(previous)
+ if (restored) {
+ commitFocus(focusModel.group(restored))
+ } else {
+ setPinnedKey(null)
+ commitFocus([])
+ }
+ }, [commitFocus, focusModel])
+ React.useEffect(() => {
+ if (!sticky) setPinnedKey(null)
+ }, [sticky])
+
+ const dismiss = React.useCallback(() => {
+ setPinnedKey(null)
+ setPointer(null)
+ commitFocus([])
+ }, [commitFocus])
+
+ const pointAtEvent = React.useCallback(
+ (event: GestureResponderEvent) => {
+ if (!scene || !focusModel) return []
+ const measuredWidth = layout?.width ?? scene.width
+ const measuredHeight = layout?.height ?? scene.height
+ if (measuredWidth <= 0 || measuredHeight <= 0) return []
+ const position = {
+ x: (event.nativeEvent.locationX / measuredWidth) * scene.width,
+ y: (event.nativeEvent.locationY / measuredHeight) * scene.height,
+ }
+ setPointer(position)
+ return focusModel.resolve(position.x, position.y)
+ },
+ [focusModel, layout?.height, layout?.width, scene],
+ )
+
+ const handleResponderGrant = (event: GestureResponderEvent) => {
+ if (pinnedKey) return
+ commitFocus(pointAtEvent(event))
+ }
+ const handleResponderMove = (event: GestureResponderEvent) => {
+ if (pinnedKey) return
+ commitFocus(pointAtEvent(event))
+ }
+ const handleResponderRelease = (event: GestureResponderEvent) => {
+ const points = pointAtEvent(event)
+ const point = points[0] ?? null
+ if (sticky) setPinnedKey(pinnedKey ? null : (point?.key ?? null))
+ commitFocus(points)
+ onSelect?.(point)
+ }
+ const handleResponderTerminate = () => {
+ if (pinnedKey) return
+ setPointer(null)
+ commitFocus([])
+ }
+ const handleLayout = (event: LayoutChangeEvent) => {
+ const next = event.nativeEvent.layout
+ if (!positiveFinite(next.width) || !positiveFinite(next.height)) return
+ setLayout((current) =>
+ current?.width === next.width && current.height === next.height
+ ? current
+ : { width: next.width, height: next.height },
+ )
+ }
+
+ const navigate = (direction: -1 | 1) => {
+ if (!focusModel) return
+ const point = adjacentFocusPoint(
+ focusModel,
+ focusedPointsRef.current[0] ?? null,
+ direction,
+ )
+ setPointer(null)
+ commitFocus(point ? focusModel.group(point) : [])
+ }
+ const activate = () => {
+ const point = focusedPointsRef.current[0] ?? null
+ if (!point) return
+ if (sticky) setPinnedKey((current) => (current ? null : point.key))
+ onSelect?.(point)
+ }
+ const handleAccessibilityAction = (event: AccessibilityActionEvent) => {
+ switch (event.nativeEvent.actionName) {
+ case 'increment':
+ navigate(1)
+ break
+ case 'decrement':
+ navigate(-1)
+ break
+ case 'activate':
+ activate()
+ break
+ case 'escape':
+ dismiss()
+ break
+ }
+ }
+ const handleFocus = () => {
+ if (definition.keyboard === false || focusedPointsRef.current.length) return
+ navigate(1)
+ }
+ const focusedPoint = focusedPoints[0] ?? null
+
+ return (
+ false}
+ onResponderGrant={handleResponderGrant}
+ onResponderMove={handleResponderMove}
+ onResponderRelease={handleResponderRelease}
+ onResponderTerminate={handleResponderTerminate}
+ onResponderTerminationRequest={() => true}
+ onStartShouldSetResponder={() => interactive}
+ style={[
+ {
+ position: 'relative',
+ overflow: 'visible',
+ width: explicitWidth ?? '100%',
+ height:
+ explicitHeight ??
+ (resolvedAspectRatio === undefined ? 320 : undefined),
+ aspectRatio:
+ explicitHeight === undefined ? resolvedAspectRatio : undefined,
+ },
+ style,
+ ]}
+ testID={testID}
+ >
+ {scene ? (
+ <>
+
+
+ {definition.tooltip && focusedPoints.length ? (
+
+ ) : null}
+ >
+ ) : null}
+
+ )
+}
+
+function resolveSceneSize(
+ width: number | undefined,
+ height: number | undefined,
+ aspectRatio: number | undefined,
+ layout: { width: number; height: number } | null,
+) {
+ const resolvedWidth = width ?? layout?.width
+ if (!resolvedWidth) return null
+ const resolvedHeight =
+ height ??
+ (aspectRatio === undefined
+ ? (layout?.height ?? (width === undefined ? undefined : 320))
+ : resolvedWidth / aspectRatio)
+ return resolvedHeight
+ ? { width: resolvedWidth, height: resolvedHeight }
+ : null
+}
+
+function positiveFinite(value: number | undefined) {
+ return value !== undefined && Number.isFinite(value) && value > 0
+ ? value
+ : undefined
+}
+
+function describePoint(point: ChartPoint) {
+ return [
+ point.groupLabel,
+ formatValue(point.xValue),
+ formatValue(point.yValue),
+ ]
+ .filter(Boolean)
+ .join(', ')
+}
+
+function formatValue(value: ChartValue) {
+ return value instanceof Date
+ ? Number.isNaN(+value)
+ ? 'Invalid Date'
+ : value.toISOString().replace('T00:00:00.000Z', '')
+ : typeof value === 'number'
+ ? value.toLocaleString()
+ : String(value)
+}
diff --git a/packages/react-native-charts/src/FocusOverlay.tsx b/packages/react-native-charts/src/FocusOverlay.tsx
new file mode 100644
index 0000000..1e2e386
--- /dev/null
+++ b/packages/react-native-charts/src/FocusOverlay.tsx
@@ -0,0 +1,64 @@
+import * as React from 'react'
+import type { ColorValue } from 'react-native'
+import { Circle, Svg } from 'react-native-svg'
+import type { ChartPoint, ChartValue } from '@tanstack/charts/types'
+import { resolveNativeSolidPaint, type NativePaintResolver } from './paint'
+
+export interface NativeChartFocusOverlayProps<
+ TDatum,
+ TXValue extends ChartValue,
+ TYValue extends ChartValue,
+> {
+ width: number
+ height: number
+ points: readonly ChartPoint[]
+ color: ColorValue
+ fill: ColorValue
+ resolvePaint: NativePaintResolver
+}
+
+export function NativeChartFocusOverlay<
+ TDatum,
+ TXValue extends ChartValue,
+ TYValue extends ChartValue,
+>({
+ width,
+ height,
+ points,
+ color,
+ fill,
+ resolvePaint,
+}: NativeChartFocusOverlayProps) {
+ if (!points.length) return null
+ return (
+
+ {points.map((point, index) => (
+
+ ))}
+
+ )
+}
+
+const absoluteFill = {
+ position: 'absolute',
+ left: 0,
+ top: 0,
+ right: 0,
+ bottom: 0,
+} as const
diff --git a/packages/react-native-charts/src/SvgScene.test.tsx b/packages/react-native-charts/src/SvgScene.test.tsx
new file mode 100644
index 0000000..fbed133
--- /dev/null
+++ b/packages/react-native-charts/src/SvgScene.test.tsx
@@ -0,0 +1,165 @@
+import * as React from 'react'
+import { renderToStaticMarkup } from 'react-dom/server'
+import { describe, expect, it, vi } from 'vitest'
+import type { ChartScene, SceneNode } from '@tanstack/charts/types'
+import { resolveNativePaint } from './paint'
+import { NativeChartScene, resolveNativeLineJoin } from './SvgScene'
+
+vi.mock('react-native-svg', () => ({
+ Circle: 'circle',
+ ClipPath: 'clipPath',
+ Defs: 'defs',
+ G: 'g',
+ Line: 'line',
+ LinearGradient: 'linearGradient',
+ Path: 'path',
+ Rect: 'rect',
+ Stop: 'stop',
+ Svg: 'svg',
+ Text: 'text',
+}))
+
+describe('React Native SVG scene renderer', () => {
+ it('maps every scene primitive, gradients, clipping, and authored paths', () => {
+ const markup = renderToStaticMarkup(
+ ,
+ )
+
+ expect(markup).toContain(' {
+ expect(resolveNativeLineJoin('arcs')).toBe('round')
+ expect(resolveNativeLineJoin('miter-clip')).toBe('miter')
+ expect(resolveNativeLineJoin('round')).toBe('round')
+ })
+})
+
+function scene(): ChartScene {
+ const nodes: SceneNode[] = [
+ {
+ kind: 'group',
+ key: 'translated-grid',
+ translateX: 10,
+ translateY: 12,
+ clip: { x: 0, y: 0, width: 80, height: 60 },
+ style: {
+ stroke: 'currentColor',
+ strokeOpacity: 0.4,
+ strokeWidth: 3,
+ strokeDasharray: '2 4',
+ },
+ children: [{ kind: 'rule', key: 'rule', x1: 0, y1: 0, x2: 30, y2: 30 }],
+ },
+ {
+ kind: 'polyline',
+ key: 'line',
+ points: [
+ [2, 4],
+ [20, 30],
+ ],
+ style: { fill: 'none', stroke: '#abcdef', lineJoin: 'arcs' },
+ },
+ {
+ kind: 'polyline',
+ key: 'curved-line',
+ points: [],
+ path: 'M0,0C10,20,20,20,30,0',
+ style: {
+ fill: 'none',
+ stroke: '#334455',
+ lineJoin: 'miter-clip',
+ },
+ },
+ {
+ kind: 'area',
+ key: 'area',
+ points: [
+ [0, 20],
+ [20, 0],
+ [40, 20],
+ ],
+ style: { fill: 'url(#fill)' },
+ },
+ {
+ kind: 'dot',
+ key: 'dot',
+ x: 50,
+ y: 30,
+ radius: 5,
+ style: { fill: 'var(--dot, #ff0000)' },
+ },
+ {
+ kind: 'rect',
+ key: 'rect',
+ x: 60,
+ y: 10,
+ width: 20,
+ height: 30,
+ radius: 4,
+ style: { fill: '#00ff00' },
+ },
+ {
+ kind: 'label',
+ key: 'label',
+ x: 40,
+ y: 50,
+ text: 'Native',
+ anchor: 'middle',
+ baseline: 'middle',
+ rotate: -30,
+ fontSize: 12,
+ fontWeight: 600,
+ style: { fill: '#111111' },
+ },
+ ]
+ return {
+ width: 100,
+ height: 60,
+ margin: { top: 0, right: 0, bottom: 0, left: 0 },
+ chart: { x: 0, y: 0, width: 100, height: 60 },
+ nodes,
+ points: [],
+ scales: {},
+ colors: {
+ type: 'ordinal',
+ domain: [],
+ range: [],
+ map: () => '#2563eb',
+ },
+ gradients: [
+ {
+ id: 'fill',
+ stops: [
+ { offset: 0, color: '#2563eb', opacity: 0.2 },
+ { offset: 1, color: '#2563eb' },
+ ],
+ },
+ ],
+ theme: {
+ foreground: '#111111',
+ muted: '#666666',
+ grid: '#999999',
+ background: '#f8fafc',
+ palette: ['#2563eb'],
+ },
+ }
+}
diff --git a/packages/react-native-charts/src/SvgScene.tsx b/packages/react-native-charts/src/SvgScene.tsx
new file mode 100644
index 0000000..e0a4f34
--- /dev/null
+++ b/packages/react-native-charts/src/SvgScene.tsx
@@ -0,0 +1,287 @@
+import * as React from 'react'
+import type { ColorValue } from 'react-native'
+import {
+ Circle,
+ ClipPath,
+ Defs,
+ G,
+ Line,
+ LinearGradient,
+ Path,
+ Rect,
+ Stop,
+ Svg,
+ Text,
+} from 'react-native-svg'
+import type { CommonPathProps, Linejoin } from 'react-native-svg'
+import type {
+ ChartScene,
+ SceneGroup,
+ SceneNode,
+ SceneStyle,
+} from '@tanstack/charts/types'
+import type { NativePaintResolver } from './paint'
+
+export interface NativeChartSceneProps {
+ scene: ChartScene
+ color: ColorValue
+ fontFamily?: string
+ idPrefix: string
+ resolvePaint: NativePaintResolver
+}
+
+export const NativeChartScene = React.memo(function NativeChartScene({
+ scene,
+ color,
+ fontFamily,
+ idPrefix,
+ resolvePaint,
+}: NativeChartSceneProps) {
+ const gradientIds = React.useMemo(
+ () => new Set(scene.gradients.map((gradient) => gradient.id)),
+ [scene.gradients],
+ )
+ const paint = React.useCallback(
+ (value: string) =>
+ resolveScenePaint(value, gradientIds, idPrefix, resolvePaint, color),
+ [color, gradientIds, idPrefix, resolvePaint],
+ )
+
+ return (
+
+ {scene.gradients.length ? (
+
+ {scene.gradients.map((gradient) => (
+
+ {gradient.stops.map((stop, index) => (
+
+ ))}
+
+ ))}
+
+ ) : null}
+ {scene.theme.background === 'transparent' ? null : (
+
+ )}
+ {scene.nodes.map((node) => renderSceneNode(node, idPrefix, paint))}
+
+ )
+})
+
+function renderSceneNode(
+ node: SceneNode,
+ idPrefix: string,
+ paint: (value: string) => ColorValue,
+): React.ReactNode {
+ const style = nativeSceneStyle(node.style, paint)
+
+ switch (node.kind) {
+ case 'group':
+ return renderGroup(node, idPrefix, paint, style)
+ case 'rule':
+ return (
+
+ )
+ case 'polyline':
+ return (
+
+ )
+ case 'area':
+ return (
+
+ )
+ case 'dot':
+ return (
+
+ )
+ case 'rect':
+ return (
+
+ )
+ case 'label':
+ return (
+
+ {node.text}
+
+ )
+ }
+}
+
+function renderGroup(
+ node: SceneGroup,
+ idPrefix: string,
+ paint: (value: string) => ColorValue,
+ style: ReturnType,
+) {
+ const clipId = node.clip
+ ? scopedId(idPrefix, `clip-${stableId(node.key)}`)
+ : undefined
+ const transform =
+ node.translateX === undefined && node.translateY === undefined
+ ? undefined
+ : `translate(${node.translateX ?? 0} ${node.translateY ?? 0})`
+
+ return (
+
+ {node.clip && clipId ? (
+
+
+
+
+
+ ) : null}
+ {node.children.map((child) => renderSceneNode(child, idPrefix, paint))}
+
+ )
+}
+
+function nativeSceneStyle(
+ style: SceneStyle | undefined,
+ paint: (value: string) => ColorValue,
+): CommonPathProps & { opacity?: number } {
+ if (!style) return {}
+ return {
+ fill: style.fill === undefined ? undefined : paint(style.fill),
+ fillOpacity: style.fillOpacity,
+ stroke: style.stroke === undefined ? undefined : paint(style.stroke),
+ strokeOpacity: style.strokeOpacity,
+ strokeWidth: style.strokeWidth,
+ opacity: style.opacity,
+ strokeLinecap: style.lineCap,
+ strokeLinejoin: resolveNativeLineJoin(style.lineJoin),
+ strokeDasharray: style.strokeDasharray,
+ }
+}
+
+export function resolveNativeLineJoin(
+ lineJoin: SceneStyle['lineJoin'],
+): Linejoin | undefined {
+ if (lineJoin === 'arcs') return 'round'
+ if (lineJoin === 'miter-clip') return 'miter'
+ return lineJoin
+}
+
+function resolveScenePaint(
+ value: string,
+ gradientIds: ReadonlySet,
+ idPrefix: string,
+ resolvePaint: NativePaintResolver,
+ color: ColorValue,
+) {
+ const match = /^url\(#([^)]+)\)$/.exec(value)
+ const id = match?.[1]
+ if (id && gradientIds.has(id)) return `url(#${scopedId(idPrefix, id)})`
+ return resolvePaint(value, { color })
+}
+
+function pointsPath(
+ points: readonly (readonly [number, number])[],
+ close: boolean,
+) {
+ return `${points
+ .map(([x, y], index) => `${index === 0 ? 'M' : 'L'}${x},${y}`)
+ .join('')}${close ? 'Z' : ''}`
+}
+
+function scopedId(prefix: string, id: string) {
+ return prefix ? `${prefix}-${sanitizeId(id)}` : sanitizeId(id)
+}
+
+function sanitizeId(value: string) {
+ return value.replaceAll(/[^a-zA-Z0-9_-]/g, '')
+}
+
+function stableId(value: string) {
+ let hash = 2166136261
+ for (let index = 0; index < value.length; index += 1) {
+ hash = Math.imul(hash ^ value.charCodeAt(index), 16777619)
+ }
+ return (hash >>> 0).toString(36)
+}
+
+function percent(value: number) {
+ return `${Math.max(0, Math.min(1, value)) * 100}%`
+}
diff --git a/packages/react-native-charts/src/Tooltip.test.ts b/packages/react-native-charts/src/Tooltip.test.ts
new file mode 100644
index 0000000..a3f5316
--- /dev/null
+++ b/packages/react-native-charts/src/Tooltip.test.ts
@@ -0,0 +1,82 @@
+import { describe, expect, it, vi } from 'vitest'
+import type { ChartPoint, ChartScene } from '@tanstack/charts/types'
+import { createNativeTooltipContent, placeNativeTooltip } from './Tooltip'
+
+vi.mock('react-native', () => ({
+ Text: 'span',
+ View: 'div',
+}))
+
+describe('native tooltip model', () => {
+ it('builds the supported shared-axis default content', () => {
+ const points = [point('alpha', 'Alpha', 3), point('beta', 'Beta', 7)]
+
+ expect(createNativeTooltipContent(points, scene(points))).toEqual({
+ title: 'x: 1',
+ rows: [
+ { label: 'Alpha', value: '3', color: '#2563eb' },
+ { label: 'Beta', value: '7', color: '#f97316' },
+ ],
+ })
+ })
+
+ it('chooses and clamps a placement inside the native layout boundary', () => {
+ expect(
+ placeNativeTooltip(
+ { x: 4, y: 4 },
+ { width: 20, height: 10 },
+ { width: 100, height: 60 },
+ 'top',
+ 10,
+ ),
+ ).toEqual({ left: 8, top: 8, placement: 'top' })
+ })
+})
+
+function point(
+ key: string,
+ groupLabel: string,
+ yValue: number,
+): ChartPoint {
+ return {
+ key,
+ markId: 'series',
+ group: key,
+ groupLabel,
+ datum: null,
+ datumIndex: 0,
+ xValue: 1,
+ yValue,
+ x: 20,
+ y: yValue * 4,
+ color: key === 'alpha' ? '#2563eb' : '#f97316',
+ }
+}
+
+function scene(
+ points: readonly ChartPoint[],
+): ChartScene {
+ return {
+ width: 100,
+ height: 60,
+ margin: { top: 0, right: 0, bottom: 0, left: 0 },
+ chart: { x: 0, y: 0, width: 100, height: 60 },
+ nodes: [],
+ points,
+ scales: {},
+ colors: {
+ type: 'ordinal',
+ domain: ['alpha', 'beta'],
+ range: ['#2563eb', '#f97316'],
+ map: (value) => (value === 'beta' ? '#f97316' : '#2563eb'),
+ },
+ gradients: [],
+ theme: {
+ foreground: '#111827',
+ muted: '#6b7280',
+ grid: '#d1d5db',
+ background: 'transparent',
+ palette: ['#2563eb', '#f97316'],
+ },
+ }
+}
diff --git a/packages/react-native-charts/src/Tooltip.tsx b/packages/react-native-charts/src/Tooltip.tsx
new file mode 100644
index 0000000..7fb615b
--- /dev/null
+++ b/packages/react-native-charts/src/Tooltip.tsx
@@ -0,0 +1,491 @@
+import * as React from 'react'
+import type {
+ ColorValue,
+ LayoutChangeEvent,
+ TextStyle,
+ ViewStyle,
+} from 'react-native'
+import { Text, View } from 'react-native'
+import type {
+ ChartPoint,
+ ChartScene,
+ ChartTooltipContent,
+ ChartTooltipContentContext,
+ ChartTooltipOptions,
+ ChartTooltipPlacement,
+ ChartTooltipPosition,
+ ChartValue,
+} from '@tanstack/charts/types'
+import { resolveNativeSolidPaint, type NativePaintResolver } from './paint'
+
+export interface NativeChartTooltipRenderContext<
+ TDatum,
+ TXValue extends ChartValue,
+ TYValue extends ChartValue,
+> {
+ points: readonly ChartPoint[]
+ content: ChartTooltipContent | string
+ pinned: boolean
+ dismiss: () => void
+ defaultBody: React.ReactNode
+}
+
+export interface NativeChartTooltipProps<
+ TDatum,
+ TXValue extends ChartValue,
+ TYValue extends ChartValue,
+> {
+ scene: ChartScene
+ width: number
+ height: number
+ points: readonly ChartPoint[]
+ pointer: ChartTooltipPosition | null
+ options?: ChartTooltipOptions
+ pinned: boolean
+ color: ColorValue
+ resolvePaint: NativePaintResolver
+ dismiss: () => void
+ render?: (
+ context: NativeChartTooltipRenderContext,
+ ) => React.ReactNode
+}
+
+export function NativeChartTooltip<
+ TDatum,
+ TXValue extends ChartValue,
+ TYValue extends ChartValue,
+>({
+ scene,
+ width,
+ height,
+ points: unorderedPoints,
+ pointer,
+ options,
+ pinned,
+ color,
+ resolvePaint,
+ dismiss,
+ render,
+}: NativeChartTooltipProps) {
+ const [size, setSize] = React.useState({ width: 0, height: 0 })
+ const points = React.useMemo(
+ () => orderTooltipPoints(unorderedPoints, scene, options?.sort),
+ [options?.sort, scene, unorderedPoints],
+ )
+ const point = points[0]
+ if (!point) return null
+ const content = createNativeTooltipContent(points, scene, options)
+ const sceneAnchor = resolveTooltipAnchor(
+ point,
+ points,
+ scene,
+ pointer,
+ options,
+ )
+ const anchor = {
+ x: (sceneAnchor.x / scene.width) * width,
+ y: (sceneAnchor.y / scene.height) * height,
+ }
+ const position = placeNativeTooltip(
+ anchor,
+ size,
+ { width, height },
+ options?.placement,
+ options?.offset,
+ )
+ const defaultBody = (
+
+ )
+ const body =
+ render?.({ points, content, pinned, dismiss, defaultBody }) ?? defaultBody
+ const accessibilityLabel = tooltipAccessibilityLabel(content)
+ const handleLayout = (event: LayoutChangeEvent) => {
+ const next = event.nativeEvent.layout
+ if (next.width !== size.width || next.height !== size.height) {
+ setSize({ width: next.width, height: next.height })
+ }
+ }
+
+ return (
+ pinned}
+ pointerEvents={pinned ? 'auto' : 'none'}
+ style={[tooltipStyle, { left: position.left, top: position.top }]}
+ >
+ {body}
+
+ )
+}
+
+function DefaultNativeTooltipBody({
+ content,
+ color,
+ resolvePaint,
+}: {
+ content: ChartTooltipContent | string
+ color: ColorValue
+ resolvePaint: NativePaintResolver
+}) {
+ if (typeof content === 'string') {
+ return {content}
+ }
+ return (
+
+ {content.title ? (
+
+ {content.color ? (
+
+ ) : null}
+ {content.title}
+
+ ) : null}
+ {content.rows.map((row, index) => (
+
+
+
+ {row.label}
+
+
+ {row.value}
+
+
+ ))}
+
+ )
+}
+
+export function createNativeTooltipContent<
+ TDatum,
+ TXValue extends ChartValue,
+ TYValue extends ChartValue,
+>(
+ points: readonly ChartPoint[],
+ scene: ChartScene,
+ options?: ChartTooltipOptions,
+): ChartTooltipContent | string {
+ const point = points[0]
+ if (!point) return { rows: [] }
+ const context = createTooltipContentContext(scene)
+ const content = options?.content?.(points, context)
+ if (content !== undefined) return content
+ const formatted = options?.formatGroup?.(points) ?? options?.format?.(point)
+ if (formatted !== undefined) return formatted
+
+ const sharedX =
+ points.length > 1 &&
+ points.every((candidate) => chartValueEqual(candidate.xValue, point.xValue))
+ if (sharedX) {
+ return {
+ title: `${context.xLabel}: ${context.formatX(point.xValue)}`,
+ rows: points.map((candidate) => ({
+ label: candidate.groupLabel,
+ value: context.formatY(candidate.yValue),
+ color: candidate.color,
+ })),
+ }
+ }
+
+ return {
+ title: point.group == null ? undefined : point.groupLabel,
+ color: point.group == null ? undefined : point.color,
+ rows: [
+ { label: context.xLabel, value: context.formatX(point.xValue) },
+ { label: context.yLabel, value: context.formatY(point.yValue) },
+ ],
+ }
+}
+
+function createTooltipContentContext(
+ scene: ChartScene,
+): ChartTooltipContentContext {
+ return {
+ xLabel: findSceneLabel(scene, 'x-label') ?? 'x',
+ yLabel: findSceneLabel(scene, 'y-label') ?? 'y',
+ formatX: formatValue,
+ formatY: formatValue,
+ }
+}
+
+function orderTooltipPoints<
+ TDatum,
+ TXValue extends ChartValue,
+ TYValue extends ChartValue,
+>(
+ points: readonly ChartPoint[],
+ scene: ChartScene,
+ sort: ChartTooltipOptions['sort'],
+) {
+ if (sort === 'focus') return [...points]
+ if (typeof sort === 'function') return [...points].sort(sort)
+ return [...points].sort(
+ (left, right) =>
+ colorOrder(scene, left.group) - colorOrder(scene, right.group),
+ )
+}
+
+function colorOrder(scene: ChartScene, group: ChartPoint['group']) {
+ const index = group == null ? -1 : scene.colors.domain.indexOf(group)
+ return index < 0 ? Number.MAX_SAFE_INTEGER : index
+}
+
+function findSceneLabel(scene: ChartScene, key: string) {
+ const axes = scene.nodes.find(
+ (node) => node.kind === 'group' && node.key === 'axes',
+ )
+ if (axes?.kind !== 'group') return undefined
+ const label = axes.children.find((node) => node.key === key)
+ return label?.kind === 'label' ? label.text : undefined
+}
+
+function resolveTooltipAnchor<
+ TDatum,
+ TXValue extends ChartValue,
+ TYValue extends ChartValue,
+>(
+ point: ChartPoint,
+ points: readonly ChartPoint[],
+ scene: ChartScene,
+ pointer: ChartTooltipPosition | null,
+ options?: ChartTooltipOptions,
+): ChartTooltipPosition {
+ const fallback = { x: point.x, y: point.y }
+ const anchor = options?.anchor ?? 'point'
+ if (anchor === 'point') return fallback
+ if (anchor === 'pointer') return pointer ?? fallback
+ if (anchor === 'group-center') {
+ const x = points.map((candidate) => candidate.x)
+ const y = points.map((candidate) => candidate.y)
+ return {
+ x: (Math.min(...x) + Math.max(...x)) / 2,
+ y: (Math.min(...y) + Math.max(...y)) / 2,
+ }
+ }
+ const resolved = anchor(points, {
+ pointer,
+ chart: scene.chart,
+ width: scene.width,
+ height: scene.height,
+ })
+ return resolved && Number.isFinite(resolved.x) && Number.isFinite(resolved.y)
+ ? resolved
+ : fallback
+}
+
+export function placeNativeTooltip(
+ anchor: ChartTooltipPosition,
+ tooltip: { width: number; height: number },
+ boundary: { width: number; height: number },
+ placement:
+ | 'auto'
+ | ChartTooltipPlacement
+ | readonly ChartTooltipPlacement[]
+ | undefined,
+ offset: number | undefined,
+) {
+ const edge = 8
+ const gap =
+ offset !== undefined && Number.isFinite(offset) ? Math.max(0, offset) : 10
+ const placements =
+ placement === undefined || placement === 'auto'
+ ? defaultTooltipPlacements
+ : Array.isArray(placement)
+ ? placement.length
+ ? placement
+ : defaultTooltipPlacements
+ : [placement as ChartTooltipPlacement]
+ const candidates = placements.map((candidate) =>
+ tooltipPlacement(candidate, anchor, tooltip, gap),
+ )
+ let selected = candidates[0]!
+ let selectedOverflow = overflow(selected, tooltip, boundary, edge)
+ for (const candidate of candidates) {
+ const candidateOverflow = overflow(candidate, tooltip, boundary, edge)
+ if (candidateOverflow === 0) {
+ selected = candidate
+ break
+ }
+ if (candidateOverflow < selectedOverflow) {
+ selected = candidate
+ selectedOverflow = candidateOverflow
+ }
+ }
+ return {
+ left: clamp(
+ selected.left,
+ edge,
+ Math.max(edge, boundary.width - edge - tooltip.width),
+ ),
+ top: clamp(
+ selected.top,
+ edge,
+ Math.max(edge, boundary.height - edge - tooltip.height),
+ ),
+ placement: selected.placement,
+ }
+}
+
+const defaultTooltipPlacements: readonly ChartTooltipPlacement[] = [
+ 'top',
+ 'bottom',
+ 'right',
+ 'left',
+]
+
+function tooltipPlacement(
+ placement: ChartTooltipPlacement,
+ anchor: ChartTooltipPosition,
+ tooltip: { width: number; height: number },
+ gap: number,
+) {
+ const xDirection =
+ placement.endsWith('right') || placement === 'right'
+ ? 1
+ : placement.endsWith('left') || placement === 'left'
+ ? -1
+ : 0
+ const yDirection =
+ placement.startsWith('bottom') || placement === 'bottom'
+ ? 1
+ : placement.startsWith('top') || placement === 'top'
+ ? -1
+ : 0
+ return {
+ placement,
+ left: anchor.x + ((xDirection - 1) * tooltip.width) / 2 + xDirection * gap,
+ top: anchor.y + ((yDirection - 1) * tooltip.height) / 2 + yDirection * gap,
+ }
+}
+
+function overflow(
+ position: { left: number; top: number },
+ tooltip: { width: number; height: number },
+ boundary: { width: number; height: number },
+ edge: number,
+) {
+ return (
+ Math.max(0, edge - position.left) +
+ Math.max(0, position.left + tooltip.width + edge - boundary.width) +
+ Math.max(0, edge - position.top) +
+ Math.max(0, position.top + tooltip.height + edge - boundary.height)
+ )
+}
+
+function tooltipAccessibilityLabel(content: ChartTooltipContent | string) {
+ return typeof content === 'string'
+ ? content
+ : [
+ content.title,
+ ...content.rows.map((row) => `${row.label}: ${row.value}`),
+ ]
+ .filter(Boolean)
+ .join('\n')
+}
+
+function formatValue(value: ChartValue) {
+ return value instanceof Date
+ ? Number.isNaN(+value)
+ ? 'Invalid Date'
+ : value.toISOString().replace('T00:00:00.000Z', '')
+ : typeof value === 'number'
+ ? value.toLocaleString()
+ : String(value)
+}
+
+function chartValueEqual(left: ChartValue, right: ChartValue) {
+ return left instanceof Date && right instanceof Date
+ ? left.getTime() === right.getTime()
+ : Object.is(left, right)
+}
+
+function clamp(value: number, minimum: number, maximum: number) {
+ return Math.max(minimum, Math.min(maximum, value))
+}
+
+const tooltipStyle: ViewStyle = {
+ position: 'absolute',
+ zIndex: 1,
+ maxWidth: '80%',
+ paddingHorizontal: 9,
+ paddingVertical: 7,
+ borderWidth: 1,
+ borderColor: 'rgba(17, 24, 39, 0.16)',
+ borderRadius: 7,
+ backgroundColor: '#ffffff',
+ shadowColor: '#000000',
+ shadowOffset: { width: 0, height: 6 },
+ shadowOpacity: 0.14,
+ shadowRadius: 12,
+ elevation: 4,
+}
+
+const tooltipTextStyle = {
+ color: '#111827',
+ fontSize: 12,
+ fontWeight: '500',
+} as const
+
+const titleStyle = {
+ flexDirection: 'row',
+ alignItems: 'center',
+ gap: 6,
+ marginBottom: 4,
+} as const
+
+const titleTextStyle = {
+ color: '#111827',
+ fontSize: 12,
+ fontWeight: '700',
+} as const
+
+const rowStyle = {
+ flexDirection: 'row',
+ alignItems: 'center',
+ gap: 6,
+} as const
+
+const swatchStyle = {
+ width: 9,
+ height: 9,
+ borderRadius: 2,
+} as const
+
+const rowLabelStyle = {
+ flexGrow: 1,
+ flexShrink: 1,
+ color: '#374151',
+ fontSize: 12,
+} as const
+
+const rowValueStyle: TextStyle = {
+ color: '#111827',
+ fontSize: 12,
+ fontVariant: ['tabular-nums'],
+}
diff --git a/packages/react-native-charts/src/index.ts b/packages/react-native-charts/src/index.ts
new file mode 100644
index 0000000..0d15583
--- /dev/null
+++ b/packages/react-native-charts/src/index.ts
@@ -0,0 +1,5 @@
+export { Chart } from './Chart'
+export type { ChartProps, NativeChartRenderContext } from './Chart'
+export type { NativeChartTooltipRenderContext } from './Tooltip'
+export type { NativePaintContext, NativePaintResolver } from './paint'
+export { resolveNativePaint } from './paint'
diff --git a/packages/react-native-charts/src/interaction.test.ts b/packages/react-native-charts/src/interaction.test.ts
new file mode 100644
index 0000000..0710d8a
--- /dev/null
+++ b/packages/react-native-charts/src/interaction.test.ts
@@ -0,0 +1,125 @@
+import { describe, expect, it } from 'vitest'
+import type {
+ ChartDefinition,
+ ChartPoint,
+ ChartScene,
+} from '@tanstack/charts/types'
+import { adjacentFocusPoint, createNativeChartFocusModel } from './interaction'
+
+interface Datum {
+ id: string
+}
+
+describe('native focus model', () => {
+ it('reuses grouped focus semantics and native accessibility order', () => {
+ const points = [
+ point('alpha-1', 'alpha', 0, 10, 10, 1, 2),
+ point('beta-1', 'beta', 1, 10, 30, 1, 3),
+ point('alpha-2', 'alpha', 2, 40, 20, 2, 4),
+ ]
+ const model = createNativeChartFocusModel(
+ chartScene(points),
+ definition({ focus: 'group-x', maxFocusDistance: 20 }),
+ )
+
+ expect(model.resolve(11, 29).map((candidate) => candidate.key)).toEqual([
+ 'beta-1',
+ 'alpha-1',
+ ])
+ expect(adjacentFocusPoint(model, null, 1)?.key).toBe('alpha-1')
+ expect(adjacentFocusPoint(model, model.navigation[0] ?? null, 1)?.key).toBe(
+ 'alpha-2',
+ )
+ })
+
+ it('honors a supplied spatial index for nearest focus', () => {
+ const points = [point('alpha', 'alpha', 0, 10, 10, 1, 2)]
+ let calls = 0
+ const model = createNativeChartFocusModel(
+ chartScene(points),
+ definition({
+ spatialIndex: (indexedPoints) => ({
+ findNearest() {
+ calls += 1
+ return indexedPoints[0] ?? null
+ },
+ }),
+ }),
+ )
+
+ expect(model.resolve(500, 500)[0]?.key).toBe('alpha')
+ expect(calls).toBe(1)
+ })
+
+ it('restores duplicate keys by datum identity after a scene update', () => {
+ const datum = { id: 'same' }
+ const previous = point('duplicate', 'alpha', 0, 10, 10, 1, 2, datum)
+ const other = point('duplicate', 'alpha', 0, 20, 20, 2, 3, { id: 'same' })
+ const restored = point('duplicate', 'alpha', 1, 30, 30, 3, 4, datum)
+ const model = createNativeChartFocusModel(
+ chartScene([other, restored]),
+ definition({}),
+ )
+
+ expect(model.restore(previous)).toBe(restored)
+ })
+})
+
+function definition(
+ options: Partial>,
+): ChartDefinition {
+ return { marks: [], ...options }
+}
+
+function point(
+ key: string,
+ group: string,
+ datumIndex: number,
+ x: number,
+ y: number,
+ xValue: number,
+ yValue: number,
+ datum: Datum = { id: key },
+): ChartPoint {
+ return {
+ key,
+ markId: 'series',
+ group,
+ groupLabel: group,
+ datum,
+ datumIndex,
+ xValue,
+ yValue,
+ x,
+ y,
+ color: '#2563eb',
+ }
+}
+
+function chartScene(
+ points: readonly ChartPoint[],
+): ChartScene {
+ return {
+ width: 100,
+ height: 60,
+ margin: { top: 0, right: 0, bottom: 0, left: 0 },
+ chart: { x: 0, y: 0, width: 100, height: 60 },
+ nodes: [],
+ points,
+ scales: {},
+ colors: {
+ type: 'ordinal',
+ domain: ['alpha', 'beta'],
+ range: ['#2563eb', '#f97316'],
+ map: (value) => (value === 'beta' ? '#f97316' : '#2563eb'),
+ },
+ gradients: [],
+ theme: {
+ foreground: '#111827',
+ muted: '#6b7280',
+ grid: '#d1d5db',
+ background: 'transparent',
+ palette: ['#2563eb', '#f97316'],
+ },
+ }
+}
diff --git a/packages/react-native-charts/src/interaction.ts b/packages/react-native-charts/src/interaction.ts
new file mode 100644
index 0000000..d432ef7
--- /dev/null
+++ b/packages/react-native-charts/src/interaction.ts
@@ -0,0 +1,205 @@
+import {
+ focusNearestX,
+ focusNearestY,
+ focusX,
+ focusY,
+} from '@tanstack/charts/focus'
+import { findNearestPoint } from '@tanstack/charts/scene'
+import type {
+ ChartDefinition,
+ ChartFocusMode,
+ ChartFocusStrategy,
+ ChartPoint,
+ ChartScene,
+ ChartValue,
+} from '@tanstack/charts/types'
+
+export interface NativeChartFocusModel<
+ TDatum,
+ TXValue extends ChartValue,
+ TYValue extends ChartValue,
+> {
+ resolve: (
+ x: number,
+ y: number,
+ ) => readonly ChartPoint[]
+ group: (
+ point: ChartPoint,
+ ) => readonly ChartPoint[]
+ navigation: readonly ChartPoint[]
+ restore: (
+ point: ChartPoint,
+ ) => ChartPoint | null
+}
+
+export function createNativeChartFocusModel<
+ TDatum,
+ TXValue extends ChartValue,
+ TYValue extends ChartValue,
+>(
+ scene: ChartScene,
+ definition: ChartDefinition,
+): NativeChartFocusModel {
+ const strategy = resolveFocusStrategy(definition.focus)
+ const spatialIndex = definition.spatialIndex?.(scene.points)
+ const maxDistance = definition.maxFocusDistance ?? 48
+ const navigation =
+ strategy?.navigation(scene.points) ?? sceneOrder(scene.points)
+
+ return {
+ resolve(x, y) {
+ if (strategy) {
+ return strategy.resolve(scene.points, x, y, maxDistance)
+ }
+ const point = spatialIndex
+ ? spatialIndex.findNearest(x, y, maxDistance)
+ : findNearestPoint(scene, x, y, maxDistance)
+ return point ? [point] : []
+ },
+ group(point) {
+ return strategy?.group(scene.points, point) ?? [point]
+ },
+ navigation,
+ restore(point) {
+ return restoreFocusedPoint(scene.points, point)
+ },
+ }
+}
+
+export function adjacentFocusPoint<
+ TDatum,
+ TXValue extends ChartValue,
+ TYValue extends ChartValue,
+>(
+ model: NativeChartFocusModel,
+ current: ChartPoint | null,
+ direction: -1 | 1,
+) {
+ const currentIndex = current
+ ? model.navigation.findIndex((point) => samePointIdentity(point, current))
+ : -1
+ const nextIndex =
+ currentIndex < 0
+ ? direction > 0
+ ? 0
+ : model.navigation.length - 1
+ : Math.max(
+ 0,
+ Math.min(model.navigation.length - 1, currentIndex + direction),
+ )
+ return model.navigation[nextIndex] ?? null
+}
+
+export function samePointIdentity<
+ TDatum,
+ TXValue extends ChartValue,
+ TYValue extends ChartValue,
+>(
+ left: ChartPoint | null,
+ right: ChartPoint | null,
+) {
+ return (
+ left === right ||
+ (left !== null &&
+ right !== null &&
+ left.key === right.key &&
+ left.markId === right.markId &&
+ left.datumIndex === right.datumIndex)
+ )
+}
+
+export function samePointList<
+ TDatum,
+ TXValue extends ChartValue,
+ TYValue extends ChartValue,
+>(
+ left: readonly ChartPoint[],
+ right: readonly ChartPoint[],
+) {
+ return (
+ left.length === right.length &&
+ left.every((point, index) => samePointIdentity(point, right[index] ?? null))
+ )
+}
+
+function resolveFocusStrategy<
+ TDatum,
+ TXValue extends ChartValue,
+ TYValue extends ChartValue,
+>(
+ focus: ChartFocusMode | undefined,
+): ChartFocusStrategy | undefined {
+ if (typeof focus !== 'string') return focus
+ switch (focus) {
+ case 'nearest-x':
+ return focusNearestX
+ case 'nearest-y':
+ return focusNearestY
+ case 'group-x':
+ return focusX
+ case 'group-y':
+ return focusY
+ case 'nearest':
+ return undefined
+ }
+}
+
+function sceneOrder<
+ TDatum,
+ TXValue extends ChartValue,
+ TYValue extends ChartValue,
+>(points: readonly ChartPoint[]) {
+ return points
+ .map((point, index) => ({ point, index }))
+ .sort(
+ (left, right) =>
+ left.point.x - right.point.x ||
+ left.point.y - right.point.y ||
+ left.index - right.index,
+ )
+ .map(({ point }) => point)
+}
+
+function restoreFocusedPoint<
+ TDatum,
+ TXValue extends ChartValue,
+ TYValue extends ChartValue,
+>(
+ points: readonly ChartPoint[],
+ previous: ChartPoint,
+) {
+ const matches = points.filter((point) => point.key === previous.key)
+ if (matches.length < 2) return matches[0] ?? null
+
+ const datumType = typeof previous.datum
+ const hasReferenceIdentity =
+ previous.datum !== null &&
+ (datumType === 'object' || datumType === 'function')
+ if (hasReferenceIdentity) {
+ const sameDatum = matches.find((point) => point.datum === previous.datum)
+ if (sameDatum) return sameDatum
+ }
+
+ return (
+ matches.find(
+ (point) =>
+ point.markId === previous.markId &&
+ Object.is(point.group, previous.group) &&
+ chartValueEqual(point.xValue, previous.xValue) &&
+ chartValueEqual(point.yValue, previous.yValue),
+ ) ??
+ matches.find(
+ (point) =>
+ point.markId === previous.markId &&
+ point.datumIndex === previous.datumIndex,
+ ) ??
+ matches[0] ??
+ null
+ )
+}
+
+function chartValueEqual(left: ChartValue, right: ChartValue) {
+ return left instanceof Date && right instanceof Date
+ ? left.getTime() === right.getTime()
+ : Object.is(left, right)
+}
diff --git a/packages/react-native-charts/src/paint.test.ts b/packages/react-native-charts/src/paint.test.ts
new file mode 100644
index 0000000..6cce370
--- /dev/null
+++ b/packages/react-native-charts/src/paint.test.ts
@@ -0,0 +1,43 @@
+import { describe, expect, it } from 'vitest'
+import { resolveNativePaint, resolveNativeSolidPaint } from './paint'
+
+describe('native paint resolution', () => {
+ it('resolves the browser-backed default theme tokens', () => {
+ const context = { color: '#102030' }
+
+ expect(resolveNativePaint('currentColor', context)).toBe('#102030')
+ expect(resolveNativePaint('CanvasText', context)).toBe('#102030')
+ expect(resolveNativePaint('var(--ts-chart-1, #2563eb)', context)).toBe(
+ '#2563eb',
+ )
+ expect(
+ resolveNativePaint(
+ 'var(--app-chart, var(--ts-chart-2, rgb(10, 20, 30)))',
+ context,
+ ),
+ ).toBe('rgb(10, 20, 30)')
+ })
+
+ it('uses the host color when an authored CSS variable has no fallback', () => {
+ expect(resolveNativePaint('var(--app-chart)', { color: '#abcdef' })).toBe(
+ '#abcdef',
+ )
+ })
+
+ it('preserves concrete native paints and resource references', () => {
+ const context = { color: '#102030' }
+
+ expect(resolveNativePaint('transparent', context)).toBe('transparent')
+ expect(resolveNativePaint('#fff', context)).toBe('#fff')
+ expect(resolveNativePaint('url(#gradient)', context)).toBe('url(#gradient)')
+ })
+
+ it('falls back to the host color where native views cannot use SVG resources', () => {
+ expect(
+ resolveNativeSolidPaint('url(#gradient)', { color: '#102030' }),
+ ).toBe('#102030')
+ expect(resolveNativeSolidPaint('#abcdef', { color: '#102030' })).toBe(
+ '#abcdef',
+ )
+ })
+})
diff --git a/packages/react-native-charts/src/paint.ts b/packages/react-native-charts/src/paint.ts
new file mode 100644
index 0000000..e382df8
--- /dev/null
+++ b/packages/react-native-charts/src/paint.ts
@@ -0,0 +1,48 @@
+import type { ColorValue } from 'react-native'
+
+export interface NativePaintContext {
+ color: ColorValue
+}
+
+export type NativePaintResolver = (
+ paint: string,
+ context: NativePaintContext,
+) => ColorValue
+
+export function resolveNativePaint(
+ paint: string,
+ { color }: NativePaintContext,
+): ColorValue {
+ const value = paint.trim()
+ if (value === 'currentColor' || value === 'CanvasText') return color
+ if (!value.startsWith('var(') || !value.endsWith(')')) return value
+
+ const fallback = cssVariableFallback(value)
+ return fallback ? resolveNativePaint(fallback, { color }) : color
+}
+
+export function resolveNativeSolidPaint(
+ paint: string,
+ context: NativePaintContext,
+ resolvePaint: NativePaintResolver = resolveNativePaint,
+): ColorValue {
+ const resolved = resolvePaint(paint, context)
+ return typeof resolved === 'string' &&
+ resolved.trim().startsWith('url(') &&
+ resolved.trim().endsWith(')')
+ ? context.color
+ : resolved
+}
+
+function cssVariableFallback(value: string) {
+ let depth = 0
+ for (let index = 4; index < value.length - 1; index += 1) {
+ const character = value[index]
+ if (character === '(') depth += 1
+ if (character === ')') depth -= 1
+ if (character === ',' && depth === 0) {
+ return value.slice(index + 1, -1).trim()
+ }
+ }
+ return undefined
+}
diff --git a/packages/react-native-charts/tsconfig.json b/packages/react-native-charts/tsconfig.json
new file mode 100644
index 0000000..136f244
--- /dev/null
+++ b/packages/react-native-charts/tsconfig.json
@@ -0,0 +1,9 @@
+{
+ "extends": "../../tsconfig.json",
+ "compilerOptions": {
+ "lib": ["ES2022"],
+ "types": ["react", "react-native"]
+ },
+ "include": ["src/**/*.ts", "src/**/*.tsx"],
+ "exclude": ["src/**/*.test.ts", "src/**/*.test.tsx"]
+}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 7da4a9b..b5800ba 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -30,7 +30,7 @@ importers:
version: link:packages/react
'@sveltejs/vite-plugin-svelte':
specifier: ^7.1.2
- version: 7.2.0(svelte@5.56.8)(vite@8.1.5(@types/node@25.9.5)(esbuild@0.27.7)(less@4.8.1(supports-color@10.2.2))(sass@1.102.0))
+ version: 7.2.0(svelte@5.56.8)(vite@8.1.5(@types/node@25.9.5)(esbuild@0.27.7)(less@4.8.1(supports-color@10.2.2))(sass@1.102.0)(terser@5.49.0)(yaml@2.9.0))
'@tanstack/charts':
specifier: workspace:*
version: link:packages/charts-core
@@ -43,6 +43,9 @@ importers:
'@tanstack/react-charts':
specifier: workspace:*
version: link:packages/react-charts
+ '@tanstack/react-native-charts':
+ specifier: workspace:*
+ version: link:packages/react-native-charts
'@types/d3-array':
specifier: ^3.2.2
version: 3.2.2
@@ -117,7 +120,7 @@ importers:
version: 1.0.5
'@vitejs/plugin-react':
specifier: ^6.0.1
- version: 6.0.4(vite@8.1.5(@types/node@25.9.5)(esbuild@0.27.7)(less@4.8.1(supports-color@10.2.2))(sass@1.102.0))
+ version: 6.0.4(vite@8.1.5(@types/node@25.9.5)(esbuild@0.27.7)(less@4.8.1(supports-color@10.2.2))(sass@1.102.0)(terser@5.49.0)(yaml@2.9.0))
chart.js:
specifier: 4.5.1
version: 4.5.1
@@ -189,7 +192,7 @@ importers:
version: 29.1.1(@noble/hashes@2.2.0)
octane:
specifier: 0.1.13
- version: 0.1.13(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(vite@8.1.5(@types/node@25.9.5)(esbuild@0.27.7)(less@4.8.1(supports-color@10.2.2))(sass@1.102.0))
+ version: 0.1.13(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(vite@8.1.5(@types/node@25.9.5)(esbuild@0.27.7)(less@4.8.1(supports-color@10.2.2))(sass@1.102.0)(terser@5.49.0)(yaml@2.9.0))
playwright:
specifier: 1.62.0
version: 1.62.0
@@ -225,13 +228,13 @@ importers:
version: 3.0.1
vite:
specifier: ^8.0.16
- version: 8.1.5(@types/node@25.9.5)(esbuild@0.27.7)(less@4.8.1(supports-color@10.2.2))(sass@1.102.0)
+ version: 8.1.5(@types/node@25.9.5)(esbuild@0.27.7)(less@4.8.1(supports-color@10.2.2))(sass@1.102.0)(terser@5.49.0)(yaml@2.9.0)
vite-plugin-solid:
specifier: ^2.11.12
- version: 2.11.14(solid-js@1.9.14)(supports-color@10.2.2)(vite@8.1.5(@types/node@25.9.5)(esbuild@0.27.7)(less@4.8.1(supports-color@10.2.2))(sass@1.102.0))
+ version: 2.11.14(solid-js@1.9.14)(supports-color@10.2.2)(vite@8.1.5(@types/node@25.9.5)(esbuild@0.27.7)(less@4.8.1(supports-color@10.2.2))(sass@1.102.0)(terser@5.49.0)(yaml@2.9.0))
vitest:
specifier: ^4.1.9
- version: 4.1.10(@types/node@25.9.5)(jsdom@29.1.1(@noble/hashes@2.2.0))(vite@8.1.5(@types/node@25.9.5)(esbuild@0.27.7)(less@4.8.1(supports-color@10.2.2))(sass@1.102.0))
+ version: 4.1.10(@types/node@25.9.5)(jsdom@29.1.1(@noble/hashes@2.2.0))(vite@8.1.5(@types/node@25.9.5)(esbuild@0.27.7)(less@4.8.1(supports-color@10.2.2))(sass@1.102.0)(terser@5.49.0)(yaml@2.9.0))
world-atlas:
specifier: 2.0.2
version: 2.0.2
@@ -261,7 +264,7 @@ importers:
version: 3.2.0
octane:
specifier: 0.1.13
- version: 0.1.13(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(vite@8.1.5(@types/node@25.9.5)(esbuild@0.27.7)(less@4.8.1(supports-color@10.2.2))(sass@1.102.0))
+ version: 0.1.13(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(vite@8.1.5(@types/node@25.9.5)(esbuild@0.27.7)(less@4.8.1(supports-color@10.2.2))(sass@1.102.0)(terser@5.49.0)(yaml@2.9.0))
devDependencies:
'@types/d3-array':
specifier: ^3.2.2
@@ -274,7 +277,7 @@ importers:
version: 3.1.8
vite:
specifier: ^8.0.16
- version: 8.1.5(@types/node@25.9.5)(esbuild@0.27.7)(less@4.8.1(supports-color@10.2.2))(sass@1.102.0)
+ version: 8.1.5(@types/node@25.9.5)(esbuild@0.27.7)(less@4.8.1(supports-color@10.2.2))(sass@1.102.0)(terser@5.49.0)(yaml@2.9.0)
examples/charts-react:
dependencies:
@@ -314,10 +317,50 @@ importers:
version: 3.1.8
'@vitejs/plugin-react':
specifier: ^6.0.1
- version: 6.0.4(vite@8.1.5(@types/node@25.9.5)(esbuild@0.27.7)(less@4.8.1(supports-color@10.2.2))(sass@1.102.0))
+ version: 6.0.4(vite@8.1.5(@types/node@25.9.5)(esbuild@0.27.7)(less@4.8.1(supports-color@10.2.2))(sass@1.102.0)(terser@5.49.0)(yaml@2.9.0))
vite:
specifier: ^8.0.16
- version: 8.1.5(@types/node@25.9.5)(esbuild@0.27.7)(less@4.8.1(supports-color@10.2.2))(sass@1.102.0)
+ version: 8.1.5(@types/node@25.9.5)(esbuild@0.27.7)(less@4.8.1(supports-color@10.2.2))(sass@1.102.0)(terser@5.49.0)(yaml@2.9.0)
+
+ examples/charts-react-native:
+ dependencies:
+ '@tanstack/charts':
+ specifier: workspace:*
+ version: link:../../packages/charts-core
+ '@tanstack/react-native-charts':
+ specifier: workspace:*
+ version: link:../../packages/react-native-charts
+ d3-scale:
+ specifier: 4.0.2
+ version: 4.0.2
+ react:
+ specifier: 19.2.3
+ version: 19.2.3
+ react-native:
+ specifier: 0.86.0
+ version: 0.86.0(@babel/core@7.29.7(supports-color@10.2.2))(@react-native-community/cli@20.1.0(supports-color@10.2.2)(typescript@6.0.3))(@react-native/metro-config@0.86.0(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(@types/react@19.2.17)(react@19.2.3)(supports-color@10.2.2)
+ react-native-svg:
+ specifier: 15.15.5
+ version: 15.15.5(react-native@0.86.0(@babel/core@7.29.7(supports-color@10.2.2))(@react-native-community/cli@20.1.0(supports-color@10.2.2)(typescript@6.0.3))(@react-native/metro-config@0.86.0(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(@types/react@19.2.17)(react@19.2.3)(supports-color@10.2.2))(react@19.2.3)
+ devDependencies:
+ '@babel/core':
+ specifier: ^7.25.2
+ version: 7.29.7(supports-color@10.2.2)
+ '@babel/runtime':
+ specifier: ^7.25.0
+ version: 7.29.7
+ '@react-native-community/cli':
+ specifier: 20.1.0
+ version: 20.1.0(supports-color@10.2.2)(typescript@6.0.3)
+ '@react-native/babel-preset':
+ specifier: 0.86.0
+ version: 0.86.0(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2)
+ '@react-native/metro-config':
+ specifier: 0.86.0
+ version: 0.86.0(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2)
+ '@react-native/typescript-config':
+ specifier: 0.86.0
+ version: 0.86.0
examples/conformance:
dependencies:
@@ -351,7 +394,7 @@ importers:
version: 3.1.8
vite:
specifier: ^8.0.16
- version: 8.1.5(@types/node@25.9.5)(esbuild@0.27.7)(less@4.8.1(supports-color@10.2.2))(sass@1.102.0)
+ version: 8.1.5(@types/node@25.9.5)(esbuild@0.27.7)(less@4.8.1(supports-color@10.2.2))(sass@1.102.0)(terser@5.49.0)(yaml@2.9.0)
examples/octane:
dependencies:
@@ -366,11 +409,11 @@ importers:
version: link:../../packages/octane
octane:
specifier: 0.1.13
- version: 0.1.13(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(vite@8.1.5(@types/node@25.9.5)(esbuild@0.27.7)(less@4.8.1(supports-color@10.2.2))(sass@1.102.0))
+ version: 0.1.13(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(vite@8.1.5(@types/node@25.9.5)(esbuild@0.27.7)(less@4.8.1(supports-color@10.2.2))(sass@1.102.0)(terser@5.49.0)(yaml@2.9.0))
devDependencies:
vite:
specifier: ^8.0.16
- version: 8.1.5(@types/node@25.9.5)(esbuild@0.27.7)(less@4.8.1(supports-color@10.2.2))(sass@1.102.0)
+ version: 8.1.5(@types/node@25.9.5)(esbuild@0.27.7)(less@4.8.1(supports-color@10.2.2))(sass@1.102.0)(terser@5.49.0)(yaml@2.9.0)
examples/react:
dependencies:
@@ -392,10 +435,10 @@ importers:
devDependencies:
'@vitejs/plugin-react':
specifier: ^6.0.1
- version: 6.0.4(vite@8.1.5(@types/node@25.9.5)(esbuild@0.27.7)(less@4.8.1(supports-color@10.2.2))(sass@1.102.0))
+ version: 6.0.4(vite@8.1.5(@types/node@25.9.5)(esbuild@0.27.7)(less@4.8.1(supports-color@10.2.2))(sass@1.102.0)(terser@5.49.0)(yaml@2.9.0))
vite:
specifier: ^8.0.16
- version: 8.1.5(@types/node@25.9.5)(esbuild@0.27.7)(less@4.8.1(supports-color@10.2.2))(sass@1.102.0)
+ version: 8.1.5(@types/node@25.9.5)(esbuild@0.27.7)(less@4.8.1(supports-color@10.2.2))(sass@1.102.0)(terser@5.49.0)(yaml@2.9.0)
examples/sandbox:
dependencies:
@@ -435,10 +478,10 @@ importers:
version: 3.1.8
'@vitejs/plugin-react':
specifier: ^6.0.1
- version: 6.0.4(vite@8.1.5(@types/node@25.9.5)(esbuild@0.27.7)(less@4.8.1(supports-color@10.2.2))(sass@1.102.0))
+ version: 6.0.4(vite@8.1.5(@types/node@25.9.5)(esbuild@0.27.7)(less@4.8.1(supports-color@10.2.2))(sass@1.102.0)(terser@5.49.0)(yaml@2.9.0))
vite:
specifier: ^8.0.16
- version: 8.1.5(@types/node@25.9.5)(esbuild@0.27.7)(less@4.8.1(supports-color@10.2.2))(sass@1.102.0)
+ version: 8.1.5(@types/node@25.9.5)(esbuild@0.27.7)(less@4.8.1(supports-color@10.2.2))(sass@1.102.0)(terser@5.49.0)(yaml@2.9.0)
packages/alpine-charts:
dependencies:
@@ -599,7 +642,7 @@ importers:
version: link:../plot
octane:
specifier: ^0.1.13
- version: 0.1.13(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(vite@8.1.5(@types/node@25.9.5)(esbuild@0.28.1)(less@4.8.1(supports-color@10.2.2))(sass@1.102.0))
+ version: 0.1.13(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(vite@8.1.5(@types/node@25.9.5)(esbuild@0.28.1)(less@4.8.1(supports-color@10.2.2))(sass@1.102.0)(terser@5.49.0)(yaml@2.9.0))
packages/octane-charts:
dependencies:
@@ -608,7 +651,7 @@ importers:
version: link:../charts-core
octane:
specifier: ^0.1.13
- version: 0.1.13(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(vite@8.1.5(@types/node@25.9.5)(esbuild@0.28.1)(less@4.8.1(supports-color@10.2.2))(sass@1.102.0))
+ version: 0.1.13(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(vite@8.1.5(@types/node@25.9.5)(esbuild@0.28.1)(less@4.8.1(supports-color@10.2.2))(sass@1.102.0)(terser@5.49.0)(yaml@2.9.0))
devDependencies:
'@types/d3-scale':
specifier: ^4.0.9
@@ -670,6 +713,21 @@ importers:
specifier: 4.0.2
version: 4.0.2
+ packages/react-native-charts:
+ dependencies:
+ '@tanstack/charts':
+ specifier: workspace:*
+ version: link:../charts-core
+ react:
+ specifier: ^19.2.3
+ version: 19.2.3
+ react-native:
+ specifier: ^0.86.0
+ version: 0.86.0(@babel/core@7.29.7(supports-color@10.2.2))(@react-native-community/cli@20.1.0(supports-color@10.2.2)(typescript@6.0.3))(@react-native/metro-config@0.86.0(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(@types/react@19.2.17)(react@19.2.3)(supports-color@10.2.2)
+ react-native-svg:
+ specifier: ^15.15.5
+ version: 15.15.5(react-native@0.86.0(@babel/core@7.29.7(supports-color@10.2.2))(@react-native-community/cli@20.1.0(supports-color@10.2.2)(typescript@6.0.3))(@react-native/metro-config@0.86.0(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(@types/react@19.2.17)(react@19.2.3)(supports-color@10.2.2))(react@19.2.3)
+
packages/solid-charts:
dependencies:
'@tanstack/charts':
@@ -681,7 +739,7 @@ importers:
version: 1.9.14
vite-plugin-solid:
specifier: ^2.11.12
- version: 2.11.14(solid-js@1.9.14)(supports-color@10.2.2)(vite@8.1.5(@types/node@25.9.5)(esbuild@0.28.1)(less@4.8.1(supports-color@10.2.2))(sass@1.102.0))
+ version: 2.11.14(solid-js@1.9.14)(supports-color@10.2.2)(vite@8.1.5(@types/node@25.9.5)(esbuild@0.28.1)(less@4.8.1(supports-color@10.2.2))(sass@1.102.0)(terser@5.49.0)(yaml@2.9.0))
packages/svelte-charts:
dependencies:
@@ -694,7 +752,7 @@ importers:
version: 2.5.8(svelte@5.56.8)(typescript@6.0.3)
'@sveltejs/vite-plugin-svelte':
specifier: ^7.1.2
- version: 7.2.0(svelte@5.56.8)(vite@8.1.5(@types/node@25.9.5)(esbuild@0.28.1)(less@4.8.1(supports-color@10.2.2))(sass@1.102.0))
+ version: 7.2.0(svelte@5.56.8)(vite@8.1.5(@types/node@25.9.5)(esbuild@0.28.1)(less@4.8.1(supports-color@10.2.2))(sass@1.102.0)(terser@5.49.0)(yaml@2.9.0))
svelte:
specifier: ^5.56.2
version: 5.56.8
@@ -852,6 +910,13 @@ packages:
}
engines: { node: '>=6.9.0' }
+ '@babel/helper-annotate-as-pure@7.29.7':
+ resolution:
+ {
+ integrity: sha512-OoK6239jHPuSQOoS0kfTVKn0b/rVTk0seKq4Gd2UMLtmOVLjDC0ki3e+c90Trqv2gMfvJFqkiljrr568+qddiw==,
+ }
+ engines: { node: '>=6.9.0' }
+
'@babel/helper-compilation-targets@7.29.7':
resolution:
{
@@ -859,6 +924,32 @@ packages:
}
engines: { node: '>=6.9.0' }
+ '@babel/helper-create-class-features-plugin@7.29.7':
+ resolution:
+ {
+ integrity: sha512-IY3ZD9Tmooqr3TUhc3DUWxiuo8xx1DWLhd5M7hQ+ZWJamqM2BbalrBJb2MisSLoYorOj75U03qULCxQTY9r3hg==,
+ }
+ engines: { node: '>=6.9.0' }
+ peerDependencies:
+ '@babel/core': ^7.0.0
+
+ '@babel/helper-create-regexp-features-plugin@7.29.7':
+ resolution:
+ {
+ integrity: sha512-907Uymvqgg1dwUA+7IGwFAOSYzQOuzPXKNJ1yxzwPffzkYFg2q2eHi1fIOs6sXkG9NbIUMunnUlkYsfRFNvomg==,
+ }
+ engines: { node: '>=6.9.0' }
+ peerDependencies:
+ '@babel/core': ^7.0.0
+
+ '@babel/helper-define-polyfill-provider@0.6.8':
+ resolution:
+ {
+ integrity: sha512-47UwBLPpQi1NoWzLuHNjRoHlYXMwIJoBf7MFou6viC/sIHWYygpvr0B6IAyh5sBdA2nr2LPIRww8lfaUVQINBA==,
+ }
+ peerDependencies:
+ '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0
+
'@babel/helper-globals@7.29.7':
resolution:
{
@@ -866,6 +957,13 @@ packages:
}
engines: { node: '>=6.9.0' }
+ '@babel/helper-member-expression-to-functions@7.29.7':
+ resolution:
+ {
+ integrity: sha512-j+7JYmk1JYDtACIGj0QJqqWZjoUpMoEikQGADMaHgCMCSDqd2+P32rfcibUNrGOMWrlzK1WJBdxrB3JJQZwWtg==,
+ }
+ engines: { node: '>=6.9.0' }
+
'@babel/helper-module-imports@7.18.6':
resolution:
{
@@ -889,6 +987,13 @@ packages:
peerDependencies:
'@babel/core': ^7.0.0
+ '@babel/helper-optimise-call-expression@7.29.7':
+ resolution:
+ {
+ integrity: sha512-+kmGVjcT9RGYzoDwdwEqEvGgKe3BYq+O1iGzjFubaNgZHwYHP6lsF2Yghf4kEuv9BV7tYDZ913aBW9am6YKong==,
+ }
+ engines: { node: '>=6.9.0' }
+
'@babel/helper-plugin-utils@7.29.7':
resolution:
{
@@ -896,6 +1001,31 @@ packages:
}
engines: { node: '>=6.9.0' }
+ '@babel/helper-remap-async-to-generator@7.29.7':
+ resolution:
+ {
+ integrity: sha512-16AMiW26DbXWBbr3B8wNozKM0ydMLB892vaOaJW/fPJdnT8vJk5sdkQcU/isqUxyCE0cEoa8wZOcbgDuC4b6Og==,
+ }
+ engines: { node: '>=6.9.0' }
+ peerDependencies:
+ '@babel/core': ^7.0.0
+
+ '@babel/helper-replace-supers@7.29.7':
+ resolution:
+ {
+ integrity: sha512-atfGXWSeCiF4DnKZIfmJfQRkSw9b9gNNXR1kqKjbhG4pGYCOnkp8OcTB8E3NXjBu8NpheSnOeNKz8KT7UNFTmQ==,
+ }
+ engines: { node: '>=6.9.0' }
+ peerDependencies:
+ '@babel/core': ^7.0.0
+
+ '@babel/helper-skip-transparent-expression-wrappers@7.29.7':
+ resolution:
+ {
+ integrity: sha512-brcMGQaVzIeUb+6/bs1Av0f8YuNNjKY2JyvfRCsFuFsdKccEQ5Ges2y74D74NZ1Rz8lKJ9ksJkfqwQFJ/iNEyQ==,
+ }
+ engines: { node: '>=6.9.0' }
+
'@babel/helper-string-parser@7.29.7':
resolution:
{
@@ -917,6 +1047,13 @@ packages:
}
engines: { node: '>=6.9.0' }
+ '@babel/helper-wrap-function@7.29.7':
+ resolution:
+ {
+ integrity: sha512-iES0Skag9ERIF68aXadpO6dbXa03mNWK3sEqJaMnLNs/eC3l0lkImdfoy6Y09/SfkpawdAB4RjQ7PVA7TcVGdw==,
+ }
+ engines: { node: '>=6.9.0' }
+
'@babel/helpers@7.29.7':
resolution:
{
@@ -932,230 +1069,504 @@ packages:
engines: { node: '>=6.0.0' }
hasBin: true
- '@babel/plugin-syntax-jsx@7.29.7':
+ '@babel/plugin-proposal-export-default-from@7.29.7':
resolution:
{
- integrity: sha512-TSu8+mHCoEaaCDEZ0I3+6mvTBYR4PCxQwf2z9/r5Tbztv6NaLR3B9thGTTxX2WGuGHJqRiAbKPeGTJ5XWXVg6A==,
+ integrity: sha512-p+G5BNXDcy3bOXplhY4HybQ1GxH3i2Tppmdm/3epyRu2VgJJZuUlZ61MqRTg582Q7ZLBdP7fePYvsumSEkMxcQ==,
}
engines: { node: '>=6.9.0' }
peerDependencies:
'@babel/core': ^7.0.0-0
- '@babel/template@7.29.7':
+ '@babel/plugin-syntax-dynamic-import@7.8.3':
resolution:
{
- integrity: sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==,
+ integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==,
}
- engines: { node: '>=6.9.0' }
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
- '@babel/traverse@7.29.7':
+ '@babel/plugin-syntax-export-default-from@7.29.7':
resolution:
{
- integrity: sha512-EhlfNQtZ+NK22w5BM61ciuiq1m58ed33Wr1Xan//ZRTy6hgjnwyCffRYwzsGXdASJSUJ1guZILsErh1eQcl+zw==,
+ integrity: sha512-foag0BB37ROhdeIX9O8G0jX7hw0UekJc04cHMrYLOnrErsnBKqJGHJ8eDRpoCFZBvEPPygmmtw4qyU97qa4oOw==,
}
engines: { node: '>=6.9.0' }
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
- '@babel/types@7.29.7':
+ '@babel/plugin-syntax-flow@7.29.7':
resolution:
{
- integrity: sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA==,
+ integrity: sha512-ajMX6QPcyomotqwpzhkYGxcK2i/us0rs1Qo9QvUpa+Fca0FTmqrzKrctoIYLMxcOhGZldGT/BAVkRGTWBiR8gQ==,
}
engines: { node: '>=6.9.0' }
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
- '@bramus/specificity@2.4.2':
+ '@babel/plugin-syntax-jsx@7.29.7':
resolution:
{
- integrity: sha512-ctxtJ/eA+t+6q2++vj5j7FYX3nRu311q1wfYH3xjlLOsczhlhxAg2FWNUXhpGvAw3BWo1xBcvOV6/YLc2r5FJw==,
+ integrity: sha512-TSu8+mHCoEaaCDEZ0I3+6mvTBYR4PCxQwf2z9/r5Tbztv6NaLR3B9thGTTxX2WGuGHJqRiAbKPeGTJ5XWXVg6A==,
}
- hasBin: true
+ engines: { node: '>=6.9.0' }
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
- '@cloudflare/kv-asset-handler@0.5.0':
+ '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3':
resolution:
{
- integrity: sha512-jxQYkj8dSIzc0cD6cMMNdOc1UVjqSqu8BZdor5s8cGjW2I8BjODt/kWPVdY+u9zj3ms75Q5qaZgnxUad83+eAg==,
+ integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==,
}
- engines: { node: '>=22.0.0' }
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
- '@cloudflare/unenv-preset@2.16.1':
+ '@babel/plugin-syntax-optional-chaining@7.8.3':
resolution:
{
- integrity: sha512-ECxObrMfyTl5bhQf/lZCXwo5G6xX9IAUo+nDMKK4SZ8m4Jvvxp52vilxyySSWh2YTZz8+HQ07qGH/2rEom1vDw==,
+ integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==,
}
peerDependencies:
- unenv: 2.0.0-rc.24
- workerd: '>1.20260305.0 <2.0.0-0'
- peerDependenciesMeta:
- workerd:
- optional: true
+ '@babel/core': ^7.0.0-0
- '@cloudflare/workerd-darwin-64@1.20260617.1':
+ '@babel/plugin-syntax-typescript@7.29.7':
resolution:
{
- integrity: sha512-jWwmgEVVWbsHNrLSNXzwjJaH90VzRxq1cWkQFUidxyeUPnMxemeNE8I9qFAfrpzGgE11e9sKDcE3ettJW08swQ==,
+ integrity: sha512-ngr+82Sh0xMz25TPCZi+nC2iTzjfCdWS2ONXTp/PtSCHCgaCNBpdMqgvJ2ccdLlClVZ7sisIgB914j/JFe+RZA==,
}
- engines: { node: '>=16' }
- cpu: [x64]
- os: [darwin]
+ engines: { node: '>=6.9.0' }
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
- '@cloudflare/workerd-darwin-arm64@1.20260617.1':
+ '@babel/plugin-transform-async-generator-functions@7.29.7':
resolution:
{
- integrity: sha512-LHH7b565g9znfCUOkwbec6FG2rmRbsgCy6aJiU9KN662mNheWl5sw/iKleiFSiljPKQQP3HkjnC/NSkdgi/aSA==,
+ integrity: sha512-d98gXZkgswvkyohMBABkhm3GeXhYj8psWfwQ2C7gtfrKGTykQa/iOIi+JJhwMjPlZ6Vm2XN+DCf3Es1EoG4ZLA==,
}
- engines: { node: '>=16' }
- cpu: [arm64]
- os: [darwin]
+ engines: { node: '>=6.9.0' }
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
- '@cloudflare/workerd-linux-64@1.20260617.1':
+ '@babel/plugin-transform-async-to-generator@7.29.7':
resolution:
{
- integrity: sha512-FMnaAKXe4Cfd8TQurCVd9fs2XQVBFRCsP+Id/SRdUv89MlwYu9zXfoyx6BxM+brPTIUK38SHbo8iaxiwzLi9JQ==,
+ integrity: sha512-pcUb2SS+RMo9TWVBwKGI5ShtoG7R+zBsFmCKDa6fe8c+hPr3XJlZgoE5j6i8W7gDjhyvy+85vmYexanvXh3d1w==,
}
- engines: { node: '>=16' }
- cpu: [x64]
- os: [linux]
+ engines: { node: '>=6.9.0' }
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
- '@cloudflare/workerd-linux-arm64@1.20260617.1':
+ '@babel/plugin-transform-block-scoping@7.29.7':
resolution:
{
- integrity: sha512-MRoifFYcqbxxIIQy7PqO5tFY/qPFSnjXzakWl0sO93l+HLyG35jRAgOi6jfqa4kBxc7gKKtH861DcewjxUfkjA==,
+ integrity: sha512-ONyr4+AZhKh8yKWInVxU9AXA9EbsyeLcL6V0dJy6M2/62vuvpGm29zzuymbTpdc451GEpDIdAyPLP3r+P61yKQ==,
}
- engines: { node: '>=16' }
- cpu: [arm64]
- os: [linux]
+ engines: { node: '>=6.9.0' }
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
- '@cloudflare/workerd-windows-64@1.20260617.1':
+ '@babel/plugin-transform-class-properties@7.29.7':
resolution:
{
- integrity: sha512-rgBV9wQrv0OSKgCTTbhFUFY3sLGNANZ88aqaLvtmEn2gmbFVb1J4PDGochVUdB7NSEp4D/ghHva6/8SZmbONpw==,
+ integrity: sha512-GtcpjFvanPfzNQi3eTitsCqtRRmmqzpy/A+yhTR1HaZo1Ly3EA8ZXxlPyHdR8/IuRMYc3E4wdGBewB2QKQjAaA==,
}
- engines: { node: '>=16' }
- cpu: [x64]
- os: [win32]
+ engines: { node: '>=6.9.0' }
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
- '@cspotcode/source-map-support@0.8.1':
+ '@babel/plugin-transform-classes@7.29.7':
resolution:
{
- integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==,
+ integrity: sha512-qV0OGGBVacduzQHE649JyCneOFI/maT+YKsO+K4Yi3xv2wTPNjM/W2o2gdzMwEAZz7fXNTHAe0NcSg30bIN69g==,
}
- engines: { node: '>=12' }
+ engines: { node: '>=6.9.0' }
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
- '@csstools/color-helpers@6.1.0':
+ '@babel/plugin-transform-destructuring@7.29.7':
resolution:
{
- integrity: sha512-064IFJdjTfUqnjpCVpMOdbr8FLQBhinbZj6yRv2An2E41O/pLEXqfFRWqGq/SxlE5PEUYTlvWsG2r8MswAVvkg==,
+ integrity: sha512-iPX8aD6H9zV5s7ZsqTdNocPN/MGQ5sSMnElKrktxjJRMnB2jN/1p2+R7GkfD6CAYoVFqy5A4XnSIUeGgJzIWpg==,
}
- engines: { node: '>=20.19.0' }
+ engines: { node: '>=6.9.0' }
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
- '@csstools/css-calc@3.3.0':
+ '@babel/plugin-transform-flow-strip-types@7.29.7':
resolution:
{
- integrity: sha512-c5ihYsPkdG6JCkU2zTMm4+k6r7RXuGxtWYhu5DHMIiF1FHzrfmHL5so11AoFpUv/tu61xfcmT4AmKoFfMPoqdQ==,
+ integrity: sha512-wRHeUjUjCZnMHmiO5bRgjFLcoEh7JyTdByOW11ahhwNa4V0bmeGEaIvt51yq0zQp2yWIpqfxXXPyUP6GFJZHOQ==,
}
- engines: { node: '>=20.19.0' }
+ engines: { node: '>=6.9.0' }
peerDependencies:
- '@csstools/css-parser-algorithms': ^4.0.0
- '@csstools/css-tokenizer': ^4.0.0
+ '@babel/core': ^7.0.0-0
- '@csstools/css-color-parser@4.1.10':
+ '@babel/plugin-transform-for-of@7.29.7':
resolution:
{
- integrity: sha512-UZhQLIUyJaaMepqehrCODwCg2KW25vFvLWBmqYFaPclYvvxzj/sG8LBOhBFCp11i9uE7t1EyS+RAoV9tztPFyw==,
+ integrity: sha512-zeSIHh0+E1Um1WJRXCFlHQYu2ieJNdivLLjlBEp+dIBu3S51n+SZZmIXjxnItw6pz56Cn+KvK68BIBVsxq2JiQ==,
}
- engines: { node: '>=20.19.0' }
+ engines: { node: '>=6.9.0' }
peerDependencies:
- '@csstools/css-parser-algorithms': ^4.0.0
- '@csstools/css-tokenizer': ^4.0.0
+ '@babel/core': ^7.0.0-0
- '@csstools/css-parser-algorithms@4.0.0':
+ '@babel/plugin-transform-modules-commonjs@7.29.7':
resolution:
{
- integrity: sha512-+B87qS7fIG3L5h3qwJ/IFbjoVoOe/bpOdh9hAjXbvx0o8ImEmUsGXN0inFOnk2ChCFgqkkGFQ+TpM5rbhkKe4w==,
+ integrity: sha512-j0vCldybPC5b5dwCQOJ21uKtHzt7hxLygJTg9eF1ScfaikEDNfzn94XoW5Fi+seBR0nCyL23xaBFFkq7dTM8XQ==,
}
- engines: { node: '>=20.19.0' }
+ engines: { node: '>=6.9.0' }
peerDependencies:
- '@csstools/css-tokenizer': ^4.0.0
+ '@babel/core': ^7.0.0-0
- '@csstools/css-syntax-patches-for-csstree@1.1.7':
+ '@babel/plugin-transform-named-capturing-groups-regex@7.29.7':
resolution:
{
- integrity: sha512-fQ+05118eQS1cofO3aJpB5efgpBZMvIzwr/sbC8kDLVA5XLG8q1kJV5yzrUAI1f7lvhPnm8fgIjzFB8/O/5Dig==,
+ integrity: sha512-vuFoLwr4qnv2xbZ16SQd6uPcH5FNrLHhk/Jzo++0XJFcaDsr4gjJVg6j398oMHiC+83k/GiBzviwF5KBJkPUtQ==,
}
+ engines: { node: '>=6.9.0' }
peerDependencies:
- css-tree: ^3.2.1
- peerDependenciesMeta:
- css-tree:
- optional: true
+ '@babel/core': ^7.0.0
- '@csstools/css-tokenizer@4.0.0':
+ '@babel/plugin-transform-nullish-coalescing-operator@7.29.7':
resolution:
{
- integrity: sha512-QxULHAm7cNu72w97JUNCBFODFaXpbDg+dP8b/oWFAZ2MTRppA3U00Y2L1HqaS4J6yBqxwa/Y3nMBaxVKbB/NsA==,
+ integrity: sha512-idmp1dFaekP9GbcMvG24Kvw2BfhFZjHnNJCkV4WuIY4PskJzwI3f1N5OdgYke38T7rftO6ERulFRn2cFeZwRkg==,
}
- engines: { node: '>=20.19.0' }
+ engines: { node: '>=6.9.0' }
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
- '@emnapi/core@1.11.1':
+ '@babel/plugin-transform-optional-catch-binding@7.29.7':
resolution:
{
- integrity: sha512-RSvbQmHzdKzNsLYa/wHrbc3KN4sYLKAdPZxqiM2HATqv/SBk2/ENSHpvXGaLOMcsAyz0poEGqkmmKYG3OWiJEQ==,
+ integrity: sha512-sLsyndxK2VwX6yNUOakMb7Sh553ZTe/vVM1XJ+9Z5aW1ytsc8xOIwmyk05NNjN60vkc5/KqoTH6hB4V41LJhng==,
}
+ engines: { node: '>=6.9.0' }
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
- '@emnapi/runtime@1.11.1':
+ '@babel/plugin-transform-optional-chaining@7.29.7':
resolution:
{
- integrity: sha512-vgj7R3y3Wgx24IQaGPA/R6YFXLHVMOZ0uVEyIQPaWs+rd1AzfEMXlAC22FYwO1XkKR6NPsq7mUandH8oIRdZFw==,
+ integrity: sha512-6GM1dhvK3gNODkXcEcMCOLEDCLSoZ/sBbro2Ax8HURyasQ4NshagQixkRFdh5niI6E4gmA/jYI/4aT7rRos3ZQ==,
}
+ engines: { node: '>=6.9.0' }
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
- '@emnapi/wasi-threads@1.2.2':
+ '@babel/plugin-transform-private-methods@7.29.7':
resolution:
{
- integrity: sha512-c95qOXkHdydNKhscBTebqEC1CVAZpyqOfVfBzQ1qgzyl3gfeldUjIggDbIZgDKsHLgnsM+igH7TJ/eAasaVuMA==,
+ integrity: sha512-/6Rz4DK1ETDEM/bWHsPHcaEe7ZaT1EqSXjtSP/L0DijOYuaUhiRiOKcwpZ8P7zR4xXEHc2ITdiCgBm9Tpyv9ug==,
}
+ engines: { node: '>=6.9.0' }
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
- '@esbuild/aix-ppc64@0.27.7':
+ '@babel/plugin-transform-private-property-in-object@7.29.7':
resolution:
{
- integrity: sha512-EKX3Qwmhz1eMdEJokhALr0YiD0lhQNwDqkPYyPhiSwKrh7/4KRjQc04sZ8db+5DVVnZ1LmbNDI1uAMPEUBnQPg==,
+ integrity: sha512-+BNo06dnrzdNNqCm1X6YUaVv0DKk8Q+JYcoZfOkLhYWNCXzlwTSRq8zGWayT1csjcpNXV9CQTBRRbmTLZac5cA==,
}
- engines: { node: '>=18' }
- cpu: [ppc64]
- os: [aix]
+ engines: { node: '>=6.9.0' }
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
- '@esbuild/aix-ppc64@0.28.1':
+ '@babel/plugin-transform-react-display-name@7.29.7':
resolution:
{
- integrity: sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ==,
+ integrity: sha512-+1wdDMGNb4UPeY3Q4L5yLiYe6TXPXubs4NjrgRFw13hPRLJfEMw2Q5OXkee6/IfdqePIeW4Jjwe3aBh7SdKz4Q==,
}
- engines: { node: '>=18' }
- cpu: [ppc64]
- os: [aix]
+ engines: { node: '>=6.9.0' }
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
- '@esbuild/android-arm64@0.27.7':
+ '@babel/plugin-transform-react-jsx-self@7.29.7':
resolution:
{
- integrity: sha512-62dPZHpIXzvChfvfLJow3q5dDtiNMkwiRzPylSCfriLvZeq0a1bWChrGx/BbUbPwOrsWKMn8idSllklzBy+dgQ==,
+ integrity: sha512-TL0hMc9xzy86VD31nUiwzd5otRAcyEPcsegCxolO0PvcXuH1v0kECe/UIznYFihpkvU5wg/jk4v0TTEFfm53fw==,
}
- engines: { node: '>=18' }
- cpu: [arm64]
- os: [android]
+ engines: { node: '>=6.9.0' }
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
- '@esbuild/android-arm64@0.28.1':
+ '@babel/plugin-transform-react-jsx-source@7.29.7':
resolution:
{
- integrity: sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg==,
+ integrity: sha512-06IyK09H3wi4cGbhDBwp5gUGo0IKtnYa8tyTiephirPCK6fbobVGiXMMI5zLQ4aKEYP3wZ3ArU44o+8KMrSG/Q==,
}
- engines: { node: '>=18' }
- cpu: [arm64]
- os: [android]
+ engines: { node: '>=6.9.0' }
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
- '@esbuild/android-arm@0.27.7':
+ '@babel/plugin-transform-react-jsx@7.29.7':
resolution:
{
- integrity: sha512-jbPXvB4Yj2yBV7HUfE2KHe4GJX51QplCN1pGbYjvsyCZbQmies29EoJbkEc+vYuU5o45AfQn37vZlyXy4YJ8RQ==,
+ integrity: sha512-WsZulLVBUHXVj2cUcPVx6UE21TpalB6bHbSFErKT0Ib++ax24jjXe73FqlWvdylFOjiuPHYi6VCcgRad1ItN+A==,
}
- engines: { node: '>=18' }
- cpu: [arm]
- os: [android]
+ engines: { node: '>=6.9.0' }
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-transform-regenerator@7.29.7':
+ resolution:
+ {
+ integrity: sha512-rNNFV0DBAJp988xW2DOntfDoYn1eR8GGF5AT5vYc+rjyfaQkM242c9tZUHHPe7KYaiJizXPWhQTzzdbXySyhBw==,
+ }
+ engines: { node: '>=6.9.0' }
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-transform-runtime@7.29.7':
+ resolution:
+ {
+ integrity: sha512-xmAscdE/AsqRW7vutbPNoUmu/nF5SrLKPs7aoJgEjo35lLKA/Bc0i2rMv/hr1+Y0o1bQCiVtith3u2vdgRL39Q==,
+ }
+ engines: { node: '>=6.9.0' }
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-transform-typescript@7.29.7':
+ resolution:
+ {
+ integrity: sha512-jK52h8LaLc7JarhQV2ofeFMts4H7vnOXnqZNA6fYglBTZewRBE51KWt3BUltW1P+KoPsYkHoJeXePuz4zo2LMw==,
+ }
+ engines: { node: '>=6.9.0' }
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-transform-unicode-regex@7.29.7':
+ resolution:
+ {
+ integrity: sha512-7D/x/23/d/3VqZ0QA+LGbZMlGwZjztBygSWWWsfTPoQ1oQ6Q1P6Mr3d0kk42XabyUVw+fha3LqdRsFqeKqvCyA==,
+ }
+ engines: { node: '>=6.9.0' }
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/runtime@7.29.7':
+ resolution:
+ {
+ integrity: sha512-Nq8OhGWiZIZGV6hLHoyAKLLcJihP/xFeBMGJoUrxTX2psI8dCifzLhZISFb+VWS3wFMRDmCGw5R+dOySCqPLhw==,
+ }
+ 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.29.7':
+ resolution:
+ {
+ integrity: sha512-EhlfNQtZ+NK22w5BM61ciuiq1m58ed33Wr1Xan//ZRTy6hgjnwyCffRYwzsGXdASJSUJ1guZILsErh1eQcl+zw==,
+ }
+ engines: { node: '>=6.9.0' }
+
+ '@babel/types@7.29.7':
+ resolution:
+ {
+ integrity: sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA==,
+ }
+ engines: { node: '>=6.9.0' }
+
+ '@bramus/specificity@2.4.2':
+ resolution:
+ {
+ integrity: sha512-ctxtJ/eA+t+6q2++vj5j7FYX3nRu311q1wfYH3xjlLOsczhlhxAg2FWNUXhpGvAw3BWo1xBcvOV6/YLc2r5FJw==,
+ }
+ hasBin: true
+
+ '@cloudflare/kv-asset-handler@0.5.0':
+ resolution:
+ {
+ integrity: sha512-jxQYkj8dSIzc0cD6cMMNdOc1UVjqSqu8BZdor5s8cGjW2I8BjODt/kWPVdY+u9zj3ms75Q5qaZgnxUad83+eAg==,
+ }
+ engines: { node: '>=22.0.0' }
+
+ '@cloudflare/unenv-preset@2.16.1':
+ resolution:
+ {
+ integrity: sha512-ECxObrMfyTl5bhQf/lZCXwo5G6xX9IAUo+nDMKK4SZ8m4Jvvxp52vilxyySSWh2YTZz8+HQ07qGH/2rEom1vDw==,
+ }
+ peerDependencies:
+ unenv: 2.0.0-rc.24
+ workerd: '>1.20260305.0 <2.0.0-0'
+ peerDependenciesMeta:
+ workerd:
+ optional: true
+
+ '@cloudflare/workerd-darwin-64@1.20260617.1':
+ resolution:
+ {
+ integrity: sha512-jWwmgEVVWbsHNrLSNXzwjJaH90VzRxq1cWkQFUidxyeUPnMxemeNE8I9qFAfrpzGgE11e9sKDcE3ettJW08swQ==,
+ }
+ engines: { node: '>=16' }
+ cpu: [x64]
+ os: [darwin]
+
+ '@cloudflare/workerd-darwin-arm64@1.20260617.1':
+ resolution:
+ {
+ integrity: sha512-LHH7b565g9znfCUOkwbec6FG2rmRbsgCy6aJiU9KN662mNheWl5sw/iKleiFSiljPKQQP3HkjnC/NSkdgi/aSA==,
+ }
+ engines: { node: '>=16' }
+ cpu: [arm64]
+ os: [darwin]
+
+ '@cloudflare/workerd-linux-64@1.20260617.1':
+ resolution:
+ {
+ integrity: sha512-FMnaAKXe4Cfd8TQurCVd9fs2XQVBFRCsP+Id/SRdUv89MlwYu9zXfoyx6BxM+brPTIUK38SHbo8iaxiwzLi9JQ==,
+ }
+ engines: { node: '>=16' }
+ cpu: [x64]
+ os: [linux]
+
+ '@cloudflare/workerd-linux-arm64@1.20260617.1':
+ resolution:
+ {
+ integrity: sha512-MRoifFYcqbxxIIQy7PqO5tFY/qPFSnjXzakWl0sO93l+HLyG35jRAgOi6jfqa4kBxc7gKKtH861DcewjxUfkjA==,
+ }
+ engines: { node: '>=16' }
+ cpu: [arm64]
+ os: [linux]
+
+ '@cloudflare/workerd-windows-64@1.20260617.1':
+ resolution:
+ {
+ integrity: sha512-rgBV9wQrv0OSKgCTTbhFUFY3sLGNANZ88aqaLvtmEn2gmbFVb1J4PDGochVUdB7NSEp4D/ghHva6/8SZmbONpw==,
+ }
+ engines: { node: '>=16' }
+ cpu: [x64]
+ os: [win32]
+
+ '@cspotcode/source-map-support@0.8.1':
+ resolution:
+ {
+ integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==,
+ }
+ engines: { node: '>=12' }
+
+ '@csstools/color-helpers@6.1.0':
+ resolution:
+ {
+ integrity: sha512-064IFJdjTfUqnjpCVpMOdbr8FLQBhinbZj6yRv2An2E41O/pLEXqfFRWqGq/SxlE5PEUYTlvWsG2r8MswAVvkg==,
+ }
+ engines: { node: '>=20.19.0' }
+
+ '@csstools/css-calc@3.3.0':
+ resolution:
+ {
+ integrity: sha512-c5ihYsPkdG6JCkU2zTMm4+k6r7RXuGxtWYhu5DHMIiF1FHzrfmHL5so11AoFpUv/tu61xfcmT4AmKoFfMPoqdQ==,
+ }
+ engines: { node: '>=20.19.0' }
+ peerDependencies:
+ '@csstools/css-parser-algorithms': ^4.0.0
+ '@csstools/css-tokenizer': ^4.0.0
+
+ '@csstools/css-color-parser@4.1.10':
+ resolution:
+ {
+ integrity: sha512-UZhQLIUyJaaMepqehrCODwCg2KW25vFvLWBmqYFaPclYvvxzj/sG8LBOhBFCp11i9uE7t1EyS+RAoV9tztPFyw==,
+ }
+ engines: { node: '>=20.19.0' }
+ peerDependencies:
+ '@csstools/css-parser-algorithms': ^4.0.0
+ '@csstools/css-tokenizer': ^4.0.0
+
+ '@csstools/css-parser-algorithms@4.0.0':
+ resolution:
+ {
+ integrity: sha512-+B87qS7fIG3L5h3qwJ/IFbjoVoOe/bpOdh9hAjXbvx0o8ImEmUsGXN0inFOnk2ChCFgqkkGFQ+TpM5rbhkKe4w==,
+ }
+ engines: { node: '>=20.19.0' }
+ peerDependencies:
+ '@csstools/css-tokenizer': ^4.0.0
+
+ '@csstools/css-syntax-patches-for-csstree@1.1.7':
+ resolution:
+ {
+ integrity: sha512-fQ+05118eQS1cofO3aJpB5efgpBZMvIzwr/sbC8kDLVA5XLG8q1kJV5yzrUAI1f7lvhPnm8fgIjzFB8/O/5Dig==,
+ }
+ peerDependencies:
+ css-tree: ^3.2.1
+ peerDependenciesMeta:
+ css-tree:
+ optional: true
+
+ '@csstools/css-tokenizer@4.0.0':
+ resolution:
+ {
+ integrity: sha512-QxULHAm7cNu72w97JUNCBFODFaXpbDg+dP8b/oWFAZ2MTRppA3U00Y2L1HqaS4J6yBqxwa/Y3nMBaxVKbB/NsA==,
+ }
+ engines: { node: '>=20.19.0' }
+
+ '@emnapi/core@1.11.1':
+ resolution:
+ {
+ integrity: sha512-RSvbQmHzdKzNsLYa/wHrbc3KN4sYLKAdPZxqiM2HATqv/SBk2/ENSHpvXGaLOMcsAyz0poEGqkmmKYG3OWiJEQ==,
+ }
+
+ '@emnapi/runtime@1.11.1':
+ resolution:
+ {
+ integrity: sha512-vgj7R3y3Wgx24IQaGPA/R6YFXLHVMOZ0uVEyIQPaWs+rd1AzfEMXlAC22FYwO1XkKR6NPsq7mUandH8oIRdZFw==,
+ }
+
+ '@emnapi/wasi-threads@1.2.2':
+ resolution:
+ {
+ integrity: sha512-c95qOXkHdydNKhscBTebqEC1CVAZpyqOfVfBzQ1qgzyl3gfeldUjIggDbIZgDKsHLgnsM+igH7TJ/eAasaVuMA==,
+ }
+
+ '@esbuild/aix-ppc64@0.27.7':
+ resolution:
+ {
+ integrity: sha512-EKX3Qwmhz1eMdEJokhALr0YiD0lhQNwDqkPYyPhiSwKrh7/4KRjQc04sZ8db+5DVVnZ1LmbNDI1uAMPEUBnQPg==,
+ }
+ engines: { node: '>=18' }
+ cpu: [ppc64]
+ os: [aix]
+
+ '@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.7':
+ resolution:
+ {
+ integrity: sha512-62dPZHpIXzvChfvfLJow3q5dDtiNMkwiRzPylSCfriLvZeq0a1bWChrGx/BbUbPwOrsWKMn8idSllklzBy+dgQ==,
+ }
+ engines: { node: '>=18' }
+ cpu: [arm64]
+ os: [android]
+
+ '@esbuild/android-arm64@0.28.1':
+ resolution:
+ {
+ integrity: sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg==,
+ }
+ engines: { node: '>=18' }
+ cpu: [arm64]
+ os: [android]
+
+ '@esbuild/android-arm@0.27.7':
+ resolution:
+ {
+ integrity: sha512-jbPXvB4Yj2yBV7HUfE2KHe4GJX51QplCN1pGbYjvsyCZbQmies29EoJbkEc+vYuU5o45AfQn37vZlyXy4YJ8RQ==,
+ }
+ engines: { node: '>=18' }
+ cpu: [arm]
+ os: [android]
'@esbuild/android-arm@0.28.1':
resolution:
@@ -1592,20 +2003,32 @@ packages:
'@noble/hashes':
optional: true
- '@img/colour@1.1.0':
+ '@hapi/hoek@9.3.0':
resolution:
{
- integrity: sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ==,
+ integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==,
}
- engines: { node: '>=18' }
- '@img/sharp-darwin-arm64@0.34.5':
+ '@hapi/topo@5.1.0':
resolution:
{
- integrity: sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==,
+ integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==,
}
- engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 }
- cpu: [arm64]
+
+ '@img/colour@1.1.0':
+ resolution:
+ {
+ integrity: sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ==,
+ }
+ engines: { node: '>=18' }
+
+ '@img/sharp-darwin-arm64@0.34.5':
+ resolution:
+ {
+ integrity: sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==,
+ }
+ engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 }
+ cpu: [arm64]
os: [darwin]
'@img/sharp-darwin-x64@0.34.5':
@@ -1820,6 +2243,27 @@ packages:
cpu: [x64]
os: [win32]
+ '@isaacs/ttlcache@1.4.1':
+ resolution:
+ {
+ integrity: sha512-RQgQ4uQ+pLbqXfOmieB91ejmLwvSgv9nLx6sT6sD83s7umBypgg+OIBOBbEUiJXrfpnp9j0mRhYYdzp9uqq3lA==,
+ }
+ engines: { node: '>=12' }
+
+ '@jest/schemas@29.6.3':
+ resolution:
+ {
+ integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==,
+ }
+ engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 }
+
+ '@jest/types@29.6.3':
+ resolution:
+ {
+ integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==,
+ }
+ engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 }
+
'@jridgewell/gen-mapping@0.3.13':
resolution:
{
@@ -1839,6 +2283,12 @@ packages:
}
engines: { node: '>=6.0.0' }
+ '@jridgewell/source-map@0.3.11':
+ resolution:
+ {
+ integrity: sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==,
+ }
+
'@jridgewell/sourcemap-codec@1.5.5':
resolution:
{
@@ -2058,6 +2508,27 @@ packages:
}
engines: { node: '>= 20.19.0' }
+ '@nodelib/fs.scandir@2.1.5':
+ resolution:
+ {
+ integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==,
+ }
+ engines: { node: '>= 8' }
+
+ '@nodelib/fs.stat@2.0.5':
+ resolution:
+ {
+ integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==,
+ }
+ engines: { node: '>= 8' }
+
+ '@nodelib/fs.walk@1.2.8':
+ resolution:
+ {
+ integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==,
+ }
+ engines: { node: '>= 8' }
+
'@observablehq/plot@0.6.17':
resolution:
{
@@ -2216,6 +2687,204 @@ packages:
integrity: sha512-dCED+QRChTVatE9ibtoaxc+WkdzOSjYTKi/+uacHWIsfodVfpsueo3+DKpgU5Px8qXjgmXkSvhXvSCz3fnP9lw==,
}
+ '@react-native-community/cli-clean@20.1.0':
+ resolution:
+ {
+ integrity: sha512-77L4DifWfxAT8ByHnkypge7GBMYpbJAjBGV+toowt5FQSGaTBDcBHCX+FFqFRukD5fH6i8sZ41Gtw+nbfCTTIA==,
+ }
+
+ '@react-native-community/cli-config-android@20.1.0':
+ resolution:
+ {
+ integrity: sha512-3A01ZDyFeCALzzPcwP/fleHoP3sGNq1UX7FzxkTrOFX8RRL9ntXNXQd27E56VU4BBxGAjAJT4Utw8pcOjJceIA==,
+ }
+
+ '@react-native-community/cli-config-apple@20.1.0':
+ resolution:
+ {
+ integrity: sha512-n6JVs8Q3yxRbtZQOy05ofeb1kGtspGN3SgwPmuaqvURF9fsuS7c4/9up2Kp9C+1D2J1remPJXiZLNGOcJvfpOA==,
+ }
+
+ '@react-native-community/cli-config@20.1.0':
+ resolution:
+ {
+ integrity: sha512-1x9rhLLR/dKKb92Lb5O0l0EmUG08FHf+ZVyVEf9M+tX+p5QIm52MRiy43R0UAZ2jJnFApxRk+N3sxoYK4Dtnag==,
+ }
+
+ '@react-native-community/cli-doctor@20.1.0':
+ resolution:
+ {
+ integrity: sha512-QfJF1GVjA4PBrIT3SJ0vFFIu0km1vwOmLDlOYVqfojajZJ+Dnvl0f94GN1il/jT7fITAxom///XH3/URvi7YTQ==,
+ }
+
+ '@react-native-community/cli-platform-android@20.1.0':
+ resolution:
+ {
+ integrity: sha512-TeHPDThOwDppQRpndm9kCdRCBI8AMy3HSIQ+iy7VYQXL5BtZ5LfmGdusoj7nVN/ZGn0Lc6Gwts5qowyupXdeKg==,
+ }
+
+ '@react-native-community/cli-platform-apple@20.1.0':
+ resolution:
+ {
+ integrity: sha512-0ih1hrYezSM2cuOlVnwBEFtMwtd8YgpTLmZauDJCv50rIumtkI1cQoOgLoS4tbPCj9U/Vn2a9BFH0DLFOOIacg==,
+ }
+
+ '@react-native-community/cli-platform-ios@20.1.0':
+ resolution:
+ {
+ integrity: sha512-XN7Da9z4WsJxtqVtEzY8q2bv22OsvzaFP5zy5+phMWNoJlU4lf7IvBSxqGYMpQ9XhYP7arDw5vmW4W34s06rnA==,
+ }
+
+ '@react-native-community/cli-server-api@20.1.0':
+ resolution:
+ {
+ integrity: sha512-Tb415Oh8syXNT2zOzLzFkBXznzGaqKCiaichxKzGCDKg6JGHp3jSuCmcTcaPeYC7oc32n/S3Psw7798r4Q/7lA==,
+ }
+
+ '@react-native-community/cli-tools@20.1.0':
+ resolution:
+ {
+ integrity: sha512-/YmzHGOkY6Bgrv4OaA1L8rFqsBlQd1EB2/ipAoKPiieV0EcB5PUamUSuNeFU3sBZZTYQCUENwX4wgOHgFUlDnQ==,
+ }
+
+ '@react-native-community/cli-types@20.1.0':
+ resolution:
+ {
+ integrity: sha512-D0kDspcwgbVXyNjwicT7Bb1JgXjijTw1JJd+qxyF/a9+sHv7TU4IchV+gN38QegeXqVyM4Ym7YZIvXMFBmyJqA==,
+ }
+
+ '@react-native-community/cli@20.1.0':
+ resolution:
+ {
+ integrity: sha512-441WsVtRe4nGJ9OzA+QMU1+22lA6Q2hRWqqIMKD0wjEMLqcSfOZyu2UL9a/yRpL/dRpyUsU4n7AxqKfTKO/Csg==,
+ }
+ engines: { node: '>=20.19.4' }
+ hasBin: true
+
+ '@react-native/assets-registry@0.86.0':
+ resolution:
+ {
+ integrity: sha512-nIaXbm2jX1OTYp0qbviJ3O6KZivoE8z3BnhUQ2LsqfZSWRoOK/n1qsiAr6oALiNKWnXY3j2KPwtYORnZzp8xew==,
+ }
+ engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 }
+
+ '@react-native/babel-plugin-codegen@0.86.0':
+ resolution:
+ {
+ integrity: sha512-qdsABWNW7uTll90l4Vh03gjeyu3WVDi2CyiiyvYGMRDcoYbjbQi6df3BMAm9lQI2yslZ1T14LlDDAsgTwNxplA==,
+ }
+ engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 }
+
+ '@react-native/babel-preset@0.86.0':
+ resolution:
+ {
+ integrity: sha512-bYQcWiPySNvF4dns9Ls9gMmwgq66ohvM9Fwc/Kn8r85t66UNHxch3p1QwPiSorDelFauZwJbgo9+ReibTgvpbA==,
+ }
+ engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 }
+ peerDependencies:
+ '@babel/core': '*'
+
+ '@react-native/codegen@0.86.0':
+ resolution:
+ {
+ integrity: sha512-uTs9DBo3+/lUqinsGZK0FKJRBVClrwMXoZToaDxE1Q2SL2e55vs2GwyZfIKzPl5uJnbu4PfFMIp0/mLXLWUMuA==,
+ }
+ engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 }
+ peerDependencies:
+ '@babel/core': '*'
+
+ '@react-native/community-cli-plugin@0.86.0':
+ resolution:
+ {
+ integrity: sha512-Jv8p1ebEPfTzs8gmrjsdT2XMXFfeAg45Pman+XPLFGaSeGAZkutRFRyX9Cs9aGTSOyIA9YPJ6vDNb1ayTf1FKQ==,
+ }
+ engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 }
+ peerDependencies:
+ '@react-native-community/cli': '*'
+ '@react-native/metro-config': 0.86.0
+ peerDependenciesMeta:
+ '@react-native-community/cli':
+ optional: true
+ '@react-native/metro-config':
+ optional: true
+
+ '@react-native/debugger-frontend@0.86.0':
+ resolution:
+ {
+ integrity: sha512-7Mb3nDfyJeys+ELF75Ageu7VKERlnIMoO+aNPoXqTXvz+b41L6l2CqMyLpDHxkBSlenij6gEepPNgaIyWHbJZw==,
+ }
+ engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 }
+
+ '@react-native/debugger-shell@0.86.0':
+ resolution:
+ {
+ integrity: sha512-Y0zEkZzLz8ou6o/VLml1A31X/rMgc6DRjwxwzPMa94qRTMY070WeBCNTITQo4kKTBAUgbxh07oXPQqp0Tpja8w==,
+ }
+ engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 }
+
+ '@react-native/dev-middleware@0.86.0':
+ resolution:
+ {
+ integrity: sha512-20pTO6yTybmvXvro520H6C7jydIQnLKOl5qFtVEcHSdFrY63r3OGei+Rx9bILgSRmH6jgnfEcijcMx7pwWuQtw==,
+ }
+ engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 }
+
+ '@react-native/gradle-plugin@0.86.0':
+ resolution:
+ {
+ integrity: sha512-a1RcfaEDqWExCGfCwadIxt4l8FvKYgFqeMf2uzeKyAOnb+vTGNIeCvifFL2MqvgaeYxlER437HbMIajGcuJ1pQ==,
+ }
+ engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 }
+
+ '@react-native/js-polyfills@0.86.0':
+ resolution:
+ {
+ integrity: sha512-zYy/Cjd1VTnZ2iCNaG9bDF9C3l2ntESiPRscjIlI5FKugu6aeTwsDSv1aI8Bc4Kp3vEdoVg+UQhLAhE4svREaQ==,
+ }
+ engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 }
+
+ '@react-native/metro-babel-transformer@0.86.0':
+ resolution:
+ {
+ integrity: sha512-SjKej3E5qIahqo/G+rSOrmJUQM44RyKtWtO+VfmKAAMoJWkBFomM22hTLKCIS5cdbIAJ9COAmU+KAi2wVSO0wQ==,
+ }
+ engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 }
+ peerDependencies:
+ '@babel/core': '*'
+
+ '@react-native/metro-config@0.86.0':
+ resolution:
+ {
+ integrity: sha512-7v+xbTeEci9ZcQ/Z1OqI4RXcqN69wSMDYL5BAMvOReZ7U04+aDQ0/SQhClYPn6x2/RxM4WzMKSAuNyLKqvYVtw==,
+ }
+ engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 }
+
+ '@react-native/normalize-colors@0.86.0':
+ resolution:
+ {
+ integrity: sha512-kG0wfCGghUKlfxkJyyHCDVutWVYWK7/DG58ojA/4v9EfulgF+osuSQmlbNb3rcKX58qutm7JcldSeVLgGFha9g==,
+ }
+
+ '@react-native/typescript-config@0.86.0':
+ resolution:
+ {
+ integrity: sha512-oSuFIEMVAVEXdIvDnrdXsWmIF4fYdgtvAEr2ofn8OY534m7XWm9QAqHHpGUzoK0iwDPlPZ5n2Rb25gqF1SZ0rg==,
+ }
+
+ '@react-native/virtualized-lists@0.86.0':
+ resolution:
+ {
+ integrity: sha512-4/ZLXdf/OSpPDVO0AsQ1SJdRIzt5t9BNQ46QwGgxvX7/cirYR5k8KXctNGGgW8lQo2gZChEfY2zFCZg9nM/jiw==,
+ }
+ engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 }
+ peerDependencies:
+ '@types/react': ^19.2.0
+ react: '*'
+ react-native: 0.86.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+
'@reduxjs/toolkit@2.12.0':
resolution:
{
@@ -2621,6 +3290,30 @@ packages:
engines: { node: '>=18.0.0', npm: '>=8.0.0' }
hasBin: true
+ '@sideway/address@4.1.5':
+ resolution:
+ {
+ integrity: sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==,
+ }
+
+ '@sideway/formula@3.0.1':
+ resolution:
+ {
+ integrity: sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==,
+ }
+
+ '@sideway/pinpoint@2.0.0':
+ resolution:
+ {
+ integrity: sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==,
+ }
+
+ '@sinclair/typebox@0.27.12':
+ resolution:
+ {
+ integrity: sha512-hhyNJ+nbR6ZR7pToHvllEFun9TL0sbL+tk/ON75lo+Xas054uez98qRbsuNt7MBCyZKK4+8Yli/OAGZhmfBZ/g==,
+ }
+
'@sindresorhus/is@7.2.0':
resolution:
{
@@ -2873,6 +3566,24 @@ packages:
integrity: sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==,
}
+ '@types/istanbul-lib-coverage@2.0.6':
+ resolution:
+ {
+ integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==,
+ }
+
+ '@types/istanbul-lib-report@3.0.3':
+ resolution:
+ {
+ integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==,
+ }
+
+ '@types/istanbul-reports@3.0.4':
+ resolution:
+ {
+ integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==,
+ }
+
'@types/jsdom@27.0.0':
resolution:
{
@@ -2929,6 +3640,18 @@ packages:
integrity: sha512-zFDAD+tlpf2r4asuHEj0XH6pY6i0g5NeAHPn+15wk3BV6JA69eERFXC1gyGThDkVa1zCyKr5jox1+2LbV/AMLg==,
}
+ '@types/yargs-parser@21.0.3':
+ resolution:
+ {
+ integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==,
+ }
+
+ '@types/yargs@17.0.35':
+ resolution:
+ {
+ integrity: sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==,
+ }
+
'@vitejs/plugin-react@6.0.4':
resolution:
{
@@ -2995,6 +3718,12 @@ packages:
integrity: sha512-fy9am/HWxbaGt/Sawrp90vt6Y6jQwf1RX77cz3uwoJwJVMli/e1IEwRPnMNJ7vKfPTwo0diXifkpPvwH9v7nGA==,
}
+ '@vscode/sudo-prompt@9.3.2':
+ resolution:
+ {
+ integrity: sha512-gcXoCN00METUNFeQOFJ+C9xUI0DKB+0EGMVg7wbVYRHBw2Eq3fKisDZOkRdOz3kqXRKOENMfShPOmypw1/8nOw==,
+ }
+
'@vue/compiler-core@3.5.40':
resolution:
{
@@ -3061,6 +3790,27 @@ packages:
integrity: sha512-WxnBtruIqOoV3rA4jeKDWzrYI5h7Cp4+pjwDi8kWGHz+IslhiN+wguLVVhtv2l8VoU02rzDCVfDjgCl1lNpZVg==,
}
+ abort-controller@3.0.0:
+ resolution:
+ {
+ integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==,
+ }
+ engines: { node: '>=6.5' }
+
+ accepts@1.3.8:
+ resolution:
+ {
+ integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==,
+ }
+ engines: { node: '>= 0.6' }
+
+ accepts@2.0.0:
+ resolution:
+ {
+ integrity: sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==,
+ }
+ engines: { node: '>= 0.6' }
+
acorn@8.17.0:
resolution:
{
@@ -3069,6 +3819,13 @@ packages:
engines: { node: '>=0.4.0' }
hasBin: true
+ agent-base@7.1.4:
+ resolution:
+ {
+ integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==,
+ }
+ engines: { node: '>= 14' }
+
ajv@8.20.0:
resolution:
{
@@ -3081,1955 +3838,3920 @@ packages:
integrity: sha512-nJvPAQVNPdZZ0NrExJ/kzQco3ijR8LwvCOadQecllESiqT4NyZ/57sN9V2XyvhlBGAbmlKYgeWZvYdKq99ij/Q==,
}
- ansi-regex@6.2.2:
+ anser@1.4.10:
resolution:
{
- integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==,
+ integrity: sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww==,
}
- engines: { node: '>=12' }
- ansi-styles@6.2.3:
+ ansi-fragments@0.2.1:
resolution:
{
- integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==,
+ integrity: sha512-DykbNHxuXQwUDRv5ibc2b0x7uw7wmwOGLBUd5RmaQ5z8Lhx19vwvKV+FAsM5rEA6dEcHxX+/Ad5s9eF2k2bB+w==,
}
- engines: { node: '>=12' }
- aria-query@5.3.1:
+ ansi-regex@4.1.1:
resolution:
{
- integrity: sha512-Z/ZeOgVl7bcSYZ/u/rh0fOpvEpq//LZmdbkXyc7syVzjPAhfOa9ebsdTSjEBDU4vs5nC98Kfduj1uFo0qyET3g==,
+ integrity: sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==,
}
- engines: { node: '>= 0.4' }
+ engines: { node: '>=6' }
- assertion-error@2.0.1:
+ ansi-regex@5.0.1:
resolution:
{
- integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==,
+ integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==,
}
- engines: { node: '>=12' }
+ engines: { node: '>=8' }
- axobject-query@4.1.0:
+ ansi-regex@6.2.2:
resolution:
{
- integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==,
+ integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==,
}
- engines: { node: '>= 0.4' }
+ engines: { node: '>=12' }
- babel-plugin-jsx-dom-expressions@0.40.7:
+ ansi-styles@3.2.1:
resolution:
{
- integrity: sha512-/O6JWUmjv03OI9lL2ry9bUjpD5S3PclM55RRJEyCdcFZ5W2SEA/59d+l2hNsk3gI6kiWRdRPdOtqZmsQzFN1pQ==,
+ integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==,
}
- peerDependencies:
- '@babel/core': ^7.20.12
+ engines: { node: '>=4' }
- babel-preset-solid@1.9.12:
+ ansi-styles@4.3.0:
resolution:
{
- integrity: sha512-LLqnuKVDlKpyBlMPcH6qEvs/wmS9a+NczppxJ3ryS/c0O5IiSFOIBQi9GzyiGDSbcJpx4Gr87jyFTos1MyEuWg==,
+ integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==,
}
- peerDependencies:
- '@babel/core': ^7.0.0
- solid-js: ^1.9.12
- peerDependenciesMeta:
- solid-js:
- optional: true
+ engines: { node: '>=8' }
- baseline-browser-mapping@2.11.5:
+ ansi-styles@5.2.0:
resolution:
{
- integrity: sha512-xJo6a6YZnwZfnyGmQKWMbVOcii7XRibjOskRh+WJ9UHQoX16xrQrcIgAMQOzfvs8XiLMx6ih/fsLPF73iY2D1A==,
+ integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==,
}
- engines: { node: '>=6.0.0' }
- hasBin: true
+ engines: { node: '>=10' }
- bidi-js@1.0.3:
+ ansi-styles@6.2.3:
resolution:
{
- integrity: sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==,
+ integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==,
}
+ engines: { node: '>=12' }
- binary-search-bounds@2.0.5:
+ appdirsjs@1.2.8:
resolution:
{
- integrity: sha512-H0ea4Fd3lS1+sTEB2TgcLoK21lLhwEJzlQv3IN47pJS976Gx4zoWe0ak3q+uYh60ppQxg9F16Ri4tS1sfD4+jA==,
+ integrity: sha512-8zl1xlxeS4a0/36CT6LOaVioPOL8TeLT1b9OHk0j9xSbzmPBuM7lUgWMSTh6SbuF8fbwjcP1rr30OCLpd1fl+A==,
}
- blake3-wasm@2.1.5:
+ argparse@2.0.1:
resolution:
{
- integrity: sha512-F1+K8EbfOZE49dtoPtmxUQrpXaBIl3ICvasLh+nJta0xkz+9kF/7uet9fLnwKqhDrmj6g+6K3Tw9yQPUg2ka5g==,
+ integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==,
}
- browserslist@4.28.7:
+ aria-query@5.3.1:
resolution:
{
- integrity: sha512-JxV13hNrFxqjOc8alRbq9dK1MM79NEXYpma2B2J4wAtpWS5zIEIKqWPGCl7N4o7Uc7B7itylh7SuDujATRyyTw==,
+ integrity: sha512-Z/ZeOgVl7bcSYZ/u/rh0fOpvEpq//LZmdbkXyc7syVzjPAhfOa9ebsdTSjEBDU4vs5nC98Kfduj1uFo0qyET3g==,
}
- engines: { node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7 }
- hasBin: true
+ engines: { node: '>= 0.4' }
- caniuse-lite@1.0.30001806:
+ asap@2.0.6:
resolution:
{
- integrity: sha512-72Cuvd95zbSYPKq6Fhg8eDJRlzgWDf7/mtoZv6Qe/DYNCEBdNxoA3+rZAU2ZhGCpZlns3EssFavaZomckT5Uuw==,
+ integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==,
}
- chai@6.2.2:
+ assertion-error@2.0.1:
resolution:
{
- integrity: sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==,
+ integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==,
}
- engines: { node: '>=18' }
+ engines: { node: '>=12' }
- chalk@5.6.2:
+ astral-regex@1.0.0:
resolution:
{
- integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==,
+ integrity: sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==,
}
- engines: { node: ^12.17.0 || ^14.13 || >=16.0.0 }
+ engines: { node: '>=4' }
- chart.js@4.5.1:
+ async-limiter@1.0.1:
resolution:
{
- integrity: sha512-GIjfiT9dbmHRiYi6Nl2yFCq7kkwdkp1W/lp2J99rX0yo9tgJGn3lKQATztIjb5tVtevcBtIdICNWqlq5+E8/Pw==,
+ integrity: sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==,
}
- engines: { pnpm: '>=8' }
- chokidar@4.0.3:
+ axobject-query@4.1.0:
resolution:
{
- integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==,
+ integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==,
}
- engines: { node: '>= 14.16.0' }
+ engines: { node: '>= 0.4' }
- chokidar@5.0.0:
+ babel-plugin-jsx-dom-expressions@0.40.7:
resolution:
{
- integrity: sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==,
+ integrity: sha512-/O6JWUmjv03OI9lL2ry9bUjpD5S3PclM55RRJEyCdcFZ5W2SEA/59d+l2hNsk3gI6kiWRdRPdOtqZmsQzFN1pQ==,
}
- engines: { node: '>= 20.19.0' }
+ peerDependencies:
+ '@babel/core': ^7.20.12
- cli-cursor@5.0.0:
+ babel-plugin-polyfill-corejs2@0.4.17:
resolution:
{
- integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==,
+ integrity: sha512-aTyf30K/rqAsNwN76zYrdtx8obu0E4KoUME29B1xj+B3WxgvWkp943vYQ+z8Mv3lw9xHXMHpvSPOBxzAkIa94w==,
}
- engines: { node: '>=18' }
+ peerDependencies:
+ '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0
- cli-spinners@3.4.0:
+ babel-plugin-polyfill-corejs3@0.13.0:
resolution:
{
- integrity: sha512-bXfOC4QcT1tKXGorxL3wbJm6XJPDqEnij2gQ2m7ESQuE+/z9YFIWnl/5RpTiKWbMq3EVKR4fRLJGn6DVfu0mpw==,
+ integrity: sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A==,
}
- engines: { node: '>=18.20' }
+ peerDependencies:
+ '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0
- cliui@9.0.1:
+ babel-plugin-polyfill-regenerator@0.6.8:
resolution:
{
- integrity: sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==,
+ integrity: sha512-M762rNHfSF1EV3SLtnCJXFoQbbIIz0OyRwnCmV0KPC7qosSfCO0QLTSuJX3ayAebubhE6oYBAYPrBA5ljowaZg==,
}
- engines: { node: '>=20' }
+ peerDependencies:
+ '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0
- clsx@2.1.1:
+ babel-plugin-syntax-hermes-parser@0.36.0:
resolution:
{
- integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==,
+ integrity: sha512-LhD0xdoedDw7ansQgXbB2DADLZIK/LRXuWNBPuVzMc5S2WK5GyT89tCM+cQzxFGO0mGyLK6D5TrVOJJzAoDy8Q==,
}
- engines: { node: '>=6' }
- commander@14.0.3:
+ babel-plugin-transform-flow-enums@0.0.2:
resolution:
{
- integrity: sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw==,
+ integrity: sha512-g4aaCrDDOsWjbm0PUUeVnkcVd6AKJsVc/MbnPhEotEpkeJQP6b8nzewohQi7+QS8UyPehOhGWn0nOwjvWpmMvQ==,
}
- engines: { node: '>=20' }
- commander@2.20.3:
+ babel-preset-solid@1.9.12:
resolution:
{
- integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==,
+ integrity: sha512-LLqnuKVDlKpyBlMPcH6qEvs/wmS9a+NczppxJ3ryS/c0O5IiSFOIBQi9GzyiGDSbcJpx4Gr87jyFTos1MyEuWg==,
}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+ solid-js: ^1.9.12
+ peerDependenciesMeta:
+ solid-js:
+ optional: true
- commander@7.2.0:
+ base64-js@1.5.1:
resolution:
{
- integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==,
+ integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==,
}
- engines: { node: '>= 10' }
- common-path-prefix@3.0.0:
+ baseline-browser-mapping@2.11.5:
resolution:
{
- integrity: sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==,
+ integrity: sha512-xJo6a6YZnwZfnyGmQKWMbVOcii7XRibjOskRh+WJ9UHQoX16xrQrcIgAMQOzfvs8XiLMx6ih/fsLPF73iY2D1A==,
}
+ engines: { node: '>=6.0.0' }
+ hasBin: true
- convert-source-map@1.9.0:
+ bidi-js@1.0.3:
resolution:
{
- integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==,
+ integrity: sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==,
}
- convert-source-map@2.0.0:
+ binary-search-bounds@2.0.5:
resolution:
{
- integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==,
+ integrity: sha512-H0ea4Fd3lS1+sTEB2TgcLoK21lLhwEJzlQv3IN47pJS976Gx4zoWe0ak3q+uYh60ppQxg9F16Ri4tS1sfD4+jA==,
}
- cookie@1.1.1:
+ bl@4.1.0:
resolution:
{
- integrity: sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==,
+ integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==,
}
- engines: { node: '>=18' }
- copy-anything@3.0.5:
+ blake3-wasm@2.1.5:
resolution:
{
- integrity: sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==,
+ integrity: sha512-F1+K8EbfOZE49dtoPtmxUQrpXaBIl3ICvasLh+nJta0xkz+9kF/7uet9fLnwKqhDrmj6g+6K3Tw9yQPUg2ka5g==,
}
- engines: { node: '>=12.13' }
- css-tree@3.2.1:
+ body-parser@1.20.6:
resolution:
{
- integrity: sha512-X7sjQzceUhu1u7Y/ylrRZFU2FS6LRiFVp6rKLPg23y3x3c3DOKAwuXGDp+PAGjh6CSnCjYeAul8pcT8bAl+lSA==,
+ integrity: sha512-p5tAzS57i5MV9fZFDj9LeIiTZEufbSe2eDozP+ElheSUq1m74CRq1jI4mYNDdVs9vQztXFLuk/Gd6BWTdwRJ5g==,
}
- engines: { node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0 }
+ engines: { node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16 }
- csstype@3.2.3:
+ boolbase@1.0.0:
resolution:
{
- integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==,
+ integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==,
}
- d3-array@3.2.4:
+ braces@3.0.3:
resolution:
{
- integrity: sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==,
+ integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==,
}
- engines: { node: '>=12' }
+ engines: { node: '>=8' }
- d3-axis@3.0.0:
+ browserslist@4.28.7:
resolution:
{
- integrity: sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==,
+ integrity: sha512-JxV13hNrFxqjOc8alRbq9dK1MM79NEXYpma2B2J4wAtpWS5zIEIKqWPGCl7N4o7Uc7B7itylh7SuDujATRyyTw==,
}
- engines: { node: '>=12' }
+ engines: { node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7 }
+ hasBin: true
- d3-brush@3.0.0:
+ bser@2.1.1:
resolution:
{
- integrity: sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==,
+ integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==,
}
- engines: { node: '>=12' }
- d3-chord@3.0.1:
+ buffer-from@1.1.2:
resolution:
{
- integrity: sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==,
+ integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==,
}
- engines: { node: '>=12' }
- d3-color@3.1.0:
+ buffer@5.7.1:
resolution:
{
- integrity: sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==,
+ integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==,
}
- engines: { node: '>=12' }
- d3-contour@4.0.2:
+ bytes@3.1.2:
resolution:
{
- integrity: sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==,
+ integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==,
}
- engines: { node: '>=12' }
+ engines: { node: '>= 0.8' }
- d3-delaunay@6.0.4:
+ call-bind-apply-helpers@1.0.2:
resolution:
{
- integrity: sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==,
+ integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==,
}
- engines: { node: '>=12' }
+ engines: { node: '>= 0.4' }
- d3-dispatch@3.0.1:
+ call-bound@1.0.4:
resolution:
{
- integrity: sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==,
+ integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==,
}
- engines: { node: '>=12' }
+ engines: { node: '>= 0.4' }
- d3-drag@3.0.0:
+ callsites@3.1.0:
resolution:
{
- integrity: sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==,
+ integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==,
}
- engines: { node: '>=12' }
+ engines: { node: '>=6' }
- d3-dsv@3.0.1:
+ camelcase@5.3.1:
resolution:
{
- integrity: sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==,
+ integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==,
}
- engines: { node: '>=12' }
- hasBin: true
+ engines: { node: '>=6' }
- d3-ease@3.0.1:
+ camelcase@6.3.0:
resolution:
{
- integrity: sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==,
+ integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==,
}
- engines: { node: '>=12' }
+ engines: { node: '>=10' }
- d3-fetch@3.0.1:
+ caniuse-lite@1.0.30001806:
resolution:
{
- integrity: sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==,
+ integrity: sha512-72Cuvd95zbSYPKq6Fhg8eDJRlzgWDf7/mtoZv6Qe/DYNCEBdNxoA3+rZAU2ZhGCpZlns3EssFavaZomckT5Uuw==,
}
- engines: { node: '>=12' }
- d3-force@3.0.0:
+ chai@6.2.2:
resolution:
{
- integrity: sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==,
+ integrity: sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==,
}
- engines: { node: '>=12' }
+ engines: { node: '>=18' }
- d3-format@3.1.2:
+ chalk@4.1.2:
resolution:
{
- integrity: sha512-AJDdYOdnyRDV5b6ArilzCPPwc1ejkHcoyFarqlPqT7zRYjhavcT3uSrqcMvsgh2CgoPbK3RCwyHaVyxYcP2Arg==,
+ integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==,
}
- engines: { node: '>=12' }
+ engines: { node: '>=10' }
- d3-geo@3.1.1:
+ chalk@5.6.2:
resolution:
{
- integrity: sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==,
+ integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==,
}
- engines: { node: '>=12' }
+ engines: { node: ^12.17.0 || ^14.13 || >=16.0.0 }
- d3-hexbin@0.2.2:
+ chart.js@4.5.1:
resolution:
{
- integrity: sha512-KS3fUT2ReD4RlGCjvCEm1RgMtp2NFZumdMu4DBzQK8AZv3fXRM6Xm8I4fSU07UXvH4xxg03NwWKWdvxfS/yc4w==,
+ integrity: sha512-GIjfiT9dbmHRiYi6Nl2yFCq7kkwdkp1W/lp2J99rX0yo9tgJGn3lKQATztIjb5tVtevcBtIdICNWqlq5+E8/Pw==,
}
+ engines: { pnpm: '>=8' }
- d3-hierarchy@3.1.2:
+ chokidar@4.0.3:
resolution:
{
- integrity: sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==,
+ integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==,
}
- engines: { node: '>=12' }
+ engines: { node: '>= 14.16.0' }
- d3-interpolate@3.0.1:
+ chokidar@5.0.0:
resolution:
{
- integrity: sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==,
+ integrity: sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==,
}
- engines: { node: '>=12' }
+ engines: { node: '>= 20.19.0' }
- d3-path@3.1.0:
+ chrome-launcher@0.15.2:
resolution:
{
- integrity: sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==,
+ integrity: sha512-zdLEwNo3aUVzIhKhTtXfxhdvZhUghrnmkvcAq2NoDd+LeOHKf03H5jwZ8T/STsAlzyALkBVK552iaG1fGf1xVQ==,
}
- engines: { node: '>=12' }
+ engines: { node: '>=12.13.0' }
+ hasBin: true
- d3-polygon@3.0.1:
+ chromium-edge-launcher@0.3.0:
resolution:
{
- integrity: sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==,
+ integrity: sha512-p03azHlGjtyRvFEee3cyvtsRYdniSkwjkzmM/KmVnqT5d7QkkwpJBhis/zCLMYdQMVJ5tt140TBNqqrZPaWeFA==,
}
- engines: { node: '>=12' }
- d3-quadtree@3.0.1:
+ ci-info@2.0.0:
resolution:
{
- integrity: sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==,
+ integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==,
}
- engines: { node: '>=12' }
- d3-random@3.0.1:
+ ci-info@3.9.0:
resolution:
{
- integrity: sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==,
+ integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==,
}
- engines: { node: '>=12' }
+ engines: { node: '>=8' }
- d3-scale-chromatic@3.1.0:
+ cli-cursor@3.1.0:
resolution:
{
- integrity: sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==,
+ integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==,
}
- engines: { node: '>=12' }
+ engines: { node: '>=8' }
- d3-scale@4.0.2:
+ cli-cursor@5.0.0:
resolution:
{
- integrity: sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==,
+ integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==,
}
- engines: { node: '>=12' }
+ engines: { node: '>=18' }
- d3-selection@3.0.0:
+ cli-spinners@2.9.2:
resolution:
{
- integrity: sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==,
+ integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==,
}
- engines: { node: '>=12' }
+ engines: { node: '>=6' }
- d3-shape@3.2.0:
+ cli-spinners@3.4.0:
resolution:
{
- integrity: sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==,
+ integrity: sha512-bXfOC4QcT1tKXGorxL3wbJm6XJPDqEnij2gQ2m7ESQuE+/z9YFIWnl/5RpTiKWbMq3EVKR4fRLJGn6DVfu0mpw==,
}
- engines: { node: '>=12' }
+ engines: { node: '>=18.20' }
- d3-time-format@4.1.0:
+ cliui@6.0.0:
resolution:
{
- integrity: sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==,
+ integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==,
}
- engines: { node: '>=12' }
- d3-time@3.1.0:
+ cliui@8.0.1:
resolution:
{
- integrity: sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==,
+ integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==,
}
engines: { node: '>=12' }
- d3-timer@3.0.1:
+ cliui@9.0.1:
resolution:
{
- integrity: sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==,
+ integrity: sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==,
}
- engines: { node: '>=12' }
+ engines: { node: '>=20' }
- d3-transition@3.0.1:
+ clone@1.0.4:
resolution:
{
- integrity: sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==,
+ integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==,
}
- engines: { node: '>=12' }
- peerDependencies:
- d3-selection: 2 - 3
+ engines: { node: '>=0.8' }
- d3-zoom@3.0.0:
+ clsx@2.1.1:
resolution:
{
- integrity: sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==,
+ integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==,
}
- engines: { node: '>=12' }
+ engines: { node: '>=6' }
- d3@7.9.0:
+ color-convert@1.9.3:
resolution:
{
- integrity: sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==,
+ integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==,
}
- engines: { node: '>=12' }
- data-urls@7.0.0:
+ color-convert@2.0.1:
resolution:
{
- integrity: sha512-23XHcCF+coGYevirZceTVD7NdJOqVn+49IHyxgszm+JIiHLoB2TkmPtsYkNWT1pvRSGkc35L6NHs0yHkN2SumA==,
+ integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==,
}
- engines: { node: ^20.19.0 || ^22.12.0 || >=24.0.0 }
+ engines: { node: '>=7.0.0' }
- debug@2.6.9:
+ color-name@1.1.3:
resolution:
{
- integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==,
+ integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==,
}
- peerDependencies:
- supports-color: '*'
- peerDependenciesMeta:
- supports-color:
- optional: true
- debug@3.2.7:
+ color-name@1.1.4:
resolution:
{
- integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==,
+ integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==,
}
- peerDependencies:
- supports-color: '*'
- peerDependenciesMeta:
- supports-color:
- optional: true
- debug@4.4.3:
+ colorette@1.4.0:
resolution:
{
- integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==,
+ integrity: sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==,
}
- engines: { node: '>=6.0' }
- peerDependencies:
- supports-color: '*'
- peerDependenciesMeta:
- supports-color:
- optional: true
- decimal.js-light@2.5.1:
+ command-exists@1.2.9:
resolution:
{
- integrity: sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg==,
+ integrity: sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==,
}
- decimal.js@10.6.0:
+ commander@12.1.0:
resolution:
{
- integrity: sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==,
+ integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==,
}
+ engines: { node: '>=18' }
- dedent-js@1.0.1:
+ commander@14.0.3:
resolution:
{
- integrity: sha512-OUepMozQULMLUmhxS95Vudo0jb0UchLimi3+pQ2plj61Fcy8axbP9hbiD4Sz6DPqn6XG3kfmziVfQ1rSys5AJQ==,
+ integrity: sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw==,
}
+ engines: { node: '>=20' }
- deepmerge@4.3.1:
+ commander@2.20.3:
resolution:
{
- integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==,
+ integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==,
}
- engines: { node: '>=0.10.0' }
- delaunator@5.1.0:
+ commander@7.2.0:
resolution:
{
- integrity: sha512-AGrQ4QSgssa1NGmWmLPqN5NY2KajF5MqxetNEO+o0n3ZwZZeTmt7bBnvzHWrmkZFxGgr4HdyFgelzgi06otLuQ==,
+ integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==,
}
+ engines: { node: '>= 10' }
- dependency-graph@1.0.0:
+ commander@9.5.0:
resolution:
{
- integrity: sha512-cW3gggJ28HZ/LExwxP2B++aiKxhJXMSIt9K48FOXQkm+vuG5gyatXnLsONRJdzO/7VfjDIiaOOa/bs4l464Lwg==,
+ integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==,
}
- engines: { node: '>=4' }
+ engines: { node: ^12.20.0 || >=14 }
- detect-libc@2.1.2:
+ common-path-prefix@3.0.0:
resolution:
{
- integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==,
+ integrity: sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==,
}
- engines: { node: '>=8' }
- devalue@5.8.2:
+ compressible@2.0.18:
resolution:
{
- integrity: sha512-DObPPAfdtFbXjxLqK8s2Xk9ZuWz5+ZoFEhC7J76es4GU/rEiXwHTmbImoCdyoCOcBH1UF3+Cz6Z2sYD4hyl5TA==,
+ integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==,
}
+ engines: { node: '>= 0.6' }
- echarts@6.1.0:
+ compression@1.8.1:
resolution:
{
- integrity: sha512-q0yaFPggC9FUdsWH4blavRWFmxdrIodbkoKNAjJudAI6CA9gNPxHtV2RcZNEepZVlk4yvBYkOkbk6HIVpIyHZA==,
+ integrity: sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==,
}
+ engines: { node: '>= 0.8.0' }
- electron-to-chromium@1.5.397:
+ connect@3.7.0:
resolution:
{
- integrity: sha512-khGTy9U9x02KEtsKM8vx5A62BsRmcOsIgDpWr1ImE32Ax8GxHGPHZf+Eu9H8zOOyHJnB0jTbseyTHbq2XCT8yw==,
+ integrity: sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==,
}
+ engines: { node: '>= 0.10.0' }
- emoji-regex@10.6.0:
+ content-type@1.0.5:
resolution:
{
- integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==,
+ integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==,
}
+ engines: { node: '>= 0.6' }
- entities@6.0.1:
+ convert-source-map@1.9.0:
resolution:
{
- integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==,
+ integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==,
}
- engines: { node: '>=0.12' }
- entities@7.0.1:
+ convert-source-map@2.0.0:
resolution:
{
- integrity: sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==,
+ integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==,
}
- engines: { node: '>=0.12' }
- entities@8.0.0:
+ cookie@1.1.1:
resolution:
{
- integrity: sha512-zwfzJecQ/Uej6tusMqwAqU/6KL2XaB2VZ2Jg54Je6ahNBGNH6Ek6g3jjNCF0fG9EWQKGZNddNjU5F1ZQn/sBnA==,
+ integrity: sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==,
}
- engines: { node: '>=20.19.0' }
+ engines: { node: '>=18' }
- errno@0.1.8:
+ copy-anything@3.0.5:
resolution:
{
- integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==,
+ integrity: sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==,
}
- hasBin: true
+ engines: { node: '>=12.13' }
- error-stack-parser-es@1.0.5:
+ core-js-compat@3.49.0:
resolution:
{
- integrity: sha512-5qucVt2XcuGMcEGgWI7i+yZpmpByQ8J1lHhcL7PwqCwu9FPP3VUXzT4ltHe5i2z9dePwEHcDVOAfSnHsOlCXRA==,
+ integrity: sha512-VQXt1jr9cBz03b331DFDCCP90b3fanciLkgiOoy8SBHy06gNf+vQ1A3WFLqG7I8TipYIKeYK9wxd0tUrvHcOZA==,
}
- es-module-lexer@2.3.1:
+ cosmiconfig@9.0.2:
resolution:
{
- integrity: sha512-shc1dbU90Yl/xq1QrC7QRtfcwURZuVRfPhZbDoldJ1cn1gzDvBaBWlv0eFolj5+0znnPJz5TXLxsN77X/12KTA==,
+ integrity: sha512-gtTZxTDau1wL7Y7zifc2dd8jHSK/k6BTx/2Xp/BpdlAdnlYWFVt7qhJqgwi7637yRwRQ3qL4ZidbB4I8tA5VOg==,
}
+ engines: { node: '>=14' }
+ peerDependencies:
+ typescript: '>=4.9.5'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
- es-toolkit@1.50.0:
+ cross-spawn@7.0.6:
resolution:
{
- integrity: sha512-OyZKhUVvEep9ITEiwHn8GKnMRQIVqoSIX7WnRbkWgJkllCujilqP2rD0u979tkl8wqyc8ICwlc1UBVv/Sl1G6w==,
+ integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==,
}
+ engines: { node: '>= 8' }
- esbuild@0.27.7:
+ css-select@5.2.2:
resolution:
{
- integrity: sha512-IxpibTjyVnmrIQo5aqNpCgoACA/dTKLTlhMHihVHhdkxKyPO1uBBthumT0rdHmcsk9uMonIWS0m4FljWzILh3w==,
+ integrity: sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==,
}
- engines: { node: '>=18' }
- hasBin: true
- esbuild@0.28.1:
+ css-tree@1.1.3:
resolution:
{
- integrity: sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw==,
+ integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==,
}
- engines: { node: '>=18' }
- hasBin: true
+ engines: { node: '>=8.0.0' }
- escalade@3.2.0:
+ css-tree@3.2.1:
resolution:
{
- integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==,
+ integrity: sha512-X7sjQzceUhu1u7Y/ylrRZFU2FS6LRiFVp6rKLPg23y3x3c3DOKAwuXGDp+PAGjh6CSnCjYeAul8pcT8bAl+lSA==,
}
- engines: { node: '>=6' }
+ engines: { node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0 }
- esm-env@1.2.2:
+ css-what@6.2.2:
resolution:
{
- integrity: sha512-Epxrv+Nr/CaL4ZcFGPJIYLWFom+YeV1DqMLHJoEd9SYRxNbaFruBwfEX/kkHUJf55j2+TUbmDcmuilbP1TmXHA==,
+ integrity: sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==,
}
+ engines: { node: '>= 6' }
- esrap@2.3.0:
+ csstype@3.2.3:
resolution:
{
- integrity: sha512-GQ/7RN8uOtEfNpzZzBMTzW9JBcX42oaSVtPzdF+6cEL8pqIL094iUpr9jzYGn4O4P/1S60dJ6izyT8F4LYARng==,
+ integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==,
}
- peerDependencies:
- '@typescript-eslint/types': ^8.2.0
- peerDependenciesMeta:
- '@typescript-eslint/types':
- optional: true
- estree-walker@2.0.2:
+ d3-array@3.2.4:
resolution:
{
- integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==,
+ integrity: sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==,
}
+ engines: { node: '>=12' }
- estree-walker@3.0.3:
+ d3-axis@3.0.0:
resolution:
{
- integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==,
+ integrity: sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==,
}
+ engines: { node: '>=12' }
- eventemitter3@5.0.4:
+ d3-brush@3.0.0:
resolution:
{
- integrity: sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==,
+ integrity: sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==,
}
+ engines: { node: '>=12' }
- expect-type@1.4.0:
+ d3-chord@3.0.1:
resolution:
{
- integrity: sha512-KfYbmpRm0VbLjEvVa9yGwCi9GI34xvi7A/HXYWQO65CSD2u3MczUJSuwXKFIxlGsgBQizV9q5J9NHj4VG0n+pA==,
+ integrity: sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==,
}
- engines: { node: '>=12.0.0' }
+ engines: { node: '>=12' }
- fast-deep-equal@3.1.3:
+ d3-color@3.1.0:
resolution:
{
- integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==,
+ integrity: sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==,
}
+ engines: { node: '>=12' }
- fast-uri@3.1.4:
+ d3-contour@4.0.2:
resolution:
{
- integrity: sha512-8JnbkQ4juDyvYs4mgFGQqg4yCYtFDtUtmp2QIQq11ZZe5CFQ5wcqm1rqDgAh/QdMySuBnPzMUiJUNZG5N/AiQw==,
+ integrity: sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==,
}
+ engines: { node: '>=12' }
- fdir@6.5.0:
+ d3-delaunay@6.0.4:
resolution:
{
- integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==,
+ integrity: sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==,
}
- engines: { node: '>=12.0.0' }
- peerDependencies:
- picomatch: ^3 || ^4
- peerDependenciesMeta:
- picomatch:
- optional: true
+ engines: { node: '>=12' }
- find-cache-directory@6.0.0:
+ d3-dispatch@3.0.1:
resolution:
{
- integrity: sha512-CvFd5ivA6HcSHbD+59P7CyzINHXzwhuQK8RY7CxJZtgDSAtRlHiCaQpZQ2lMR/WRyUIEmzUvL6G2AGurMfegZA==,
+ integrity: sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==,
}
- engines: { node: '>=20' }
+ engines: { node: '>=12' }
- find-up-simple@1.0.1:
+ d3-drag@3.0.0:
resolution:
{
- integrity: sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ==,
+ integrity: sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==,
}
- engines: { node: '>=18' }
+ engines: { node: '>=12' }
- fsevents@2.3.2:
+ d3-dsv@3.0.1:
resolution:
{
- integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==,
+ integrity: sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==,
}
- engines: { node: ^8.16.0 || ^10.6.0 || >=11.0.0 }
- os: [darwin]
+ engines: { node: '>=12' }
+ hasBin: true
- fsevents@2.3.3:
+ d3-ease@3.0.1:
resolution:
{
- integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==,
+ integrity: sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==,
}
- engines: { node: ^8.16.0 || ^10.6.0 || >=11.0.0 }
- os: [darwin]
+ engines: { node: '>=12' }
- gensync@1.0.0-beta.2:
+ d3-fetch@3.0.1:
resolution:
{
- integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==,
+ integrity: sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==,
}
- engines: { node: '>=6.9.0' }
+ engines: { node: '>=12' }
- get-caller-file@2.0.5:
+ d3-force@3.0.0:
resolution:
{
- integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==,
+ integrity: sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==,
}
- engines: { node: 6.* || 8.* || >= 10.* }
+ engines: { node: '>=12' }
- get-east-asian-width@1.6.0:
+ d3-format@3.1.2:
resolution:
{
- integrity: sha512-QRbvDIbx6YklUe6RxeTeleMR0yv3cYH6PsPZHcnVn7xv7zO1BHN8r0XETu8n6Ye3Q+ahtSarc3WgtNWmehIBfA==,
+ integrity: sha512-AJDdYOdnyRDV5b6ArilzCPPwc1ejkHcoyFarqlPqT7zRYjhavcT3uSrqcMvsgh2CgoPbK3RCwyHaVyxYcP2Arg==,
}
- engines: { node: '>=18' }
+ engines: { node: '>=12' }
- graceful-fs@4.2.11:
+ d3-geo@3.1.1:
resolution:
{
- integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==,
+ integrity: sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==,
}
+ engines: { node: '>=12' }
- html-encoding-sniffer@6.0.0:
+ d3-hexbin@0.2.2:
resolution:
{
- integrity: sha512-CV9TW3Y3f8/wT0BRFc1/KAVQ3TUHiXmaAb6VW9vtiMFf7SLoMd1PdAc4W3KFOFETBJUb90KatHqlsZMWV+R9Gg==,
+ integrity: sha512-KS3fUT2ReD4RlGCjvCEm1RgMtp2NFZumdMu4DBzQK8AZv3fXRM6Xm8I4fSU07UXvH4xxg03NwWKWdvxfS/yc4w==,
}
- engines: { node: ^20.19.0 || ^22.12.0 || >=24.0.0 }
- html-entities@2.3.3:
+ d3-hierarchy@3.1.2:
resolution:
{
- integrity: sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==,
+ integrity: sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==,
}
+ engines: { node: '>=12' }
- iconv-lite@0.4.24:
+ d3-interpolate@3.0.1:
resolution:
{
- integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==,
+ integrity: sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==,
}
- engines: { node: '>=0.10.0' }
+ engines: { node: '>=12' }
- iconv-lite@0.6.3:
+ d3-path@3.1.0:
resolution:
{
- integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==,
+ integrity: sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==,
}
- engines: { node: '>=0.10.0' }
+ engines: { node: '>=12' }
- immer@11.1.15:
+ d3-polygon@3.0.1:
resolution:
{
- integrity: sha512-VrNANlmnWQnh5COXIIOQXM9oOJw7naGKlBT74ZOOR6lpVXc3gFEu9FJLDFcpCJ2j+NWr8TIwtWD//T6ZX6TKiQ==,
+ integrity: sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==,
}
+ engines: { node: '>=12' }
- immutable@5.1.9:
+ d3-quadtree@3.0.1:
resolution:
{
- integrity: sha512-m8nVez3rwrgmWxtLMt1ZYXB2Lv7OKYn/disyxAlSDYAlKSlFoPPfIAmAM/M5xqL4m4C/wAPw7S2/CNaUii1Hxg==,
+ integrity: sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==,
}
+ engines: { node: '>=12' }
- injection-js@2.6.1:
+ d3-random@3.0.1:
resolution:
{
- integrity: sha512-dbR5bdhi7TWDoCye9cByZqeg/gAfamm8Vu3G1KZOTYkOif8WkuM8CD0oeDPtZYMzT5YH76JAFB7bkmyY9OJi2A==,
+ integrity: sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==,
}
+ engines: { node: '>=12' }
- internmap@2.0.3:
+ d3-scale-chromatic@3.1.0:
resolution:
{
- integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==,
+ integrity: sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==,
}
engines: { node: '>=12' }
- interval-tree-1d@1.0.4:
+ d3-scale@4.0.2:
resolution:
{
- integrity: sha512-wY8QJH+6wNI0uh4pDQzMvl+478Qh7Rl4qLmqiluxALlNvl+I+o5x38Pw3/z7mDPTPS1dQalZJXsmbvxx5gclhQ==,
+ integrity: sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==,
}
+ engines: { node: '>=12' }
- is-extglob@2.1.1:
+ d3-selection@3.0.0:
resolution:
{
- integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==,
+ integrity: sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==,
}
- engines: { node: '>=0.10.0' }
+ engines: { node: '>=12' }
- is-glob@4.0.3:
+ d3-shape@3.2.0:
resolution:
{
- integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==,
+ integrity: sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==,
}
- engines: { node: '>=0.10.0' }
+ engines: { node: '>=12' }
- is-interactive@2.0.0:
+ d3-time-format@4.1.0:
resolution:
{
- integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==,
+ integrity: sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==,
}
engines: { node: '>=12' }
- is-potential-custom-element-name@1.0.1:
+ d3-time@3.1.0:
resolution:
{
- integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==,
+ integrity: sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==,
}
+ engines: { node: '>=12' }
- is-reference@3.0.3:
+ d3-timer@3.0.1:
resolution:
{
- integrity: sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==,
+ integrity: sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==,
}
+ engines: { node: '>=12' }
- is-unicode-supported@2.1.0:
+ d3-transition@3.0.1:
resolution:
{
- integrity: sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==,
+ integrity: sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==,
}
- engines: { node: '>=18' }
+ engines: { node: '>=12' }
+ peerDependencies:
+ d3-selection: 2 - 3
- is-what@4.1.16:
+ d3-zoom@3.0.0:
resolution:
{
- integrity: sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==,
+ integrity: sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==,
}
- engines: { node: '>=12.13' }
+ engines: { node: '>=12' }
- isoformat@0.2.1:
+ d3@7.9.0:
resolution:
{
- integrity: sha512-tFLRAygk9NqrRPhJSnNGh7g7oaVWDwR0wKh/GM2LgmPa50Eg4UfyaCO4I8k6EqJHl1/uh2RAD6g06n5ygEnrjQ==,
+ integrity: sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==,
}
+ engines: { node: '>=12' }
- js-tokens@4.0.0:
+ data-urls@7.0.0:
resolution:
{
- integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==,
+ integrity: sha512-23XHcCF+coGYevirZceTVD7NdJOqVn+49IHyxgszm+JIiHLoB2TkmPtsYkNWT1pvRSGkc35L6NHs0yHkN2SumA==,
}
+ engines: { node: ^20.19.0 || ^22.12.0 || >=24.0.0 }
- jsdom@29.1.1:
+ dayjs@1.11.21:
resolution:
{
- integrity: sha512-ECi4Fi2f7BdJtUKTflYRTiaMxIB0O6zfR1fX0GXpUrf6flp8QIYn1UT20YQqdSOfk2dfkCwS8LAFoJDEppNK5Q==,
+ integrity: sha512-98IT+HOahAisibz/yjKbzuOBwYcjJ7BCLPzARyHiyEBmRz4fatF+KPJszEHXsGYjUG234aH/cOjW1wwTbKUZlA==,
+ }
+
+ debug@2.6.9:
+ resolution:
+ {
+ integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==,
}
- engines: { node: ^20.19.0 || ^22.13.0 || >=24.0.0 }
peerDependencies:
- canvas: ^3.0.0
+ supports-color: '*'
peerDependenciesMeta:
- canvas:
+ supports-color:
optional: true
- jsesc@3.1.0:
+ debug@3.2.7:
resolution:
{
- integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==,
+ integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==,
}
- engines: { node: '>=6' }
- hasBin: true
+ peerDependencies:
+ supports-color: '*'
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
- json-schema-traverse@1.0.0:
+ debug@4.4.3:
resolution:
{
- integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==,
+ integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==,
}
+ engines: { node: '>=6.0' }
+ peerDependencies:
+ supports-color: '*'
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
- json5@2.2.3:
+ decamelize@1.2.0:
resolution:
{
- integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==,
+ integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==,
}
- engines: { node: '>=6' }
- hasBin: true
+ engines: { node: '>=0.10.0' }
- jsonc-parser@3.3.1:
+ decimal.js-light@2.5.1:
resolution:
{
- integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==,
+ integrity: sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg==,
}
- kleur@4.1.5:
+ decimal.js@10.6.0:
resolution:
{
- integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==,
+ integrity: sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==,
}
- engines: { node: '>=6' }
- less@4.8.1:
+ dedent-js@1.0.1:
resolution:
{
- integrity: sha512-jQ3lRIo1aUtiWVYXZ7mk4+V4BjCGswF3IxTLJ+4RUta8ZiHh8lhkig2G8dya2eCcyR1dYUvzuV46EkJN8PSwww==,
+ integrity: sha512-OUepMozQULMLUmhxS95Vudo0jb0UchLimi3+pQ2plj61Fcy8axbP9hbiD4Sz6DPqn6XG3kfmziVfQ1rSys5AJQ==,
}
- engines: { node: '>=18' }
- hasBin: true
- lightningcss-android-arm64@1.33.0:
+ deepmerge@4.3.1:
resolution:
{
- integrity: sha512-gEpRTalKdosp4Bb8qWtc2iOgE5SeIHlpS1up9bFq2wAyYhl1UdTObYiHe98zEM9SQvSoqQZ1IQD0JNpg3Ml5pg==,
+ integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==,
}
- engines: { node: '>= 12.0.0' }
- cpu: [arm64]
- os: [android]
+ engines: { node: '>=0.10.0' }
- lightningcss-darwin-arm64@1.33.0:
+ defaults@1.0.4:
resolution:
{
- integrity: sha512-Sciaz8eenNTKn9b3t7+xr0ipTp9YxKQY4npwQ3mrRuL0BAVHBLyZxofhaKBAVtzmtRZ/zTyo0/to4B1uWG/Djg==,
+ integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==,
}
- engines: { node: '>= 12.0.0' }
- cpu: [arm64]
- os: [darwin]
- lightningcss-darwin-x64@1.33.0:
+ delaunator@5.1.0:
resolution:
{
- integrity: sha512-Z5UPAxzrjlWNNyGy6i65cJzzvgJ5D3T6wMvs+gWpY9d7qRhANrxqAp6LhxIgZhWEw18RfJTGcRxjuLIBr+m8XQ==,
+ integrity: sha512-AGrQ4QSgssa1NGmWmLPqN5NY2KajF5MqxetNEO+o0n3ZwZZeTmt7bBnvzHWrmkZFxGgr4HdyFgelzgi06otLuQ==,
}
- engines: { node: '>= 12.0.0' }
- cpu: [x64]
- os: [darwin]
- lightningcss-freebsd-x64@1.33.0:
+ depd@2.0.0:
resolution:
{
- integrity: sha512-QQM/Ti/hQajJwCY+RiWuCZ9sdtI/XQk7nDK5vC8kkdwixezOlDgvDx7+RT+QjK6FcFT4MpsuoBnHIo/O3StRRg==,
+ integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==,
}
- engines: { node: '>= 12.0.0' }
- cpu: [x64]
- os: [freebsd]
+ engines: { node: '>= 0.8' }
- lightningcss-linux-arm-gnueabihf@1.33.0:
+ dependency-graph@1.0.0:
resolution:
{
- integrity: sha512-N7FVBe6iS24MlM6R/4RBTxGhQheZGs7tiQ9U32UtF75NzP5Q7xWPRqLBCKxlRQRk3rY1jCIPLzx7WzOhuUIRLQ==,
+ integrity: sha512-cW3gggJ28HZ/LExwxP2B++aiKxhJXMSIt9K48FOXQkm+vuG5gyatXnLsONRJdzO/7VfjDIiaOOa/bs4l464Lwg==,
}
- engines: { node: '>= 12.0.0' }
- cpu: [arm]
- os: [linux]
+ engines: { node: '>=4' }
- lightningcss-linux-arm64-gnu@1.33.0:
+ destroy@1.2.0:
resolution:
{
- integrity: sha512-j2v/itmy4HlNxlc6voKXYgBqNi0Ng2LShg4z7GufpEgs05P+2suBVyi9I6YHq5uoVFx9ETin3eCEhLVyXGQnKg==,
+ integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==,
}
- engines: { node: '>= 12.0.0' }
- cpu: [arm64]
- os: [linux]
- libc: [glibc]
+ engines: { node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16 }
- lightningcss-linux-arm64-musl@1.33.0:
+ detect-libc@2.1.2:
resolution:
{
- integrity: sha512-yiO5ROMuYQgXbC60yjZU5CYSFZGKXL0HFATXt9mHJn1+zW55oCtMI9NfcVhYLMFDL7gV7oBPon/EmMMGg2OvtQ==,
+ integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==,
}
- engines: { node: '>= 12.0.0' }
- cpu: [arm64]
- os: [linux]
- libc: [musl]
+ engines: { node: '>=8' }
- lightningcss-linux-x64-gnu@1.33.0:
+ devalue@5.8.2:
resolution:
{
- integrity: sha512-ar+Ju7LmcN0Jo4FpL4hpFybwNG9/3A/Br5KW2n2jyODg3MEZXaDYADdemoNS+BDNfMgKvylJLj4S5tyRActuAg==,
+ integrity: sha512-DObPPAfdtFbXjxLqK8s2Xk9ZuWz5+ZoFEhC7J76es4GU/rEiXwHTmbImoCdyoCOcBH1UF3+Cz6Z2sYD4hyl5TA==,
}
- engines: { node: '>= 12.0.0' }
- cpu: [x64]
- os: [linux]
- libc: [glibc]
- lightningcss-linux-x64-musl@1.33.0:
+ dom-serializer@2.0.0:
resolution:
{
- integrity: sha512-RYiYbkokw0trfKqqzfF55lginwEPrD3OJDfTuJzFs1MK6iFnDenaz1fqLLtX4ITG3OktJQXOeTaw1awrBAlZPw==,
+ integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==,
}
- engines: { node: '>= 12.0.0' }
- cpu: [x64]
- os: [linux]
- libc: [musl]
- lightningcss-win32-arm64-msvc@1.33.0:
+ domelementtype@2.3.0:
resolution:
{
- integrity: sha512-1K+MPfLSFVpphzpdbfkhlWk6wBrTObBzS2T6db10PNOZgR9GoVsAWzwNyuhUYYbTp23j+4RrncfujZ4uAzXvwA==,
+ integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==,
}
- engines: { node: '>= 12.0.0' }
- cpu: [arm64]
- os: [win32]
- lightningcss-win32-x64-msvc@1.33.0:
+ domhandler@5.0.3:
resolution:
{
- integrity: sha512-OlEICDx/Xl0FqSp4bry8zFnCvGpig3Gl4gCquvYwHuqJKEC1+n9NgDniFvqHGmMv1ZkqDJrDqKKSykTDX+ehuA==,
+ integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==,
}
- engines: { node: '>= 12.0.0' }
- cpu: [x64]
- os: [win32]
+ engines: { node: '>= 4' }
- lightningcss@1.33.0:
+ domutils@3.2.2:
resolution:
{
- integrity: sha512-WkUDrojuJs0xkgGf2udWxa3yGBRxPtxUkB79i6aCZLRgc7PM8fZe9TosfPDcvEpQZbuFASnHYmRLBLUbmLOIIA==,
+ integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==,
}
- engines: { node: '>= 12.0.0' }
- lit-element@4.2.2:
+ dunder-proto@1.0.1:
resolution:
{
- integrity: sha512-aFKhNToWxoyhkNDmWZwEva2SlQia+jfG0fjIWV//YeTaWrVnOxD89dPKfigCUspXFmjzOEUQpOkejH5Ly6sG0w==,
+ integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==,
}
+ engines: { node: '>= 0.4' }
- lit-html@3.3.3:
+ echarts@6.1.0:
resolution:
{
- integrity: sha512-el8M6jK2o3RXBnrSHX3ZKrsN8zEV63pSExTO1wYJz7QndGYZ8353e2a5PPX+qHe2aGayfnchQmkAojaWAREOIA==,
+ integrity: sha512-q0yaFPggC9FUdsWH4blavRWFmxdrIodbkoKNAjJudAI6CA9gNPxHtV2RcZNEepZVlk4yvBYkOkbk6HIVpIyHZA==,
}
- lit@3.3.3:
+ ee-first@1.1.1:
resolution:
{
- integrity: sha512-fycuvZg/hkpozL00lm1pEJH5nN/lr9ZXd6mJI2HSN4+Bzc+LDNdEApJ6HFbPkdFNHLvOplIIuJvxkS4XUxqirw==,
+ integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==,
}
- locate-character@3.0.0:
+ electron-to-chromium@1.5.397:
resolution:
{
- integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==,
+ integrity: sha512-khGTy9U9x02KEtsKM8vx5A62BsRmcOsIgDpWr1ImE32Ax8GxHGPHZf+Eu9H8zOOyHJnB0jTbseyTHbq2XCT8yw==,
}
- lodash.merge@4.6.2:
+ emoji-regex@10.6.0:
resolution:
{
- integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==,
+ integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==,
}
- log-symbols@7.0.1:
+ emoji-regex@8.0.0:
resolution:
{
- integrity: sha512-ja1E3yCr9i/0hmBVaM0bfwDjnGy8I/s6PP4DFp+yP+a+mrHO4Rm7DtmnqROTUkHIkqffC84YY7AeqX6oFk0WFg==,
+ integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==,
}
- engines: { node: '>=18' }
- lru-cache@11.5.2:
+ encodeurl@1.0.2:
resolution:
{
- integrity: sha512-4pfM1Ff0x50o0tQwb5ucw/RzNyD0/YJME6IVcStalZuMWxdt3sR3huStTtxz4PUmvZfRguvDejasvQ2kifR11g==,
+ integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==,
}
- engines: { node: 20 || >=22 }
+ engines: { node: '>= 0.8' }
- lru-cache@5.1.1:
+ encodeurl@2.0.0:
resolution:
{
- integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==,
+ integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==,
}
+ engines: { node: '>= 0.8' }
- magic-string@0.30.21:
+ entities@4.5.0:
resolution:
{
- integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==,
+ integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==,
}
+ engines: { node: '>=0.12' }
- make-dir@5.1.0:
+ entities@6.0.1:
resolution:
{
- integrity: sha512-IfpFq6UM39dUNiphpA6uDezNx/AvWyhwfICWPR3t1VspkgkMZrL+Rk1RbN1bx+aeNYwOrqGJgEgV3yotk+ZUVw==,
+ integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==,
}
- engines: { node: '>=18' }
+ engines: { node: '>=0.12' }
- mdn-data@2.27.1:
+ entities@7.0.1:
resolution:
{
- integrity: sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ==,
+ integrity: sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==,
}
+ engines: { node: '>=0.12' }
- merge-anything@5.1.7:
+ entities@8.0.0:
resolution:
{
- integrity: sha512-eRtbOb1N5iyH0tkQDAoQ4Ipsp/5qSR79Dzrz8hEPxRX10RWWR/iQXdoKmBSRCThY1Fh5EhISDtpSc93fpxUniQ==,
+ integrity: sha512-zwfzJecQ/Uej6tusMqwAqU/6KL2XaB2VZ2Jg54Je6ahNBGNH6Ek6g3jjNCF0fG9EWQKGZNddNjU5F1ZQn/sBnA==,
}
- engines: { node: '>=12.13' }
+ engines: { node: '>=20.19.0' }
- mime@1.6.0:
+ env-paths@2.2.1:
resolution:
{
- integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==,
+ integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==,
}
- engines: { node: '>=4' }
- hasBin: true
+ engines: { node: '>=6' }
- mimic-function@5.0.1:
+ envinfo@7.21.0:
resolution:
{
- integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==,
+ integrity: sha512-Lw7I8Zp5YKHFCXL7+Dz95g4CcbMEpgvqZNNq3AmlT5XAV6CgAAk6gyAMqn2zjw08K9BHfcNuKrMiCPLByGafow==,
}
- engines: { node: '>=18' }
+ engines: { node: '>=4' }
+ hasBin: true
- miniflare@4.20260617.1:
+ errno@0.1.8:
resolution:
{
- integrity: sha512-Go3/gzStm99QHptsSgU+q1S+xDfLoRgwjJNY80kaTVi0ENhTyqKq+sc4xZiWBSbM7uUcJwmzm8+QFKtcYLJ9nw==,
+ integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==,
}
- engines: { node: '>=22.0.0' }
hasBin: true
- mri@1.2.0:
+ error-ex@1.3.4:
resolution:
{
- integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==,
+ integrity: sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==,
}
- engines: { node: '>=4' }
- ms@2.0.0:
+ error-stack-parser-es@1.0.5:
resolution:
{
- integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==,
+ integrity: sha512-5qucVt2XcuGMcEGgWI7i+yZpmpByQ8J1lHhcL7PwqCwu9FPP3VUXzT4ltHe5i2z9dePwEHcDVOAfSnHsOlCXRA==,
}
- ms@2.1.3:
+ error-stack-parser@2.1.4:
resolution:
{
- integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==,
+ integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==,
}
- nanoid@3.3.16:
+ errorhandler@1.5.2:
resolution:
{
- integrity: sha512-bzlKTyNJ7+LdGIIwy8ijFpIqEQIvafahV7eYykJ8Cvh42EdJeODoJ6gUJXpQJvej1BddH8OqTXZNE/KfbWAu8Q==,
+ integrity: sha512-kNAL7hESndBCrWwS72QyV3IVOTrVmj9D062FV5BQswNL5zEdeRmz/WJFyh6Aj/plvvSOrzddkxW57HgkZcR9Fw==,
}
- engines: { node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1 }
- hasBin: true
+ engines: { node: '>= 0.8' }
- needle@2.9.1:
+ es-define-property@1.0.1:
resolution:
{
- integrity: sha512-6R9fqJ5Zcmf+uYaFgdIHmLwNldn5HbK8L5ybn7Uz+ylX/rnOsSp1AHcvQSrCaFN+qNM1wpymHqD7mVasEOlHGQ==,
+ integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==,
}
- engines: { node: '>= 4.4.x' }
- hasBin: true
+ engines: { node: '>= 0.4' }
- needle@3.5.0:
+ es-errors@1.3.0:
resolution:
{
- integrity: sha512-jaQyPKKk2YokHrEg+vFDYxXIHTCBgiZwSHOoVx/8V3GIBS8/VN6NdVRmg8q1ERtPkMvmOvebsgga4sAj5hls/w==,
+ integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==,
}
- engines: { node: '>= 4.4.x' }
- hasBin: true
+ engines: { node: '>= 0.4' }
- ng-packagr@22.0.2:
+ es-module-lexer@2.3.1:
resolution:
{
- integrity: sha512-8qQ+RWm0W3gK8Sch1kmo3EzIUiCTXIOP2gS7b+vtqCMBf4KBjBP0wFBikW5qRau9lGOzRTML0GPFGoARPR4+fw==,
+ integrity: sha512-shc1dbU90Yl/xq1QrC7QRtfcwURZuVRfPhZbDoldJ1cn1gzDvBaBWlv0eFolj5+0znnPJz5TXLxsN77X/12KTA==,
}
- 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
- node-addon-api@7.1.1:
+ es-object-atoms@1.1.2:
resolution:
{
- integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==,
+ integrity: sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==,
}
+ engines: { node: '>= 0.4' }
- node-releases@2.0.51:
+ es-toolkit@1.50.0:
resolution:
{
- integrity: sha512-wRNIrw4DmVLKQlbgOMdkMx27Wrpzes2hh5Jtbi2bjPd+4wJstWIqP5A+lscnqbm0xxmT5Bpg8Lec5ItEBwx6BQ==,
+ integrity: sha512-OyZKhUVvEep9ITEiwHn8GKnMRQIVqoSIX7WnRbkWgJkllCujilqP2rD0u979tkl8wqyc8ICwlc1UBVv/Sl1G6w==,
}
- engines: { node: '>=18' }
- obug@2.1.4:
+ esbuild@0.27.7:
resolution:
{
- integrity: sha512-4a+OsYv9UktOJKE+l1A4OufDgdRF9PifWj+tJnHURo/P+WOxpG4GzUFL9qCalmWauao6ogiG+QvnCovwPoyAWA==,
+ integrity: sha512-IxpibTjyVnmrIQo5aqNpCgoACA/dTKLTlhMHihVHhdkxKyPO1uBBthumT0rdHmcsk9uMonIWS0m4FljWzILh3w==,
}
- engines: { node: '>=12.20.0' }
+ engines: { node: '>=18' }
+ hasBin: true
- octane@0.1.13:
+ esbuild@0.28.1:
resolution:
{
- integrity: sha512-bjmuF0hjLnBPOqOLTWyOtq6U5tklKw/JKF/qbAlZ2gfAZsoL9NiK7tQSWibuIUSerXELvLfmPmpbyt0fItemsg==,
+ integrity: sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw==,
}
- engines: { node: '>=22' }
- peerDependencies:
- react: ^19.0.0
- react-dom: ^19.0.0
- vite: ^8.0.16
- peerDependenciesMeta:
- react:
- optional: true
- react-dom:
- optional: true
- vite:
- optional: true
+ engines: { node: '>=18' }
+ hasBin: true
- onetime@7.0.0:
+ escalade@3.2.0:
resolution:
{
- integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==,
+ integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==,
}
- engines: { node: '>=18' }
+ engines: { node: '>=6' }
- ora@9.4.1:
+ escape-html@1.0.3:
resolution:
{
- integrity: sha512-6VlU9MLXbjVQD04AZCMX28hVtA5bUoadvUqO76MUCVA0ilwJbMiHsITRPfyVm6p/BC0Av/BXMujx39WCe1LEqw==,
+ integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==,
}
- engines: { node: '>=20' }
- parse-node-version@1.0.1:
+ escape-string-regexp@4.0.0:
resolution:
{
- integrity: sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==,
+ integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==,
}
- engines: { node: '>= 0.10' }
+ engines: { node: '>=10' }
- parse5@7.3.0:
+ esm-env@1.2.2:
resolution:
{
- integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==,
+ integrity: sha512-Epxrv+Nr/CaL4ZcFGPJIYLWFom+YeV1DqMLHJoEd9SYRxNbaFruBwfEX/kkHUJf55j2+TUbmDcmuilbP1TmXHA==,
}
- parse5@8.0.1:
+ esrap@2.3.0:
resolution:
{
- integrity: sha512-z1e/HMG90obSGeidlli3hj7cbocou0/wa5HacvI3ASx34PecNjNQeaHNo5WIZpWofN9kgkqV1q5YvXe3F0FoPw==,
+ integrity: sha512-GQ/7RN8uOtEfNpzZzBMTzW9JBcX42oaSVtPzdF+6cEL8pqIL094iUpr9jzYGn4O4P/1S60dJ6izyT8F4LYARng==,
}
+ peerDependencies:
+ '@typescript-eslint/types': ^8.2.0
+ peerDependenciesMeta:
+ '@typescript-eslint/types':
+ optional: true
- path-to-regexp@6.3.0:
+ estree-walker@2.0.2:
resolution:
{
- integrity: sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==,
+ integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==,
}
- pathe@2.0.3:
+ estree-walker@3.0.3:
resolution:
{
- integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==,
+ integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==,
}
- picocolors@1.1.1:
+ etag@1.8.1:
resolution:
{
- integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==,
+ integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==,
}
+ engines: { node: '>= 0.6' }
- picomatch@4.0.5:
+ event-target-shim@5.0.1:
resolution:
{
- integrity: sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==,
+ integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==,
}
- engines: { node: '>=12' }
+ engines: { node: '>=6' }
- piscina@5.3.0:
+ eventemitter3@5.0.4:
resolution:
{
- integrity: sha512-9D3tPBayfoal6l9l4Y8NrMn1jkV718qJoYrla6P51+hh9h0Q+9/1c8KgEnoBQqhguyfgjay4biADI8HJG3pkoA==,
+ integrity: sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==,
}
- engines: { node: '>=20.x' }
- pkg-dir@8.0.0:
+ execa@5.1.1:
resolution:
{
- integrity: sha512-4peoBq4Wks0riS0z8741NVv+/8IiTvqnZAr8QGgtdifrtpdXbNw/FxRS1l6NFqm4EMzuS0EDqNNx4XGaz8cuyQ==,
+ integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==,
}
- engines: { node: '>=18' }
+ engines: { node: '>=10' }
- playwright-core@1.62.0:
+ expect-type@1.4.0:
resolution:
{
- integrity: sha512-nsNRyq0r2zsG8AcRHWknc9QRA5XCueC7gWMrs+Gx2tlZn9hcl8zudfh00lhJPY1DE7NmZ6bDsT9g2yey8mXljA==,
+ integrity: sha512-KfYbmpRm0VbLjEvVa9yGwCi9GI34xvi7A/HXYWQO65CSD2u3MczUJSuwXKFIxlGsgBQizV9q5J9NHj4VG0n+pA==,
}
- engines: { node: '>=20' }
- hasBin: true
+ engines: { node: '>=12.0.0' }
- playwright@1.62.0:
+ exponential-backoff@3.1.3:
resolution:
{
- integrity: sha512-Z14dG305dgaLu6foB1TXQagFiW8JfSUIUaUuPaKQ6NtBPKF1P/qXcqfh6c6K/icPqdy37JmjbiBXf6JNg6Sylw==,
+ integrity: sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA==,
}
- engines: { node: '>=20' }
- hasBin: true
- postcss@8.5.23:
+ fast-deep-equal@3.1.3:
resolution:
{
- integrity: sha512-g50586zr4bZmwFiTlflMu8E0bDTb5I5gertgwAKmsdUlTQIhZtunzUlD1WSzwcVWPoAVpsrA6vlfCD7oXvRwgg==,
+ integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==,
}
- engines: { node: ^10 || ^12 || >=14 }
- preact-render-to-string@6.7.0:
+ fast-glob@3.3.3:
resolution:
{
- integrity: sha512-Z4WR8fmLMRpdYqJ9i7vrlXSsSrxVJydwrkEXHapexfARbWfGb7vGcnvNQnIzN0cXciMVOlz/XLoiMCi9gUsy9Q==,
+ integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==,
}
- peerDependencies:
- preact: '>=10 || >= 11.0.0-0'
+ engines: { node: '>=8.6.0' }
- preact@10.29.7:
+ fast-uri@3.1.4:
resolution:
{
- integrity: sha512-DCHYrK/B10yUD3ZjLfhZ3WIE/9Vf9VFUODcRE2dRomTYDpJk6z6L9wecSfhfE6M9ZTHUdyQkoC46arIDhEV84Q==,
+ integrity: sha512-8JnbkQ4juDyvYs4mgFGQqg4yCYtFDtUtmp2QIQq11ZZe5CFQ5wcqm1rqDgAh/QdMySuBnPzMUiJUNZG5N/AiQw==,
}
- peerDependencies:
- preact-render-to-string: '>=5'
- peerDependenciesMeta:
- preact-render-to-string:
- optional: true
- prettier@3.9.6:
+ fast-xml-parser@4.5.7:
resolution:
{
- integrity: sha512-OpN0zzVdiaiAhxpuuj5efpIS4sY9j7bY6uR5mnj5yPzGkdkjNKSJeUThPb60Jw29QuAZgA4o+/iB49kFiaBX6g==,
+ integrity: sha512-a6Qh1RMCNbSrU1+sAyAAZH3rTe+OaWJbNZIq0S+ifZciUUOQtlVxBJwoTUE2bYhysmG/RYyI5WJFIKdBahJdrQ==,
}
- engines: { node: '>=14' }
hasBin: true
- probe-image-size@7.3.0:
+ fastq@1.20.1:
resolution:
{
- integrity: sha512-7CaDeBwiAbh6ohXsvLbAZhO7wzsZAmaevfxe39qvCwRh8LyaZfDlBGGLU1CCTgrTLtCOdwBBhjOrIHaIIimHfQ==,
+ integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==,
}
- prr@1.0.1:
+ fb-dotslash@0.5.8:
resolution:
{
- integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==,
+ integrity: sha512-XHYLKk9J4BupDxi9bSEhkfss0m+Vr9ChTrjhf9l2iw3jB5C7BnY4GVPoMcqbrTutsKJso6yj2nAB6BI/F2oZaA==,
}
+ engines: { node: '>=20' }
+ hasBin: true
- punycode@2.3.1:
+ fb-watchman@2.0.2:
resolution:
{
- integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==,
+ integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==,
}
- engines: { node: '>=6' }
- react-dom@19.2.3:
+ fdir@6.5.0:
resolution:
{
- integrity: sha512-yELu4WmLPw5Mr/lmeEpox5rw3RETacE++JgHqQzd2dg+YbJuat3jH4ingc+WPZhxaoFzdv9y33G+F7Nl5O0GBg==,
+ integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==,
}
+ engines: { node: '>=12.0.0' }
peerDependencies:
- react: ^19.2.3
+ picomatch: ^3 || ^4
+ peerDependenciesMeta:
+ picomatch:
+ optional: true
- react-is@19.2.8:
+ fill-range@7.1.1:
resolution:
{
- integrity: sha512-s5un28nYxKJw5gvUHyW5PCC28CvBqLu9r3cWgzHT4Vo/5fqqkFcdRYsGcKf50WMPpjjFZS5d76fn3YCo2njKwQ==,
+ integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==,
}
+ engines: { node: '>=8' }
- react-redux@9.3.0:
+ finalhandler@1.1.2:
resolution:
{
- integrity: sha512-KQopgqFo/p/fgmAs5qz6p5RWaNAzq40WAu7fJIXnQpYxFPbJYtsJPWvGeF2rOBaY/kEuV77AVsX8TsQzKm+A/g==,
+ integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==,
}
- peerDependencies:
- '@types/react': ^18.2.25 || ^19
- react: ^18.0 || ^19
- redux: ^5.0.0
- peerDependenciesMeta:
- '@types/react':
- optional: true
- redux:
- optional: true
+ engines: { node: '>= 0.8' }
- react@19.2.3:
+ find-cache-directory@6.0.0:
resolution:
{
- integrity: sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA==,
+ integrity: sha512-CvFd5ivA6HcSHbD+59P7CyzINHXzwhuQK8RY7CxJZtgDSAtRlHiCaQpZQ2lMR/WRyUIEmzUvL6G2AGurMfegZA==,
}
- engines: { node: '>=0.10.0' }
+ engines: { node: '>=20' }
- readdirp@4.1.2:
+ find-up-simple@1.0.1:
resolution:
{
- integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==,
+ integrity: sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ==,
}
- engines: { node: '>= 14.18.0' }
+ engines: { node: '>=18' }
- readdirp@5.0.0:
+ find-up@4.1.0:
resolution:
{
- integrity: sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ==,
+ integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==,
}
- engines: { node: '>= 20.19.0' }
+ engines: { node: '>=8' }
- recharts@3.10.1:
+ find-up@5.0.0:
resolution:
{
- integrity: sha512-QXFrvt6IVcw7eeZCoyXTwkIJAX3Dv1nyVhMicXJ47GsGDDpcN8z6o644DibE9XjpBTThtsomLKnTV6lc+cVFUA==,
+ integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==,
}
- engines: { node: '>=18' }
- peerDependencies:
- react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
- react-dom: ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
- react-is: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
+ engines: { node: '>=10' }
- redux-thunk@3.1.0:
+ flow-enums-runtime@0.0.6:
resolution:
{
- integrity: sha512-NW2r5T6ksUKXCabzhL9z+h206HQw/NJkcLm1GPImRQ8IzfXwRGqjVhKJGauHirT0DAuyy6hjdnMZaRoAcy0Klw==,
+ integrity: sha512-3PYnM29RFXwvAN6Pc/scUfkI7RwhQ/xqyLUyPNlXUp9S40zI8nup9tUSrTLSVnWGBN38FNiGWbwZOB6uR4OGdw==,
}
- peerDependencies:
- redux: ^5.0.0
- redux@5.0.1:
+ fresh@0.5.2:
resolution:
{
- integrity: sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w==,
+ integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==,
}
+ engines: { node: '>= 0.6' }
- reflect-metadata@0.2.2:
+ fs-extra@8.1.0:
resolution:
{
- integrity: sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==,
+ integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==,
}
+ engines: { node: '>=6 <7 || >=8' }
- require-from-string@2.0.2:
+ fsevents@2.3.2:
resolution:
{
- integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==,
+ integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==,
}
- engines: { node: '>=0.10.0' }
+ engines: { node: ^8.16.0 || ^10.6.0 || >=11.0.0 }
+ os: [darwin]
- reselect@5.2.0:
+ fsevents@2.3.3:
resolution:
{
- integrity: sha512-AgZ3UOZm3YndfrJ4OYjgrT7bmCm/1iqkjvEfH/oYjzh6PD2qw4QuT3jjnXIrpdt4MTpMXclMT3lXbmRY+XRakw==,
+ integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==,
}
+ engines: { node: ^8.16.0 || ^10.6.0 || >=11.0.0 }
+ os: [darwin]
- restore-cursor@5.1.0:
+ function-bind@1.1.2:
resolution:
{
- integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==,
+ integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==,
}
- engines: { node: '>=18' }
- robust-predicates@3.0.3:
+ gensync@1.0.0-beta.2:
resolution:
{
- integrity: sha512-NS3levdsRIUOmiJ8FZWCP7LG3QpJyrs/TE0Zpf1yvZu8cAJJ6QMW92H1c7kWpdIHo8RvmLxN/o2JXTKHp74lUA==,
+ integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==,
}
+ engines: { node: '>=6.9.0' }
- rolldown@1.1.5:
+ get-caller-file@2.0.5:
resolution:
{
- integrity: sha512-t9z29cJjXf/vxQ8dyhCSpt6H6aSwHTk8cT5I3iy6SMXuFpk5mB6PL6XfC8PCwrPTx93udwKUm9HRteAlTGBLiA==,
+ integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==,
}
- engines: { node: ^20.19.0 || >=22.12.0 }
- hasBin: true
+ engines: { node: 6.* || 8.* || >= 10.* }
- rollup-plugin-dts@6.4.1:
+ get-east-asian-width@1.6.0:
resolution:
{
- integrity: sha512-l//F3Zf7ID5GoOfLfD8kroBjQKEKpy1qfhtAdnpibFZMffPaylrg1CoDC2vGkPeTeyxUe4bVFCln2EFuL7IGGg==,
+ integrity: sha512-QRbvDIbx6YklUe6RxeTeleMR0yv3cYH6PsPZHcnVn7xv7zO1BHN8r0XETu8n6Ye3Q+ahtSarc3WgtNWmehIBfA==,
}
- engines: { node: '>=20' }
- peerDependencies:
- rollup: ^3.29.4 || ^4
- typescript: ^4.5 || ^5.0 || ^6.0
+ engines: { node: '>=18' }
- rollup@4.62.3:
+ get-intrinsic@1.3.0:
resolution:
{
- integrity: sha512-Gu0c0iH9FzgX1L1t7ByIbbS3Vmdz+6KHm/EsqmmC71gUQ82yvZRkTK6XzrFObSka91WUVdynqp6nsfilzr5k6Q==,
+ integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==,
}
- engines: { node: '>=18.0.0', npm: '>=8.0.0' }
- hasBin: true
+ engines: { node: '>= 0.4' }
- rw@1.3.3:
+ get-proto@1.0.1:
resolution:
{
- integrity: sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==,
+ integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==,
}
+ engines: { node: '>= 0.4' }
- rxjs@7.8.2:
+ get-stream@6.0.1:
resolution:
{
- integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==,
+ integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==,
}
+ engines: { node: '>=10' }
- sade@1.8.1:
+ glob-parent@5.1.2:
resolution:
{
- integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==,
+ integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==,
}
- engines: { node: '>=6' }
+ engines: { node: '>= 6' }
- safer-buffer@2.1.2:
+ gopd@1.2.0:
resolution:
{
- integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==,
+ integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==,
}
+ engines: { node: '>= 0.4' }
- sass@1.102.0:
+ graceful-fs@4.2.11:
resolution:
{
- integrity: sha512-NSOyTnaQF7rTAEOtI2fwb386vL+akyiQLBZu8Na7hXCb+umJy0GAqlcMIaqACZ6Z1VgTBS4K9PG6B3IdjHGJsw==,
+ integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==,
}
- engines: { node: '>=20.19.0' }
- hasBin: true
- sax@1.6.1:
+ has-flag@4.0.0:
resolution:
{
- integrity: sha512-42tBVwLWnaQvW5zc4HbZrTuWccECCZfBi92FDuwtqxasH+JbPB3/FOKb1m222K42R4WxuxzzMsTswfzgtSu64Q==,
+ integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==,
}
- engines: { node: '>=11.0.0' }
+ engines: { node: '>=8' }
- saxes@6.0.0:
+ has-symbols@1.1.0:
resolution:
{
- integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==,
+ integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==,
}
- engines: { node: '>=v12.22.7' }
+ engines: { node: '>= 0.4' }
- scheduler@0.27.0:
+ hasown@2.0.4:
resolution:
{
- integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==,
+ integrity: sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==,
}
+ engines: { node: '>= 0.4' }
- scule@1.3.0:
+ hermes-compiler@250829098.0.14:
resolution:
{
- integrity: sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==,
+ integrity: sha512-5meXwsZxgiqFaJjNzwjzI9IyUkuGGBisu+z9BvQWmGVpjH6nz11hgqkyxe4dl8UAdyIV4lTbz91+Dlnjz0VxqA==,
}
- semver@6.3.1:
+ hermes-estree@0.35.0:
resolution:
{
- integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==,
+ integrity: sha512-xVx5Opwy8Oo1I5yGpVRhCvWL/iV3M+ylksSKVNlxxD90cpDpR/AR1jLYqK8HWihm065a6UI3HeyAmYzwS8NOOg==,
}
- hasBin: true
- semver@7.8.5:
+ hermes-estree@0.36.0:
resolution:
{
- integrity: sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==,
+ integrity: sha512-A1+8zn5oss2CFP7pKsOaxorQG6FNIz1WU1VDqruLPPZl3LVgeE2C5xfFg8Ow6/Ow4mSslLLtYP1J3n38eKyW9w==,
}
- engines: { node: '>=10' }
- hasBin: true
- seroval-plugins@1.5.6:
+ hermes-parser@0.35.0:
resolution:
{
- integrity: sha512-HXuLAX2pu/UByPpaeo/TaMfvMIi+1QqIoPJYCcAtU8QkVNwgR6MPlGuCQTErV1JwraaMbYaWVIBX7mppzGLATQ==,
+ integrity: sha512-9JLjeHxBx8T4CAsydZR49PNZUaix+WpQJwu9p2010lu+7Kwl6D/7wYFFJxoz+aXkaaClp9Zfg6W6/zVlSJORaA==,
}
- engines: { node: '>=10' }
- peerDependencies:
- seroval: ^1.0
- seroval@1.5.6:
+ hermes-parser@0.36.0:
resolution:
{
- integrity: sha512-rVQVWjjSvlINzaQPZH5JFqsqEsIWdTxY3iJZCnTL/5gQbXIRooVZKI60tVCkOVfzcRPejboxO2t0P89dg5mQaA==,
+ integrity: sha512-GdpwMmH5x6IpC1cijvcvYnlPB60Mh6kTSF/NFdYV/j56gYdi+0RIakYs+eqOV+bbO0SW7mgVVGSsTJxyPQfo3w==,
}
- engines: { node: '>=10' }
- sharp@0.34.5:
+ html-encoding-sniffer@6.0.0:
resolution:
{
- integrity: sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==,
+ integrity: sha512-CV9TW3Y3f8/wT0BRFc1/KAVQ3TUHiXmaAb6VW9vtiMFf7SLoMd1PdAc4W3KFOFETBJUb90KatHqlsZMWV+R9Gg==,
}
- engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 }
+ engines: { node: ^20.19.0 || ^22.12.0 || >=24.0.0 }
- siginfo@2.0.0:
+ html-entities@2.3.3:
resolution:
{
- integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==,
+ integrity: sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==,
}
- signal-exit@4.1.0:
+ http-errors@2.0.1:
resolution:
{
- integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==,
+ integrity: sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==,
}
- engines: { node: '>=14' }
+ engines: { node: '>= 0.8' }
- solid-js@1.9.14:
+ https-proxy-agent@7.0.6:
resolution:
{
- integrity: sha512-sAEXC0Kk0S1EDg+8ysEWJDbYhA3RRoEjwuySUGlKIemeo0I5YZfOyumNjNs9Sv3y2nmhD+0rW66ag2HsMuQiGQ==,
+ integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==,
}
+ engines: { node: '>= 14' }
- solid-refresh@0.6.3:
+ human-signals@2.1.0:
resolution:
{
- integrity: sha512-F3aPsX6hVw9ttm5LYlth8Q15x6MlI/J3Dn+o3EQyRTtTxidepSTwAYdozt01/YA+7ObcciagGEyXIopGZzQtbA==,
+ integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==,
}
- peerDependencies:
- solid-js: ^1.3
+ engines: { node: '>=10.17.0' }
- source-map-js@1.2.1:
+ iconv-lite@0.4.24:
resolution:
{
- integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==,
+ integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==,
}
engines: { node: '>=0.10.0' }
- source-map@0.6.1:
+ iconv-lite@0.6.3:
resolution:
{
- integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==,
+ integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==,
}
engines: { node: '>=0.10.0' }
- stackback@0.0.2:
+ ieee754@1.2.1:
resolution:
{
- integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==,
+ integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==,
}
- std-env@4.2.0:
+ image-size@1.2.1:
resolution:
{
- integrity: sha512-oCUKSupKTHX53EyjDtuZQ64pjLJ6yYCtpmEw0goYxtjG9KpbRe8KAsl2tBUGU9DyMcJ0RwJ8GqJAFzMXcXW1Rw==,
+ integrity: sha512-rH+46sQJ2dlwfjfhCyNx5thzrv+dtmBIhPHk0zgRUukHzZ/kRueTJXoYYsclBaKcSMBWuGbOFXtioLpzTb5euw==,
}
+ engines: { node: '>=16.x' }
+ hasBin: true
- stdin-discarder@0.3.2:
+ immer@11.1.15:
resolution:
{
- integrity: sha512-eCPu1qRxPVkl5605OTWF8Wz40b4Mf45NY5LQmVPQ599knfs5QhASUm9GbJ5BDMDOXgrnh0wyEdvzmL//YMlw0A==,
+ integrity: sha512-VrNANlmnWQnh5COXIIOQXM9oOJw7naGKlBT74ZOOR6lpVXc3gFEu9FJLDFcpCJ2j+NWr8TIwtWD//T6ZX6TKiQ==,
}
- engines: { node: '>=18' }
- stream-parser@0.3.1:
+ immutable@5.1.9:
resolution:
{
- integrity: sha512-bJ/HgKq41nlKvlhccD5kaCr/P+Hu0wPNKPJOH7en+YrJu/9EgqUF+88w5Jb6KNcjOFMhfX4B2asfeAtIGuHObQ==,
+ integrity: sha512-m8nVez3rwrgmWxtLMt1ZYXB2Lv7OKYn/disyxAlSDYAlKSlFoPPfIAmAM/M5xqL4m4C/wAPw7S2/CNaUii1Hxg==,
}
- string-width@7.2.0:
+ import-fresh@3.3.1:
resolution:
{
- integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==,
+ integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==,
}
- engines: { node: '>=18' }
+ engines: { node: '>=6' }
- string-width@8.2.2:
+ inherits@2.0.4:
resolution:
{
- integrity: sha512-GaPUh5gfdrYzqeVNZvUfT23vYYxXzKYidUcnMtJg/3rxRV63EFZy3k6xfKlmfeJD0176lnUV/Usr3XcwSvFzpg==,
+ integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==,
}
- engines: { node: '>=20' }
- strip-ansi@7.2.0:
+ injection-js@2.6.1:
resolution:
{
- integrity: sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==,
+ integrity: sha512-dbR5bdhi7TWDoCye9cByZqeg/gAfamm8Vu3G1KZOTYkOif8WkuM8CD0oeDPtZYMzT5YH76JAFB7bkmyY9OJi2A==,
}
- engines: { node: '>=12' }
- supports-color@10.2.2:
+ internmap@2.0.3:
resolution:
{
- integrity: sha512-SS+jx45GF1QjgEXQx4NJZV9ImqmO2NPz5FNsIHrsDjh2YsHnawpan7SNQ1o8NuhrbHZy9AZhIoCUiCeaW/C80g==,
+ integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==,
}
- engines: { node: '>=18' }
+ engines: { node: '>=12' }
- svelte-check@4.7.4:
+ interval-tree-1d@1.0.4:
resolution:
{
- integrity: sha512-IW9ot9YqAoyv8FvyN+eb4ZTe8zgcKZrJLNYU6dzSKkGwEBsSPc4K7lmQ8bKn8W2YMXM6WDfZSSVOaGtekyUfOQ==,
+ integrity: sha512-wY8QJH+6wNI0uh4pDQzMvl+478Qh7Rl4qLmqiluxALlNvl+I+o5x38Pw3/z7mDPTPS1dQalZJXsmbvxx5gclhQ==,
}
- engines: { node: '>= 18.0.0' }
- hasBin: true
- peerDependencies:
- svelte: ^4.0.0 || ^5.0.0-next.0
- typescript: ^5.0.0 || ^6.0.0
- svelte2tsx@0.7.59:
+ invariant@2.2.4:
resolution:
{
- integrity: sha512-Itj7Wz9WIiGFl/uJa58+rf43ajezaljKK/KTOHq5abUjto56xe+o5SOzLwSoeJ5hma9NZEstpZiazFW2q1nZPQ==,
+ integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==,
}
- peerDependencies:
- svelte: ^3.55 || ^4.0.0-next.0 || ^4.0 || ^5.0.0-next.0
- typescript: ^4.9.4 || ^5.0.0 || ^6.0.0
- svelte@5.56.8:
+ is-arrayish@0.2.1:
resolution:
{
- integrity: sha512-PY8LOw7xP6c8IOiVqdo0sbbZVYhXRSfklOQLAUyGBKqjTX0wx/z4l/9J+PmBpmlLnxzEb1NqltxQ5/wZme/Cmg==,
+ integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==,
}
- engines: { node: '>=18' }
- symbol-tree@3.2.4:
+ is-core-module@2.16.2:
resolution:
{
- integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==,
+ integrity: sha512-evOr8xfXKxE6qSR0hSXL2r3sd7ALj8+7jQEUvPYcm5sgZFdJ+AYzT6yNmJenvIYQBgIGwfwz08sL8zoL7yq2BA==,
}
+ engines: { node: '>= 0.4' }
- tiny-invariant@1.3.3:
+ is-docker@2.2.1:
resolution:
{
- integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==,
+ integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==,
}
+ engines: { node: '>=8' }
+ hasBin: true
- tinybench@2.9.0:
+ is-extglob@2.1.1:
resolution:
{
- integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==,
+ integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==,
}
+ engines: { node: '>=0.10.0' }
- tinyexec@1.2.4:
+ is-fullwidth-code-point@2.0.0:
resolution:
{
- integrity: sha512-SHf/r48b7vOrjve9PxJo3MN5v5yuyjHvdUcrQffT3WXMUfnGmHDVbC4k3sHJaJTgZCwpUplIaAo5ANtMyp3YHg==,
+ integrity: sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==,
}
- engines: { node: '>=18' }
+ engines: { node: '>=4' }
- tinyglobby@0.2.17:
+ is-fullwidth-code-point@3.0.0:
resolution:
{
- integrity: sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==,
+ integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==,
}
- engines: { node: '>=12.0.0' }
+ engines: { node: '>=8' }
- tinyrainbow@3.1.0:
+ is-glob@4.0.3:
resolution:
{
- integrity: sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw==,
+ integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==,
}
- engines: { node: '>=14.0.0' }
+ engines: { node: '>=0.10.0' }
- tldts-core@7.4.9:
+ is-interactive@1.0.0:
resolution:
{
- integrity: sha512-DxKfPBI52p2msTEu7MPhdpdDTBhhVQg1a/8PjQckeyAvO13eMYElX545grIp6nnTGIMZlRvFZPvFhvI/WIz2Vg==,
+ integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==,
}
+ engines: { node: '>=8' }
- tldts@7.4.9:
+ is-interactive@2.0.0:
resolution:
{
- integrity: sha512-3kZ8wQQ/k5DrChD4X4FVvr2D7E5uoRgAqkPyLpSCGUvqOvqu+JEdr3mwMUaVWb+vMHZaKhF5fp2PBigKsui7hA==,
+ integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==,
}
- hasBin: true
+ engines: { node: '>=12' }
- topojson-client@3.1.0:
+ is-number@7.0.0:
resolution:
{
- integrity: sha512-605uxS6bcYxGXw9qi62XyrV6Q3xwbndjachmNxu8HWTtVPxZfEJN9fd/SZS1Q54Sn2y0TMyMxFj/cJINqGHrKw==,
+ integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==,
}
- hasBin: true
+ engines: { node: '>=0.12.0' }
- tough-cookie@6.0.2:
+ is-potential-custom-element-name@1.0.1:
resolution:
{
- integrity: sha512-exgYmnmL/sJpR3upZfXG5PoatXQii55xAiXGXzY+sROLZ/Y+SLcp9PgJNI9Vz37HpQ74WvDcLT8eqm+kV3FzrA==,
+ integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==,
}
- engines: { node: '>=16' }
- tr46@6.0.0:
+ is-reference@3.0.3:
resolution:
{
- integrity: sha512-bLVMLPtstlZ4iMQHpFHTR7GAGj2jxi8Dg0s2h2MafAE4uSWF98FC/3MomU51iQAMf8/qDUbKWf5GxuvvVcXEhw==,
+ integrity: sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==,
}
- engines: { node: '>=20' }
- tslib@2.3.0:
+ is-stream@2.0.1:
resolution:
{
- integrity: sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==,
+ integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==,
}
+ engines: { node: '>=8' }
- tslib@2.8.1:
+ is-unicode-supported@0.1.0:
resolution:
{
- integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==,
+ integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==,
}
+ engines: { node: '>=10' }
- typescript@6.0.3:
+ is-unicode-supported@2.1.0:
resolution:
{
- integrity: sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==,
+ integrity: sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==,
}
- engines: { node: '>=14.17' }
- hasBin: true
+ engines: { node: '>=18' }
- undici-types@7.24.6:
+ is-what@4.1.16:
resolution:
{
- integrity: sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg==,
+ integrity: sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==,
}
+ engines: { node: '>=12.13' }
- undici@7.28.0:
+ is-wsl@1.1.0:
resolution:
{
- integrity: sha512-cRZYrTDwWznlnRiPjggAGxZXanty6M8RV1ff8Wm4LWXBp7/IG8v5DnOm74DtUBp9OONpK75YlPnIjQqX0dBDtA==,
+ integrity: sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==,
}
- engines: { node: '>=20.18.1' }
+ engines: { node: '>=4' }
- undici@7.29.0:
+ is-wsl@2.2.0:
resolution:
{
- integrity: sha512-IDxfleLmmbSskfWSUATiN1nfn2rDuvnMOqb5CWR92iIfojA0Ud+ulOAAEQ57LPr9rWmsreUyf5lwyao+7GNNVw==,
+ integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==,
}
- engines: { node: '>=20.18.1' }
+ engines: { node: '>=8' }
- unenv@2.0.0-rc.24:
+ isexe@2.0.0:
resolution:
{
- integrity: sha512-i7qRCmY42zmCwnYlh9H2SvLEypEFGye5iRmEMKjcGi7zk9UquigRjFtTLz0TYqr0ZGLZhaMHl/foy1bZR+Cwlw==,
+ integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==,
}
- update-browserslist-db@1.2.3:
+ isoformat@0.2.1:
resolution:
{
- integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==,
+ integrity: sha512-tFLRAygk9NqrRPhJSnNGh7g7oaVWDwR0wKh/GM2LgmPa50Eg4UfyaCO4I8k6EqJHl1/uh2RAD6g06n5ygEnrjQ==,
}
- hasBin: true
- peerDependencies:
- browserslist: '>= 4.21.0'
- us-atlas@3.0.1:
+ jest-get-type@29.6.3:
resolution:
{
- integrity: sha512-wEIZCq0ImPvGblTd8gZMqNNCPkQshugMUG/8nkSWXb02+XqNFREg9atHOKP9w6prLZTpqcLhSvdBW81MkV3/0Q==,
+ integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==,
}
+ engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 }
- use-sync-external-store@1.6.0:
+ jest-util@29.7.0:
resolution:
{
- integrity: sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==,
+ integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==,
}
- peerDependencies:
- react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
+ engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 }
- victory-vendor@37.3.6:
+ jest-validate@29.7.0:
resolution:
{
- integrity: sha512-SbPDPdDBYp+5MJHhBCAyI7wKM3d5ivekigc2Dk2s7pgbZ9wIgIBYGVw4zGHBml/qTFbexrofXW6Gu4noGxrOwQ==,
+ integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==,
}
+ engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 }
- vite-plugin-solid@2.11.14:
+ jest-worker@29.7.0:
resolution:
{
- integrity: sha512-7ZVBt8rpoyqmlwin2kRIUveaHoF6/kulY7gsnD+qFh4nS29V4OPAnw+ojoAspXIjObiL9o1xh9a/nTuYHm02Rw==,
+ integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==,
}
- peerDependencies:
- '@testing-library/jest-dom': ^5.16.6 || ^5.17.0 || ^6.0.0 || ^7.0.0
- solid-js: ^1.7.2
- vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0
- peerDependenciesMeta:
- '@testing-library/jest-dom':
- optional: true
+ engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 }
- vite@8.1.5:
+ joi@17.13.4:
resolution:
{
- integrity: sha512-7ULLwsCdYx/nRyrpiEwvqb5TFHrMVZyBt+rg/OAXT7rgj/z+DtTDyKFeLAdDkubDVDKD8jOsndmy7m55XcfUsw==,
+ integrity: sha512-1RuuER6kmt8K8I3nIWvPZKi5RQCb568ZPyY4Pwjlua+yo+63ZTmIwxLZH0heBmiKN4uxjvCiarDrjaeH84xicQ==,
}
- engines: { node: ^20.19.0 || >=22.12.0 }
- hasBin: true
- peerDependencies:
- '@types/node': ^20.19.0 || >=22.12.0
- '@vitejs/devtools': ^0.3.0
- esbuild: ^0.27.0 || ^0.28.0
- jiti: '>=1.21.0'
- less: ^4.0.0
- sass: ^1.70.0
- sass-embedded: ^1.70.0
- stylus: '>=0.54.8'
- sugarss: ^5.0.0
- terser: ^5.16.0
- tsx: ^4.8.1
- yaml: ^2.4.2
- peerDependenciesMeta:
- '@types/node':
- optional: true
- '@vitejs/devtools':
- optional: true
- esbuild:
- optional: true
- jiti:
- optional: true
- less:
- optional: true
- sass:
- optional: true
- sass-embedded:
- optional: true
- stylus:
- optional: true
- sugarss:
- optional: true
- terser:
- optional: true
- tsx:
- optional: true
- yaml:
- optional: true
- vitefu@1.1.3:
+ js-tokens@4.0.0:
resolution:
{
- integrity: sha512-ub4okH7Z5KLjb6hDyjqrGXqWtWvoYdU3IGm/NorpgHncKoLTCfRIbvlhBm7r0YstIaQRYlp4yEbFqDcKSzXSSg==,
+ integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==,
}
- peerDependencies:
- vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0
- peerDependenciesMeta:
- vite:
- optional: true
- vitest@4.1.10:
+ js-yaml@4.3.0:
resolution:
{
- integrity: sha512-R9jUTe5S4Qb0HCd4TNqpC7oGcrMssMRGXLW80ubjWsW9VH5GF8y1Y0SFLY9AbqSk6nt0PnOx4H4WNJYZ13GUPw==,
+ integrity: sha512-1td788aAnnZ5qs7V2QIRl1owjtYpbKt749Y3xauqQgwIIGF/xXWz1wMTEBx5O3LK3lXLVuqXPdPxj2BoFHaW9Q==,
}
- engines: { node: ^20.0.0 || ^22.0.0 || >=24.0.0 }
hasBin: true
- peerDependencies:
- '@edge-runtime/vm': '*'
- '@opentelemetry/api': ^1.9.0
+
+ jsc-safe-url@0.2.4:
+ resolution:
+ {
+ integrity: sha512-0wM3YBWtYePOjfyXQH5MWQ8H7sdk5EXSwZvmSLKk2RboVQ2Bu239jycHDz5J/8Blf3K0Qnoy2b6xD+z10MFB+Q==,
+ }
+
+ jsdom@29.1.1:
+ resolution:
+ {
+ integrity: sha512-ECi4Fi2f7BdJtUKTflYRTiaMxIB0O6zfR1fX0GXpUrf6flp8QIYn1UT20YQqdSOfk2dfkCwS8LAFoJDEppNK5Q==,
+ }
+ engines: { node: ^20.19.0 || ^22.13.0 || >=24.0.0 }
+ peerDependencies:
+ canvas: ^3.0.0
+ peerDependenciesMeta:
+ canvas:
+ optional: true
+
+ jsesc@3.1.0:
+ resolution:
+ {
+ integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==,
+ }
+ engines: { node: '>=6' }
+ hasBin: true
+
+ json-parse-even-better-errors@2.3.1:
+ resolution:
+ {
+ integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==,
+ }
+
+ json-schema-traverse@1.0.0:
+ resolution:
+ {
+ integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==,
+ }
+
+ json5@2.2.3:
+ resolution:
+ {
+ integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==,
+ }
+ engines: { node: '>=6' }
+ hasBin: true
+
+ jsonc-parser@3.3.1:
+ resolution:
+ {
+ integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==,
+ }
+
+ jsonfile@4.0.0:
+ resolution:
+ {
+ integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==,
+ }
+
+ kleur@3.0.3:
+ resolution:
+ {
+ integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==,
+ }
+ engines: { node: '>=6' }
+
+ kleur@4.1.5:
+ resolution:
+ {
+ integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==,
+ }
+ engines: { node: '>=6' }
+
+ launch-editor@2.14.1:
+ resolution:
+ {
+ integrity: sha512-QWBrQsMpH7gPr965dsKD/3cKWiNoTjpATQf++Xq63N6sKRGMwlVXz41O1IZTMfZQgBctD/K5Zt06+/I6pP6+HA==,
+ }
+
+ less@4.8.1:
+ resolution:
+ {
+ integrity: sha512-jQ3lRIo1aUtiWVYXZ7mk4+V4BjCGswF3IxTLJ+4RUta8ZiHh8lhkig2G8dya2eCcyR1dYUvzuV46EkJN8PSwww==,
+ }
+ engines: { node: '>=18' }
+ hasBin: true
+
+ leven@3.1.0:
+ resolution:
+ {
+ integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==,
+ }
+ engines: { node: '>=6' }
+
+ lighthouse-logger@1.4.2:
+ resolution:
+ {
+ integrity: sha512-gPWxznF6TKmUHrOQjlVo2UbaL2EJ71mb2CCeRs/2qBpi4L/g4LUVc9+3lKQ6DTUZwJswfM7ainGrLO1+fOqa2g==,
+ }
+
+ lightningcss-android-arm64@1.33.0:
+ resolution:
+ {
+ integrity: sha512-gEpRTalKdosp4Bb8qWtc2iOgE5SeIHlpS1up9bFq2wAyYhl1UdTObYiHe98zEM9SQvSoqQZ1IQD0JNpg3Ml5pg==,
+ }
+ engines: { node: '>= 12.0.0' }
+ cpu: [arm64]
+ os: [android]
+
+ lightningcss-darwin-arm64@1.33.0:
+ resolution:
+ {
+ integrity: sha512-Sciaz8eenNTKn9b3t7+xr0ipTp9YxKQY4npwQ3mrRuL0BAVHBLyZxofhaKBAVtzmtRZ/zTyo0/to4B1uWG/Djg==,
+ }
+ engines: { node: '>= 12.0.0' }
+ cpu: [arm64]
+ os: [darwin]
+
+ lightningcss-darwin-x64@1.33.0:
+ resolution:
+ {
+ integrity: sha512-Z5UPAxzrjlWNNyGy6i65cJzzvgJ5D3T6wMvs+gWpY9d7qRhANrxqAp6LhxIgZhWEw18RfJTGcRxjuLIBr+m8XQ==,
+ }
+ engines: { node: '>= 12.0.0' }
+ cpu: [x64]
+ os: [darwin]
+
+ lightningcss-freebsd-x64@1.33.0:
+ resolution:
+ {
+ integrity: sha512-QQM/Ti/hQajJwCY+RiWuCZ9sdtI/XQk7nDK5vC8kkdwixezOlDgvDx7+RT+QjK6FcFT4MpsuoBnHIo/O3StRRg==,
+ }
+ engines: { node: '>= 12.0.0' }
+ cpu: [x64]
+ os: [freebsd]
+
+ lightningcss-linux-arm-gnueabihf@1.33.0:
+ resolution:
+ {
+ integrity: sha512-N7FVBe6iS24MlM6R/4RBTxGhQheZGs7tiQ9U32UtF75NzP5Q7xWPRqLBCKxlRQRk3rY1jCIPLzx7WzOhuUIRLQ==,
+ }
+ engines: { node: '>= 12.0.0' }
+ cpu: [arm]
+ os: [linux]
+
+ lightningcss-linux-arm64-gnu@1.33.0:
+ resolution:
+ {
+ integrity: sha512-j2v/itmy4HlNxlc6voKXYgBqNi0Ng2LShg4z7GufpEgs05P+2suBVyi9I6YHq5uoVFx9ETin3eCEhLVyXGQnKg==,
+ }
+ engines: { node: '>= 12.0.0' }
+ cpu: [arm64]
+ os: [linux]
+ libc: [glibc]
+
+ lightningcss-linux-arm64-musl@1.33.0:
+ resolution:
+ {
+ integrity: sha512-yiO5ROMuYQgXbC60yjZU5CYSFZGKXL0HFATXt9mHJn1+zW55oCtMI9NfcVhYLMFDL7gV7oBPon/EmMMGg2OvtQ==,
+ }
+ engines: { node: '>= 12.0.0' }
+ cpu: [arm64]
+ os: [linux]
+ libc: [musl]
+
+ lightningcss-linux-x64-gnu@1.33.0:
+ resolution:
+ {
+ integrity: sha512-ar+Ju7LmcN0Jo4FpL4hpFybwNG9/3A/Br5KW2n2jyODg3MEZXaDYADdemoNS+BDNfMgKvylJLj4S5tyRActuAg==,
+ }
+ engines: { node: '>= 12.0.0' }
+ cpu: [x64]
+ os: [linux]
+ libc: [glibc]
+
+ lightningcss-linux-x64-musl@1.33.0:
+ resolution:
+ {
+ integrity: sha512-RYiYbkokw0trfKqqzfF55lginwEPrD3OJDfTuJzFs1MK6iFnDenaz1fqLLtX4ITG3OktJQXOeTaw1awrBAlZPw==,
+ }
+ engines: { node: '>= 12.0.0' }
+ cpu: [x64]
+ os: [linux]
+ libc: [musl]
+
+ lightningcss-win32-arm64-msvc@1.33.0:
+ resolution:
+ {
+ integrity: sha512-1K+MPfLSFVpphzpdbfkhlWk6wBrTObBzS2T6db10PNOZgR9GoVsAWzwNyuhUYYbTp23j+4RrncfujZ4uAzXvwA==,
+ }
+ engines: { node: '>= 12.0.0' }
+ cpu: [arm64]
+ os: [win32]
+
+ lightningcss-win32-x64-msvc@1.33.0:
+ resolution:
+ {
+ integrity: sha512-OlEICDx/Xl0FqSp4bry8zFnCvGpig3Gl4gCquvYwHuqJKEC1+n9NgDniFvqHGmMv1ZkqDJrDqKKSykTDX+ehuA==,
+ }
+ engines: { node: '>= 12.0.0' }
+ cpu: [x64]
+ os: [win32]
+
+ lightningcss@1.33.0:
+ resolution:
+ {
+ integrity: sha512-WkUDrojuJs0xkgGf2udWxa3yGBRxPtxUkB79i6aCZLRgc7PM8fZe9TosfPDcvEpQZbuFASnHYmRLBLUbmLOIIA==,
+ }
+ engines: { node: '>= 12.0.0' }
+
+ lines-and-columns@1.2.4:
+ resolution:
+ {
+ integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==,
+ }
+
+ lit-element@4.2.2:
+ resolution:
+ {
+ integrity: sha512-aFKhNToWxoyhkNDmWZwEva2SlQia+jfG0fjIWV//YeTaWrVnOxD89dPKfigCUspXFmjzOEUQpOkejH5Ly6sG0w==,
+ }
+
+ lit-html@3.3.3:
+ resolution:
+ {
+ integrity: sha512-el8M6jK2o3RXBnrSHX3ZKrsN8zEV63pSExTO1wYJz7QndGYZ8353e2a5PPX+qHe2aGayfnchQmkAojaWAREOIA==,
+ }
+
+ lit@3.3.3:
+ resolution:
+ {
+ integrity: sha512-fycuvZg/hkpozL00lm1pEJH5nN/lr9ZXd6mJI2HSN4+Bzc+LDNdEApJ6HFbPkdFNHLvOplIIuJvxkS4XUxqirw==,
+ }
+
+ locate-character@3.0.0:
+ resolution:
+ {
+ integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==,
+ }
+
+ locate-path@5.0.0:
+ resolution:
+ {
+ integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==,
+ }
+ engines: { node: '>=8' }
+
+ locate-path@6.0.0:
+ resolution:
+ {
+ integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==,
+ }
+ engines: { node: '>=10' }
+
+ lodash.debounce@4.0.8:
+ resolution:
+ {
+ integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==,
+ }
+
+ lodash.merge@4.6.2:
+ resolution:
+ {
+ integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==,
+ }
+
+ lodash.throttle@4.1.1:
+ resolution:
+ {
+ integrity: sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==,
+ }
+
+ log-symbols@4.1.0:
+ resolution:
+ {
+ integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==,
+ }
+ engines: { node: '>=10' }
+
+ log-symbols@7.0.1:
+ resolution:
+ {
+ integrity: sha512-ja1E3yCr9i/0hmBVaM0bfwDjnGy8I/s6PP4DFp+yP+a+mrHO4Rm7DtmnqROTUkHIkqffC84YY7AeqX6oFk0WFg==,
+ }
+ engines: { node: '>=18' }
+
+ logkitty@0.7.1:
+ resolution:
+ {
+ integrity: sha512-/3ER20CTTbahrCrpYfPn7Xavv9diBROZpoXGVZDWMw4b/X4uuUwAC0ki85tgsdMRONURyIJbcOvS94QsUBYPbQ==,
+ }
+ hasBin: true
+
+ loose-envify@1.4.0:
+ resolution:
+ {
+ integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==,
+ }
+ hasBin: true
+
+ lru-cache@11.5.2:
+ resolution:
+ {
+ integrity: sha512-4pfM1Ff0x50o0tQwb5ucw/RzNyD0/YJME6IVcStalZuMWxdt3sR3huStTtxz4PUmvZfRguvDejasvQ2kifR11g==,
+ }
+ engines: { node: 20 || >=22 }
+
+ lru-cache@5.1.1:
+ resolution:
+ {
+ integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==,
+ }
+
+ magic-string@0.30.21:
+ resolution:
+ {
+ integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==,
+ }
+
+ make-dir@5.1.0:
+ resolution:
+ {
+ integrity: sha512-IfpFq6UM39dUNiphpA6uDezNx/AvWyhwfICWPR3t1VspkgkMZrL+Rk1RbN1bx+aeNYwOrqGJgEgV3yotk+ZUVw==,
+ }
+ engines: { node: '>=18' }
+
+ makeerror@1.0.12:
+ resolution:
+ {
+ integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==,
+ }
+
+ marky@1.3.0:
+ resolution:
+ {
+ integrity: sha512-ocnPZQLNpvbedwTy9kNrQEsknEfgvcLMvOtz3sFeWApDq1MXH1TqkCIx58xlpESsfwQOnuBO9beyQuNGzVvuhQ==,
+ }
+
+ math-intrinsics@1.1.0:
+ resolution:
+ {
+ integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==,
+ }
+ engines: { node: '>= 0.4' }
+
+ mdn-data@2.0.14:
+ resolution:
+ {
+ integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==,
+ }
+
+ mdn-data@2.27.1:
+ resolution:
+ {
+ integrity: sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ==,
+ }
+
+ media-typer@0.3.0:
+ resolution:
+ {
+ integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==,
+ }
+ engines: { node: '>= 0.6' }
+
+ memoize-one@5.2.1:
+ resolution:
+ {
+ integrity: sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==,
+ }
+
+ merge-anything@5.1.7:
+ resolution:
+ {
+ integrity: sha512-eRtbOb1N5iyH0tkQDAoQ4Ipsp/5qSR79Dzrz8hEPxRX10RWWR/iQXdoKmBSRCThY1Fh5EhISDtpSc93fpxUniQ==,
+ }
+ engines: { node: '>=12.13' }
+
+ merge-stream@2.0.0:
+ resolution:
+ {
+ integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==,
+ }
+
+ merge2@1.4.1:
+ resolution:
+ {
+ integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==,
+ }
+ engines: { node: '>= 8' }
+
+ metro-babel-transformer@0.84.4:
+ resolution:
+ {
+ integrity: sha512-rvCfz8snl9h20VcvpOHxZuHP1SlAkv4HXbzw7nyyVwu6Eqo5PRerbakQ9XmUCOsRy70spJ37O+G1TK8oMzo48g==,
+ }
+ engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 }
+
+ metro-cache-key@0.84.4:
+ resolution:
+ {
+ integrity: sha512-wVO79aGrkYImpnaVS4+d5RrRBRPX31QtvKB3wKGBuiNSznduZTQHzsrJZRroFJSwnygrzdsGUtDQPuqqFjFdvw==,
+ }
+ engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 }
+
+ metro-cache@0.84.4:
+ resolution:
+ {
+ integrity: sha512-gpcFQdSLUwUCk71saKoE64jLFbx2nwTfVCcPSULMNT8QYq0p1eZZE29Jvd0HtT/UlhC3ZOutLxJME5xqD2JUZg==,
+ }
+ engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 }
+
+ metro-config@0.84.4:
+ resolution:
+ {
+ integrity: sha512-PMotGDjXcXLWo2TMRH+VR99phFNgYTwqh4OoieIKK3yTJa1Jmkl+fZJxDO0jfBvNF+WESHciHvpNuBtXaF3B0Q==,
+ }
+ engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 }
+
+ metro-core@0.84.4:
+ resolution:
+ {
+ integrity: sha512-HONpWC5LGXZn3ffkd4Hu6AIrfE7j4Z0g0wMo/goV24WOB3lhuFZ40KgvaDiSw8iyQHloMYay5N/wPX+z8oN/PQ==,
+ }
+ engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 }
+
+ metro-file-map@0.84.4:
+ resolution:
+ {
+ integrity: sha512-KSVDi/u60hKPx++NLu3MTIvyjzNoJnFAF8PQFxaj1jiSka/wjw+Ua6sNuJ0TDHQv+7AAoFQxeMgaRAe8Yic5wQ==,
+ }
+ engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 }
+
+ metro-minify-terser@0.84.4:
+ resolution:
+ {
+ integrity: sha512-5qpbaVOMC7CPitIpuewzVeGw7E+C3ykbv2mqTjQLl85Z3annSVGlSCTcsZjqXZzjupfK4Ztj3dDc4kc44NZwtQ==,
+ }
+ engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 }
+
+ metro-resolver@0.84.4:
+ resolution:
+ {
+ integrity: sha512-1qLgbxQ5ZGhhutuPot1Yp348ofDsATL2WkrHF65TobqTT9K3P9qJXw38bomk7ncp5B7OYMfWwtyBZo1lCV792A==,
+ }
+ engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 }
+
+ metro-runtime@0.84.4:
+ resolution:
+ {
+ integrity: sha512-Jibypds4g7AhzdRKY+kDoj51s5EXMwgyp5ddtlreDAsWefMdOx+agWqgm0H2XSZ/ueanHHVM89fnf5OJnlxa8Q==,
+ }
+ engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 }
+
+ metro-source-map@0.84.4:
+ resolution:
+ {
+ integrity: sha512-jbWkPxIesVuo1IWkvezmMJld6iu8nD62GsrZiV6jP37AOdbo4OBq1FJ+qkOg8sV05wAHB//jAbziuW0SlJfW4g==,
+ }
+ engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 }
+
+ metro-symbolicate@0.84.4:
+ resolution:
+ {
+ integrity: sha512-OnfpacxUqGPZQ27t8qK9mFa7uqHIlVWeqRqkCbvMvreEBiamEeOn8krKtcwgP5M4cYDPwuSmCTopHMVthqG4zA==,
+ }
+ engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 }
+ hasBin: true
+
+ metro-transform-plugins@0.84.4:
+ resolution:
+ {
+ integrity: sha512-kehr6HbAecqD0/a3xLXobELdPaAmRAl8bel0qagPF4vhZtux93nS8S4eq2kgKt6J2GnQpVjSoW1PXdst04mwow==,
+ }
+ engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 }
+
+ metro-transform-worker@0.84.4:
+ resolution:
+ {
+ integrity: sha512-W1IYMvvXTu4MxYr7d9h7CeG2vpIr3bmLLIavkPY4O1ilzDrvS8z/NEe6y+pC44Ff7raMXQgYSfdqDUwN/i39gg==,
+ }
+ engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 }
+
+ metro@0.84.4:
+ resolution:
+ {
+ integrity: sha512-8ETTubqfD6ornDy2zYDvRcKnVDOXdFJsjetYDBsY4oAsb6NJkiwFR+FaMESyGppFmQUyBQA4H4sFGxzcQSGtFA==,
+ }
+ engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 }
+ hasBin: true
+
+ micromatch@4.0.8:
+ resolution:
+ {
+ integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==,
+ }
+ engines: { node: '>=8.6' }
+
+ mime-db@1.52.0:
+ resolution:
+ {
+ integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==,
+ }
+ engines: { node: '>= 0.6' }
+
+ mime-db@1.54.0:
+ resolution:
+ {
+ integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==,
+ }
+ engines: { node: '>= 0.6' }
+
+ mime-types@2.1.35:
+ resolution:
+ {
+ integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==,
+ }
+ engines: { node: '>= 0.6' }
+
+ mime-types@3.0.2:
+ resolution:
+ {
+ integrity: sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==,
+ }
+ engines: { node: '>=18' }
+
+ mime@1.6.0:
+ resolution:
+ {
+ integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==,
+ }
+ engines: { node: '>=4' }
+ hasBin: true
+
+ mime@2.6.0:
+ resolution:
+ {
+ integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==,
+ }
+ engines: { node: '>=4.0.0' }
+ hasBin: true
+
+ mimic-fn@2.1.0:
+ resolution:
+ {
+ integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==,
+ }
+ engines: { node: '>=6' }
+
+ mimic-function@5.0.1:
+ resolution:
+ {
+ integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==,
+ }
+ engines: { node: '>=18' }
+
+ miniflare@4.20260617.1:
+ resolution:
+ {
+ integrity: sha512-Go3/gzStm99QHptsSgU+q1S+xDfLoRgwjJNY80kaTVi0ENhTyqKq+sc4xZiWBSbM7uUcJwmzm8+QFKtcYLJ9nw==,
+ }
+ engines: { node: '>=22.0.0' }
+ hasBin: true
+
+ mkdirp@1.0.4:
+ resolution:
+ {
+ integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==,
+ }
+ engines: { node: '>=10' }
+ hasBin: true
+
+ mri@1.2.0:
+ resolution:
+ {
+ integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==,
+ }
+ engines: { node: '>=4' }
+
+ ms@2.0.0:
+ resolution:
+ {
+ integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==,
+ }
+
+ ms@2.1.3:
+ resolution:
+ {
+ integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==,
+ }
+
+ nanoid@3.3.16:
+ resolution:
+ {
+ integrity: sha512-bzlKTyNJ7+LdGIIwy8ijFpIqEQIvafahV7eYykJ8Cvh42EdJeODoJ6gUJXpQJvej1BddH8OqTXZNE/KfbWAu8Q==,
+ }
+ engines: { node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1 }
+ hasBin: true
+
+ needle@2.9.1:
+ resolution:
+ {
+ integrity: sha512-6R9fqJ5Zcmf+uYaFgdIHmLwNldn5HbK8L5ybn7Uz+ylX/rnOsSp1AHcvQSrCaFN+qNM1wpymHqD7mVasEOlHGQ==,
+ }
+ engines: { node: '>= 4.4.x' }
+ hasBin: true
+
+ 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' }
+
+ negotiator@0.6.4:
+ resolution:
+ {
+ integrity: sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==,
+ }
+ engines: { node: '>= 0.6' }
+
+ negotiator@1.0.0:
+ resolution:
+ {
+ integrity: sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==,
+ }
+ engines: { node: '>= 0.6' }
+
+ ng-packagr@22.0.2:
+ resolution:
+ {
+ integrity: sha512-8qQ+RWm0W3gK8Sch1kmo3EzIUiCTXIOP2gS7b+vtqCMBf4KBjBP0wFBikW5qRau9lGOzRTML0GPFGoARPR4+fw==,
+ }
+ 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
+
+ nocache@3.0.4:
+ resolution:
+ {
+ integrity: sha512-WDD0bdg9mbq6F4mRxEYcPWwfA1vxd0mrvKOyxI7Xj/atfRHVeutzuWByG//jfm4uPzp0y4Kj051EORCBSQMycw==,
+ }
+ engines: { node: '>=12.0.0' }
+
+ node-addon-api@7.1.1:
+ resolution:
+ {
+ integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==,
+ }
+
+ node-int64@0.4.0:
+ resolution:
+ {
+ integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==,
+ }
+
+ node-releases@2.0.51:
+ resolution:
+ {
+ integrity: sha512-wRNIrw4DmVLKQlbgOMdkMx27Wrpzes2hh5Jtbi2bjPd+4wJstWIqP5A+lscnqbm0xxmT5Bpg8Lec5ItEBwx6BQ==,
+ }
+ engines: { node: '>=18' }
+
+ node-stream-zip@1.16.0:
+ resolution:
+ {
+ integrity: sha512-ObaRrRoR8T68wF6suxHd7R4XQNamij6ZQHrwG7Dx1D2zeHcDNLsIOBcWrIwtDm7AsCXBguaPHgXhcjxDa2szrg==,
+ }
+ engines: { node: '>=0.12.0' }
+
+ npm-run-path@4.0.1:
+ resolution:
+ {
+ integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==,
+ }
+ engines: { node: '>=8' }
+
+ nth-check@2.1.1:
+ resolution:
+ {
+ integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==,
+ }
+
+ nullthrows@1.1.1:
+ resolution:
+ {
+ integrity: sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==,
+ }
+
+ ob1@0.84.4:
+ resolution:
+ {
+ integrity: sha512-eJXMpz4aQHXF/YBB9ddqZDIS+ooO91hObo9FoW/xBkr54/zCwYYCDqT/O54vNo8kOkWs5Ou/y28NgdrV0edQNA==,
+ }
+ engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 }
+
+ object-inspect@1.13.4:
+ resolution:
+ {
+ integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==,
+ }
+ engines: { node: '>= 0.4' }
+
+ obug@2.1.4:
+ resolution:
+ {
+ integrity: sha512-4a+OsYv9UktOJKE+l1A4OufDgdRF9PifWj+tJnHURo/P+WOxpG4GzUFL9qCalmWauao6ogiG+QvnCovwPoyAWA==,
+ }
+ engines: { node: '>=12.20.0' }
+
+ octane@0.1.13:
+ resolution:
+ {
+ integrity: sha512-bjmuF0hjLnBPOqOLTWyOtq6U5tklKw/JKF/qbAlZ2gfAZsoL9NiK7tQSWibuIUSerXELvLfmPmpbyt0fItemsg==,
+ }
+ engines: { node: '>=22' }
+ peerDependencies:
+ react: ^19.0.0
+ react-dom: ^19.0.0
+ vite: ^8.0.16
+ peerDependenciesMeta:
+ react:
+ optional: true
+ react-dom:
+ optional: true
+ vite:
+ optional: true
+
+ on-finished@2.3.0:
+ resolution:
+ {
+ integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==,
+ }
+ engines: { node: '>= 0.8' }
+
+ on-finished@2.4.1:
+ resolution:
+ {
+ integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==,
+ }
+ engines: { node: '>= 0.8' }
+
+ on-headers@1.1.0:
+ resolution:
+ {
+ integrity: sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==,
+ }
+ engines: { node: '>= 0.8' }
+
+ onetime@5.1.2:
+ resolution:
+ {
+ integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==,
+ }
+ engines: { node: '>=6' }
+
+ onetime@7.0.0:
+ resolution:
+ {
+ integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==,
+ }
+ engines: { node: '>=18' }
+
+ open@6.4.0:
+ resolution:
+ {
+ integrity: sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==,
+ }
+ engines: { node: '>=8' }
+
+ open@7.4.2:
+ resolution:
+ {
+ integrity: sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==,
+ }
+ engines: { node: '>=8' }
+
+ ora@5.4.1:
+ resolution:
+ {
+ integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==,
+ }
+ engines: { node: '>=10' }
+
+ ora@9.4.1:
+ resolution:
+ {
+ integrity: sha512-6VlU9MLXbjVQD04AZCMX28hVtA5bUoadvUqO76MUCVA0ilwJbMiHsITRPfyVm6p/BC0Av/BXMujx39WCe1LEqw==,
+ }
+ engines: { node: '>=20' }
+
+ p-limit@2.3.0:
+ resolution:
+ {
+ integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==,
+ }
+ engines: { node: '>=6' }
+
+ p-limit@3.1.0:
+ resolution:
+ {
+ integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==,
+ }
+ engines: { node: '>=10' }
+
+ p-locate@4.1.0:
+ resolution:
+ {
+ integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==,
+ }
+ engines: { node: '>=8' }
+
+ p-locate@5.0.0:
+ resolution:
+ {
+ integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==,
+ }
+ engines: { node: '>=10' }
+
+ p-try@2.2.0:
+ resolution:
+ {
+ integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==,
+ }
+ engines: { node: '>=6' }
+
+ parent-module@1.0.1:
+ resolution:
+ {
+ integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==,
+ }
+ engines: { node: '>=6' }
+
+ parse-json@5.2.0:
+ 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' }
+
+ parse5@7.3.0:
+ resolution:
+ {
+ integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==,
+ }
+
+ parse5@8.0.1:
+ resolution:
+ {
+ integrity: sha512-z1e/HMG90obSGeidlli3hj7cbocou0/wa5HacvI3ASx34PecNjNQeaHNo5WIZpWofN9kgkqV1q5YvXe3F0FoPw==,
+ }
+
+ parseurl@1.3.3:
+ resolution:
+ {
+ integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==,
+ }
+ engines: { node: '>= 0.8' }
+
+ path-exists@4.0.0:
+ resolution:
+ {
+ integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==,
+ }
+ engines: { node: '>=8' }
+
+ path-key@3.1.1:
+ resolution:
+ {
+ integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==,
+ }
+ engines: { node: '>=8' }
+
+ path-parse@1.0.7:
+ resolution:
+ {
+ integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==,
+ }
+
+ path-to-regexp@6.3.0:
+ resolution:
+ {
+ integrity: sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==,
+ }
+
+ pathe@2.0.3:
+ resolution:
+ {
+ integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==,
+ }
+
+ picocolors@1.1.1:
+ resolution:
+ {
+ integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==,
+ }
+
+ picomatch@2.3.2:
+ resolution:
+ {
+ integrity: sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==,
+ }
+ engines: { node: '>=8.6' }
+
+ picomatch@4.0.5:
+ resolution:
+ {
+ integrity: sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==,
+ }
+ engines: { node: '>=12' }
+
+ piscina@5.3.0:
+ resolution:
+ {
+ integrity: sha512-9D3tPBayfoal6l9l4Y8NrMn1jkV718qJoYrla6P51+hh9h0Q+9/1c8KgEnoBQqhguyfgjay4biADI8HJG3pkoA==,
+ }
+ engines: { node: '>=20.x' }
+
+ pkg-dir@8.0.0:
+ resolution:
+ {
+ integrity: sha512-4peoBq4Wks0riS0z8741NVv+/8IiTvqnZAr8QGgtdifrtpdXbNw/FxRS1l6NFqm4EMzuS0EDqNNx4XGaz8cuyQ==,
+ }
+ engines: { node: '>=18' }
+
+ playwright-core@1.62.0:
+ resolution:
+ {
+ integrity: sha512-nsNRyq0r2zsG8AcRHWknc9QRA5XCueC7gWMrs+Gx2tlZn9hcl8zudfh00lhJPY1DE7NmZ6bDsT9g2yey8mXljA==,
+ }
+ engines: { node: '>=20' }
+ hasBin: true
+
+ playwright@1.62.0:
+ resolution:
+ {
+ integrity: sha512-Z14dG305dgaLu6foB1TXQagFiW8JfSUIUaUuPaKQ6NtBPKF1P/qXcqfh6c6K/icPqdy37JmjbiBXf6JNg6Sylw==,
+ }
+ engines: { node: '>=20' }
+ hasBin: true
+
+ postcss@8.5.23:
+ resolution:
+ {
+ integrity: sha512-g50586zr4bZmwFiTlflMu8E0bDTb5I5gertgwAKmsdUlTQIhZtunzUlD1WSzwcVWPoAVpsrA6vlfCD7oXvRwgg==,
+ }
+ engines: { node: ^10 || ^12 || >=14 }
+
+ preact-render-to-string@6.7.0:
+ resolution:
+ {
+ integrity: sha512-Z4WR8fmLMRpdYqJ9i7vrlXSsSrxVJydwrkEXHapexfARbWfGb7vGcnvNQnIzN0cXciMVOlz/XLoiMCi9gUsy9Q==,
+ }
+ peerDependencies:
+ preact: '>=10 || >= 11.0.0-0'
+
+ preact@10.29.7:
+ resolution:
+ {
+ integrity: sha512-DCHYrK/B10yUD3ZjLfhZ3WIE/9Vf9VFUODcRE2dRomTYDpJk6z6L9wecSfhfE6M9ZTHUdyQkoC46arIDhEV84Q==,
+ }
+ peerDependencies:
+ preact-render-to-string: '>=5'
+ peerDependenciesMeta:
+ preact-render-to-string:
+ optional: true
+
+ prettier@3.9.6:
+ resolution:
+ {
+ integrity: sha512-OpN0zzVdiaiAhxpuuj5efpIS4sY9j7bY6uR5mnj5yPzGkdkjNKSJeUThPb60Jw29QuAZgA4o+/iB49kFiaBX6g==,
+ }
+ engines: { node: '>=14' }
+ hasBin: true
+
+ pretty-format@29.7.0:
+ resolution:
+ {
+ integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==,
+ }
+ engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 }
+
+ probe-image-size@7.3.0:
+ resolution:
+ {
+ integrity: sha512-7CaDeBwiAbh6ohXsvLbAZhO7wzsZAmaevfxe39qvCwRh8LyaZfDlBGGLU1CCTgrTLtCOdwBBhjOrIHaIIimHfQ==,
+ }
+
+ promise@8.3.0:
+ resolution:
+ {
+ integrity: sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==,
+ }
+
+ prompts@2.4.2:
+ resolution:
+ {
+ integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==,
+ }
+ engines: { node: '>= 6' }
+
+ prr@1.0.1:
+ resolution:
+ {
+ integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==,
+ }
+
+ punycode@2.3.1:
+ resolution:
+ {
+ integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==,
+ }
+ engines: { node: '>=6' }
+
+ qs@6.15.3:
+ resolution:
+ {
+ integrity: sha512-O9gl3zCl5h5blw1KGUzQKhA5oUXSl8rwUIM5o0S3nCXMliSvy5Dzx7/DJcI+SwgICv+IneSZwhBh1oSyEHA71A==,
+ }
+ engines: { node: '>=0.6' }
+
+ queue-microtask@1.2.3:
+ resolution:
+ {
+ integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==,
+ }
+
+ queue@6.0.2:
+ resolution:
+ {
+ integrity: sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==,
+ }
+
+ range-parser@1.2.1:
+ resolution:
+ {
+ integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==,
+ }
+ engines: { node: '>= 0.6' }
+
+ raw-body@2.5.3:
+ resolution:
+ {
+ integrity: sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==,
+ }
+ engines: { node: '>= 0.8' }
+
+ react-devtools-core@6.1.5:
+ resolution:
+ {
+ integrity: sha512-ePrwPfxAnB+7hgnEr8vpKxL9cmnp7F322t8oqcPshbIQQhDKgFDW4tjhF2wjVbdXF9O/nyuy3sQWd9JGpiLPvA==,
+ }
+
+ react-dom@19.2.3:
+ resolution:
+ {
+ integrity: sha512-yELu4WmLPw5Mr/lmeEpox5rw3RETacE++JgHqQzd2dg+YbJuat3jH4ingc+WPZhxaoFzdv9y33G+F7Nl5O0GBg==,
+ }
+ peerDependencies:
+ react: ^19.2.3
+
+ react-is@18.3.1:
+ resolution:
+ {
+ integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==,
+ }
+
+ react-is@19.2.8:
+ resolution:
+ {
+ integrity: sha512-s5un28nYxKJw5gvUHyW5PCC28CvBqLu9r3cWgzHT4Vo/5fqqkFcdRYsGcKf50WMPpjjFZS5d76fn3YCo2njKwQ==,
+ }
+
+ react-native-svg@15.15.5:
+ resolution:
+ {
+ integrity: sha512-L4go5jA+GWutdJ/JucuN20cjAbMg1HmMtAP+wZ+3JLCf6Jd0bhXQHxciRP/AQm/FlrIEZwkMcHNZP+FXAiic0w==,
+ }
+ peerDependencies:
+ react: '*'
+ react-native: '*'
+
+ react-native@0.86.0:
+ resolution:
+ {
+ integrity: sha512-17ALh/dd6AO4pgOVmOO5Axll5PbErEo3XFyLokyzW6usyi+OShIEPwUW26wLPlhVifgSOIfECCH0WN+0IqtJ1w==,
+ }
+ engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 }
+ hasBin: true
+ peerDependencies:
+ '@react-native/jest-preset': 0.86.0
+ '@types/react': ^19.1.1
+ react: ^19.2.3
+ peerDependenciesMeta:
+ '@react-native/jest-preset':
+ optional: true
+ '@types/react':
+ optional: true
+
+ react-redux@9.3.0:
+ resolution:
+ {
+ integrity: sha512-KQopgqFo/p/fgmAs5qz6p5RWaNAzq40WAu7fJIXnQpYxFPbJYtsJPWvGeF2rOBaY/kEuV77AVsX8TsQzKm+A/g==,
+ }
+ peerDependencies:
+ '@types/react': ^18.2.25 || ^19
+ react: ^18.0 || ^19
+ redux: ^5.0.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ redux:
+ optional: true
+
+ react-refresh@0.14.2:
+ resolution:
+ {
+ integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==,
+ }
+ engines: { node: '>=0.10.0' }
+
+ react@19.2.3:
+ resolution:
+ {
+ integrity: sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA==,
+ }
+ engines: { node: '>=0.10.0' }
+
+ readable-stream@3.6.2:
+ resolution:
+ {
+ integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==,
+ }
+ engines: { node: '>= 6' }
+
+ readdirp@4.1.2:
+ resolution:
+ {
+ integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==,
+ }
+ engines: { node: '>= 14.18.0' }
+
+ readdirp@5.0.0:
+ resolution:
+ {
+ integrity: sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ==,
+ }
+ engines: { node: '>= 20.19.0' }
+
+ recharts@3.10.1:
+ resolution:
+ {
+ integrity: sha512-QXFrvt6IVcw7eeZCoyXTwkIJAX3Dv1nyVhMicXJ47GsGDDpcN8z6o644DibE9XjpBTThtsomLKnTV6lc+cVFUA==,
+ }
+ engines: { node: '>=18' }
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
+ react-dom: ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
+ react-is: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
+
+ redux-thunk@3.1.0:
+ resolution:
+ {
+ integrity: sha512-NW2r5T6ksUKXCabzhL9z+h206HQw/NJkcLm1GPImRQ8IzfXwRGqjVhKJGauHirT0DAuyy6hjdnMZaRoAcy0Klw==,
+ }
+ peerDependencies:
+ redux: ^5.0.0
+
+ redux@5.0.1:
+ resolution:
+ {
+ integrity: sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w==,
+ }
+
+ reflect-metadata@0.2.2:
+ resolution:
+ {
+ integrity: sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==,
+ }
+
+ regenerate-unicode-properties@10.2.2:
+ resolution:
+ {
+ integrity: sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g==,
+ }
+ engines: { node: '>=4' }
+
+ regenerate@1.4.2:
+ resolution:
+ {
+ integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==,
+ }
+
+ regenerator-runtime@0.13.11:
+ resolution:
+ {
+ integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==,
+ }
+
+ regexpu-core@6.4.0:
+ resolution:
+ {
+ integrity: sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA==,
+ }
+ engines: { node: '>=4' }
+
+ regjsgen@0.8.0:
+ resolution:
+ {
+ integrity: sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==,
+ }
+
+ regjsparser@0.13.2:
+ resolution:
+ {
+ integrity: sha512-NgRBy2Nx/bE+9F27nVHnqcN5HjyLmecqsqx2PJHu3/IEtADD4WuxuXIVExD5PoSDFVrl78dOonfcOe5O+5nbzQ==,
+ }
+ hasBin: true
+
+ require-directory@2.1.1:
+ resolution:
+ {
+ integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==,
+ }
+ engines: { node: '>=0.10.0' }
+
+ require-from-string@2.0.2:
+ resolution:
+ {
+ integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==,
+ }
+ engines: { node: '>=0.10.0' }
+
+ require-main-filename@2.0.0:
+ resolution:
+ {
+ integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==,
+ }
+
+ reselect@5.2.0:
+ resolution:
+ {
+ integrity: sha512-AgZ3UOZm3YndfrJ4OYjgrT7bmCm/1iqkjvEfH/oYjzh6PD2qw4QuT3jjnXIrpdt4MTpMXclMT3lXbmRY+XRakw==,
+ }
+
+ resolve-from@4.0.0:
+ resolution:
+ {
+ integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==,
+ }
+ engines: { node: '>=4' }
+
+ resolve@1.22.12:
+ resolution:
+ {
+ integrity: sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==,
+ }
+ engines: { node: '>= 0.4' }
+ hasBin: true
+
+ restore-cursor@3.1.0:
+ resolution:
+ {
+ integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==,
+ }
+ engines: { node: '>=8' }
+
+ restore-cursor@5.1.0:
+ resolution:
+ {
+ integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==,
+ }
+ engines: { node: '>=18' }
+
+ reusify@1.1.0:
+ resolution:
+ {
+ integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==,
+ }
+ engines: { iojs: '>=1.0.0', node: '>=0.10.0' }
+
+ robust-predicates@3.0.3:
+ resolution:
+ {
+ integrity: sha512-NS3levdsRIUOmiJ8FZWCP7LG3QpJyrs/TE0Zpf1yvZu8cAJJ6QMW92H1c7kWpdIHo8RvmLxN/o2JXTKHp74lUA==,
+ }
+
+ rolldown@1.1.5:
+ resolution:
+ {
+ integrity: sha512-t9z29cJjXf/vxQ8dyhCSpt6H6aSwHTk8cT5I3iy6SMXuFpk5mB6PL6XfC8PCwrPTx93udwKUm9HRteAlTGBLiA==,
+ }
+ 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.3:
+ resolution:
+ {
+ integrity: sha512-Gu0c0iH9FzgX1L1t7ByIbbS3Vmdz+6KHm/EsqmmC71gUQ82yvZRkTK6XzrFObSka91WUVdynqp6nsfilzr5k6Q==,
+ }
+ engines: { node: '>=18.0.0', npm: '>=8.0.0' }
+ hasBin: true
+
+ run-parallel@1.2.0:
+ resolution:
+ {
+ integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==,
+ }
+
+ rw@1.3.3:
+ resolution:
+ {
+ integrity: sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==,
+ }
+
+ rxjs@7.8.2:
+ resolution:
+ {
+ integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==,
+ }
+
+ sade@1.8.1:
+ resolution:
+ {
+ integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==,
+ }
+ engines: { node: '>=6' }
+
+ safe-buffer@5.2.1:
+ resolution:
+ {
+ integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==,
+ }
+
+ safer-buffer@2.1.2:
+ resolution:
+ {
+ integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==,
+ }
+
+ sass@1.102.0:
+ resolution:
+ {
+ integrity: sha512-NSOyTnaQF7rTAEOtI2fwb386vL+akyiQLBZu8Na7hXCb+umJy0GAqlcMIaqACZ6Z1VgTBS4K9PG6B3IdjHGJsw==,
+ }
+ engines: { node: '>=20.19.0' }
+ hasBin: true
+
+ sax@1.6.1:
+ resolution:
+ {
+ integrity: sha512-42tBVwLWnaQvW5zc4HbZrTuWccECCZfBi92FDuwtqxasH+JbPB3/FOKb1m222K42R4WxuxzzMsTswfzgtSu64Q==,
+ }
+ engines: { node: '>=11.0.0' }
+
+ saxes@6.0.0:
+ resolution:
+ {
+ integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==,
+ }
+ engines: { node: '>=v12.22.7' }
+
+ scheduler@0.27.0:
+ resolution:
+ {
+ integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==,
+ }
+
+ scule@1.3.0:
+ resolution:
+ {
+ integrity: sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==,
+ }
+
+ semver@6.3.1:
+ resolution:
+ {
+ integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==,
+ }
+ hasBin: true
+
+ semver@7.8.5:
+ resolution:
+ {
+ integrity: sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==,
+ }
+ engines: { node: '>=10' }
+ hasBin: true
+
+ send@0.19.2:
+ resolution:
+ {
+ integrity: sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==,
+ }
+ engines: { node: '>= 0.8.0' }
+
+ serialize-error@2.1.0:
+ resolution:
+ {
+ integrity: sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw==,
+ }
+ engines: { node: '>=0.10.0' }
+
+ seroval-plugins@1.5.6:
+ resolution:
+ {
+ integrity: sha512-HXuLAX2pu/UByPpaeo/TaMfvMIi+1QqIoPJYCcAtU8QkVNwgR6MPlGuCQTErV1JwraaMbYaWVIBX7mppzGLATQ==,
+ }
+ engines: { node: '>=10' }
+ peerDependencies:
+ seroval: ^1.0
+
+ seroval@1.5.6:
+ resolution:
+ {
+ integrity: sha512-rVQVWjjSvlINzaQPZH5JFqsqEsIWdTxY3iJZCnTL/5gQbXIRooVZKI60tVCkOVfzcRPejboxO2t0P89dg5mQaA==,
+ }
+ engines: { node: '>=10' }
+
+ serve-static@1.16.3:
+ resolution:
+ {
+ integrity: sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==,
+ }
+ engines: { node: '>= 0.8.0' }
+
+ set-blocking@2.0.0:
+ resolution:
+ {
+ integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==,
+ }
+
+ setprototypeof@1.2.0:
+ resolution:
+ {
+ integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==,
+ }
+
+ sharp@0.34.5:
+ resolution:
+ {
+ integrity: sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==,
+ }
+ engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 }
+
+ shebang-command@2.0.0:
+ resolution:
+ {
+ integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==,
+ }
+ engines: { node: '>=8' }
+
+ shebang-regex@3.0.0:
+ resolution:
+ {
+ integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==,
+ }
+ engines: { node: '>=8' }
+
+ shell-quote@1.10.0:
+ resolution:
+ {
+ integrity: sha512-w1aiOKwKuRgtwAReIIj89puqg+I7GvX4IbLrvmhXbzQsj1+Zwi4VO3+fa6ZF91TWSjIxoEkKnMeHcLEODK5ZXA==,
+ }
+ engines: { node: '>= 0.4' }
+
+ side-channel-list@1.0.1:
+ resolution:
+ {
+ integrity: sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==,
+ }
+ engines: { node: '>= 0.4' }
+
+ side-channel-map@1.0.1:
+ resolution:
+ {
+ integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==,
+ }
+ engines: { node: '>= 0.4' }
+
+ side-channel-weakmap@1.0.2:
+ resolution:
+ {
+ integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==,
+ }
+ engines: { node: '>= 0.4' }
+
+ side-channel@1.1.1:
+ resolution:
+ {
+ integrity: sha512-6x6dK6zJdpTzF4sQeNYxwtvBzf6Eg4GtlesS94HOvTudUeyK2WXAaIfmDgsyslYrRBeFIlsi54AYsFGUuhmvrQ==,
+ }
+ engines: { node: '>= 0.4' }
+
+ siginfo@2.0.0:
+ resolution:
+ {
+ integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==,
+ }
+
+ signal-exit@3.0.7:
+ resolution:
+ {
+ integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==,
+ }
+
+ signal-exit@4.1.0:
+ resolution:
+ {
+ integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==,
+ }
+ engines: { node: '>=14' }
+
+ sisteransi@1.0.5:
+ resolution:
+ {
+ integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==,
+ }
+
+ slice-ansi@2.1.0:
+ resolution:
+ {
+ integrity: sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==,
+ }
+ engines: { node: '>=6' }
+
+ solid-js@1.9.14:
+ resolution:
+ {
+ integrity: sha512-sAEXC0Kk0S1EDg+8ysEWJDbYhA3RRoEjwuySUGlKIemeo0I5YZfOyumNjNs9Sv3y2nmhD+0rW66ag2HsMuQiGQ==,
+ }
+
+ solid-refresh@0.6.3:
+ resolution:
+ {
+ integrity: sha512-F3aPsX6hVw9ttm5LYlth8Q15x6MlI/J3Dn+o3EQyRTtTxidepSTwAYdozt01/YA+7ObcciagGEyXIopGZzQtbA==,
+ }
+ peerDependencies:
+ solid-js: ^1.3
+
+ source-map-js@1.2.1:
+ resolution:
+ {
+ integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==,
+ }
+ engines: { node: '>=0.10.0' }
+
+ source-map-support@0.5.21:
+ resolution:
+ {
+ integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==,
+ }
+
+ source-map@0.5.7:
+ resolution:
+ {
+ integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==,
+ }
+ engines: { node: '>=0.10.0' }
+
+ source-map@0.6.1:
+ resolution:
+ {
+ integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==,
+ }
+ engines: { node: '>=0.10.0' }
+
+ stackback@0.0.2:
+ resolution:
+ {
+ integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==,
+ }
+
+ stackframe@1.3.4:
+ resolution:
+ {
+ integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==,
+ }
+
+ stacktrace-parser@0.1.11:
+ resolution:
+ {
+ integrity: sha512-WjlahMgHmCJpqzU8bIBy4qtsZdU9lRlcZE3Lvyej6t4tuOuv1vk57OW3MBrj6hXBFx/nNoC9MPMTcr5YA7NQbg==,
+ }
+ engines: { node: '>=6' }
+
+ statuses@1.5.0:
+ resolution:
+ {
+ integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==,
+ }
+ engines: { node: '>= 0.6' }
+
+ statuses@2.0.2:
+ resolution:
+ {
+ integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==,
+ }
+ engines: { node: '>= 0.8' }
+
+ std-env@4.2.0:
+ resolution:
+ {
+ integrity: sha512-oCUKSupKTHX53EyjDtuZQ64pjLJ6yYCtpmEw0goYxtjG9KpbRe8KAsl2tBUGU9DyMcJ0RwJ8GqJAFzMXcXW1Rw==,
+ }
+
+ stdin-discarder@0.3.2:
+ resolution:
+ {
+ integrity: sha512-eCPu1qRxPVkl5605OTWF8Wz40b4Mf45NY5LQmVPQ599knfs5QhASUm9GbJ5BDMDOXgrnh0wyEdvzmL//YMlw0A==,
+ }
+ engines: { node: '>=18' }
+
+ stream-parser@0.3.1:
+ resolution:
+ {
+ integrity: sha512-bJ/HgKq41nlKvlhccD5kaCr/P+Hu0wPNKPJOH7en+YrJu/9EgqUF+88w5Jb6KNcjOFMhfX4B2asfeAtIGuHObQ==,
+ }
+
+ string-width@4.2.3:
+ resolution:
+ {
+ integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==,
+ }
+ engines: { node: '>=8' }
+
+ string-width@7.2.0:
+ resolution:
+ {
+ integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==,
+ }
+ engines: { node: '>=18' }
+
+ string-width@8.2.2:
+ resolution:
+ {
+ integrity: sha512-GaPUh5gfdrYzqeVNZvUfT23vYYxXzKYidUcnMtJg/3rxRV63EFZy3k6xfKlmfeJD0176lnUV/Usr3XcwSvFzpg==,
+ }
+ engines: { node: '>=20' }
+
+ string_decoder@1.3.0:
+ resolution:
+ {
+ integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==,
+ }
+
+ strip-ansi@5.2.0:
+ resolution:
+ {
+ integrity: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==,
+ }
+ engines: { node: '>=6' }
+
+ strip-ansi@6.0.1:
+ resolution:
+ {
+ integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==,
+ }
+ engines: { node: '>=8' }
+
+ strip-ansi@7.2.0:
+ resolution:
+ {
+ integrity: sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==,
+ }
+ engines: { node: '>=12' }
+
+ strip-final-newline@2.0.0:
+ resolution:
+ {
+ integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==,
+ }
+ engines: { node: '>=6' }
+
+ strnum@1.1.2:
+ resolution:
+ {
+ integrity: sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA==,
+ }
+
+ supports-color@10.2.2:
+ resolution:
+ {
+ integrity: sha512-SS+jx45GF1QjgEXQx4NJZV9ImqmO2NPz5FNsIHrsDjh2YsHnawpan7SNQ1o8NuhrbHZy9AZhIoCUiCeaW/C80g==,
+ }
+ engines: { node: '>=18' }
+
+ supports-color@7.2.0:
+ resolution:
+ {
+ integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==,
+ }
+ engines: { node: '>=8' }
+
+ supports-color@8.1.1:
+ resolution:
+ {
+ integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==,
+ }
+ engines: { node: '>=10' }
+
+ supports-preserve-symlinks-flag@1.0.0:
+ resolution:
+ {
+ integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==,
+ }
+ engines: { node: '>= 0.4' }
+
+ svelte-check@4.7.4:
+ resolution:
+ {
+ integrity: sha512-IW9ot9YqAoyv8FvyN+eb4ZTe8zgcKZrJLNYU6dzSKkGwEBsSPc4K7lmQ8bKn8W2YMXM6WDfZSSVOaGtekyUfOQ==,
+ }
+ engines: { node: '>= 18.0.0' }
+ hasBin: true
+ peerDependencies:
+ svelte: ^4.0.0 || ^5.0.0-next.0
+ typescript: ^5.0.0 || ^6.0.0
+
+ svelte2tsx@0.7.59:
+ resolution:
+ {
+ integrity: sha512-Itj7Wz9WIiGFl/uJa58+rf43ajezaljKK/KTOHq5abUjto56xe+o5SOzLwSoeJ5hma9NZEstpZiazFW2q1nZPQ==,
+ }
+ peerDependencies:
+ svelte: ^3.55 || ^4.0.0-next.0 || ^4.0 || ^5.0.0-next.0
+ typescript: ^4.9.4 || ^5.0.0 || ^6.0.0
+
+ svelte@5.56.8:
+ resolution:
+ {
+ integrity: sha512-PY8LOw7xP6c8IOiVqdo0sbbZVYhXRSfklOQLAUyGBKqjTX0wx/z4l/9J+PmBpmlLnxzEb1NqltxQ5/wZme/Cmg==,
+ }
+ engines: { node: '>=18' }
+
+ symbol-tree@3.2.4:
+ resolution:
+ {
+ integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==,
+ }
+
+ terser@5.49.0:
+ resolution:
+ {
+ integrity: sha512-SNiDnXyHSrxVcIOtVbULzcTmniUiwcV7Nwdyj1twVubeTmbjoa8p69KKDpfkdoOavuM4/GRm1+ykI8qqnavHoA==,
+ }
+ engines: { node: '>=10' }
+ hasBin: true
+
+ throat@5.0.0:
+ resolution:
+ {
+ integrity: sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==,
+ }
+
+ tiny-invariant@1.3.3:
+ resolution:
+ {
+ integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==,
+ }
+
+ tinybench@2.9.0:
+ resolution:
+ {
+ integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==,
+ }
+
+ tinyexec@1.2.4:
+ resolution:
+ {
+ integrity: sha512-SHf/r48b7vOrjve9PxJo3MN5v5yuyjHvdUcrQffT3WXMUfnGmHDVbC4k3sHJaJTgZCwpUplIaAo5ANtMyp3YHg==,
+ }
+ engines: { node: '>=18' }
+
+ tinyglobby@0.2.17:
+ resolution:
+ {
+ integrity: sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==,
+ }
+ engines: { node: '>=12.0.0' }
+
+ tinyrainbow@3.1.0:
+ resolution:
+ {
+ integrity: sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw==,
+ }
+ engines: { node: '>=14.0.0' }
+
+ tldts-core@7.4.9:
+ resolution:
+ {
+ integrity: sha512-DxKfPBI52p2msTEu7MPhdpdDTBhhVQg1a/8PjQckeyAvO13eMYElX545grIp6nnTGIMZlRvFZPvFhvI/WIz2Vg==,
+ }
+
+ tldts@7.4.9:
+ resolution:
+ {
+ integrity: sha512-3kZ8wQQ/k5DrChD4X4FVvr2D7E5uoRgAqkPyLpSCGUvqOvqu+JEdr3mwMUaVWb+vMHZaKhF5fp2PBigKsui7hA==,
+ }
+ hasBin: true
+
+ tmpl@1.0.5:
+ resolution:
+ {
+ integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==,
+ }
+
+ to-regex-range@5.0.1:
+ resolution:
+ {
+ integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==,
+ }
+ engines: { node: '>=8.0' }
+
+ toidentifier@1.0.1:
+ resolution:
+ {
+ integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==,
+ }
+ engines: { node: '>=0.6' }
+
+ topojson-client@3.1.0:
+ resolution:
+ {
+ integrity: sha512-605uxS6bcYxGXw9qi62XyrV6Q3xwbndjachmNxu8HWTtVPxZfEJN9fd/SZS1Q54Sn2y0TMyMxFj/cJINqGHrKw==,
+ }
+ hasBin: true
+
+ tough-cookie@6.0.2:
+ resolution:
+ {
+ integrity: sha512-exgYmnmL/sJpR3upZfXG5PoatXQii55xAiXGXzY+sROLZ/Y+SLcp9PgJNI9Vz37HpQ74WvDcLT8eqm+kV3FzrA==,
+ }
+ engines: { node: '>=16' }
+
+ tr46@6.0.0:
+ resolution:
+ {
+ integrity: sha512-bLVMLPtstlZ4iMQHpFHTR7GAGj2jxi8Dg0s2h2MafAE4uSWF98FC/3MomU51iQAMf8/qDUbKWf5GxuvvVcXEhw==,
+ }
+ engines: { node: '>=20' }
+
+ tslib@2.3.0:
+ resolution:
+ {
+ integrity: sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==,
+ }
+
+ tslib@2.8.1:
+ resolution:
+ {
+ integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==,
+ }
+
+ type-fest@0.7.1:
+ resolution:
+ {
+ integrity: sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==,
+ }
+ engines: { node: '>=8' }
+
+ type-is@1.6.18:
+ resolution:
+ {
+ integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==,
+ }
+ engines: { node: '>= 0.6' }
+
+ typescript@6.0.3:
+ resolution:
+ {
+ integrity: sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==,
+ }
+ engines: { node: '>=14.17' }
+ hasBin: true
+
+ undici-types@7.24.6:
+ resolution:
+ {
+ integrity: sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg==,
+ }
+
+ undici@7.28.0:
+ resolution:
+ {
+ integrity: sha512-cRZYrTDwWznlnRiPjggAGxZXanty6M8RV1ff8Wm4LWXBp7/IG8v5DnOm74DtUBp9OONpK75YlPnIjQqX0dBDtA==,
+ }
+ engines: { node: '>=20.18.1' }
+
+ undici@7.29.0:
+ resolution:
+ {
+ integrity: sha512-IDxfleLmmbSskfWSUATiN1nfn2rDuvnMOqb5CWR92iIfojA0Ud+ulOAAEQ57LPr9rWmsreUyf5lwyao+7GNNVw==,
+ }
+ engines: { node: '>=20.18.1' }
+
+ unenv@2.0.0-rc.24:
+ resolution:
+ {
+ integrity: sha512-i7qRCmY42zmCwnYlh9H2SvLEypEFGye5iRmEMKjcGi7zk9UquigRjFtTLz0TYqr0ZGLZhaMHl/foy1bZR+Cwlw==,
+ }
+
+ unicode-canonical-property-names-ecmascript@2.0.1:
+ resolution:
+ {
+ integrity: sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==,
+ }
+ engines: { node: '>=4' }
+
+ unicode-match-property-ecmascript@2.0.0:
+ resolution:
+ {
+ integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==,
+ }
+ engines: { node: '>=4' }
+
+ unicode-match-property-value-ecmascript@2.2.1:
+ resolution:
+ {
+ integrity: sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg==,
+ }
+ engines: { node: '>=4' }
+
+ unicode-property-aliases-ecmascript@2.2.0:
+ resolution:
+ {
+ integrity: sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==,
+ }
+ engines: { node: '>=4' }
+
+ universalify@0.1.2:
+ resolution:
+ {
+ integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==,
+ }
+ engines: { node: '>= 4.0.0' }
+
+ unpipe@1.0.0:
+ resolution:
+ {
+ integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==,
+ }
+ engines: { node: '>= 0.8' }
+
+ update-browserslist-db@1.2.3:
+ resolution:
+ {
+ integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==,
+ }
+ hasBin: true
+ peerDependencies:
+ browserslist: '>= 4.21.0'
+
+ us-atlas@3.0.1:
+ resolution:
+ {
+ integrity: sha512-wEIZCq0ImPvGblTd8gZMqNNCPkQshugMUG/8nkSWXb02+XqNFREg9atHOKP9w6prLZTpqcLhSvdBW81MkV3/0Q==,
+ }
+
+ use-sync-external-store@1.6.0:
+ resolution:
+ {
+ integrity: sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==,
+ }
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
+
+ util-deprecate@1.0.2:
+ resolution:
+ {
+ integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==,
+ }
+
+ utils-merge@1.0.1:
+ resolution:
+ {
+ integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==,
+ }
+ engines: { node: '>= 0.4.0' }
+
+ vary@1.1.2:
+ resolution:
+ {
+ integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==,
+ }
+ engines: { node: '>= 0.8' }
+
+ victory-vendor@37.3.6:
+ resolution:
+ {
+ integrity: sha512-SbPDPdDBYp+5MJHhBCAyI7wKM3d5ivekigc2Dk2s7pgbZ9wIgIBYGVw4zGHBml/qTFbexrofXW6Gu4noGxrOwQ==,
+ }
+
+ vite-plugin-solid@2.11.14:
+ resolution:
+ {
+ integrity: sha512-7ZVBt8rpoyqmlwin2kRIUveaHoF6/kulY7gsnD+qFh4nS29V4OPAnw+ojoAspXIjObiL9o1xh9a/nTuYHm02Rw==,
+ }
+ peerDependencies:
+ '@testing-library/jest-dom': ^5.16.6 || ^5.17.0 || ^6.0.0 || ^7.0.0
+ solid-js: ^1.7.2
+ vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0
+ peerDependenciesMeta:
+ '@testing-library/jest-dom':
+ optional: true
+
+ vite@8.1.5:
+ resolution:
+ {
+ integrity: sha512-7ULLwsCdYx/nRyrpiEwvqb5TFHrMVZyBt+rg/OAXT7rgj/z+DtTDyKFeLAdDkubDVDKD8jOsndmy7m55XcfUsw==,
+ }
+ engines: { node: ^20.19.0 || >=22.12.0 }
+ hasBin: true
+ peerDependencies:
+ '@types/node': ^20.19.0 || >=22.12.0
+ '@vitejs/devtools': ^0.3.0
+ esbuild: ^0.27.0 || ^0.28.0
+ jiti: '>=1.21.0'
+ less: ^4.0.0
+ sass: ^1.70.0
+ sass-embedded: ^1.70.0
+ stylus: '>=0.54.8'
+ sugarss: ^5.0.0
+ terser: ^5.16.0
+ tsx: ^4.8.1
+ yaml: ^2.4.2
+ peerDependenciesMeta:
+ '@types/node':
+ optional: true
+ '@vitejs/devtools':
+ optional: true
+ esbuild:
+ optional: true
+ jiti:
+ optional: true
+ less:
+ optional: true
+ sass:
+ optional: true
+ sass-embedded:
+ optional: true
+ stylus:
+ optional: true
+ sugarss:
+ optional: true
+ terser:
+ optional: true
+ tsx:
+ optional: true
+ yaml:
+ optional: true
+
+ vitefu@1.1.3:
+ resolution:
+ {
+ integrity: sha512-ub4okH7Z5KLjb6hDyjqrGXqWtWvoYdU3IGm/NorpgHncKoLTCfRIbvlhBm7r0YstIaQRYlp4yEbFqDcKSzXSSg==,
+ }
+ peerDependencies:
+ vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0
+ peerDependenciesMeta:
+ vite:
+ optional: true
+
+ vitest@4.1.10:
+ resolution:
+ {
+ integrity: sha512-R9jUTe5S4Qb0HCd4TNqpC7oGcrMssMRGXLW80ubjWsW9VH5GF8y1Y0SFLY9AbqSk6nt0PnOx4H4WNJYZ13GUPw==,
+ }
+ engines: { node: ^20.0.0 || ^22.0.0 || >=24.0.0 }
+ hasBin: true
+ peerDependencies:
+ '@edge-runtime/vm': '*'
+ '@opentelemetry/api': ^1.9.0
'@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0
'@vitest/browser-playwright': 4.1.10
'@vitest/browser-preview': 4.1.10
@@ -5064,6 +7786,12 @@ packages:
jsdom:
optional: true
+ vlq@1.0.1:
+ resolution:
+ {
+ integrity: sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w==,
+ }
+
vue@3.5.40:
resolution:
{
@@ -5082,6 +7810,18 @@ packages:
}
engines: { node: '>=18' }
+ walker@1.0.8:
+ resolution:
+ {
+ integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==,
+ }
+
+ wcwidth@1.0.1:
+ resolution:
+ {
+ integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==,
+ }
+
webidl-conversions@8.0.1:
resolution:
{
@@ -5089,6 +7829,12 @@ packages:
}
engines: { node: '>=20' }
+ whatwg-fetch@3.6.20:
+ resolution:
+ {
+ integrity: sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==,
+ }
+
whatwg-mimetype@5.0.0:
resolution:
{
@@ -5103,6 +7849,20 @@ packages:
}
engines: { node: ^20.19.0 || ^22.12.0 || >=24.0.0 }
+ which-module@2.0.1:
+ resolution:
+ {
+ integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==,
+ }
+
+ which@2.0.2:
+ resolution:
+ {
+ integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==,
+ }
+ engines: { node: '>= 8' }
+ hasBin: true
+
why-is-node-running@2.3.0:
resolution:
{
@@ -5133,17 +7893,60 @@ packages:
engines: { node: '>=22.0.0' }
hasBin: true
peerDependencies:
- '@cloudflare/workers-types': ^4.20260617.1
+ '@cloudflare/workers-types': ^4.20260617.1
+ peerDependenciesMeta:
+ '@cloudflare/workers-types':
+ optional: true
+
+ wrap-ansi@6.2.0:
+ resolution:
+ {
+ integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==,
+ }
+ engines: { node: '>=8' }
+
+ wrap-ansi@7.0.0:
+ resolution:
+ {
+ integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==,
+ }
+ engines: { node: '>=10' }
+
+ wrap-ansi@9.0.2:
+ resolution:
+ {
+ integrity: sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==,
+ }
+ engines: { node: '>=18' }
+
+ ws@6.2.6:
+ resolution:
+ {
+ integrity: sha512-XTrf1gv7kXoVf1hbC3PAyAiPgR8Wz1blcrYIjEsUmr08BLksT41R8KbjmS9408C2ERx7v1JDLD/BkpLEttjfKA==,
+ }
+ peerDependencies:
+ bufferutil: ^4.0.1
+ utf-8-validate: ^5.0.2
peerDependenciesMeta:
- '@cloudflare/workers-types':
+ bufferutil:
+ optional: true
+ utf-8-validate:
optional: true
- wrap-ansi@9.0.2:
+ ws@7.5.13:
resolution:
{
- integrity: sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==,
+ integrity: sha512-rsKI6xDBFVf4r/x8XyChGK04QR/XHroxs/jUcoWvtEZM8TPU/X/uIY9B1CsSzYws9ZJb/6bbBu7dPhFW00CAoA==,
}
- engines: { node: '>=18' }
+ engines: { node: '>=8.3.0' }
+ peerDependencies:
+ bufferutil: ^4.0.1
+ utf-8-validate: ^5.0.2
+ peerDependenciesMeta:
+ bufferutil:
+ optional: true
+ utf-8-validate:
+ optional: true
ws@8.21.0:
resolution:
@@ -5173,6 +7976,12 @@ packages:
integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==,
}
+ y18n@4.0.3:
+ resolution:
+ {
+ integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==,
+ }
+
y18n@5.0.8:
resolution:
{
@@ -5186,6 +7995,28 @@ packages:
integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==,
}
+ yaml@2.9.0:
+ resolution:
+ {
+ integrity: sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==,
+ }
+ engines: { node: '>= 14.6' }
+ hasBin: true
+
+ yargs-parser@18.1.3:
+ resolution:
+ {
+ integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==,
+ }
+ engines: { node: '>=6' }
+
+ yargs-parser@21.1.1:
+ resolution:
+ {
+ integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==,
+ }
+ engines: { node: '>=12' }
+
yargs-parser@22.0.0:
resolution:
{
@@ -5193,6 +8024,20 @@ packages:
}
engines: { node: ^20.19.0 || ^22.12.0 || >=23 }
+ yargs@15.4.1:
+ resolution:
+ {
+ integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==,
+ }
+ engines: { node: '>=8' }
+
+ yargs@17.7.3:
+ resolution:
+ {
+ integrity: sha512-GZtjxm/J/4TSxuL3FNYjCmLktBTnIw/rVmKSIyKeYAZpmJB2ig9VauCC5xsa82GNKVKDAqpOn3KVzNt0zmrU0g==,
+ }
+ engines: { node: '>=12' }
+
yargs@18.1.0:
resolution:
{
@@ -5200,6 +8045,13 @@ packages:
}
engines: { node: ^20.19.0 || ^22.12.0 || >=23 }
+ yocto-queue@0.1.0:
+ resolution:
+ {
+ integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==,
+ }
+ engines: { node: '>=10' }
+
yoctocolors@2.2.0:
resolution:
{
@@ -5304,94 +8156,384 @@ snapshots:
'@asamuzakjp/nwsapi@2.3.9': {}
- '@babel/code-frame@7.29.7':
+ '@babel/code-frame@7.29.7':
+ dependencies:
+ '@babel/helper-validator-identifier': 7.29.7
+ js-tokens: 4.0.0
+ picocolors: 1.1.1
+
+ '@babel/compat-data@7.29.7': {}
+
+ '@babel/core@7.29.7(supports-color@10.2.2)':
+ dependencies:
+ '@babel/code-frame': 7.29.7
+ '@babel/generator': 7.29.7
+ '@babel/helper-compilation-targets': 7.29.7
+ '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2)
+ '@babel/helpers': 7.29.7
+ '@babel/parser': 7.29.7
+ '@babel/template': 7.29.7
+ '@babel/traverse': 7.29.7(supports-color@10.2.2)
+ '@babel/types': 7.29.7
+ '@jridgewell/remapping': 2.3.5
+ convert-source-map: 2.0.0
+ debug: 4.4.3(supports-color@10.2.2)
+ gensync: 1.0.0-beta.2
+ json5: 2.2.3
+ semver: 6.3.1
+ transitivePeerDependencies:
+ - supports-color
+
+ '@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/helper-annotate-as-pure@7.29.7':
+ dependencies:
+ '@babel/types': 7.29.7
+
+ '@babel/helper-compilation-targets@7.29.7':
+ dependencies:
+ '@babel/compat-data': 7.29.7
+ '@babel/helper-validator-option': 7.29.7
+ browserslist: 4.28.7
+ lru-cache: 5.1.1
+ semver: 6.3.1
+
+ '@babel/helper-create-class-features-plugin@7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2)':
+ dependencies:
+ '@babel/core': 7.29.7(supports-color@10.2.2)
+ '@babel/helper-annotate-as-pure': 7.29.7
+ '@babel/helper-member-expression-to-functions': 7.29.7(supports-color@10.2.2)
+ '@babel/helper-optimise-call-expression': 7.29.7
+ '@babel/helper-replace-supers': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2)
+ '@babel/helper-skip-transparent-expression-wrappers': 7.29.7(supports-color@10.2.2)
+ '@babel/traverse': 7.29.7(supports-color@10.2.2)
+ semver: 6.3.1
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/helper-create-regexp-features-plugin@7.29.7(@babel/core@7.29.7(supports-color@10.2.2))':
+ dependencies:
+ '@babel/core': 7.29.7(supports-color@10.2.2)
+ '@babel/helper-annotate-as-pure': 7.29.7
+ regexpu-core: 6.4.0
+ semver: 6.3.1
+
+ '@babel/helper-define-polyfill-provider@0.6.8(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2)':
+ dependencies:
+ '@babel/core': 7.29.7(supports-color@10.2.2)
+ '@babel/helper-compilation-targets': 7.29.7
+ '@babel/helper-plugin-utils': 7.29.7
+ debug: 4.4.3(supports-color@10.2.2)
+ lodash.debounce: 4.0.8
+ resolve: 1.22.12
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/helper-globals@7.29.7': {}
+
+ '@babel/helper-member-expression-to-functions@7.29.7(supports-color@10.2.2)':
+ dependencies:
+ '@babel/traverse': 7.29.7(supports-color@10.2.2)
+ '@babel/types': 7.29.7
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/helper-module-imports@7.18.6':
+ dependencies:
+ '@babel/types': 7.29.7
+
+ '@babel/helper-module-imports@7.29.7(supports-color@10.2.2)':
+ dependencies:
+ '@babel/traverse': 7.29.7(supports-color@10.2.2)
+ '@babel/types': 7.29.7
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/helper-module-transforms@7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2)':
+ dependencies:
+ '@babel/core': 7.29.7(supports-color@10.2.2)
+ '@babel/helper-module-imports': 7.29.7(supports-color@10.2.2)
+ '@babel/helper-validator-identifier': 7.29.7
+ '@babel/traverse': 7.29.7(supports-color@10.2.2)
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/helper-optimise-call-expression@7.29.7':
+ dependencies:
+ '@babel/types': 7.29.7
+
+ '@babel/helper-plugin-utils@7.29.7': {}
+
+ '@babel/helper-remap-async-to-generator@7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2)':
+ dependencies:
+ '@babel/core': 7.29.7(supports-color@10.2.2)
+ '@babel/helper-annotate-as-pure': 7.29.7
+ '@babel/helper-wrap-function': 7.29.7(supports-color@10.2.2)
+ '@babel/traverse': 7.29.7(supports-color@10.2.2)
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/helper-replace-supers@7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2)':
+ dependencies:
+ '@babel/core': 7.29.7(supports-color@10.2.2)
+ '@babel/helper-member-expression-to-functions': 7.29.7(supports-color@10.2.2)
+ '@babel/helper-optimise-call-expression': 7.29.7
+ '@babel/traverse': 7.29.7(supports-color@10.2.2)
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/helper-skip-transparent-expression-wrappers@7.29.7(supports-color@10.2.2)':
+ dependencies:
+ '@babel/traverse': 7.29.7(supports-color@10.2.2)
+ '@babel/types': 7.29.7
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/helper-string-parser@7.29.7': {}
+
+ '@babel/helper-validator-identifier@7.29.7': {}
+
+ '@babel/helper-validator-option@7.29.7': {}
+
+ '@babel/helper-wrap-function@7.29.7(supports-color@10.2.2)':
+ dependencies:
+ '@babel/template': 7.29.7
+ '@babel/traverse': 7.29.7(supports-color@10.2.2)
+ '@babel/types': 7.29.7
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/helpers@7.29.7':
+ dependencies:
+ '@babel/template': 7.29.7
+ '@babel/types': 7.29.7
+
+ '@babel/parser@7.29.7':
+ dependencies:
+ '@babel/types': 7.29.7
+
+ '@babel/plugin-proposal-export-default-from@7.29.7(@babel/core@7.29.7(supports-color@10.2.2))':
+ dependencies:
+ '@babel/core': 7.29.7(supports-color@10.2.2)
+ '@babel/helper-plugin-utils': 7.29.7
+
+ '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.29.7(supports-color@10.2.2))':
+ dependencies:
+ '@babel/core': 7.29.7(supports-color@10.2.2)
+ '@babel/helper-plugin-utils': 7.29.7
+
+ '@babel/plugin-syntax-export-default-from@7.29.7(@babel/core@7.29.7(supports-color@10.2.2))':
+ dependencies:
+ '@babel/core': 7.29.7(supports-color@10.2.2)
+ '@babel/helper-plugin-utils': 7.29.7
+
+ '@babel/plugin-syntax-flow@7.29.7(@babel/core@7.29.7(supports-color@10.2.2))':
+ dependencies:
+ '@babel/core': 7.29.7(supports-color@10.2.2)
+ '@babel/helper-plugin-utils': 7.29.7
+
+ '@babel/plugin-syntax-jsx@7.29.7(@babel/core@7.29.7(supports-color@10.2.2))':
+ dependencies:
+ '@babel/core': 7.29.7(supports-color@10.2.2)
+ '@babel/helper-plugin-utils': 7.29.7
+
+ '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.29.7(supports-color@10.2.2))':
+ dependencies:
+ '@babel/core': 7.29.7(supports-color@10.2.2)
+ '@babel/helper-plugin-utils': 7.29.7
+
+ '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.29.7(supports-color@10.2.2))':
+ dependencies:
+ '@babel/core': 7.29.7(supports-color@10.2.2)
+ '@babel/helper-plugin-utils': 7.29.7
+
+ '@babel/plugin-syntax-typescript@7.29.7(@babel/core@7.29.7(supports-color@10.2.2))':
+ dependencies:
+ '@babel/core': 7.29.7(supports-color@10.2.2)
+ '@babel/helper-plugin-utils': 7.29.7
+
+ '@babel/plugin-transform-async-generator-functions@7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2)':
+ dependencies:
+ '@babel/core': 7.29.7(supports-color@10.2.2)
+ '@babel/helper-plugin-utils': 7.29.7
+ '@babel/helper-remap-async-to-generator': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2)
+ '@babel/traverse': 7.29.7(supports-color@10.2.2)
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/plugin-transform-async-to-generator@7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2)':
+ dependencies:
+ '@babel/core': 7.29.7(supports-color@10.2.2)
+ '@babel/helper-module-imports': 7.29.7(supports-color@10.2.2)
+ '@babel/helper-plugin-utils': 7.29.7
+ '@babel/helper-remap-async-to-generator': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2)
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/plugin-transform-block-scoping@7.29.7(@babel/core@7.29.7(supports-color@10.2.2))':
+ dependencies:
+ '@babel/core': 7.29.7(supports-color@10.2.2)
+ '@babel/helper-plugin-utils': 7.29.7
+
+ '@babel/plugin-transform-class-properties@7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2)':
+ dependencies:
+ '@babel/core': 7.29.7(supports-color@10.2.2)
+ '@babel/helper-create-class-features-plugin': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2)
+ '@babel/helper-plugin-utils': 7.29.7
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/plugin-transform-classes@7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2)':
+ dependencies:
+ '@babel/core': 7.29.7(supports-color@10.2.2)
+ '@babel/helper-annotate-as-pure': 7.29.7
+ '@babel/helper-compilation-targets': 7.29.7
+ '@babel/helper-globals': 7.29.7
+ '@babel/helper-plugin-utils': 7.29.7
+ '@babel/helper-replace-supers': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2)
+ '@babel/traverse': 7.29.7(supports-color@10.2.2)
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/plugin-transform-destructuring@7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2)':
+ dependencies:
+ '@babel/core': 7.29.7(supports-color@10.2.2)
+ '@babel/helper-plugin-utils': 7.29.7
+ '@babel/traverse': 7.29.7(supports-color@10.2.2)
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/plugin-transform-flow-strip-types@7.29.7(@babel/core@7.29.7(supports-color@10.2.2))':
dependencies:
- '@babel/helper-validator-identifier': 7.29.7
- js-tokens: 4.0.0
- picocolors: 1.1.1
+ '@babel/core': 7.29.7(supports-color@10.2.2)
+ '@babel/helper-plugin-utils': 7.29.7
+ '@babel/plugin-syntax-flow': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))
- '@babel/compat-data@7.29.7': {}
+ '@babel/plugin-transform-for-of@7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2)':
+ dependencies:
+ '@babel/core': 7.29.7(supports-color@10.2.2)
+ '@babel/helper-plugin-utils': 7.29.7
+ '@babel/helper-skip-transparent-expression-wrappers': 7.29.7(supports-color@10.2.2)
+ transitivePeerDependencies:
+ - supports-color
- '@babel/core@7.29.7(supports-color@10.2.2)':
+ '@babel/plugin-transform-modules-commonjs@7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2)':
dependencies:
- '@babel/code-frame': 7.29.7
- '@babel/generator': 7.29.7
- '@babel/helper-compilation-targets': 7.29.7
+ '@babel/core': 7.29.7(supports-color@10.2.2)
'@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2)
- '@babel/helpers': 7.29.7
- '@babel/parser': 7.29.7
- '@babel/template': 7.29.7
- '@babel/traverse': 7.29.7(supports-color@10.2.2)
- '@babel/types': 7.29.7
- '@jridgewell/remapping': 2.3.5
- convert-source-map: 2.0.0
- debug: 4.4.3(supports-color@10.2.2)
- gensync: 1.0.0-beta.2
- json5: 2.2.3
- semver: 6.3.1
+ '@babel/helper-plugin-utils': 7.29.7
transitivePeerDependencies:
- supports-color
- '@babel/generator@7.29.7':
+ '@babel/plugin-transform-named-capturing-groups-regex@7.29.7(@babel/core@7.29.7(supports-color@10.2.2))':
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/core': 7.29.7(supports-color@10.2.2)
+ '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))
+ '@babel/helper-plugin-utils': 7.29.7
- '@babel/helper-compilation-targets@7.29.7':
+ '@babel/plugin-transform-nullish-coalescing-operator@7.29.7(@babel/core@7.29.7(supports-color@10.2.2))':
dependencies:
- '@babel/compat-data': 7.29.7
- '@babel/helper-validator-option': 7.29.7
- browserslist: 4.28.7
- lru-cache: 5.1.1
- semver: 6.3.1
-
- '@babel/helper-globals@7.29.7': {}
+ '@babel/core': 7.29.7(supports-color@10.2.2)
+ '@babel/helper-plugin-utils': 7.29.7
- '@babel/helper-module-imports@7.18.6':
+ '@babel/plugin-transform-optional-catch-binding@7.29.7(@babel/core@7.29.7(supports-color@10.2.2))':
dependencies:
- '@babel/types': 7.29.7
+ '@babel/core': 7.29.7(supports-color@10.2.2)
+ '@babel/helper-plugin-utils': 7.29.7
- '@babel/helper-module-imports@7.29.7(supports-color@10.2.2)':
+ '@babel/plugin-transform-optional-chaining@7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2)':
dependencies:
- '@babel/traverse': 7.29.7(supports-color@10.2.2)
- '@babel/types': 7.29.7
+ '@babel/core': 7.29.7(supports-color@10.2.2)
+ '@babel/helper-plugin-utils': 7.29.7
+ '@babel/helper-skip-transparent-expression-wrappers': 7.29.7(supports-color@10.2.2)
transitivePeerDependencies:
- supports-color
- '@babel/helper-module-transforms@7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2)':
+ '@babel/plugin-transform-private-methods@7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2)':
dependencies:
'@babel/core': 7.29.7(supports-color@10.2.2)
- '@babel/helper-module-imports': 7.29.7(supports-color@10.2.2)
- '@babel/helper-validator-identifier': 7.29.7
- '@babel/traverse': 7.29.7(supports-color@10.2.2)
+ '@babel/helper-create-class-features-plugin': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2)
+ '@babel/helper-plugin-utils': 7.29.7
transitivePeerDependencies:
- supports-color
- '@babel/helper-plugin-utils@7.29.7': {}
+ '@babel/plugin-transform-private-property-in-object@7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2)':
+ dependencies:
+ '@babel/core': 7.29.7(supports-color@10.2.2)
+ '@babel/helper-annotate-as-pure': 7.29.7
+ '@babel/helper-create-class-features-plugin': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2)
+ '@babel/helper-plugin-utils': 7.29.7
+ transitivePeerDependencies:
+ - supports-color
- '@babel/helper-string-parser@7.29.7': {}
+ '@babel/plugin-transform-react-display-name@7.29.7(@babel/core@7.29.7(supports-color@10.2.2))':
+ dependencies:
+ '@babel/core': 7.29.7(supports-color@10.2.2)
+ '@babel/helper-plugin-utils': 7.29.7
- '@babel/helper-validator-identifier@7.29.7': {}
+ '@babel/plugin-transform-react-jsx-self@7.29.7(@babel/core@7.29.7(supports-color@10.2.2))':
+ dependencies:
+ '@babel/core': 7.29.7(supports-color@10.2.2)
+ '@babel/helper-plugin-utils': 7.29.7
- '@babel/helper-validator-option@7.29.7': {}
+ '@babel/plugin-transform-react-jsx-source@7.29.7(@babel/core@7.29.7(supports-color@10.2.2))':
+ dependencies:
+ '@babel/core': 7.29.7(supports-color@10.2.2)
+ '@babel/helper-plugin-utils': 7.29.7
- '@babel/helpers@7.29.7':
+ '@babel/plugin-transform-react-jsx@7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2)':
dependencies:
- '@babel/template': 7.29.7
+ '@babel/core': 7.29.7(supports-color@10.2.2)
+ '@babel/helper-annotate-as-pure': 7.29.7
+ '@babel/helper-module-imports': 7.29.7(supports-color@10.2.2)
+ '@babel/helper-plugin-utils': 7.29.7
+ '@babel/plugin-syntax-jsx': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))
'@babel/types': 7.29.7
+ transitivePeerDependencies:
+ - supports-color
- '@babel/parser@7.29.7':
+ '@babel/plugin-transform-regenerator@7.29.7(@babel/core@7.29.7(supports-color@10.2.2))':
dependencies:
- '@babel/types': 7.29.7
+ '@babel/core': 7.29.7(supports-color@10.2.2)
+ '@babel/helper-plugin-utils': 7.29.7
- '@babel/plugin-syntax-jsx@7.29.7(@babel/core@7.29.7(supports-color@10.2.2))':
+ '@babel/plugin-transform-runtime@7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2)':
+ dependencies:
+ '@babel/core': 7.29.7(supports-color@10.2.2)
+ '@babel/helper-module-imports': 7.29.7(supports-color@10.2.2)
+ '@babel/helper-plugin-utils': 7.29.7
+ babel-plugin-polyfill-corejs2: 0.4.17(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2)
+ babel-plugin-polyfill-corejs3: 0.13.0(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2)
+ babel-plugin-polyfill-regenerator: 0.6.8(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2)
+ semver: 6.3.1
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/plugin-transform-typescript@7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2)':
+ dependencies:
+ '@babel/core': 7.29.7(supports-color@10.2.2)
+ '@babel/helper-annotate-as-pure': 7.29.7
+ '@babel/helper-create-class-features-plugin': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2)
+ '@babel/helper-plugin-utils': 7.29.7
+ '@babel/helper-skip-transparent-expression-wrappers': 7.29.7(supports-color@10.2.2)
+ '@babel/plugin-syntax-typescript': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/plugin-transform-unicode-regex@7.29.7(@babel/core@7.29.7(supports-color@10.2.2))':
dependencies:
'@babel/core': 7.29.7(supports-color@10.2.2)
+ '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))
'@babel/helper-plugin-utils': 7.29.7
+ '@babel/runtime@7.29.7': {}
+
'@babel/template@7.29.7':
dependencies:
'@babel/code-frame': 7.29.7
@@ -5646,6 +8788,12 @@ snapshots:
optionalDependencies:
'@noble/hashes': 2.2.0
+ '@hapi/hoek@9.3.0': {}
+
+ '@hapi/topo@5.1.0':
+ dependencies:
+ '@hapi/hoek': 9.3.0
+
'@img/colour@1.1.0': {}
'@img/sharp-darwin-arm64@0.34.5':
@@ -5742,6 +8890,21 @@ snapshots:
'@img/sharp-win32-x64@0.34.5':
optional: true
+ '@isaacs/ttlcache@1.4.1': {}
+
+ '@jest/schemas@29.6.3':
+ dependencies:
+ '@sinclair/typebox': 0.27.12
+
+ '@jest/types@29.6.3':
+ dependencies:
+ '@jest/schemas': 29.6.3
+ '@types/istanbul-lib-coverage': 2.0.6
+ '@types/istanbul-reports': 3.0.4
+ '@types/node': 25.9.5
+ '@types/yargs': 17.0.35
+ chalk: 4.1.2
+
'@jridgewell/gen-mapping@0.3.13':
dependencies:
'@jridgewell/sourcemap-codec': 1.5.5
@@ -5754,6 +8917,11 @@ snapshots:
'@jridgewell/resolve-uri@3.1.2': {}
+ '@jridgewell/source-map@0.3.11':
+ dependencies:
+ '@jridgewell/gen-mapping': 0.3.13
+ '@jridgewell/trace-mapping': 0.3.31
+
'@jridgewell/sourcemap-codec@1.5.5': {}
'@jridgewell/trace-mapping@0.3.31':
@@ -5855,84 +9023,367 @@ snapshots:
'@noble/hashes@2.2.0': {}
+ '@nodelib/fs.scandir@2.1.5':
+ dependencies:
+ '@nodelib/fs.stat': 2.0.5
+ run-parallel: 1.2.0
+
+ '@nodelib/fs.stat@2.0.5': {}
+
+ '@nodelib/fs.walk@1.2.8':
+ dependencies:
+ '@nodelib/fs.scandir': 2.1.5
+ fastq: 1.20.1
+
'@observablehq/plot@0.6.17':
dependencies:
d3: 7.9.0
interval-tree-1d: 1.0.4
isoformat: 0.2.1
- '@observablehq/sample-datasets@1.0.1': {}
+ '@observablehq/sample-datasets@1.0.1': {}
+
+ '@oxc-project/types@0.139.0': {}
+
+ '@parcel/watcher-android-arm64@2.6.0':
+ optional: true
+
+ '@parcel/watcher-darwin-arm64@2.6.0':
+ optional: true
+
+ '@parcel/watcher-darwin-x64@2.6.0':
+ optional: true
+
+ '@parcel/watcher-freebsd-x64@2.6.0':
+ optional: true
+
+ '@parcel/watcher-linux-arm-glibc@2.6.0':
+ optional: true
+
+ '@parcel/watcher-linux-arm-musl@2.6.0':
+ optional: true
+
+ '@parcel/watcher-linux-arm64-glibc@2.6.0':
+ optional: true
+
+ '@parcel/watcher-linux-arm64-musl@2.6.0':
+ optional: true
+
+ '@parcel/watcher-linux-x64-glibc@2.6.0':
+ optional: true
+
+ '@parcel/watcher-linux-x64-musl@2.6.0':
+ optional: true
+
+ '@parcel/watcher-win32-arm64@2.6.0':
+ optional: true
+
+ '@parcel/watcher-win32-x64@2.6.0':
+ optional: true
+
+ '@parcel/watcher@2.6.0':
+ dependencies:
+ detect-libc: 2.1.2
+ is-glob: 4.0.3
+ node-addon-api: 7.1.1
+ picomatch: 4.0.5
+ optionalDependencies:
+ '@parcel/watcher-android-arm64': 2.6.0
+ '@parcel/watcher-darwin-arm64': 2.6.0
+ '@parcel/watcher-darwin-x64': 2.6.0
+ '@parcel/watcher-freebsd-x64': 2.6.0
+ '@parcel/watcher-linux-arm-glibc': 2.6.0
+ '@parcel/watcher-linux-arm-musl': 2.6.0
+ '@parcel/watcher-linux-arm64-glibc': 2.6.0
+ '@parcel/watcher-linux-arm64-musl': 2.6.0
+ '@parcel/watcher-linux-x64-glibc': 2.6.0
+ '@parcel/watcher-linux-x64-musl': 2.6.0
+ '@parcel/watcher-win32-arm64': 2.6.0
+ '@parcel/watcher-win32-x64': 2.6.0
+ optional: true
+
+ '@poppinss/colors@4.1.6':
+ dependencies:
+ kleur: 4.1.5
+
+ '@poppinss/dumper@0.6.5':
+ dependencies:
+ '@poppinss/colors': 4.1.6
+ '@sindresorhus/is': 7.2.0
+ supports-color: 10.2.2
+
+ '@poppinss/exception@1.2.3': {}
+
+ '@react-native-community/cli-clean@20.1.0':
+ dependencies:
+ '@react-native-community/cli-tools': 20.1.0
+ execa: 5.1.1
+ fast-glob: 3.3.3
+ picocolors: 1.1.1
+
+ '@react-native-community/cli-config-android@20.1.0':
+ dependencies:
+ '@react-native-community/cli-tools': 20.1.0
+ fast-glob: 3.3.3
+ fast-xml-parser: 4.5.7
+ picocolors: 1.1.1
+
+ '@react-native-community/cli-config-apple@20.1.0':
+ dependencies:
+ '@react-native-community/cli-tools': 20.1.0
+ execa: 5.1.1
+ fast-glob: 3.3.3
+ picocolors: 1.1.1
+
+ '@react-native-community/cli-config@20.1.0(typescript@6.0.3)':
+ dependencies:
+ '@react-native-community/cli-tools': 20.1.0
+ cosmiconfig: 9.0.2(typescript@6.0.3)
+ deepmerge: 4.3.1
+ fast-glob: 3.3.3
+ joi: 17.13.4
+ picocolors: 1.1.1
+ transitivePeerDependencies:
+ - typescript
+
+ '@react-native-community/cli-doctor@20.1.0(typescript@6.0.3)':
+ dependencies:
+ '@react-native-community/cli-config': 20.1.0(typescript@6.0.3)
+ '@react-native-community/cli-platform-android': 20.1.0
+ '@react-native-community/cli-platform-apple': 20.1.0
+ '@react-native-community/cli-platform-ios': 20.1.0
+ '@react-native-community/cli-tools': 20.1.0
+ command-exists: 1.2.9
+ deepmerge: 4.3.1
+ envinfo: 7.21.0
+ execa: 5.1.1
+ node-stream-zip: 1.16.0
+ ora: 5.4.1
+ picocolors: 1.1.1
+ semver: 7.8.5
+ wcwidth: 1.0.1
+ yaml: 2.9.0
+ transitivePeerDependencies:
+ - typescript
+
+ '@react-native-community/cli-platform-android@20.1.0':
+ dependencies:
+ '@react-native-community/cli-config-android': 20.1.0
+ '@react-native-community/cli-tools': 20.1.0
+ execa: 5.1.1
+ logkitty: 0.7.1
+ picocolors: 1.1.1
+
+ '@react-native-community/cli-platform-apple@20.1.0':
+ dependencies:
+ '@react-native-community/cli-config-apple': 20.1.0
+ '@react-native-community/cli-tools': 20.1.0
+ execa: 5.1.1
+ fast-xml-parser: 4.5.7
+ picocolors: 1.1.1
+
+ '@react-native-community/cli-platform-ios@20.1.0':
+ dependencies:
+ '@react-native-community/cli-platform-apple': 20.1.0
+
+ '@react-native-community/cli-server-api@20.1.0(supports-color@10.2.2)':
+ dependencies:
+ '@react-native-community/cli-tools': 20.1.0
+ body-parser: 1.20.6(supports-color@10.2.2)
+ compression: 1.8.1(supports-color@10.2.2)
+ connect: 3.7.0(supports-color@10.2.2)
+ errorhandler: 1.5.2
+ nocache: 3.0.4
+ open: 6.4.0
+ pretty-format: 29.7.0
+ serve-static: 1.16.3(supports-color@10.2.2)
+ ws: 6.2.6
+ transitivePeerDependencies:
+ - bufferutil
+ - supports-color
+ - utf-8-validate
+
+ '@react-native-community/cli-tools@20.1.0':
+ dependencies:
+ '@vscode/sudo-prompt': 9.3.2
+ appdirsjs: 1.2.8
+ execa: 5.1.1
+ find-up: 5.0.0
+ launch-editor: 2.14.1
+ mime: 2.6.0
+ ora: 5.4.1
+ picocolors: 1.1.1
+ prompts: 2.4.2
+ semver: 7.8.5
+
+ '@react-native-community/cli-types@20.1.0':
+ dependencies:
+ joi: 17.13.4
+
+ '@react-native-community/cli@20.1.0(supports-color@10.2.2)(typescript@6.0.3)':
+ dependencies:
+ '@react-native-community/cli-clean': 20.1.0
+ '@react-native-community/cli-config': 20.1.0(typescript@6.0.3)
+ '@react-native-community/cli-doctor': 20.1.0(typescript@6.0.3)
+ '@react-native-community/cli-server-api': 20.1.0(supports-color@10.2.2)
+ '@react-native-community/cli-tools': 20.1.0
+ '@react-native-community/cli-types': 20.1.0
+ commander: 9.5.0
+ deepmerge: 4.3.1
+ execa: 5.1.1
+ find-up: 5.0.0
+ fs-extra: 8.1.0
+ graceful-fs: 4.2.11
+ picocolors: 1.1.1
+ prompts: 2.4.2
+ semver: 7.8.5
+ transitivePeerDependencies:
+ - bufferutil
+ - supports-color
+ - typescript
+ - utf-8-validate
+
+ '@react-native/assets-registry@0.86.0': {}
- '@oxc-project/types@0.139.0': {}
+ '@react-native/babel-plugin-codegen@0.86.0(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2)':
+ dependencies:
+ '@babel/traverse': 7.29.7(supports-color@10.2.2)
+ '@react-native/codegen': 0.86.0(@babel/core@7.29.7(supports-color@10.2.2))
+ transitivePeerDependencies:
+ - '@babel/core'
+ - supports-color
- '@parcel/watcher-android-arm64@2.6.0':
- optional: true
+ '@react-native/babel-preset@0.86.0(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2)':
+ dependencies:
+ '@babel/core': 7.29.7(supports-color@10.2.2)
+ '@babel/plugin-proposal-export-default-from': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))
+ '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.29.7(supports-color@10.2.2))
+ '@babel/plugin-syntax-export-default-from': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))
+ '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.29.7(supports-color@10.2.2))
+ '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.29.7(supports-color@10.2.2))
+ '@babel/plugin-transform-async-generator-functions': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2)
+ '@babel/plugin-transform-async-to-generator': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2)
+ '@babel/plugin-transform-block-scoping': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))
+ '@babel/plugin-transform-class-properties': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2)
+ '@babel/plugin-transform-classes': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2)
+ '@babel/plugin-transform-destructuring': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2)
+ '@babel/plugin-transform-flow-strip-types': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))
+ '@babel/plugin-transform-for-of': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2)
+ '@babel/plugin-transform-modules-commonjs': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2)
+ '@babel/plugin-transform-named-capturing-groups-regex': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))
+ '@babel/plugin-transform-nullish-coalescing-operator': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))
+ '@babel/plugin-transform-optional-catch-binding': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))
+ '@babel/plugin-transform-optional-chaining': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2)
+ '@babel/plugin-transform-private-methods': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2)
+ '@babel/plugin-transform-private-property-in-object': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2)
+ '@babel/plugin-transform-react-display-name': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))
+ '@babel/plugin-transform-react-jsx': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2)
+ '@babel/plugin-transform-react-jsx-self': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))
+ '@babel/plugin-transform-react-jsx-source': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))
+ '@babel/plugin-transform-regenerator': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))
+ '@babel/plugin-transform-runtime': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2)
+ '@babel/plugin-transform-typescript': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2)
+ '@babel/plugin-transform-unicode-regex': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))
+ '@react-native/babel-plugin-codegen': 0.86.0(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2)
+ babel-plugin-syntax-hermes-parser: 0.36.0
+ babel-plugin-transform-flow-enums: 0.0.2(@babel/core@7.29.7(supports-color@10.2.2))
+ react-refresh: 0.14.2
+ transitivePeerDependencies:
+ - supports-color
- '@parcel/watcher-darwin-arm64@2.6.0':
- optional: true
+ '@react-native/codegen@0.86.0(@babel/core@7.29.7(supports-color@10.2.2))':
+ dependencies:
+ '@babel/core': 7.29.7(supports-color@10.2.2)
+ '@babel/parser': 7.29.7
+ hermes-parser: 0.36.0
+ invariant: 2.2.4
+ nullthrows: 1.1.1
+ tinyglobby: 0.2.17
+ yargs: 17.7.3
- '@parcel/watcher-darwin-x64@2.6.0':
- optional: true
+ '@react-native/community-cli-plugin@0.86.0(@react-native-community/cli@20.1.0(supports-color@10.2.2)(typescript@6.0.3))(@react-native/metro-config@0.86.0(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(supports-color@10.2.2)':
+ dependencies:
+ '@react-native/dev-middleware': 0.86.0(supports-color@10.2.2)
+ debug: 4.4.3(supports-color@10.2.2)
+ invariant: 2.2.4
+ metro: 0.84.4(supports-color@10.2.2)
+ metro-config: 0.84.4(supports-color@10.2.2)
+ metro-core: 0.84.4
+ semver: 7.8.5
+ optionalDependencies:
+ '@react-native-community/cli': 20.1.0(supports-color@10.2.2)(typescript@6.0.3)
+ '@react-native/metro-config': 0.86.0(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2)
+ transitivePeerDependencies:
+ - bufferutil
+ - supports-color
+ - utf-8-validate
- '@parcel/watcher-freebsd-x64@2.6.0':
- optional: true
+ '@react-native/debugger-frontend@0.86.0': {}
- '@parcel/watcher-linux-arm-glibc@2.6.0':
- optional: true
+ '@react-native/debugger-shell@0.86.0(supports-color@10.2.2)':
+ dependencies:
+ cross-spawn: 7.0.6
+ debug: 4.4.3(supports-color@10.2.2)
+ fb-dotslash: 0.5.8
+ transitivePeerDependencies:
+ - supports-color
- '@parcel/watcher-linux-arm-musl@2.6.0':
- optional: true
+ '@react-native/dev-middleware@0.86.0(supports-color@10.2.2)':
+ dependencies:
+ '@isaacs/ttlcache': 1.4.1
+ '@react-native/debugger-frontend': 0.86.0
+ '@react-native/debugger-shell': 0.86.0(supports-color@10.2.2)
+ chrome-launcher: 0.15.2(supports-color@10.2.2)
+ chromium-edge-launcher: 0.3.0(supports-color@10.2.2)
+ connect: 3.7.0(supports-color@10.2.2)
+ debug: 4.4.3(supports-color@10.2.2)
+ invariant: 2.2.4
+ nullthrows: 1.1.1
+ open: 7.4.2
+ serve-static: 1.16.3(supports-color@10.2.2)
+ ws: 7.5.13
+ transitivePeerDependencies:
+ - bufferutil
+ - supports-color
+ - utf-8-validate
- '@parcel/watcher-linux-arm64-glibc@2.6.0':
- optional: true
+ '@react-native/gradle-plugin@0.86.0': {}
- '@parcel/watcher-linux-arm64-musl@2.6.0':
- optional: true
+ '@react-native/js-polyfills@0.86.0': {}
- '@parcel/watcher-linux-x64-glibc@2.6.0':
- optional: true
+ '@react-native/metro-babel-transformer@0.86.0(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2)':
+ dependencies:
+ '@babel/core': 7.29.7(supports-color@10.2.2)
+ '@react-native/babel-preset': 0.86.0(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2)
+ hermes-parser: 0.36.0
+ nullthrows: 1.1.1
+ transitivePeerDependencies:
+ - supports-color
- '@parcel/watcher-linux-x64-musl@2.6.0':
- optional: true
+ '@react-native/metro-config@0.86.0(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2)':
+ dependencies:
+ '@react-native/js-polyfills': 0.86.0
+ '@react-native/metro-babel-transformer': 0.86.0(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2)
+ metro-config: 0.84.4(supports-color@10.2.2)
+ metro-runtime: 0.84.4
+ transitivePeerDependencies:
+ - '@babel/core'
+ - bufferutil
+ - supports-color
+ - utf-8-validate
- '@parcel/watcher-win32-arm64@2.6.0':
- optional: true
+ '@react-native/normalize-colors@0.86.0': {}
- '@parcel/watcher-win32-x64@2.6.0':
- optional: true
+ '@react-native/typescript-config@0.86.0': {}
- '@parcel/watcher@2.6.0':
+ '@react-native/virtualized-lists@0.86.0(@types/react@19.2.17)(react-native@0.86.0(@babel/core@7.29.7(supports-color@10.2.2))(@react-native-community/cli@20.1.0(supports-color@10.2.2)(typescript@6.0.3))(@react-native/metro-config@0.86.0(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(@types/react@19.2.17)(react@19.2.3)(supports-color@10.2.2))(react@19.2.3)':
dependencies:
- detect-libc: 2.1.2
- is-glob: 4.0.3
- node-addon-api: 7.1.1
- picomatch: 4.0.5
+ invariant: 2.2.4
+ nullthrows: 1.1.1
+ react: 19.2.3
+ react-native: 0.86.0(@babel/core@7.29.7(supports-color@10.2.2))(@react-native-community/cli@20.1.0(supports-color@10.2.2)(typescript@6.0.3))(@react-native/metro-config@0.86.0(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(@types/react@19.2.17)(react@19.2.3)(supports-color@10.2.2)
optionalDependencies:
- '@parcel/watcher-android-arm64': 2.6.0
- '@parcel/watcher-darwin-arm64': 2.6.0
- '@parcel/watcher-darwin-x64': 2.6.0
- '@parcel/watcher-freebsd-x64': 2.6.0
- '@parcel/watcher-linux-arm-glibc': 2.6.0
- '@parcel/watcher-linux-arm-musl': 2.6.0
- '@parcel/watcher-linux-arm64-glibc': 2.6.0
- '@parcel/watcher-linux-arm64-musl': 2.6.0
- '@parcel/watcher-linux-x64-glibc': 2.6.0
- '@parcel/watcher-linux-x64-musl': 2.6.0
- '@parcel/watcher-win32-arm64': 2.6.0
- '@parcel/watcher-win32-x64': 2.6.0
- optional: true
-
- '@poppinss/colors@4.1.6':
- dependencies:
- kleur: 4.1.5
-
- '@poppinss/dumper@0.6.5':
- dependencies:
- '@poppinss/colors': 4.1.6
- '@sindresorhus/is': 7.2.0
- supports-color: 10.2.2
-
- '@poppinss/exception@1.2.3': {}
+ '@types/react': 19.2.17
'@reduxjs/toolkit@2.12.0(react-redux@9.3.0(@types/react@19.2.17)(react@19.2.3)(redux@5.0.1))(react@19.2.3)':
dependencies:
@@ -6092,6 +9543,16 @@ snapshots:
optionalDependencies:
fsevents: 2.3.3
+ '@sideway/address@4.1.5':
+ dependencies:
+ '@hapi/hoek': 9.3.0
+
+ '@sideway/formula@3.0.1': {}
+
+ '@sideway/pinpoint@2.0.0': {}
+
+ '@sinclair/typebox@0.27.12': {}
+
'@sindresorhus/is@7.2.0': {}
'@speed-highlight/core@1.2.17': {}
@@ -6117,23 +9578,23 @@ snapshots:
transitivePeerDependencies:
- typescript
- '@sveltejs/vite-plugin-svelte@7.2.0(svelte@5.56.8)(vite@8.1.5(@types/node@25.9.5)(esbuild@0.27.7)(less@4.8.1(supports-color@10.2.2))(sass@1.102.0))':
+ '@sveltejs/vite-plugin-svelte@7.2.0(svelte@5.56.8)(vite@8.1.5(@types/node@25.9.5)(esbuild@0.27.7)(less@4.8.1(supports-color@10.2.2))(sass@1.102.0)(terser@5.49.0)(yaml@2.9.0))':
dependencies:
deepmerge: 4.3.1
magic-string: 0.30.21
obug: 2.1.4
svelte: 5.56.8
- vite: 8.1.5(@types/node@25.9.5)(esbuild@0.27.7)(less@4.8.1(supports-color@10.2.2))(sass@1.102.0)
- vitefu: 1.1.3(vite@8.1.5(@types/node@25.9.5)(esbuild@0.27.7)(less@4.8.1(supports-color@10.2.2))(sass@1.102.0))
+ vite: 8.1.5(@types/node@25.9.5)(esbuild@0.27.7)(less@4.8.1(supports-color@10.2.2))(sass@1.102.0)(terser@5.49.0)(yaml@2.9.0)
+ vitefu: 1.1.3(vite@8.1.5(@types/node@25.9.5)(esbuild@0.27.7)(less@4.8.1(supports-color@10.2.2))(sass@1.102.0)(terser@5.49.0)(yaml@2.9.0))
- '@sveltejs/vite-plugin-svelte@7.2.0(svelte@5.56.8)(vite@8.1.5(@types/node@25.9.5)(esbuild@0.28.1)(less@4.8.1(supports-color@10.2.2))(sass@1.102.0))':
+ '@sveltejs/vite-plugin-svelte@7.2.0(svelte@5.56.8)(vite@8.1.5(@types/node@25.9.5)(esbuild@0.28.1)(less@4.8.1(supports-color@10.2.2))(sass@1.102.0)(terser@5.49.0)(yaml@2.9.0))':
dependencies:
deepmerge: 4.3.1
magic-string: 0.30.21
obug: 2.1.4
svelte: 5.56.8
- vite: 8.1.5(@types/node@25.9.5)(esbuild@0.28.1)(less@4.8.1(supports-color@10.2.2))(sass@1.102.0)
- vitefu: 1.1.3(vite@8.1.5(@types/node@25.9.5)(esbuild@0.28.1)(less@4.8.1(supports-color@10.2.2))(sass@1.102.0))
+ vite: 8.1.5(@types/node@25.9.5)(esbuild@0.28.1)(less@4.8.1(supports-color@10.2.2))(sass@1.102.0)(terser@5.49.0)(yaml@2.9.0)
+ vitefu: 1.1.3(vite@8.1.5(@types/node@25.9.5)(esbuild@0.28.1)(less@4.8.1(supports-color@10.2.2))(sass@1.102.0)(terser@5.49.0)(yaml@2.9.0))
'@tsrx/core@0.1.48':
dependencies:
@@ -6249,6 +9710,16 @@ snapshots:
'@types/geojson@7946.0.16': {}
+ '@types/istanbul-lib-coverage@2.0.6': {}
+
+ '@types/istanbul-lib-report@3.0.3':
+ dependencies:
+ '@types/istanbul-lib-coverage': 2.0.6
+
+ '@types/istanbul-reports@3.0.4':
+ dependencies:
+ '@types/istanbul-lib-report': 3.0.3
+
'@types/jsdom@27.0.0':
dependencies:
'@types/node': 25.9.5
@@ -6282,10 +9753,16 @@ snapshots:
'@types/use-sync-external-store@0.0.6': {}
- '@vitejs/plugin-react@6.0.4(vite@8.1.5(@types/node@25.9.5)(esbuild@0.27.7)(less@4.8.1(supports-color@10.2.2))(sass@1.102.0))':
+ '@types/yargs-parser@21.0.3': {}
+
+ '@types/yargs@17.0.35':
+ dependencies:
+ '@types/yargs-parser': 21.0.3
+
+ '@vitejs/plugin-react@6.0.4(vite@8.1.5(@types/node@25.9.5)(esbuild@0.27.7)(less@4.8.1(supports-color@10.2.2))(sass@1.102.0)(terser@5.49.0)(yaml@2.9.0))':
dependencies:
'@rolldown/pluginutils': 1.0.1
- vite: 8.1.5(@types/node@25.9.5)(esbuild@0.27.7)(less@4.8.1(supports-color@10.2.2))(sass@1.102.0)
+ vite: 8.1.5(@types/node@25.9.5)(esbuild@0.27.7)(less@4.8.1(supports-color@10.2.2))(sass@1.102.0)(terser@5.49.0)(yaml@2.9.0)
'@vitest/expect@4.1.10':
dependencies:
@@ -6296,13 +9773,13 @@ snapshots:
chai: 6.2.2
tinyrainbow: 3.1.0
- '@vitest/mocker@4.1.10(vite@8.1.5(@types/node@25.9.5)(esbuild@0.27.7)(less@4.8.1(supports-color@10.2.2))(sass@1.102.0))':
+ '@vitest/mocker@4.1.10(vite@8.1.5(@types/node@25.9.5)(esbuild@0.27.7)(less@4.8.1(supports-color@10.2.2))(sass@1.102.0)(terser@5.49.0)(yaml@2.9.0))':
dependencies:
'@vitest/spy': 4.1.10
estree-walker: 3.0.3
magic-string: 0.30.21
optionalDependencies:
- vite: 8.1.5(@types/node@25.9.5)(esbuild@0.27.7)(less@4.8.1(supports-color@10.2.2))(sass@1.102.0)
+ vite: 8.1.5(@types/node@25.9.5)(esbuild@0.27.7)(less@4.8.1(supports-color@10.2.2))(sass@1.102.0)(terser@5.49.0)(yaml@2.9.0)
'@vitest/pretty-format@4.1.10':
dependencies:
@@ -6328,6 +9805,8 @@ snapshots:
convert-source-map: 2.0.0
tinyrainbow: 3.1.0
+ '@vscode/sudo-prompt@9.3.2': {}
+
'@vue/compiler-core@3.5.40':
dependencies:
'@babel/parser': 7.29.7
@@ -6388,8 +9867,24 @@ snapshots:
'@vue/shared@3.5.40': {}
+ abort-controller@3.0.0:
+ dependencies:
+ event-target-shim: 5.0.1
+
+ accepts@1.3.8:
+ dependencies:
+ mime-types: 2.1.35
+ negotiator: 0.6.3
+
+ accepts@2.0.0:
+ dependencies:
+ mime-types: 3.0.2
+ negotiator: 1.0.0
+
acorn@8.17.0: {}
+ agent-base@7.1.4: {}
+
ajv@8.20.0:
dependencies:
fast-deep-equal: 3.1.3
@@ -6401,14 +9896,46 @@ snapshots:
dependencies:
'@vue/reactivity': 3.1.5
+ anser@1.4.10: {}
+
+ ansi-fragments@0.2.1:
+ dependencies:
+ colorette: 1.4.0
+ slice-ansi: 2.1.0
+ strip-ansi: 5.2.0
+
+ ansi-regex@4.1.1: {}
+
+ ansi-regex@5.0.1: {}
+
ansi-regex@6.2.2: {}
+ ansi-styles@3.2.1:
+ dependencies:
+ color-convert: 1.9.3
+
+ ansi-styles@4.3.0:
+ dependencies:
+ color-convert: 2.0.1
+
+ ansi-styles@5.2.0: {}
+
ansi-styles@6.2.3: {}
+ appdirsjs@1.2.8: {}
+
+ argparse@2.0.1: {}
+
aria-query@5.3.1: {}
+ asap@2.0.6: {}
+
assertion-error@2.0.1: {}
+ astral-regex@1.0.0: {}
+
+ async-limiter@1.0.1: {}
+
axobject-query@4.1.0: {}
babel-plugin-jsx-dom-expressions@0.40.7(@babel/core@7.29.7(supports-color@10.2.2)):
@@ -6420,6 +9947,40 @@ snapshots:
html-entities: 2.3.3
parse5: 7.3.0
+ babel-plugin-polyfill-corejs2@0.4.17(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2):
+ dependencies:
+ '@babel/compat-data': 7.29.7
+ '@babel/core': 7.29.7(supports-color@10.2.2)
+ '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2)
+ semver: 6.3.1
+ transitivePeerDependencies:
+ - supports-color
+
+ babel-plugin-polyfill-corejs3@0.13.0(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2):
+ dependencies:
+ '@babel/core': 7.29.7(supports-color@10.2.2)
+ '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2)
+ core-js-compat: 3.49.0
+ transitivePeerDependencies:
+ - supports-color
+
+ babel-plugin-polyfill-regenerator@0.6.8(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2):
+ dependencies:
+ '@babel/core': 7.29.7(supports-color@10.2.2)
+ '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2)
+ transitivePeerDependencies:
+ - supports-color
+
+ babel-plugin-syntax-hermes-parser@0.36.0:
+ dependencies:
+ hermes-parser: 0.36.0
+
+ babel-plugin-transform-flow-enums@0.0.2(@babel/core@7.29.7(supports-color@10.2.2)):
+ dependencies:
+ '@babel/plugin-syntax-flow': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))
+ transitivePeerDependencies:
+ - '@babel/core'
+
babel-preset-solid@1.9.12(@babel/core@7.29.7(supports-color@10.2.2))(solid-js@1.9.14):
dependencies:
'@babel/core': 7.29.7(supports-color@10.2.2)
@@ -6427,6 +9988,8 @@ snapshots:
optionalDependencies:
solid-js: 1.9.14
+ base64-js@1.5.1: {}
+
baseline-browser-mapping@2.11.5: {}
bidi-js@1.0.3:
@@ -6435,8 +9998,37 @@ snapshots:
binary-search-bounds@2.0.5: {}
+ bl@4.1.0:
+ dependencies:
+ buffer: 5.7.1
+ inherits: 2.0.4
+ readable-stream: 3.6.2
+
blake3-wasm@2.1.5: {}
+ body-parser@1.20.6(supports-color@10.2.2):
+ dependencies:
+ bytes: 3.1.2
+ content-type: 1.0.5
+ debug: 2.6.9(supports-color@10.2.2)
+ depd: 2.0.0
+ destroy: 1.2.0
+ http-errors: 2.0.1
+ iconv-lite: 0.4.24
+ on-finished: 2.4.1
+ qs: 6.15.3
+ raw-body: 2.5.3
+ type-is: 1.6.18
+ unpipe: 1.0.0
+ transitivePeerDependencies:
+ - supports-color
+
+ boolbase@1.0.0: {}
+
+ braces@3.0.3:
+ dependencies:
+ fill-range: 7.1.1
+
browserslist@4.28.7:
dependencies:
baseline-browser-mapping: 2.11.5
@@ -6445,10 +10037,44 @@ snapshots:
node-releases: 2.0.51
update-browserslist-db: 1.2.3(browserslist@4.28.7)
+ bser@2.1.1:
+ dependencies:
+ node-int64: 0.4.0
+
+ buffer-from@1.1.2: {}
+
+ buffer@5.7.1:
+ dependencies:
+ base64-js: 1.5.1
+ ieee754: 1.2.1
+
+ bytes@3.1.2: {}
+
+ call-bind-apply-helpers@1.0.2:
+ dependencies:
+ es-errors: 1.3.0
+ function-bind: 1.1.2
+
+ call-bound@1.0.4:
+ dependencies:
+ call-bind-apply-helpers: 1.0.2
+ get-intrinsic: 1.3.0
+
+ callsites@3.1.0: {}
+
+ camelcase@5.3.1: {}
+
+ camelcase@6.3.0: {}
+
caniuse-lite@1.0.30001806: {}
chai@6.2.2: {}
+ chalk@4.1.2:
+ dependencies:
+ ansi-styles: 4.3.0
+ supports-color: 7.2.0
+
chalk@5.6.2: {}
chart.js@4.5.1:
@@ -6463,28 +10089,118 @@ snapshots:
dependencies:
readdirp: 5.0.0
+ chrome-launcher@0.15.2(supports-color@10.2.2):
+ dependencies:
+ '@types/node': 25.9.5
+ escape-string-regexp: 4.0.0
+ is-wsl: 2.2.0
+ lighthouse-logger: 1.4.2(supports-color@10.2.2)
+ transitivePeerDependencies:
+ - supports-color
+
+ chromium-edge-launcher@0.3.0(supports-color@10.2.2):
+ dependencies:
+ '@types/node': 25.9.5
+ escape-string-regexp: 4.0.0
+ is-wsl: 2.2.0
+ lighthouse-logger: 1.4.2(supports-color@10.2.2)
+ mkdirp: 1.0.4
+ transitivePeerDependencies:
+ - supports-color
+
+ ci-info@2.0.0: {}
+
+ ci-info@3.9.0: {}
+
+ cli-cursor@3.1.0:
+ dependencies:
+ restore-cursor: 3.1.0
+
cli-cursor@5.0.0:
dependencies:
restore-cursor: 5.1.0
+ cli-spinners@2.9.2: {}
+
cli-spinners@3.4.0: {}
+ cliui@6.0.0:
+ dependencies:
+ string-width: 4.2.3
+ strip-ansi: 6.0.1
+ wrap-ansi: 6.2.0
+
+ cliui@8.0.1:
+ dependencies:
+ string-width: 4.2.3
+ strip-ansi: 6.0.1
+ wrap-ansi: 7.0.0
+
cliui@9.0.1:
dependencies:
string-width: 7.2.0
strip-ansi: 7.2.0
wrap-ansi: 9.0.2
+ clone@1.0.4: {}
+
clsx@2.1.1: {}
+ color-convert@1.9.3:
+ dependencies:
+ color-name: 1.1.3
+
+ color-convert@2.0.1:
+ dependencies:
+ color-name: 1.1.4
+
+ color-name@1.1.3: {}
+
+ color-name@1.1.4: {}
+
+ colorette@1.4.0: {}
+
+ command-exists@1.2.9: {}
+
+ commander@12.1.0: {}
+
commander@14.0.3: {}
commander@2.20.3: {}
commander@7.2.0: {}
+ commander@9.5.0: {}
+
common-path-prefix@3.0.0: {}
+ compressible@2.0.18:
+ dependencies:
+ mime-db: 1.54.0
+
+ compression@1.8.1(supports-color@10.2.2):
+ dependencies:
+ bytes: 3.1.2
+ compressible: 2.0.18
+ debug: 2.6.9(supports-color@10.2.2)
+ negotiator: 0.6.4
+ on-headers: 1.1.0
+ safe-buffer: 5.2.1
+ vary: 1.1.2
+ transitivePeerDependencies:
+ - supports-color
+
+ connect@3.7.0(supports-color@10.2.2):
+ dependencies:
+ debug: 2.6.9(supports-color@10.2.2)
+ finalhandler: 1.1.2(supports-color@10.2.2)
+ parseurl: 1.3.3
+ utils-merge: 1.0.1
+ transitivePeerDependencies:
+ - supports-color
+
+ content-type@1.0.5: {}
+
convert-source-map@1.9.0: {}
convert-source-map@2.0.0: {}
@@ -6495,11 +10211,45 @@ snapshots:
dependencies:
is-what: 4.1.16
+ core-js-compat@3.49.0:
+ dependencies:
+ browserslist: 4.28.7
+
+ cosmiconfig@9.0.2(typescript@6.0.3):
+ dependencies:
+ env-paths: 2.2.1
+ import-fresh: 3.3.1
+ js-yaml: 4.3.0
+ parse-json: 5.2.0
+ optionalDependencies:
+ typescript: 6.0.3
+
+ cross-spawn@7.0.6:
+ dependencies:
+ path-key: 3.1.1
+ shebang-command: 2.0.0
+ which: 2.0.2
+
+ css-select@5.2.2:
+ dependencies:
+ boolbase: 1.0.0
+ css-what: 6.2.2
+ domhandler: 5.0.3
+ domutils: 3.2.2
+ nth-check: 2.1.1
+
+ css-tree@1.1.3:
+ dependencies:
+ mdn-data: 2.0.14
+ source-map: 0.6.1
+
css-tree@3.2.1:
dependencies:
mdn-data: 2.27.1
source-map-js: 1.2.1
+ css-what@6.2.2: {}
+
csstype@3.2.3: {}
d3-array@3.2.4:
@@ -6663,12 +10413,13 @@ snapshots:
transitivePeerDependencies:
- '@noble/hashes'
+ dayjs@1.11.21: {}
+
debug@2.6.9(supports-color@10.2.2):
dependencies:
ms: 2.0.0
optionalDependencies:
supports-color: 10.2.2
- optional: true
debug@3.2.7(supports-color@10.2.2):
dependencies:
@@ -6683,6 +10434,8 @@ snapshots:
optionalDependencies:
supports-color: 10.2.2
+ decamelize@1.2.0: {}
+
decimal.js-light@2.5.1: {}
decimal.js@10.6.0: {}
@@ -6691,40 +10444,107 @@ snapshots:
deepmerge@4.3.1: {}
+ defaults@1.0.4:
+ dependencies:
+ clone: 1.0.4
+
delaunator@5.1.0:
dependencies:
robust-predicates: 3.0.3
+ depd@2.0.0: {}
+
dependency-graph@1.0.0: {}
- detect-libc@2.1.2: {}
+ destroy@1.2.0: {}
+
+ detect-libc@2.1.2: {}
+
+ devalue@5.8.2: {}
+
+ dom-serializer@2.0.0:
+ dependencies:
+ domelementtype: 2.3.0
+ domhandler: 5.0.3
+ entities: 4.5.0
+
+ domelementtype@2.3.0: {}
+
+ domhandler@5.0.3:
+ dependencies:
+ domelementtype: 2.3.0
+
+ domutils@3.2.2:
+ dependencies:
+ dom-serializer: 2.0.0
+ domelementtype: 2.3.0
+ domhandler: 5.0.3
- devalue@5.8.2: {}
+ dunder-proto@1.0.1:
+ dependencies:
+ call-bind-apply-helpers: 1.0.2
+ es-errors: 1.3.0
+ gopd: 1.2.0
echarts@6.1.0:
dependencies:
tslib: 2.3.0
zrender: 6.1.0
+ ee-first@1.1.1: {}
+
electron-to-chromium@1.5.397: {}
emoji-regex@10.6.0: {}
+ emoji-regex@8.0.0: {}
+
+ encodeurl@1.0.2: {}
+
+ encodeurl@2.0.0: {}
+
+ entities@4.5.0: {}
+
entities@6.0.1: {}
entities@7.0.1: {}
entities@8.0.0: {}
+ env-paths@2.2.1: {}
+
+ envinfo@7.21.0: {}
+
errno@0.1.8:
dependencies:
prr: 1.0.1
optional: true
+ error-ex@1.3.4:
+ dependencies:
+ is-arrayish: 0.2.1
+
error-stack-parser-es@1.0.5: {}
+ error-stack-parser@2.1.4:
+ dependencies:
+ stackframe: 1.3.4
+
+ errorhandler@1.5.2:
+ dependencies:
+ accepts: 1.3.8
+ escape-html: 1.0.3
+
+ es-define-property@1.0.1: {}
+
+ es-errors@1.3.0: {}
+
es-module-lexer@2.3.1: {}
+ es-object-atoms@1.1.2:
+ dependencies:
+ es-errors: 1.3.0
+
es-toolkit@1.50.0: {}
esbuild@0.27.7:
@@ -6787,6 +10607,10 @@ snapshots:
escalade@3.2.0: {}
+ escape-html@1.0.3: {}
+
+ escape-string-regexp@4.0.0: {}
+
esm-env@1.2.2: {}
esrap@2.3.0:
@@ -6799,18 +10623,74 @@ snapshots:
dependencies:
'@types/estree': 1.0.9
+ etag@1.8.1: {}
+
+ event-target-shim@5.0.1: {}
+
eventemitter3@5.0.4: {}
+ execa@5.1.1:
+ dependencies:
+ cross-spawn: 7.0.6
+ get-stream: 6.0.1
+ human-signals: 2.1.0
+ is-stream: 2.0.1
+ merge-stream: 2.0.0
+ npm-run-path: 4.0.1
+ onetime: 5.1.2
+ signal-exit: 3.0.7
+ strip-final-newline: 2.0.0
+
expect-type@1.4.0: {}
+ exponential-backoff@3.1.3: {}
+
fast-deep-equal@3.1.3: {}
+ fast-glob@3.3.3:
+ dependencies:
+ '@nodelib/fs.stat': 2.0.5
+ '@nodelib/fs.walk': 1.2.8
+ glob-parent: 5.1.2
+ merge2: 1.4.1
+ micromatch: 4.0.8
+
fast-uri@3.1.4: {}
+ fast-xml-parser@4.5.7:
+ dependencies:
+ strnum: 1.1.2
+
+ fastq@1.20.1:
+ dependencies:
+ reusify: 1.1.0
+
+ fb-dotslash@0.5.8: {}
+
+ fb-watchman@2.0.2:
+ dependencies:
+ bser: 2.1.1
+
fdir@6.5.0(picomatch@4.0.5):
optionalDependencies:
picomatch: 4.0.5
+ fill-range@7.1.1:
+ dependencies:
+ to-regex-range: 5.0.1
+
+ finalhandler@1.1.2(supports-color@10.2.2):
+ dependencies:
+ debug: 2.6.9(supports-color@10.2.2)
+ encodeurl: 1.0.2
+ escape-html: 1.0.3
+ on-finished: 2.3.0
+ parseurl: 1.3.3
+ statuses: 1.5.0
+ unpipe: 1.0.0
+ transitivePeerDependencies:
+ - supports-color
+
find-cache-directory@6.0.0:
dependencies:
common-path-prefix: 3.0.0
@@ -6818,20 +10698,89 @@ snapshots:
find-up-simple@1.0.1: {}
+ find-up@4.1.0:
+ dependencies:
+ locate-path: 5.0.0
+ path-exists: 4.0.0
+
+ find-up@5.0.0:
+ dependencies:
+ locate-path: 6.0.0
+ path-exists: 4.0.0
+
+ flow-enums-runtime@0.0.6: {}
+
+ fresh@0.5.2: {}
+
+ fs-extra@8.1.0:
+ dependencies:
+ graceful-fs: 4.2.11
+ jsonfile: 4.0.0
+ universalify: 0.1.2
+
fsevents@2.3.2:
optional: true
fsevents@2.3.3:
optional: true
+ function-bind@1.1.2: {}
+
gensync@1.0.0-beta.2: {}
get-caller-file@2.0.5: {}
get-east-asian-width@1.6.0: {}
- graceful-fs@4.2.11:
- optional: true
+ get-intrinsic@1.3.0:
+ dependencies:
+ call-bind-apply-helpers: 1.0.2
+ es-define-property: 1.0.1
+ es-errors: 1.3.0
+ es-object-atoms: 1.1.2
+ function-bind: 1.1.2
+ get-proto: 1.0.1
+ gopd: 1.2.0
+ has-symbols: 1.1.0
+ hasown: 2.0.4
+ math-intrinsics: 1.1.0
+
+ get-proto@1.0.1:
+ dependencies:
+ dunder-proto: 1.0.1
+ es-object-atoms: 1.1.2
+
+ get-stream@6.0.1: {}
+
+ glob-parent@5.1.2:
+ dependencies:
+ is-glob: 4.0.3
+
+ gopd@1.2.0: {}
+
+ graceful-fs@4.2.11: {}
+
+ has-flag@4.0.0: {}
+
+ has-symbols@1.1.0: {}
+
+ hasown@2.0.4:
+ dependencies:
+ function-bind: 1.1.2
+
+ hermes-compiler@250829098.0.14: {}
+
+ hermes-estree@0.35.0: {}
+
+ hermes-estree@0.36.0: {}
+
+ hermes-parser@0.35.0:
+ dependencies:
+ hermes-estree: 0.35.0
+
+ hermes-parser@0.36.0:
+ dependencies:
+ hermes-estree: 0.36.0
html-encoding-sniffer@6.0.0(@noble/hashes@2.2.0):
dependencies:
@@ -6841,19 +10790,48 @@ snapshots:
html-entities@2.3.3: {}
+ http-errors@2.0.1:
+ dependencies:
+ depd: 2.0.0
+ inherits: 2.0.4
+ setprototypeof: 1.2.0
+ statuses: 2.0.2
+ toidentifier: 1.0.1
+
+ https-proxy-agent@7.0.6(supports-color@10.2.2):
+ dependencies:
+ agent-base: 7.1.4
+ debug: 4.4.3(supports-color@10.2.2)
+ transitivePeerDependencies:
+ - supports-color
+
+ human-signals@2.1.0: {}
+
iconv-lite@0.4.24:
dependencies:
safer-buffer: 2.1.2
- optional: true
iconv-lite@0.6.3:
dependencies:
safer-buffer: 2.1.2
+ ieee754@1.2.1: {}
+
+ image-size@1.2.1:
+ dependencies:
+ queue: 6.0.2
+
immer@11.1.15: {}
immutable@5.1.9: {}
+ import-fresh@3.3.1:
+ dependencies:
+ parent-module: 1.0.1
+ resolve-from: 4.0.0
+
+ inherits@2.0.4: {}
+
injection-js@2.6.1:
dependencies:
tslib: 2.8.1
@@ -6864,30 +10842,101 @@ snapshots:
dependencies:
binary-search-bounds: 2.0.5
- is-extglob@2.1.1:
- optional: true
+ invariant@2.2.4:
+ dependencies:
+ loose-envify: 1.4.0
+
+ is-arrayish@0.2.1: {}
+
+ is-core-module@2.16.2:
+ dependencies:
+ hasown: 2.0.4
+
+ is-docker@2.2.1: {}
+
+ is-extglob@2.1.1: {}
+
+ is-fullwidth-code-point@2.0.0: {}
+
+ is-fullwidth-code-point@3.0.0: {}
is-glob@4.0.3:
dependencies:
is-extglob: 2.1.1
- optional: true
+
+ is-interactive@1.0.0: {}
is-interactive@2.0.0: {}
+ is-number@7.0.0: {}
+
is-potential-custom-element-name@1.0.1: {}
is-reference@3.0.3:
dependencies:
'@types/estree': 1.0.9
+ is-stream@2.0.1: {}
+
+ is-unicode-supported@0.1.0: {}
+
is-unicode-supported@2.1.0: {}
is-what@4.1.16: {}
+ is-wsl@1.1.0: {}
+
+ is-wsl@2.2.0:
+ dependencies:
+ is-docker: 2.2.1
+
+ isexe@2.0.0: {}
+
isoformat@0.2.1: {}
+ jest-get-type@29.6.3: {}
+
+ jest-util@29.7.0:
+ dependencies:
+ '@jest/types': 29.6.3
+ '@types/node': 25.9.5
+ chalk: 4.1.2
+ ci-info: 3.9.0
+ graceful-fs: 4.2.11
+ picomatch: 2.3.2
+
+ jest-validate@29.7.0:
+ dependencies:
+ '@jest/types': 29.6.3
+ camelcase: 6.3.0
+ chalk: 4.1.2
+ jest-get-type: 29.6.3
+ leven: 3.1.0
+ pretty-format: 29.7.0
+
+ jest-worker@29.7.0:
+ dependencies:
+ '@types/node': 25.9.5
+ jest-util: 29.7.0
+ merge-stream: 2.0.0
+ supports-color: 8.1.1
+
+ joi@17.13.4:
+ dependencies:
+ '@hapi/hoek': 9.3.0
+ '@hapi/topo': 5.1.0
+ '@sideway/address': 4.1.5
+ '@sideway/formula': 3.0.1
+ '@sideway/pinpoint': 2.0.0
+
js-tokens@4.0.0: {}
+ js-yaml@4.3.0:
+ dependencies:
+ argparse: 2.0.1
+
+ jsc-safe-url@0.2.4: {}
+
jsdom@29.1.1(@noble/hashes@2.2.0):
dependencies:
'@asamuzakjp/css-color': 5.1.11
@@ -6916,14 +10965,27 @@ snapshots:
jsesc@3.1.0: {}
+ json-parse-even-better-errors@2.3.1: {}
+
json-schema-traverse@1.0.0: {}
json5@2.2.3: {}
jsonc-parser@3.3.1: {}
+ jsonfile@4.0.0:
+ optionalDependencies:
+ graceful-fs: 4.2.11
+
+ kleur@3.0.3: {}
+
kleur@4.1.5: {}
+ launch-editor@2.14.1:
+ dependencies:
+ picocolors: 1.1.1
+ shell-quote: 1.10.0
+
less@4.8.1(supports-color@10.2.2):
dependencies:
copy-anything: 3.0.5
@@ -6939,6 +11001,15 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ leven@3.1.0: {}
+
+ lighthouse-logger@1.4.2(supports-color@10.2.2):
+ dependencies:
+ debug: 2.6.9(supports-color@10.2.2)
+ marky: 1.3.0
+ transitivePeerDependencies:
+ - supports-color
+
lightningcss-android-arm64@1.33.0:
optional: true
@@ -6988,6 +11059,8 @@ snapshots:
lightningcss-win32-arm64-msvc: 1.33.0
lightningcss-win32-x64-msvc: 1.33.0
+ lines-and-columns@1.2.4: {}
+
lit-element@4.2.2:
dependencies:
'@lit-labs/ssr-dom-shim': 1.6.0
@@ -6998,43 +11071,282 @@ snapshots:
dependencies:
'@types/trusted-types': 2.0.7
- lit@3.3.3:
+ lit@3.3.3:
+ dependencies:
+ '@lit/reactive-element': 2.1.2
+ lit-element: 4.2.2
+ lit-html: 3.3.3
+
+ locate-character@3.0.0: {}
+
+ locate-path@5.0.0:
+ dependencies:
+ p-locate: 4.1.0
+
+ locate-path@6.0.0:
+ dependencies:
+ p-locate: 5.0.0
+
+ lodash.debounce@4.0.8: {}
+
+ lodash.merge@4.6.2:
+ optional: true
+
+ lodash.throttle@4.1.1: {}
+
+ log-symbols@4.1.0:
+ dependencies:
+ chalk: 4.1.2
+ is-unicode-supported: 0.1.0
+
+ log-symbols@7.0.1:
+ dependencies:
+ is-unicode-supported: 2.1.0
+ yoctocolors: 2.2.0
+
+ logkitty@0.7.1:
+ dependencies:
+ ansi-fragments: 0.2.1
+ dayjs: 1.11.21
+ yargs: 15.4.1
+
+ loose-envify@1.4.0:
+ dependencies:
+ js-tokens: 4.0.0
+
+ lru-cache@11.5.2: {}
+
+ lru-cache@5.1.1:
+ dependencies:
+ yallist: 3.1.1
+
+ magic-string@0.30.21:
+ dependencies:
+ '@jridgewell/sourcemap-codec': 1.5.5
+
+ make-dir@5.1.0:
+ optional: true
+
+ makeerror@1.0.12:
+ dependencies:
+ tmpl: 1.0.5
+
+ marky@1.3.0: {}
+
+ math-intrinsics@1.1.0: {}
+
+ mdn-data@2.0.14: {}
+
+ mdn-data@2.27.1: {}
+
+ media-typer@0.3.0: {}
+
+ memoize-one@5.2.1: {}
+
+ merge-anything@5.1.7:
+ dependencies:
+ is-what: 4.1.16
+
+ merge-stream@2.0.0: {}
+
+ merge2@1.4.1: {}
+
+ metro-babel-transformer@0.84.4(supports-color@10.2.2):
+ dependencies:
+ '@babel/core': 7.29.7(supports-color@10.2.2)
+ flow-enums-runtime: 0.0.6
+ hermes-parser: 0.35.0
+ metro-cache-key: 0.84.4
+ nullthrows: 1.1.1
+ transitivePeerDependencies:
+ - supports-color
+
+ metro-cache-key@0.84.4:
+ dependencies:
+ flow-enums-runtime: 0.0.6
+
+ metro-cache@0.84.4(supports-color@10.2.2):
+ dependencies:
+ exponential-backoff: 3.1.3
+ flow-enums-runtime: 0.0.6
+ https-proxy-agent: 7.0.6(supports-color@10.2.2)
+ metro-core: 0.84.4
+ transitivePeerDependencies:
+ - supports-color
+
+ metro-config@0.84.4(supports-color@10.2.2):
+ dependencies:
+ connect: 3.7.0(supports-color@10.2.2)
+ flow-enums-runtime: 0.0.6
+ jest-validate: 29.7.0
+ metro: 0.84.4(supports-color@10.2.2)
+ metro-cache: 0.84.4(supports-color@10.2.2)
+ metro-core: 0.84.4
+ metro-runtime: 0.84.4
+ yaml: 2.9.0
+ transitivePeerDependencies:
+ - bufferutil
+ - supports-color
+ - utf-8-validate
+
+ metro-core@0.84.4:
+ dependencies:
+ flow-enums-runtime: 0.0.6
+ lodash.throttle: 4.1.1
+ metro-resolver: 0.84.4
+
+ metro-file-map@0.84.4(supports-color@10.2.2):
+ dependencies:
+ debug: 4.4.3(supports-color@10.2.2)
+ fb-watchman: 2.0.2
+ flow-enums-runtime: 0.0.6
+ graceful-fs: 4.2.11
+ invariant: 2.2.4
+ jest-worker: 29.7.0
+ micromatch: 4.0.8
+ nullthrows: 1.1.1
+ walker: 1.0.8
+ transitivePeerDependencies:
+ - supports-color
+
+ metro-minify-terser@0.84.4:
+ dependencies:
+ flow-enums-runtime: 0.0.6
+ terser: 5.49.0
+
+ metro-resolver@0.84.4:
+ dependencies:
+ flow-enums-runtime: 0.0.6
+
+ metro-runtime@0.84.4:
+ dependencies:
+ '@babel/runtime': 7.29.7
+ flow-enums-runtime: 0.0.6
+
+ metro-source-map@0.84.4(supports-color@10.2.2):
+ dependencies:
+ '@babel/traverse': 7.29.7(supports-color@10.2.2)
+ '@babel/types': 7.29.7
+ flow-enums-runtime: 0.0.6
+ invariant: 2.2.4
+ metro-symbolicate: 0.84.4(supports-color@10.2.2)
+ nullthrows: 1.1.1
+ ob1: 0.84.4
+ source-map: 0.5.7
+ vlq: 1.0.1
+ transitivePeerDependencies:
+ - supports-color
+
+ metro-symbolicate@0.84.4(supports-color@10.2.2):
+ dependencies:
+ flow-enums-runtime: 0.0.6
+ invariant: 2.2.4
+ metro-source-map: 0.84.4(supports-color@10.2.2)
+ nullthrows: 1.1.1
+ source-map: 0.5.7
+ vlq: 1.0.1
+ transitivePeerDependencies:
+ - supports-color
+
+ metro-transform-plugins@0.84.4(supports-color@10.2.2):
+ dependencies:
+ '@babel/core': 7.29.7(supports-color@10.2.2)
+ '@babel/generator': 7.29.7
+ '@babel/template': 7.29.7
+ '@babel/traverse': 7.29.7(supports-color@10.2.2)
+ flow-enums-runtime: 0.0.6
+ nullthrows: 1.1.1
+ transitivePeerDependencies:
+ - supports-color
+
+ metro-transform-worker@0.84.4(supports-color@10.2.2):
+ dependencies:
+ '@babel/core': 7.29.7(supports-color@10.2.2)
+ '@babel/generator': 7.29.7
+ '@babel/parser': 7.29.7
+ '@babel/types': 7.29.7
+ flow-enums-runtime: 0.0.6
+ metro: 0.84.4(supports-color@10.2.2)
+ metro-babel-transformer: 0.84.4(supports-color@10.2.2)
+ metro-cache: 0.84.4(supports-color@10.2.2)
+ metro-cache-key: 0.84.4
+ metro-minify-terser: 0.84.4
+ metro-source-map: 0.84.4(supports-color@10.2.2)
+ metro-transform-plugins: 0.84.4(supports-color@10.2.2)
+ nullthrows: 1.1.1
+ transitivePeerDependencies:
+ - bufferutil
+ - supports-color
+ - utf-8-validate
+
+ metro@0.84.4(supports-color@10.2.2):
dependencies:
- '@lit/reactive-element': 2.1.2
- lit-element: 4.2.2
- lit-html: 3.3.3
-
- locate-character@3.0.0: {}
-
- lodash.merge@4.6.2:
- optional: true
+ '@babel/code-frame': 7.29.7
+ '@babel/core': 7.29.7(supports-color@10.2.2)
+ '@babel/generator': 7.29.7
+ '@babel/parser': 7.29.7
+ '@babel/template': 7.29.7
+ '@babel/traverse': 7.29.7(supports-color@10.2.2)
+ '@babel/types': 7.29.7
+ accepts: 2.0.0
+ ci-info: 2.0.0
+ connect: 3.7.0(supports-color@10.2.2)
+ debug: 4.4.3(supports-color@10.2.2)
+ error-stack-parser: 2.1.4
+ flow-enums-runtime: 0.0.6
+ graceful-fs: 4.2.11
+ hermes-parser: 0.35.0
+ image-size: 1.2.1
+ invariant: 2.2.4
+ jest-worker: 29.7.0
+ jsc-safe-url: 0.2.4
+ lodash.throttle: 4.1.1
+ metro-babel-transformer: 0.84.4(supports-color@10.2.2)
+ metro-cache: 0.84.4(supports-color@10.2.2)
+ metro-cache-key: 0.84.4
+ metro-config: 0.84.4(supports-color@10.2.2)
+ metro-core: 0.84.4
+ metro-file-map: 0.84.4(supports-color@10.2.2)
+ metro-resolver: 0.84.4
+ metro-runtime: 0.84.4
+ metro-source-map: 0.84.4(supports-color@10.2.2)
+ metro-symbolicate: 0.84.4(supports-color@10.2.2)
+ metro-transform-plugins: 0.84.4(supports-color@10.2.2)
+ metro-transform-worker: 0.84.4(supports-color@10.2.2)
+ mime-types: 3.0.2
+ nullthrows: 1.1.1
+ serialize-error: 2.1.0
+ source-map: 0.5.7
+ throat: 5.0.0
+ ws: 7.5.13
+ yargs: 17.7.3
+ transitivePeerDependencies:
+ - bufferutil
+ - supports-color
+ - utf-8-validate
- log-symbols@7.0.1:
+ micromatch@4.0.8:
dependencies:
- is-unicode-supported: 2.1.0
- yoctocolors: 2.2.0
+ braces: 3.0.3
+ picomatch: 2.3.2
- lru-cache@11.5.2: {}
+ mime-db@1.52.0: {}
- lru-cache@5.1.1:
- dependencies:
- yallist: 3.1.1
+ mime-db@1.54.0: {}
- magic-string@0.30.21:
+ mime-types@2.1.35:
dependencies:
- '@jridgewell/sourcemap-codec': 1.5.5
+ mime-db: 1.52.0
- make-dir@5.1.0:
- optional: true
+ mime-types@3.0.2:
+ dependencies:
+ mime-db: 1.54.0
- mdn-data@2.27.1: {}
+ mime@1.6.0: {}
- merge-anything@5.1.7:
- dependencies:
- is-what: 4.1.16
+ mime@2.6.0: {}
- mime@1.6.0:
- optional: true
+ mimic-fn@2.1.0: {}
mimic-function@5.0.1: {}
@@ -7050,10 +11362,11 @@ snapshots:
- bufferutil
- utf-8-validate
+ mkdirp@1.0.4: {}
+
mri@1.2.0: {}
- ms@2.0.0:
- optional: true
+ ms@2.0.0: {}
ms@2.1.3: {}
@@ -7074,6 +11387,12 @@ snapshots:
sax: 1.6.1
optional: true
+ negotiator@0.6.3: {}
+
+ negotiator@0.6.4: {}
+
+ negotiator@1.0.0: {}
+
ng-packagr@22.0.2(@angular/compiler-cli@22.0.8(@angular/compiler@22.0.8)(supports-color@10.2.2)(typescript@6.0.3))(supports-color@10.2.2)(tslib@2.8.1)(typescript@6.0.3):
dependencies:
'@ampproject/remapping': 2.3.0
@@ -7104,14 +11423,36 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ nocache@3.0.4: {}
+
node-addon-api@7.1.1:
optional: true
+ node-int64@0.4.0: {}
+
node-releases@2.0.51: {}
+ node-stream-zip@1.16.0: {}
+
+ npm-run-path@4.0.1:
+ dependencies:
+ path-key: 3.1.1
+
+ nth-check@2.1.1:
+ dependencies:
+ boolbase: 1.0.0
+
+ nullthrows@1.1.1: {}
+
+ ob1@0.84.4:
+ dependencies:
+ flow-enums-runtime: 0.0.6
+
+ object-inspect@1.13.4: {}
+
obug@2.1.4: {}
- octane@0.1.13(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(vite@8.1.5(@types/node@25.9.5)(esbuild@0.27.7)(less@4.8.1(supports-color@10.2.2))(sass@1.102.0)):
+ octane@0.1.13(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(vite@8.1.5(@types/node@25.9.5)(esbuild@0.27.7)(less@4.8.1(supports-color@10.2.2))(sass@1.102.0)(terser@5.49.0)(yaml@2.9.0)):
dependencies:
'@tsrx/core': 0.1.48
'@types/react': 19.2.17
@@ -7120,11 +11461,11 @@ snapshots:
optionalDependencies:
react: 19.2.3
react-dom: 19.2.3(react@19.2.3)
- vite: 8.1.5(@types/node@25.9.5)(esbuild@0.27.7)(less@4.8.1(supports-color@10.2.2))(sass@1.102.0)
+ vite: 8.1.5(@types/node@25.9.5)(esbuild@0.27.7)(less@4.8.1(supports-color@10.2.2))(sass@1.102.0)(terser@5.49.0)(yaml@2.9.0)
transitivePeerDependencies:
- '@typescript-eslint/types'
- octane@0.1.13(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(vite@8.1.5(@types/node@25.9.5)(esbuild@0.28.1)(less@4.8.1(supports-color@10.2.2))(sass@1.102.0)):
+ octane@0.1.13(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(vite@8.1.5(@types/node@25.9.5)(esbuild@0.28.1)(less@4.8.1(supports-color@10.2.2))(sass@1.102.0)(terser@5.49.0)(yaml@2.9.0)):
dependencies:
'@tsrx/core': 0.1.48
'@types/react': 19.2.17
@@ -7133,14 +11474,49 @@ snapshots:
optionalDependencies:
react: 19.2.3
react-dom: 19.2.3(react@19.2.3)
- vite: 8.1.5(@types/node@25.9.5)(esbuild@0.28.1)(less@4.8.1(supports-color@10.2.2))(sass@1.102.0)
+ vite: 8.1.5(@types/node@25.9.5)(esbuild@0.28.1)(less@4.8.1(supports-color@10.2.2))(sass@1.102.0)(terser@5.49.0)(yaml@2.9.0)
transitivePeerDependencies:
- '@typescript-eslint/types'
+ on-finished@2.3.0:
+ dependencies:
+ ee-first: 1.1.1
+
+ on-finished@2.4.1:
+ dependencies:
+ ee-first: 1.1.1
+
+ on-headers@1.1.0: {}
+
+ onetime@5.1.2:
+ dependencies:
+ mimic-fn: 2.1.0
+
onetime@7.0.0:
dependencies:
mimic-function: 5.0.1
+ open@6.4.0:
+ dependencies:
+ is-wsl: 1.1.0
+
+ open@7.4.2:
+ dependencies:
+ is-docker: 2.2.1
+ is-wsl: 2.2.0
+
+ ora@5.4.1:
+ dependencies:
+ bl: 4.1.0
+ chalk: 4.1.2
+ cli-cursor: 3.1.0
+ cli-spinners: 2.9.2
+ is-interactive: 1.0.0
+ is-unicode-supported: 0.1.0
+ log-symbols: 4.1.0
+ strip-ansi: 6.0.1
+ wcwidth: 1.0.1
+
ora@9.4.1:
dependencies:
chalk: 5.6.2
@@ -7152,6 +11528,35 @@ snapshots:
stdin-discarder: 0.3.2
string-width: 8.2.2
+ p-limit@2.3.0:
+ dependencies:
+ p-try: 2.2.0
+
+ p-limit@3.1.0:
+ dependencies:
+ yocto-queue: 0.1.0
+
+ p-locate@4.1.0:
+ dependencies:
+ p-limit: 2.3.0
+
+ p-locate@5.0.0:
+ dependencies:
+ p-limit: 3.1.0
+
+ p-try@2.2.0: {}
+
+ parent-module@1.0.1:
+ dependencies:
+ callsites: 3.1.0
+
+ parse-json@5.2.0:
+ dependencies:
+ '@babel/code-frame': 7.29.7
+ error-ex: 1.3.4
+ json-parse-even-better-errors: 2.3.1
+ lines-and-columns: 1.2.4
+
parse-node-version@1.0.1: {}
parse5@7.3.0:
@@ -7162,12 +11567,22 @@ snapshots:
dependencies:
entities: 8.0.0
+ parseurl@1.3.3: {}
+
+ path-exists@4.0.0: {}
+
+ path-key@3.1.1: {}
+
+ path-parse@1.0.7: {}
+
path-to-regexp@6.3.0: {}
pathe@2.0.3: {}
picocolors@1.1.1: {}
+ picomatch@2.3.2: {}
+
picomatch@4.0.5: {}
piscina@5.3.0:
@@ -7202,6 +11617,12 @@ snapshots:
prettier@3.9.6: {}
+ pretty-format@29.7.0:
+ dependencies:
+ '@jest/schemas': 29.6.3
+ ansi-styles: 5.2.0
+ react-is: 18.3.1
+
probe-image-size@7.3.0(supports-color@10.2.2):
dependencies:
lodash.merge: 4.6.2
@@ -7211,18 +11632,109 @@ snapshots:
- supports-color
optional: true
+ promise@8.3.0:
+ dependencies:
+ asap: 2.0.6
+
+ prompts@2.4.2:
+ dependencies:
+ kleur: 3.0.3
+ sisteransi: 1.0.5
+
prr@1.0.1:
optional: true
punycode@2.3.1: {}
+ qs@6.15.3:
+ dependencies:
+ es-define-property: 1.0.1
+ side-channel: 1.1.1
+
+ queue-microtask@1.2.3: {}
+
+ queue@6.0.2:
+ dependencies:
+ inherits: 2.0.4
+
+ range-parser@1.2.1: {}
+
+ raw-body@2.5.3:
+ dependencies:
+ bytes: 3.1.2
+ http-errors: 2.0.1
+ iconv-lite: 0.4.24
+ unpipe: 1.0.0
+
+ react-devtools-core@6.1.5:
+ dependencies:
+ shell-quote: 1.10.0
+ ws: 7.5.13
+ transitivePeerDependencies:
+ - bufferutil
+ - utf-8-validate
+
react-dom@19.2.3(react@19.2.3):
dependencies:
react: 19.2.3
scheduler: 0.27.0
+ react-is@18.3.1: {}
+
react-is@19.2.8: {}
+ react-native-svg@15.15.5(react-native@0.86.0(@babel/core@7.29.7(supports-color@10.2.2))(@react-native-community/cli@20.1.0(supports-color@10.2.2)(typescript@6.0.3))(@react-native/metro-config@0.86.0(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(@types/react@19.2.17)(react@19.2.3)(supports-color@10.2.2))(react@19.2.3):
+ dependencies:
+ css-select: 5.2.2
+ css-tree: 1.1.3
+ react: 19.2.3
+ react-native: 0.86.0(@babel/core@7.29.7(supports-color@10.2.2))(@react-native-community/cli@20.1.0(supports-color@10.2.2)(typescript@6.0.3))(@react-native/metro-config@0.86.0(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(@types/react@19.2.17)(react@19.2.3)(supports-color@10.2.2)
+
+ react-native@0.86.0(@babel/core@7.29.7(supports-color@10.2.2))(@react-native-community/cli@20.1.0(supports-color@10.2.2)(typescript@6.0.3))(@react-native/metro-config@0.86.0(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(@types/react@19.2.17)(react@19.2.3)(supports-color@10.2.2):
+ dependencies:
+ '@react-native/assets-registry': 0.86.0
+ '@react-native/codegen': 0.86.0(@babel/core@7.29.7(supports-color@10.2.2))
+ '@react-native/community-cli-plugin': 0.86.0(@react-native-community/cli@20.1.0(supports-color@10.2.2)(typescript@6.0.3))(@react-native/metro-config@0.86.0(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(supports-color@10.2.2)
+ '@react-native/gradle-plugin': 0.86.0
+ '@react-native/js-polyfills': 0.86.0
+ '@react-native/normalize-colors': 0.86.0
+ '@react-native/virtualized-lists': 0.86.0(@types/react@19.2.17)(react-native@0.86.0(@babel/core@7.29.7(supports-color@10.2.2))(@react-native-community/cli@20.1.0(supports-color@10.2.2)(typescript@6.0.3))(@react-native/metro-config@0.86.0(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(@types/react@19.2.17)(react@19.2.3)(supports-color@10.2.2))(react@19.2.3)
+ abort-controller: 3.0.0
+ anser: 1.4.10
+ ansi-regex: 5.0.1
+ babel-plugin-syntax-hermes-parser: 0.36.0
+ base64-js: 1.5.1
+ commander: 12.1.0
+ flow-enums-runtime: 0.0.6
+ hermes-compiler: 250829098.0.14
+ invariant: 2.2.4
+ memoize-one: 5.2.1
+ metro-runtime: 0.84.4
+ metro-source-map: 0.84.4(supports-color@10.2.2)
+ nullthrows: 1.1.1
+ pretty-format: 29.7.0
+ promise: 8.3.0
+ react: 19.2.3
+ react-devtools-core: 6.1.5
+ react-refresh: 0.14.2
+ regenerator-runtime: 0.13.11
+ scheduler: 0.27.0
+ semver: 7.8.5
+ stacktrace-parser: 0.1.11
+ tinyglobby: 0.2.17
+ whatwg-fetch: 3.6.20
+ ws: 7.5.13
+ yargs: 17.7.3
+ optionalDependencies:
+ '@types/react': 19.2.17
+ transitivePeerDependencies:
+ - '@babel/core'
+ - '@react-native-community/cli'
+ - '@react-native/metro-config'
+ - bufferutil
+ - supports-color
+ - utf-8-validate
+
react-redux@9.3.0(@types/react@19.2.17)(react@19.2.3)(redux@5.0.1):
dependencies:
'@types/use-sync-external-store': 0.0.6
@@ -7232,8 +11744,16 @@ snapshots:
'@types/react': 19.2.17
redux: 5.0.1
+ react-refresh@0.14.2: {}
+
react@19.2.3: {}
+ readable-stream@3.6.2:
+ dependencies:
+ inherits: 2.0.4
+ string_decoder: 1.3.0
+ util-deprecate: 1.0.2
+
readdirp@4.1.2: {}
readdirp@5.0.0: {}
@@ -7266,15 +11786,58 @@ snapshots:
reflect-metadata@0.2.2: {}
+ regenerate-unicode-properties@10.2.2:
+ dependencies:
+ regenerate: 1.4.2
+
+ regenerate@1.4.2: {}
+
+ regenerator-runtime@0.13.11: {}
+
+ regexpu-core@6.4.0:
+ dependencies:
+ regenerate: 1.4.2
+ regenerate-unicode-properties: 10.2.2
+ regjsgen: 0.8.0
+ regjsparser: 0.13.2
+ unicode-match-property-ecmascript: 2.0.0
+ unicode-match-property-value-ecmascript: 2.2.1
+
+ regjsgen@0.8.0: {}
+
+ regjsparser@0.13.2:
+ dependencies:
+ jsesc: 3.1.0
+
+ require-directory@2.1.1: {}
+
require-from-string@2.0.2: {}
+ require-main-filename@2.0.0: {}
+
reselect@5.2.0: {}
+ resolve-from@4.0.0: {}
+
+ resolve@1.22.12:
+ dependencies:
+ es-errors: 1.3.0
+ is-core-module: 2.16.2
+ path-parse: 1.0.7
+ supports-preserve-symlinks-flag: 1.0.0
+
+ restore-cursor@3.1.0:
+ dependencies:
+ onetime: 5.1.2
+ signal-exit: 3.0.7
+
restore-cursor@5.1.0:
dependencies:
onetime: 7.0.0
signal-exit: 4.1.0
+ reusify@1.1.0: {}
+
robust-predicates@3.0.3: {}
rolldown@1.1.5:
@@ -7340,6 +11903,10 @@ snapshots:
'@rollup/rollup-win32-x64-msvc': 4.62.3
fsevents: 2.3.3
+ run-parallel@1.2.0:
+ dependencies:
+ queue-microtask: 1.2.3
+
rw@1.3.3: {}
rxjs@7.8.2:
@@ -7350,6 +11917,8 @@ snapshots:
dependencies:
mri: 1.2.0
+ safe-buffer@5.2.1: {}
+
safer-buffer@2.1.2: {}
sass@1.102.0:
@@ -7375,12 +11944,45 @@ snapshots:
semver@7.8.5: {}
+ send@0.19.2(supports-color@10.2.2):
+ dependencies:
+ debug: 2.6.9(supports-color@10.2.2)
+ depd: 2.0.0
+ destroy: 1.2.0
+ encodeurl: 2.0.0
+ escape-html: 1.0.3
+ etag: 1.8.1
+ fresh: 0.5.2
+ http-errors: 2.0.1
+ mime: 1.6.0
+ ms: 2.1.3
+ on-finished: 2.4.1
+ range-parser: 1.2.1
+ statuses: 2.0.2
+ transitivePeerDependencies:
+ - supports-color
+
+ serialize-error@2.1.0: {}
+
seroval-plugins@1.5.6(seroval@1.5.6):
dependencies:
seroval: 1.5.6
seroval@1.5.6: {}
+ serve-static@1.16.3(supports-color@10.2.2):
+ dependencies:
+ encodeurl: 2.0.0
+ escape-html: 1.0.3
+ parseurl: 1.3.3
+ send: 0.19.2(supports-color@10.2.2)
+ transitivePeerDependencies:
+ - supports-color
+
+ set-blocking@2.0.0: {}
+
+ setprototypeof@1.2.0: {}
+
sharp@0.34.5:
dependencies:
'@img/colour': 1.1.0
@@ -7412,10 +12014,56 @@ snapshots:
'@img/sharp-win32-ia32': 0.34.5
'@img/sharp-win32-x64': 0.34.5
+ shebang-command@2.0.0:
+ dependencies:
+ shebang-regex: 3.0.0
+
+ shebang-regex@3.0.0: {}
+
+ shell-quote@1.10.0: {}
+
+ side-channel-list@1.0.1:
+ dependencies:
+ es-errors: 1.3.0
+ object-inspect: 1.13.4
+
+ side-channel-map@1.0.1:
+ dependencies:
+ call-bound: 1.0.4
+ es-errors: 1.3.0
+ get-intrinsic: 1.3.0
+ object-inspect: 1.13.4
+
+ side-channel-weakmap@1.0.2:
+ dependencies:
+ call-bound: 1.0.4
+ es-errors: 1.3.0
+ get-intrinsic: 1.3.0
+ object-inspect: 1.13.4
+ side-channel-map: 1.0.1
+
+ side-channel@1.1.1:
+ dependencies:
+ es-errors: 1.3.0
+ object-inspect: 1.13.4
+ side-channel-list: 1.0.1
+ side-channel-map: 1.0.1
+ side-channel-weakmap: 1.0.2
+
siginfo@2.0.0: {}
+ signal-exit@3.0.7: {}
+
signal-exit@4.1.0: {}
+ sisteransi@1.0.5: {}
+
+ slice-ansi@2.1.0:
+ dependencies:
+ ansi-styles: 3.2.1
+ astral-regex: 1.0.0
+ is-fullwidth-code-point: 2.0.0
+
solid-js@1.9.14:
dependencies:
csstype: 3.2.3
@@ -7433,11 +12081,27 @@ snapshots:
source-map-js@1.2.1: {}
- source-map@0.6.1:
- optional: true
+ source-map-support@0.5.21:
+ dependencies:
+ buffer-from: 1.1.2
+ source-map: 0.6.1
+
+ source-map@0.5.7: {}
+
+ source-map@0.6.1: {}
stackback@0.0.2: {}
+ stackframe@1.3.4: {}
+
+ stacktrace-parser@0.1.11:
+ dependencies:
+ type-fest: 0.7.1
+
+ statuses@1.5.0: {}
+
+ statuses@2.0.2: {}
+
std-env@4.2.0: {}
stdin-discarder@0.3.2: {}
@@ -7449,6 +12113,12 @@ snapshots:
- supports-color
optional: true
+ string-width@4.2.3:
+ dependencies:
+ emoji-regex: 8.0.0
+ is-fullwidth-code-point: 3.0.0
+ strip-ansi: 6.0.1
+
string-width@7.2.0:
dependencies:
emoji-regex: 10.6.0
@@ -7460,12 +12130,38 @@ snapshots:
get-east-asian-width: 1.6.0
strip-ansi: 7.2.0
+ string_decoder@1.3.0:
+ dependencies:
+ safe-buffer: 5.2.1
+
+ strip-ansi@5.2.0:
+ dependencies:
+ ansi-regex: 4.1.1
+
+ strip-ansi@6.0.1:
+ dependencies:
+ ansi-regex: 5.0.1
+
strip-ansi@7.2.0:
dependencies:
ansi-regex: 6.2.2
+ strip-final-newline@2.0.0: {}
+
+ strnum@1.1.2: {}
+
supports-color@10.2.2: {}
+ supports-color@7.2.0:
+ dependencies:
+ has-flag: 4.0.0
+
+ supports-color@8.1.1:
+ dependencies:
+ has-flag: 4.0.0
+
+ supports-preserve-symlinks-flag@1.0.0: {}
+
svelte-check@4.7.4(picomatch@4.0.5)(svelte@5.56.8)(typescript@6.0.3):
dependencies:
'@jridgewell/trace-mapping': 0.3.31
@@ -7509,6 +12205,15 @@ snapshots:
symbol-tree@3.2.4: {}
+ terser@5.49.0:
+ dependencies:
+ '@jridgewell/source-map': 0.3.11
+ acorn: 8.17.0
+ commander: 2.20.3
+ source-map-support: 0.5.21
+
+ throat@5.0.0: {}
+
tiny-invariant@1.3.3: {}
tinybench@2.9.0: {}
@@ -7528,6 +12233,14 @@ snapshots:
dependencies:
tldts-core: 7.4.9
+ tmpl@1.0.5: {}
+
+ to-regex-range@5.0.1:
+ dependencies:
+ is-number: 7.0.0
+
+ toidentifier@1.0.1: {}
+
topojson-client@3.1.0:
dependencies:
commander: 2.20.3
@@ -7544,6 +12257,13 @@ snapshots:
tslib@2.8.1: {}
+ type-fest@0.7.1: {}
+
+ type-is@1.6.18:
+ dependencies:
+ media-typer: 0.3.0
+ mime-types: 2.1.35
+
typescript@6.0.3: {}
undici-types@7.24.6: {}
@@ -7556,6 +12276,21 @@ snapshots:
dependencies:
pathe: 2.0.3
+ unicode-canonical-property-names-ecmascript@2.0.1: {}
+
+ unicode-match-property-ecmascript@2.0.0:
+ dependencies:
+ unicode-canonical-property-names-ecmascript: 2.0.1
+ unicode-property-aliases-ecmascript: 2.2.0
+
+ unicode-match-property-value-ecmascript@2.2.1: {}
+
+ unicode-property-aliases-ecmascript@2.2.0: {}
+
+ universalify@0.1.2: {}
+
+ unpipe@1.0.0: {}
+
update-browserslist-db@1.2.3(browserslist@4.28.7):
dependencies:
browserslist: 4.28.7
@@ -7568,6 +12303,12 @@ snapshots:
dependencies:
react: 19.2.3
+ util-deprecate@1.0.2: {}
+
+ utils-merge@1.0.1: {}
+
+ vary@1.1.2: {}
+
victory-vendor@37.3.6:
dependencies:
'@types/d3-array': 3.2.2
@@ -7585,7 +12326,7 @@ snapshots:
d3-time: 3.1.0
d3-timer: 3.0.1
- vite-plugin-solid@2.11.14(solid-js@1.9.14)(supports-color@10.2.2)(vite@8.1.5(@types/node@25.9.5)(esbuild@0.27.7)(less@4.8.1(supports-color@10.2.2))(sass@1.102.0)):
+ vite-plugin-solid@2.11.14(solid-js@1.9.14)(supports-color@10.2.2)(vite@8.1.5(@types/node@25.9.5)(esbuild@0.27.7)(less@4.8.1(supports-color@10.2.2))(sass@1.102.0)(terser@5.49.0)(yaml@2.9.0)):
dependencies:
'@babel/core': 7.29.7(supports-color@10.2.2)
'@types/babel__core': 7.20.5
@@ -7593,12 +12334,12 @@ snapshots:
merge-anything: 5.1.7
solid-js: 1.9.14
solid-refresh: 0.6.3(solid-js@1.9.14)(supports-color@10.2.2)
- vite: 8.1.5(@types/node@25.9.5)(esbuild@0.27.7)(less@4.8.1(supports-color@10.2.2))(sass@1.102.0)
- vitefu: 1.1.3(vite@8.1.5(@types/node@25.9.5)(esbuild@0.27.7)(less@4.8.1(supports-color@10.2.2))(sass@1.102.0))
+ vite: 8.1.5(@types/node@25.9.5)(esbuild@0.27.7)(less@4.8.1(supports-color@10.2.2))(sass@1.102.0)(terser@5.49.0)(yaml@2.9.0)
+ vitefu: 1.1.3(vite@8.1.5(@types/node@25.9.5)(esbuild@0.27.7)(less@4.8.1(supports-color@10.2.2))(sass@1.102.0)(terser@5.49.0)(yaml@2.9.0))
transitivePeerDependencies:
- supports-color
- vite-plugin-solid@2.11.14(solid-js@1.9.14)(supports-color@10.2.2)(vite@8.1.5(@types/node@25.9.5)(esbuild@0.28.1)(less@4.8.1(supports-color@10.2.2))(sass@1.102.0)):
+ vite-plugin-solid@2.11.14(solid-js@1.9.14)(supports-color@10.2.2)(vite@8.1.5(@types/node@25.9.5)(esbuild@0.28.1)(less@4.8.1(supports-color@10.2.2))(sass@1.102.0)(terser@5.49.0)(yaml@2.9.0)):
dependencies:
'@babel/core': 7.29.7(supports-color@10.2.2)
'@types/babel__core': 7.20.5
@@ -7606,12 +12347,12 @@ snapshots:
merge-anything: 5.1.7
solid-js: 1.9.14
solid-refresh: 0.6.3(solid-js@1.9.14)(supports-color@10.2.2)
- vite: 8.1.5(@types/node@25.9.5)(esbuild@0.28.1)(less@4.8.1(supports-color@10.2.2))(sass@1.102.0)
- vitefu: 1.1.3(vite@8.1.5(@types/node@25.9.5)(esbuild@0.28.1)(less@4.8.1(supports-color@10.2.2))(sass@1.102.0))
+ vite: 8.1.5(@types/node@25.9.5)(esbuild@0.28.1)(less@4.8.1(supports-color@10.2.2))(sass@1.102.0)(terser@5.49.0)(yaml@2.9.0)
+ vitefu: 1.1.3(vite@8.1.5(@types/node@25.9.5)(esbuild@0.28.1)(less@4.8.1(supports-color@10.2.2))(sass@1.102.0)(terser@5.49.0)(yaml@2.9.0))
transitivePeerDependencies:
- supports-color
- vite@8.1.5(@types/node@25.9.5)(esbuild@0.27.7)(less@4.8.1(supports-color@10.2.2))(sass@1.102.0):
+ vite@8.1.5(@types/node@25.9.5)(esbuild@0.27.7)(less@4.8.1(supports-color@10.2.2))(sass@1.102.0)(terser@5.49.0)(yaml@2.9.0):
dependencies:
lightningcss: 1.33.0
picomatch: 4.0.5
@@ -7624,8 +12365,10 @@ snapshots:
fsevents: 2.3.3
less: 4.8.1(supports-color@10.2.2)
sass: 1.102.0
+ terser: 5.49.0
+ yaml: 2.9.0
- vite@8.1.5(@types/node@25.9.5)(esbuild@0.28.1)(less@4.8.1(supports-color@10.2.2))(sass@1.102.0):
+ vite@8.1.5(@types/node@25.9.5)(esbuild@0.28.1)(less@4.8.1(supports-color@10.2.2))(sass@1.102.0)(terser@5.49.0)(yaml@2.9.0):
dependencies:
lightningcss: 1.33.0
picomatch: 4.0.5
@@ -7638,19 +12381,21 @@ snapshots:
fsevents: 2.3.3
less: 4.8.1(supports-color@10.2.2)
sass: 1.102.0
+ terser: 5.49.0
+ yaml: 2.9.0
- vitefu@1.1.3(vite@8.1.5(@types/node@25.9.5)(esbuild@0.27.7)(less@4.8.1(supports-color@10.2.2))(sass@1.102.0)):
+ vitefu@1.1.3(vite@8.1.5(@types/node@25.9.5)(esbuild@0.27.7)(less@4.8.1(supports-color@10.2.2))(sass@1.102.0)(terser@5.49.0)(yaml@2.9.0)):
optionalDependencies:
- vite: 8.1.5(@types/node@25.9.5)(esbuild@0.27.7)(less@4.8.1(supports-color@10.2.2))(sass@1.102.0)
+ vite: 8.1.5(@types/node@25.9.5)(esbuild@0.27.7)(less@4.8.1(supports-color@10.2.2))(sass@1.102.0)(terser@5.49.0)(yaml@2.9.0)
- vitefu@1.1.3(vite@8.1.5(@types/node@25.9.5)(esbuild@0.28.1)(less@4.8.1(supports-color@10.2.2))(sass@1.102.0)):
+ vitefu@1.1.3(vite@8.1.5(@types/node@25.9.5)(esbuild@0.28.1)(less@4.8.1(supports-color@10.2.2))(sass@1.102.0)(terser@5.49.0)(yaml@2.9.0)):
optionalDependencies:
- vite: 8.1.5(@types/node@25.9.5)(esbuild@0.28.1)(less@4.8.1(supports-color@10.2.2))(sass@1.102.0)
+ vite: 8.1.5(@types/node@25.9.5)(esbuild@0.28.1)(less@4.8.1(supports-color@10.2.2))(sass@1.102.0)(terser@5.49.0)(yaml@2.9.0)
- vitest@4.1.10(@types/node@25.9.5)(jsdom@29.1.1(@noble/hashes@2.2.0))(vite@8.1.5(@types/node@25.9.5)(esbuild@0.27.7)(less@4.8.1(supports-color@10.2.2))(sass@1.102.0)):
+ vitest@4.1.10(@types/node@25.9.5)(jsdom@29.1.1(@noble/hashes@2.2.0))(vite@8.1.5(@types/node@25.9.5)(esbuild@0.27.7)(less@4.8.1(supports-color@10.2.2))(sass@1.102.0)(terser@5.49.0)(yaml@2.9.0)):
dependencies:
'@vitest/expect': 4.1.10
- '@vitest/mocker': 4.1.10(vite@8.1.5(@types/node@25.9.5)(esbuild@0.27.7)(less@4.8.1(supports-color@10.2.2))(sass@1.102.0))
+ '@vitest/mocker': 4.1.10(vite@8.1.5(@types/node@25.9.5)(esbuild@0.27.7)(less@4.8.1(supports-color@10.2.2))(sass@1.102.0)(terser@5.49.0)(yaml@2.9.0))
'@vitest/pretty-format': 4.1.10
'@vitest/runner': 4.1.10
'@vitest/snapshot': 4.1.10
@@ -7667,7 +12412,7 @@ snapshots:
tinyexec: 1.2.4
tinyglobby: 0.2.17
tinyrainbow: 3.1.0
- vite: 8.1.5(@types/node@25.9.5)(esbuild@0.27.7)(less@4.8.1(supports-color@10.2.2))(sass@1.102.0)
+ vite: 8.1.5(@types/node@25.9.5)(esbuild@0.27.7)(less@4.8.1(supports-color@10.2.2))(sass@1.102.0)(terser@5.49.0)(yaml@2.9.0)
why-is-node-running: 2.3.0
optionalDependencies:
'@types/node': 25.9.5
@@ -7675,6 +12420,8 @@ snapshots:
transitivePeerDependencies:
- msw
+ vlq@1.0.1: {}
+
vue@3.5.40(typescript@6.0.3):
dependencies:
'@vue/compiler-dom': 3.5.40
@@ -7689,8 +12436,18 @@ snapshots:
dependencies:
xml-name-validator: 5.0.0
+ walker@1.0.8:
+ dependencies:
+ makeerror: 1.0.12
+
+ wcwidth@1.0.1:
+ dependencies:
+ defaults: 1.0.4
+
webidl-conversions@8.0.1: {}
+ whatwg-fetch@3.6.20: {}
+
whatwg-mimetype@5.0.0: {}
whatwg-url@16.0.1(@noble/hashes@2.2.0):
@@ -7701,6 +12458,12 @@ snapshots:
transitivePeerDependencies:
- '@noble/hashes'
+ which-module@2.0.1: {}
+
+ which@2.0.2:
+ dependencies:
+ isexe: 2.0.0
+
why-is-node-running@2.3.0:
dependencies:
siginfo: 2.0.0
@@ -7732,24 +12495,77 @@ snapshots:
- bufferutil
- utf-8-validate
+ wrap-ansi@6.2.0:
+ dependencies:
+ ansi-styles: 4.3.0
+ string-width: 4.2.3
+ strip-ansi: 6.0.1
+
+ wrap-ansi@7.0.0:
+ dependencies:
+ ansi-styles: 4.3.0
+ string-width: 4.2.3
+ strip-ansi: 6.0.1
+
wrap-ansi@9.0.2:
dependencies:
ansi-styles: 6.2.3
string-width: 7.2.0
strip-ansi: 7.2.0
+ ws@6.2.6:
+ dependencies:
+ async-limiter: 1.0.1
+
+ ws@7.5.13: {}
+
ws@8.21.0: {}
xml-name-validator@5.0.0: {}
xmlchars@2.2.0: {}
+ y18n@4.0.3: {}
+
y18n@5.0.8: {}
yallist@3.1.1: {}
+ yaml@2.9.0: {}
+
+ yargs-parser@18.1.3:
+ dependencies:
+ camelcase: 5.3.1
+ decamelize: 1.2.0
+
+ yargs-parser@21.1.1: {}
+
yargs-parser@22.0.0: {}
+ yargs@15.4.1:
+ dependencies:
+ cliui: 6.0.0
+ decamelize: 1.2.0
+ find-up: 4.1.0
+ get-caller-file: 2.0.5
+ require-directory: 2.1.1
+ require-main-filename: 2.0.0
+ set-blocking: 2.0.0
+ string-width: 4.2.3
+ which-module: 2.0.1
+ y18n: 4.0.3
+ yargs-parser: 18.1.3
+
+ yargs@17.7.3:
+ dependencies:
+ cliui: 8.0.1
+ escalade: 3.2.0
+ get-caller-file: 2.0.5
+ require-directory: 2.1.1
+ string-width: 4.2.3
+ y18n: 5.0.8
+ yargs-parser: 21.1.1
+
yargs@18.1.0:
dependencies:
cliui: 9.0.1
@@ -7759,6 +12575,8 @@ snapshots:
y18n: 5.0.8
yargs-parser: 22.0.0
+ yocto-queue@0.1.0: {}
+
yoctocolors@2.2.0: {}
youch-core@0.3.3:
diff --git a/scripts/check-react-native-types.mjs b/scripts/check-react-native-types.mjs
new file mode 100644
index 0000000..a524b05
--- /dev/null
+++ b/scripts/check-react-native-types.mjs
@@ -0,0 +1,60 @@
+import { spawnSync } from 'node:child_process'
+import { resolve } from 'node:path'
+
+const root = resolve(import.meta.dirname, '..')
+const tsc = resolve(root, 'node_modules/typescript/bin/tsc')
+const passingConfigs = [
+ 'packages/react-native-charts/tsconfig.json',
+ 'examples/charts-react-native/tsconfig.json',
+]
+
+for (const config of passingConfigs) {
+ const result = runTypeScript(config)
+ if (result.status !== 0) {
+ process.stderr.write(result.output)
+ throw new Error(`TypeScript failed for ${config}`)
+ }
+}
+
+const strictConfig = 'examples/charts-react-native/tsconfig.strict.json'
+const strict = runTypeScript(strictConfig)
+if (strict.status === 0) {
+ console.log('React Native source and strict consumer typechecks passed.')
+ process.exit(0)
+}
+
+const diagnostics = strict.output
+ .split(/\r?\n/)
+ .map((line) => line.trim())
+ .filter(Boolean)
+const expected = diagnostics.every(
+ (line) =>
+ line.includes('/@types/d3-array/') &&
+ line.includes("Cannot find name 'ImageData'."),
+)
+
+if (!expected || diagnostics.length !== 2) {
+ process.stderr.write(strict.output)
+ throw new Error(
+ 'The strict React Native consumer has diagnostics beyond the known @types/d3-array ImageData boundary.',
+ )
+}
+
+console.log(
+ 'React Native source and consumer typechecks passed; strict dependency checking reached only the two known @types/d3-array ImageData diagnostics.',
+)
+
+function runTypeScript(config) {
+ const result = spawnSync(
+ process.execPath,
+ [tsc, '--noEmit', '-p', config, '--pretty', 'false'],
+ {
+ cwd: root,
+ encoding: 'utf8',
+ },
+ )
+ return {
+ status: result.status,
+ output: `${result.stdout ?? ''}${result.stderr ?? ''}`,
+ }
+}
diff --git a/scripts/measure-bundles.mjs b/scripts/measure-bundles.mjs
index ea20362..0f6bd44 100644
--- a/scripts/measure-bundles.mjs
+++ b/scripts/measure-bundles.mjs
@@ -27,7 +27,38 @@ const rendererBoundaryModules = {
'packages/charts-core/src/svg.ts',
'packages/react-charts/src/Chart.tsx',
],
+ native: [
+ 'packages/react-native-charts/src/Chart.tsx',
+ 'packages/react-native-charts/src/FocusOverlay.tsx',
+ 'packages/react-native-charts/src/SvgScene.tsx',
+ 'packages/react-native-charts/src/Tooltip.tsx',
+ ],
+ browser: [
+ 'packages/charts-core/src/adapter.ts',
+ 'packages/charts-core/src/adapter-renderer.ts',
+ 'packages/charts-core/src/canvas.ts',
+ 'packages/charts-core/src/dom.ts',
+ 'packages/charts-core/src/dom-text.ts',
+ 'packages/charts-core/src/export.ts',
+ 'packages/charts-core/src/reconcile.ts',
+ 'packages/charts-core/src/renderer.ts',
+ 'packages/charts-core/src/svg-renderer.ts',
+ 'packages/charts-core/src/svg-resources.ts',
+ 'packages/charts-core/src/svg-surface.ts',
+ 'packages/charts-core/src/svg.ts',
+ 'packages/react-charts/src/CanvasChart.tsx',
+ 'packages/react-charts/src/Chart.tsx',
+ 'packages/react-charts/src/RendererChart.tsx',
+ ],
}
+const nativeExternals = [
+ 'react',
+ 'react/jsx-runtime',
+ 'react-native',
+ 'react-native/*',
+ 'react-native-svg',
+ 'react-native-svg/*',
+]
const entries = [
measured('Core host', 'benchmarks/entries/core.ts'),
locked('D3-scale line scene', 'benchmarks/entries/charts-core.ts'),
@@ -149,6 +180,26 @@ const entries = [
locked('React line consumer', 'benchmarks/entries/charts-react-line.ts', {
external: ['react', 'react/jsx-runtime', 'react-dom'],
}),
+ measured(
+ 'React Native SVG host',
+ 'benchmarks/entries/charts-react-native.ts',
+ {
+ external: nativeExternals,
+ rendererBoundary: 'native',
+ platform: 'neutral',
+ conditions: ['react-native', 'import'],
+ },
+ ),
+ measured(
+ 'React Native line consumer',
+ 'benchmarks/entries/charts-react-native-line.ts',
+ {
+ external: nativeExternals,
+ rendererBoundary: 'native',
+ platform: 'neutral',
+ conditions: ['react-native', 'import'],
+ },
+ ),
budgeted(
'Stats parity surface',
'benchmarks/entries/charts-stats-parity.ts',
@@ -298,6 +349,8 @@ for (const {
alias,
policy,
rendererBoundary,
+ platform,
+ conditions,
} of entries) {
const outfile = resolve(
outputDirectory,
@@ -309,13 +362,14 @@ for (const {
bundle: true,
minify: true,
treeShaking: true,
- platform: 'browser',
+ platform: platform ?? 'browser',
format: 'esm',
target: 'es2022',
legalComments: 'none',
logLevel: 'silent',
external,
alias,
+ conditions,
metafile: true,
})
assertRendererBoundary(label, result.metafile.inputs, rendererBoundary)
@@ -409,6 +463,8 @@ function createEntry(label, entry, policy, options) {
external: options.external,
alias: options.alias,
rendererBoundary: options.rendererBoundary,
+ platform: options.platform,
+ conditions: options.conditions,
}
}
@@ -417,6 +473,9 @@ function assertRendererBoundary(label, inputs, boundary) {
const paths = Object.keys(inputs).map((input) => input.replaceAll('\\', '/'))
const canvas = matchingModules(paths, rendererBoundaryModules.canvas)
const svg = matchingModules(paths, rendererBoundaryModules.svg)
+ const native = matchingModules(paths, rendererBoundaryModules.native)
+ const browser = matchingModules(paths, rendererBoundaryModules.browser)
+ const reactDom = paths.filter((input) => input.includes('/react-dom/'))
const failures = []
if (boundary === 'neutral') {
@@ -428,6 +487,14 @@ function assertRendererBoundary(label, inputs, boundary) {
} else if (boundary === 'svg') {
if (!svg.length) failures.push('did not include the SVG renderer')
if (canvas.length) failures.push(`included Canvas: ${canvas.join(', ')}`)
+ } else if (boundary === 'native') {
+ if (!native.length) failures.push('did not include the native SVG host')
+ if (browser.length) {
+ failures.push(`included browser modules: ${browser.join(', ')}`)
+ }
+ if (reactDom.length) {
+ failures.push(`included react-dom: ${reactDom.join(', ')}`)
+ }
} else {
failures.push(`uses unknown renderer boundary ${boundary}`)
}
diff --git a/scripts/measure-react-native-poc.mjs b/scripts/measure-react-native-poc.mjs
new file mode 100644
index 0000000..8a2c06d
--- /dev/null
+++ b/scripts/measure-react-native-poc.mjs
@@ -0,0 +1,160 @@
+import { spawn } from 'node:child_process'
+import { mkdir, readFile, writeFile } from 'node:fs/promises'
+import { gzipSync } from 'node:zlib'
+import { resolve } from 'node:path'
+
+const root = resolve(import.meta.dirname, '..')
+const example = resolve(root, 'examples/charts-react-native')
+const output = resolve(root, '.bundle-output')
+const cli = resolve(example, 'node_modules/.bin/react-native')
+const skipBuild = process.argv.includes('--skip-build')
+const forbiddenSources = [
+ 'packages/charts-core/src/adapter.ts',
+ 'packages/charts-core/src/adapter-renderer.ts',
+ 'packages/charts-core/src/canvas.ts',
+ 'packages/charts-core/src/dom.ts',
+ 'packages/charts-core/src/dom-text.ts',
+ 'packages/charts-core/src/export.ts',
+ 'packages/charts-core/src/reconcile.ts',
+ 'packages/charts-core/src/renderer.ts',
+ 'packages/charts-core/src/svg-renderer.ts',
+ 'packages/charts-core/src/svg-resources.ts',
+ 'packages/charts-core/src/svg-surface.ts',
+ 'packages/charts-core/src/svg.ts',
+ 'packages/react-charts/',
+ 'react-dom/',
+]
+const variants = {
+ blank: 'index.blank.js',
+ svg: 'index.svg.js',
+ core: 'index.core.js',
+ chart: 'index.js',
+}
+
+await mkdir(output, { recursive: true })
+
+const bundles = []
+for (const platform of ['ios', 'android']) {
+ for (const [variant, entry] of Object.entries(variants)) {
+ const bundle = resolve(
+ output,
+ `react-native-${variant}.${platform}.jsbundle`,
+ )
+ const sourceMap = resolve(output, `react-native-${variant}.${platform}.map`)
+ if (!skipBuild) {
+ await run(cli, [
+ 'bundle',
+ '--entry-file',
+ entry,
+ '--platform',
+ platform,
+ '--dev',
+ 'false',
+ '--minify',
+ 'true',
+ '--bundle-output',
+ bundle,
+ '--sourcemap-output',
+ sourceMap,
+ '--config',
+ resolve(example, 'metro.config.cjs'),
+ ])
+ }
+ const contents = await readFile(bundle)
+ const map = JSON.parse(await readFile(sourceMap, 'utf8'))
+ const sources = map.sources.map(normalize)
+ if (variant === 'chart') assertNativeBoundary(platform, sources)
+ bundles.push({
+ platform,
+ variant,
+ bytes: contents.byteLength,
+ gzip: gzipSync(contents).byteLength,
+ modules: sources.length,
+ })
+ }
+}
+
+const rows = [
+ '| Platform | Full chart JS delta | RNSVG-only gzip delta | Core line gzip delta | Full chart gzip delta |',
+]
+rows.push('| --- | ---: | ---: | ---: | ---: |')
+for (const platform of ['ios', 'android']) {
+ const blank = bundles.find(
+ (bundle) => bundle.platform === platform && bundle.variant === 'blank',
+ )
+ const chart = bundles.find(
+ (bundle) => bundle.platform === platform && bundle.variant === 'chart',
+ )
+ const svg = bundles.find(
+ (bundle) => bundle.platform === platform && bundle.variant === 'svg',
+ )
+ const core = bundles.find(
+ (bundle) => bundle.platform === platform && bundle.variant === 'core',
+ )
+ if (!blank || !chart || !svg || !core) {
+ throw new Error(`Missing ${platform} bundle result`)
+ }
+ rows.push(
+ `| ${platform} | ${format(chart.bytes - blank.bytes)} | ${format(svg.gzip - blank.gzip)} | ${format(core.gzip - blank.gzip)} | ${format(chart.gzip - blank.gzip)} |`,
+ )
+}
+
+console.log(rows.join('\n'))
+await writeFile(
+ resolve(output, 'react-native-poc.json'),
+ `${JSON.stringify(
+ {
+ schemaVersion: 1,
+ note: 'Metro production JS only. This excludes react-native-svg native binary code.',
+ bundles,
+ },
+ null,
+ 2,
+ )}\n`,
+)
+
+function assertNativeBoundary(platform, sources) {
+ const nativeSources = sources.filter((source) =>
+ source.includes('packages/react-native-charts/src/'),
+ )
+ if (!nativeSources.length) {
+ throw new Error(`${platform} bundle did not include the native host`)
+ }
+ const forbidden = sources.filter((source) =>
+ forbiddenSources.some((candidate) => source.includes(candidate)),
+ )
+ if (forbidden.length) {
+ throw new Error(
+ `${platform} bundle crossed the browser boundary:\n${forbidden.join('\n')}`,
+ )
+ }
+}
+
+function run(command, args) {
+ return new Promise((resolvePromise, reject) => {
+ const child = spawn(command, args, {
+ cwd: example,
+ stdio: 'inherit',
+ })
+ child.on('error', reject)
+ child.on('exit', (code, signal) => {
+ if (code === 0) resolvePromise()
+ else {
+ reject(
+ new Error(
+ `${command} exited with ${signal ? `signal ${signal}` : `code ${code}`}`,
+ ),
+ )
+ }
+ })
+ })
+}
+
+function normalize(value) {
+ return value.replaceAll('\\', '/')
+}
+
+function format(bytes) {
+ const sign = bytes < 0 ? '-' : ''
+ return `${sign}${(Math.abs(bytes) / 1024).toFixed(2)} kB`
+}