From 244955667e126d98a06be514cfbbd9147b8c5f7c Mon Sep 17 00:00:00 2001 From: kanno <812137533@qq.com> Date: Sun, 1 Dec 2024 12:25:21 +0800 Subject: [PATCH 1/8] feat: make viewer round --- src/etoile/graph/box.ts | 4 +-- src/etoile/graph/display.ts | 38 +++++++++++++++-------- src/etoile/graph/index.ts | 2 +- src/etoile/graph/layer.ts | 3 +- src/etoile/graph/rect.ts | 62 ++++++++++++++++++++++++++++++++++--- src/etoile/graph/text.ts | 3 +- src/etoile/graph/types.ts | 23 ++++++++++++-- src/primitives/component.ts | 10 ++++-- src/shared/index.ts | 8 ++--- 9 files changed, 122 insertions(+), 31 deletions(-) diff --git a/src/etoile/graph/box.ts b/src/etoile/graph/box.ts index a43890b..211edf2 100644 --- a/src/etoile/graph/box.ts +++ b/src/etoile/graph/box.ts @@ -1,5 +1,5 @@ -import { Display, DisplayType } from './display' -import { asserts } from './types' +import { Display } from './display' +import { DisplayType, asserts } from './types' export abstract class C extends Display { elements: Display[] diff --git a/src/etoile/graph/display.ts b/src/etoile/graph/display.ts index baf0e7e..71b0f7d 100644 --- a/src/etoile/graph/display.ts +++ b/src/etoile/graph/display.ts @@ -1,6 +1,7 @@ /* eslint-disable no-use-before-define */ import { Matrix2D } from '../native/matrix' +import { DisplayType } from './types' const SELF_ID = { id: 0, @@ -9,19 +10,6 @@ const SELF_ID = { } } -export const enum DisplayType { - // eslint-disable-next-line no-unused-vars - Graph = 'Graph', - // eslint-disable-next-line no-unused-vars - Box = 'Box', - // eslint-disable-next-line no-unused-vars - Rect = 'Rect', - // eslint-disable-next-line no-unused-vars - Text = 'Text', - // eslint-disable-next-line no-unused-vars - Layer = 'Layer' -} - export abstract class Display { parent: Display | null id: number @@ -73,6 +61,12 @@ export interface InstructionWithFunctionCall { fillRect: (x: number, y: number, w: number, h: number) => void strokeRect: (x: number, y: number, w: number, h: number) => void fillText: (text: string, x: number, y: number, maxWidth?: number) => void + beginPath: () => void + moveTo: (x: number, y: number) => void + arcTo: (x1: number, y1: number, x2: number, y2: number, radius: number) => void + closePath: () => void + fill: () => void + stroke: () => void } type Mod< @@ -127,6 +121,24 @@ function createInstruction() { }, textAlign(...args) { this.mods.push({ mod: ['textAlign', args], type: ASSIGN_MAPPINGS.textAlign }) + }, + beginPath() { + this.mods.push({ mod: ['beginPath', []], type: CALL_MAPPINGS_MODE }) + }, + moveTo(...args) { + this.mods.push({ mod: ['moveTo', args], type: CALL_MAPPINGS_MODE }) + }, + arcTo(...args) { + this.mods.push({ mod: ['arcTo', args], type: CALL_MAPPINGS_MODE }) + }, + closePath() { + this.mods.push({ mod: ['closePath', []], type: CALL_MAPPINGS_MODE }) + }, + fill() { + this.mods.push({ mod: ['fill', []], type: CALL_MAPPINGS_MODE }) + }, + stroke() { + this.mods.push({ mod: ['stroke', []], type: CALL_MAPPINGS_MODE }) } } } diff --git a/src/etoile/graph/index.ts b/src/etoile/graph/index.ts index d17ad0a..4d59ccf 100644 --- a/src/etoile/graph/index.ts +++ b/src/etoile/graph/index.ts @@ -1,5 +1,5 @@ export { Box } from './box' export { Layer } from './layer' -export { Rect } from './rect' +export { Rect, RoundRect } from './rect' export { Text } from './text' export * from './types' diff --git a/src/etoile/graph/layer.ts b/src/etoile/graph/layer.ts index 813d5ad..cb61701 100644 --- a/src/etoile/graph/layer.ts +++ b/src/etoile/graph/layer.ts @@ -2,7 +2,8 @@ import { applyCanvasTransform } from '../../shared' import { Canvas, writeBoundingRectForCanvas } from '../schedule/render' import type { RenderViewportOptions } from '../schedule/render' import { C } from './box' -import { DisplayType, S } from './display' +import { S } from './display' +import { DisplayType } from './types' import type { LocOptions } from './display' export class Layer extends C implements S { diff --git a/src/etoile/graph/rect.ts b/src/etoile/graph/rect.ts index 98ce45d..7d2a1bb 100644 --- a/src/etoile/graph/rect.ts +++ b/src/etoile/graph/rect.ts @@ -1,9 +1,10 @@ import { runtime } from '../native/runtime' import type { ColorDecoratorResult } from '../native/runtime' -import { DisplayType, Graph } from './display' +import { DisplayType } from './types' +import { Graph } from './display' import type { GraphOptions, GraphStyleSheet } from './display' -export type RectStyleOptions = GraphStyleSheet & { fill: ColorDecoratorResult } +export type RectStyleOptions = GraphStyleSheet & { fill: ColorDecoratorResult; margin?: number } export type RectOptions = GraphOptions & { style: Partial } export class Rect extends Graph { @@ -18,16 +19,21 @@ export class Rect extends Graph { } create() { + const margin = this.style.margin || 0 + const x = margin + const y = margin + const width = this.width - margin * 2 + const height = this.height - margin * 2 if (this.style.fill) { this.instruction.fillStyle(runtime.evaluateFillStyle(this.style.fill, this.style.opacity)) - this.instruction.fillRect(0, 0, this.width, this.height) + this.instruction.fillRect(x, y, width, height) } if (this.style.stroke) { this.instruction.strokeStyle(this.style.stroke) if (typeof this.style.lineWidth === 'number') { this.instruction.lineWidth(this.style.lineWidth) } - this.instruction.strokeRect(0, 0, this.width, this.height) + this.instruction.strokeRect(x, y, width, height) } } @@ -35,3 +41,51 @@ export class Rect extends Graph { return new Rect({ ...this.style, ...this.__options__ }) } } + +export type RoundRectStyleOptions = RectStyleOptions & { radius: number } + +export type RoundRectOptions = RectOptions & { style: Partial } + +export class RoundRect extends Graph { + style: Required + constructor(options: Partial = {}) { + super(options) + this.style = options.style || Object.create(null) + } + + get __shape__() { + return DisplayType.RoundRect + } + + create() { + const margin = this.style.margin + const x = margin + const y = margin + const width = this.width - margin * 2 + const height = this.height - margin * 2 + const radius = this.style.radius || 0 + this.instruction.beginPath() + this.instruction.moveTo(x + radius, y) + this.instruction.arcTo(x + width, y, x + width, y + height, radius) + this.instruction.arcTo(x + width, y + height, x, y + height, radius) + this.instruction.arcTo(x, y + height, x, y, radius) + this.instruction.arcTo(x, y, x + width, y, radius) + this.instruction.closePath() + if (this.style.fill) { + this.instruction.closePath() + this.instruction.fillStyle(runtime.evaluateFillStyle(this.style.fill, this.style.opacity)) + this.instruction.fill() + } + if (this.style.stroke) { + if (typeof this.style.lineWidth === 'number') { + this.instruction.lineWidth(this.style.lineWidth) + } + this.instruction.strokeStyle(this.style.stroke) + this.instruction.stroke() + } + } + + clone() { + return new RoundRect({ ...this.style, ...this.__options__ }) + } +} diff --git a/src/etoile/graph/text.ts b/src/etoile/graph/text.ts index 24d4fe4..18d0e02 100644 --- a/src/etoile/graph/text.ts +++ b/src/etoile/graph/text.ts @@ -1,4 +1,5 @@ -import { DisplayType, Graph } from './display' +import { Graph } from './display' +import { DisplayType } from './types' import type { GraphOptions, GraphStyleSheet } from './display' export interface TextOptions extends Omit { diff --git a/src/etoile/graph/types.ts b/src/etoile/graph/types.ts index 8492ea8..e9fad4d 100644 --- a/src/etoile/graph/types.ts +++ b/src/etoile/graph/types.ts @@ -1,9 +1,24 @@ import { Box } from './box' -import { Display, DisplayType, Graph } from './display' +import { Display, Graph } from './display' import { Layer } from './layer' -import { Rect } from './rect' +import { Rect, RoundRect } from './rect' import { Text } from './text' +export const enum DisplayType { + // eslint-disable-next-line no-unused-vars + Graph = 'Graph', + // eslint-disable-next-line no-unused-vars + Box = 'Box', + // eslint-disable-next-line no-unused-vars + Rect = 'Rect', + // eslint-disable-next-line no-unused-vars + Text = 'Text', + // eslint-disable-next-line no-unused-vars + Layer = 'Layer', + // eslint-disable-next-line no-unused-vars + RoundRect = 'RoundRect' +} + export function isGraph(display: Display): display is Graph { return display.__instanceOf__ === DisplayType.Graph } @@ -24,6 +39,10 @@ export function isLayer(display: Display): display is Layer { return display.__instanceOf__ === DisplayType.Layer } +export function isRoundRect(display: Display): display is RoundRect { + return isGraph(display) && display.__shape__ === DisplayType.RoundRect +} + export const asserts = { isGraph, isBox, diff --git a/src/primitives/component.ts b/src/primitives/component.ts index 585c0ff..406e788 100644 --- a/src/primitives/component.ts +++ b/src/primitives/component.ts @@ -126,8 +126,13 @@ export class TreemapLayout extends etoile.Schedule { drawBackgroundNode(node: LayoutModule) { const [x, y, w, h] = node.layout + const radius = 2 + const margin = 2 + if (w <= 2 * (radius + margin) || h <= 2 * (radius + margin)) { + return + } const fill = this.decorator.color.mappings[node.node.id] - const s = createFillBlock(x, y, w, h, { fill }) + const s = createFillBlock(x, y, w, h, { fill, margin, radius }) this.bgLayer.add(s) for (const child of node.children) { this.drawBackgroundNode(child) @@ -137,9 +142,8 @@ export class TreemapLayout extends etoile.Schedule { drawForegroundNode(node: LayoutModule) { const [x, y, w, h] = node.layout if (!w || !h) return - const { rectBorderWidth, titleHeight, rectGap } = node.decorator + const { titleHeight, rectGap } = node.decorator const { fontSize, fontFamily, color } = this.decorator.font - this.fgBox.add(createFillBlock(x + 0.5, y + 0.5, w, h, { stroke: '#222', lineWidth: rectBorderWidth })) let optimalFontSize if (node.node.id in this.fontsCaches) { optimalFontSize = this.fontsCaches[node.node.id] diff --git a/src/shared/index.ts b/src/shared/index.ts index 02c45ba..ce32d2f 100644 --- a/src/shared/index.ts +++ b/src/shared/index.ts @@ -1,6 +1,6 @@ import { Matrix2D } from '../etoile/native/matrix' -import type { RectStyleOptions } from '../etoile/graph/rect' -import { Rect, Text } from '../etoile' +import type { RoundRectStyleOptions } from '../etoile/graph/rect' +import { RoundRect, Text } from '../etoile' export function hashCode(str: string) { let hash = 0 @@ -20,8 +20,8 @@ export function perferNumeric(s: string | number) { export function noop() {} -export function createFillBlock(x: number, y: number, width: number, height: number, style?: Partial) { - return new Rect({ width, height, x, y, style }) +export function createFillBlock(x: number, y: number, width: number, height: number, style?: Partial) { + return new RoundRect({ width, height, x, y, style }) } export function createTitleText(text: string, x: number, y: number, font: string, color: string) { From 6d89aa26694b9b5d7a7e987c857a365b8c2dfefa Mon Sep 17 00:00:00 2001 From: kanno <812137533@qq.com> Date: Sun, 1 Dec 2024 19:34:40 +0800 Subject: [PATCH 2/8] fix: highlight --- src/primitives/component.ts | 7 +++++++ src/primitives/event.ts | 3 ++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/primitives/component.ts b/src/primitives/component.ts index 406e788..8beb37f 100644 --- a/src/primitives/component.ts +++ b/src/primitives/component.ts @@ -104,6 +104,13 @@ export function resetLayout(treemap: TreemapLayout, w: number, h: number) { treemap.reset(true) } +// In the end, I want the UI looks like a little bit curved. It will look more beautiful. +// Remove border using alpha channel can look like more hierarchical. + +// I want define it as two parts. +// Background and Foreground. +// Split as two parts can make it more flexible. (Such as do cache, do scale, and etc.) + export class TreemapLayout extends etoile.Schedule { data: NativeModule[] layoutNodes: LayoutModule[] diff --git a/src/primitives/event.ts b/src/primitives/event.ts index 8ab0bcc..e4a046c 100644 --- a/src/primitives/event.ts +++ b/src/primitives/event.ts @@ -2,6 +2,7 @@ // So it's no need to implement a complex event algorithm or hit mode. // If one day etoile need to build as a useful library. Pls rewrite it! // All of implementation don't want to consider the compatibility of the browser. +// Currently, it doesn't support moving with two finger on a Magic Trackpad. import { createFillBlock, mixin } from '../shared' import { Display, S } from '../etoile/graph/display' @@ -99,7 +100,7 @@ function smoothDrawing(c: SelfEventContenxt) { } const easedProgress = easing.cubicInOut(progress) self.highlight.reset() - const mask = createFillBlock(x, y, w, h, { fill, opacity: 0.4 }) + const mask = createFillBlock(x, y, w, h, { fill, opacity: 0.4, radius: 2, margin: 2 }) self.highlight.highlight.add(mask) self.highlight.setDisplayLayerForHighlight('1') applyForOpacity(mask, 0.4, 0.4, easedProgress) From c582eb90253c75a6d6ac38fd9897303b6fe40df9 Mon Sep 17 00:00:00 2001 From: kanno <812137533@qq.com> Date: Sun, 1 Dec 2024 22:02:01 +0800 Subject: [PATCH 3/8] feat: init two fingers --- src/etoile/native/dom.ts | 72 ++++++++++++++++++ src/etoile/native/magic-trackpad.ts | 114 ++++++++++++++++++++++++++++ src/etoile/native/matrix.ts | 8 +- src/primitives/animation.ts | 40 ---------- src/primitives/event.ts | 56 +++++--------- src/shared/index.ts | 4 + 6 files changed, 211 insertions(+), 83 deletions(-) create mode 100644 src/etoile/native/dom.ts create mode 100644 src/etoile/native/magic-trackpad.ts diff --git a/src/etoile/native/dom.ts b/src/etoile/native/dom.ts new file mode 100644 index 0000000..0cce01c --- /dev/null +++ b/src/etoile/native/dom.ts @@ -0,0 +1,72 @@ +import { raf } from '../../shared' + +export function getOffset(el: HTMLElement) { + let e = 0 + let f = 0 + if (document.documentElement.getBoundingClientRect && el.getBoundingClientRect) { + const { top, left } = el.getBoundingClientRect() + e = top + f = left + } else { + for (let elt: HTMLElement | null = el; elt; elt = el.offsetParent as HTMLElement | null) { + e += el.offsetLeft + f += el.offsetTop + } + } + + return [ + e + Math.max(document.documentElement.scrollLeft, document.body.scrollLeft), + f + Math.max(document.documentElement.scrollTop, document.body.scrollTop) + ] +} + +export function captureBoxXY(c: HTMLCanvasElement, evt: unknown, a: number, d: number, translateX: number, translateY: number) { + const boundingClientRect = c.getBoundingClientRect() + if (evt instanceof MouseEvent) { + const [e, f] = getOffset(c) + return { + x: ((evt.clientX - boundingClientRect.left - e - translateX) / a), + y: ((evt.clientY - boundingClientRect.top - f - translateY) / d) + } + } + return { x: 0, y: 0 } +} + +export interface EffectScopeContext { + animationFrameID: number | null +} + +function createEffectRun(c: EffectScopeContext) { + return (fn: () => boolean | void) => { + const effect = () => { + const done = fn() + if (!done) { + c.animationFrameID = raf(effect) + } + } + if (!c.animationFrameID) { + c.animationFrameID = raf(effect) + } + } +} + +function createEffectStop(c: EffectScopeContext) { + return () => { + if (c.animationFrameID) { + window.cancelAnimationFrame(c.animationFrameID) + c.animationFrameID = null + } + } +} + +// Fill frame +export function createEffectScope() { + const c: EffectScopeContext = { + animationFrameID: null + } + + const run = createEffectRun(c) + const stop = createEffectStop(c) + + return { run, stop } +} diff --git a/src/etoile/native/magic-trackpad.ts b/src/etoile/native/magic-trackpad.ts new file mode 100644 index 0000000..080822e --- /dev/null +++ b/src/etoile/native/magic-trackpad.ts @@ -0,0 +1,114 @@ +// Note: I won't decide to support mobile devices. +// So don't create any reporting issues about mobile devices. + +import { createEffectScope } from './dom' + +// gesturechange and gestureend is specific for Safari +// So we only implement wheel event +// If you feel malicious on Safari (I won't fix it) + +export interface WheelGesture { + original: { x: number; y: number } + scale: number + translation: { x: number; y: number } +} + +export type Ongesturestar = (metadata: WheelGesture, e: WheelEvent) => void + +export type Ongesturemove = (metadata: WheelGesture, e: WheelEvent) => void + +export type Ongestureend = (metadata: WheelGesture, e: WheelEvent) => void + +export interface MagicTrackpadContext { + ongesturestart: Ongesturestar + ongesturemove: Ongesturemove + ongestureend: Ongestureend +} + +const WHEEL_SCALE_SPEEDUP = 2 +const WHEEL_TRANSLATION_SPEEDUP = 2 +const DELTA_LINE_MULTIPLIER = 8 +const DELTA_PAGE_MULTIPLIER = 24 +const MAX_WHEEL_DELTA = 24 + +function limit(delta: number, max: number) { + return Math.sign(delta) * Math.min(max, Math.abs(delta)) +} + +export function normalizeWheel(e: WheelEvent) { + let dx = e.deltaX + let dy = e.deltaY + if (e.shiftKey && dx === 0) { + ;[dx, dy] = [dy, dx] + } + if (e.deltaMode === WheelEvent.DOM_DELTA_LINE) { + dx *= DELTA_LINE_MULTIPLIER + dy *= DELTA_LINE_MULTIPLIER + } else if (e.deltaMode === WheelEvent.DOM_DELTA_PAGE) { + dx *= DELTA_PAGE_MULTIPLIER + dy *= DELTA_PAGE_MULTIPLIER + } + return [limit(dx, MAX_WHEEL_DELTA), limit(dy, MAX_WHEEL_DELTA)] +} + +export function useMagicTrackpad(el: HTMLElement, c: MagicTrackpadContext) { + let wheelGesture: WheelGesture = null as unknown as WheelGesture + let lastTime = 0 + + const effect = createEffectScope() + + const handler = (e: WheelEvent) => { + if (e.cancelable !== false) { + e.preventDefault() + } + const [dx, dy] = normalizeWheel(e) + if (!wheelGesture) { + wheelGesture = { + original: { x: e.clientX, y: e.clientY }, + scale: 1, + translation: { x: 0, y: 0 } + } + c.ongesturestart(wheelGesture, e) + } + if (e.ctrlKey) { + // pinch-zoom gesture + const factor = dy <= 0 + ? 1 - WHEEL_SCALE_SPEEDUP * dy / 100 + : 1 / (1 + WHEEL_SCALE_SPEEDUP * dy / 100) + wheelGesture = { + original: { x: e.clientX, y: e.clientY }, + scale: wheelGesture.scale * factor, + translation: wheelGesture.translation + } + } else { + // pan gesture + wheelGesture = { + original: { x: e.clientX, y: e.clientY }, + scale: wheelGesture.scale, + translation: { + x: wheelGesture.translation.x - + WHEEL_TRANSLATION_SPEEDUP * dx, + y: wheelGesture.translation.y - + WHEEL_TRANSLATION_SPEEDUP * dy + } + } + } + c.ongesturemove(wheelGesture, e) + + effect.run(() => { + const now = Date.now() + if (now - lastTime >= 200) { + if (wheelGesture) { + c.ongestureend(wheelGesture, e) + wheelGesture = null as unknown as WheelGesture + } + } else { + effect.stop() + } + lastTime = Date.now() + }) + } + el.addEventListener('wheel', handler, { passive: false }) + + return handler +} diff --git a/src/etoile/native/matrix.ts b/src/etoile/native/matrix.ts index 2f539a2..55611bb 100644 --- a/src/etoile/native/matrix.ts +++ b/src/etoile/native/matrix.ts @@ -42,19 +42,19 @@ export class Matrix2D implements MatrixLoc { return this } - private translation(x: number, y: number) { + translation(x: number, y: number) { this.e += x this.f += y return this } - private scale(a: number, d: number) { + scale(a: number, d: number) { this.a *= a this.d *= d return this } - private skew(x: number, y: number) { + skew(x: number, y: number) { const tanX = Math.tan(x * DEG_TO_RAD) const tanY = Math.tan(y * DEG_TO_RAD) const a = this.a + this.b * tanX @@ -68,7 +68,7 @@ export class Matrix2D implements MatrixLoc { return this } - private roate(rotation: number) { + roate(rotation: number) { if (rotation > 0) { const rad = rotation * DEG_TO_RAD const cosTheta = Math.cos(rad) diff --git a/src/primitives/animation.ts b/src/primitives/animation.ts index bfa8603..d43ed78 100644 --- a/src/primitives/animation.ts +++ b/src/primitives/animation.ts @@ -1,4 +1,3 @@ -import { raf } from '../shared' import { asserts } from '../etoile' import { Graph } from '../etoile/graph/display' @@ -8,42 +7,3 @@ export function applyForOpacity(graph: Graph, lastState: number, nextState: numb graph.style.opacity = alpha } } - -export interface EffectScopeContext { - animationFrameID: number | null -} - -function createEffectRun(c: EffectScopeContext) { - return (fn: () => boolean | void) => { - const effect = () => { - const done = fn() - if (!done) { - c.animationFrameID = raf(effect) - } - } - if (!c.animationFrameID) { - c.animationFrameID = raf(effect) - } - } -} - -function createEffectStop(c: EffectScopeContext) { - return () => { - if (c.animationFrameID) { - window.cancelAnimationFrame(c.animationFrameID) - c.animationFrameID = null - } - } -} - -// Fill frame -export function createEffectScope() { - const c: EffectScopeContext = { - animationFrameID: null - } - - const run = createEffectRun(c) - const stop = createEffectStop(c) - - return { run, stop } -} diff --git a/src/primitives/event.ts b/src/primitives/event.ts index e4a046c..57923be 100644 --- a/src/primitives/event.ts +++ b/src/primitives/event.ts @@ -4,13 +4,15 @@ // All of implementation don't want to consider the compatibility of the browser. // Currently, it doesn't support moving with two finger on a Magic Trackpad. -import { createFillBlock, mixin } from '../shared' +import { useMagicTrackpad } from '../etoile/native/magic-trackpad' +import { captureBoxXY, createEffectScope } from '../etoile/native/dom' +import { createFillBlock, isMacOS, mixin } from '../shared' import { Display, S } from '../etoile/graph/display' import { Schedule, Event as _Event, asserts, drawGraphIntoCanvas, easing, etoile } from '../etoile' import type { BindThisParameter } from '../etoile' import type { ColorDecoratorResultRGB } from '../etoile/native/runtime' import type { InheritedCollections } from '../shared' -import { applyForOpacity, createEffectScope } from './animation' +import { applyForOpacity } from './animation' import { TreemapLayout, resetLayout } from './component' import type { App, TreemapInstanceAPI } from './component' import { RegisterModule } from './registry' @@ -121,38 +123,6 @@ function applyZoomEvent(ctx: SelfEventContenxt) { }) } -function getOffset(el: HTMLElement) { - let e = 0 - let f = 0 - if (document.documentElement.getBoundingClientRect && el.getBoundingClientRect) { - const { top, left } = el.getBoundingClientRect() - e = top - f = left - } else { - for (let elt: HTMLElement | null = el; elt; elt = el.offsetParent as HTMLElement | null) { - e += el.offsetLeft - f += el.offsetTop - } - } - - return [ - e + Math.max(document.documentElement.scrollLeft, document.body.scrollLeft), - f + Math.max(document.documentElement.scrollTop, document.body.scrollTop) - ] -} - -function captureBoxXY(c: HTMLCanvasElement, evt: unknown, a: number, d: number, translateX: number, translateY: number) { - const boundingClientRect = c.getBoundingClientRect() - if (evt instanceof MouseEvent) { - const [e, f] = getOffset(c) - return { - x: ((evt.clientX - boundingClientRect.left - e - translateX) / a), - y: ((evt.clientY - boundingClientRect.top - f - translateY) / d) - } - } - return { x: 0, y: 0 } -} - function bindPrimitiveEvent( c: HTMLCanvasElement, ctx: SelfEventContenxt, @@ -286,11 +256,12 @@ export class SelfEvent extends RegisterModule { onwheel(this: SelfEventContenxt, metadata: PrimitiveEventMetadata<'wheel'>) { const { self, treemap } = this + const { native } = metadata // @ts-expect-error - const wheelDelta = metadata.native.wheelDelta + const wheelDelta = native.wheelDelta const absWheelDelta = Math.abs(wheelDelta) - const offsetX = metadata.native.offsetX - const offsetY = metadata.native.offsetY + const offsetX = native.offsetX + const offsetY = native.offsetY if (wheelDelta === 0) { return @@ -338,12 +309,19 @@ export class SelfEvent extends RegisterModule { nativeEvents.push(bindPrimitiveEvent(treemap.render.canvas, { treemap, self: this }, evt, event)) }) const selfEvt = event.bindWithContext({ treemap, self: this }) + // Regular drag event binding for windows/linux users or + // other Darwin users who don't use Magic Trackpad or use three finger drag selfEvt('mousedown', this.ondragstart) selfEvt('mousemove', this.ondragmove) selfEvt('mouseup', this.ondragend) - // wheel - selfEvt('wheel', this.onwheel) + // For MacOS, we should inject two finger event + if (isMacOS()) { + useMagicTrackpad() + } else { + // wheel + selfEvt('wheel', this.onwheel) + } applyZoomEvent({ treemap, self: this }) diff --git a/src/shared/index.ts b/src/shared/index.ts index ce32d2f..36118e3 100644 --- a/src/shared/index.ts +++ b/src/shared/index.ts @@ -56,3 +56,7 @@ export function mixin(app: T, methods: InheritedCollections[]) { }) }) } + +export function isMacOS() { + return /Mac OS X/.test(navigator.userAgent) +} From d870e62d44255db562441f169ebd010d0e162470 Mon Sep 17 00:00:00 2001 From: kanno <812137533@qq.com> Date: Sun, 1 Dec 2024 23:07:45 +0800 Subject: [PATCH 4/8] feat: apply animation for wheel --- src/etoile/native/magic-trackpad.ts | 19 ++++++---- src/primitives/event.ts | 56 +++++++++++++++++++++-------- 2 files changed, 55 insertions(+), 20 deletions(-) diff --git a/src/etoile/native/magic-trackpad.ts b/src/etoile/native/magic-trackpad.ts index 080822e..1b1e20e 100644 --- a/src/etoile/native/magic-trackpad.ts +++ b/src/etoile/native/magic-trackpad.ts @@ -13,11 +13,17 @@ export interface WheelGesture { translation: { x: number; y: number } } -export type Ongesturestar = (metadata: WheelGesture, e: WheelEvent) => void +export interface GestureMetadata { + native: WheelEvent + isPanGesture: boolean + data: WheelGesture +} + +export type Ongesturestar = (metadata: GestureMetadata) => void -export type Ongesturemove = (metadata: WheelGesture, e: WheelEvent) => void +export type Ongesturemove = (metadata: GestureMetadata) => void -export type Ongestureend = (metadata: WheelGesture, e: WheelEvent) => void +export type Ongestureend = (metadata: GestureMetadata) => void export interface MagicTrackpadContext { ongesturestart: Ongesturestar @@ -61,6 +67,7 @@ export function useMagicTrackpad(el: HTMLElement, c: MagicTrackpadContext) { if (e.cancelable !== false) { e.preventDefault() } + const isPanGesture = !e.ctrlKey const [dx, dy] = normalizeWheel(e) if (!wheelGesture) { wheelGesture = { @@ -68,7 +75,7 @@ export function useMagicTrackpad(el: HTMLElement, c: MagicTrackpadContext) { scale: 1, translation: { x: 0, y: 0 } } - c.ongesturestart(wheelGesture, e) + c.ongesturestart({ data: wheelGesture, isPanGesture, native: e }) } if (e.ctrlKey) { // pinch-zoom gesture @@ -93,13 +100,13 @@ export function useMagicTrackpad(el: HTMLElement, c: MagicTrackpadContext) { } } } - c.ongesturemove(wheelGesture, e) + c.ongesturemove({ data: wheelGesture, isPanGesture, native: e }) effect.run(() => { const now = Date.now() if (now - lastTime >= 200) { if (wheelGesture) { - c.ongestureend(wheelGesture, e) + c.ongestureend({ data: wheelGesture, isPanGesture, native: e }) wheelGesture = null as unknown as WheelGesture } } else { diff --git a/src/primitives/event.ts b/src/primitives/event.ts index 57923be..912afad 100644 --- a/src/primitives/event.ts +++ b/src/primitives/event.ts @@ -267,23 +267,38 @@ export class SelfEvent extends RegisterModule { return } self.forceDestroy = true - if (self.triggerZoom) { - refreshBackgroundLayer(this) - } - treemap.reset() + this.self.highlight.reset() this.self.highlight.setDisplayLayerForHighlight() const factor = absWheelDelta > 3 ? 1.4 : absWheelDelta > 1 ? 1.2 : 1.1 const delta = wheelDelta > 0 ? factor : 1 / factor - self.scaleRatio *= delta - + const targetScaleRatio = self.scaleRatio * delta const translateX = offsetX - (offsetX - self.translateX) * delta const translateY = offsetY - (offsetY - self.translateY) * delta - self.translateX = translateX - self.translateY = translateY - stackMatrixTransformWithGraphAndLayer(this.treemap.elements, this.self.translateX, this.self.translateY, this.self.scaleRatio) - treemap.update() - self.forceDestroy = false + const effect = createEffectScope() + + const animationDuration = 300 + const startTime = Date.now() + + effect.run(() => { + const elapsed = Date.now() - startTime + const progress = Math.min(elapsed / animationDuration, 1) + if (progress >= 1) { + effect.stop() + self.forceDestroy = false + return true + } + if (self.triggerZoom) { + refreshBackgroundLayer(this) + } + treemap.reset() + const easedProgress = easing.quadraticOut(progress) + self.scaleRatio = self.scaleRatio + (targetScaleRatio - self.scaleRatio) * easedProgress + self.translateX = self.translateX + (translateX - self.translateX) * easedProgress + self.translateY = self.translateY + (translateY - self.translateY) * easedProgress + stackMatrixTransformWithGraphAndLayer(this.treemap.elements, self.translateX, self.translateY, self.scaleRatio) + treemap.update() + }) } init(app: App, treemap: TreemapLayout): void { @@ -305,10 +320,11 @@ export class SelfEvent extends RegisterModule { ] mixin(app, methods) const selfEvents = [...primitiveEvents, 'wheel'] as const + const selfContext = { treemap, self: this } selfEvents.forEach((evt) => { - nativeEvents.push(bindPrimitiveEvent(treemap.render.canvas, { treemap, self: this }, evt, event)) + nativeEvents.push(bindPrimitiveEvent(treemap.render.canvas, selfContext, evt, event)) }) - const selfEvt = event.bindWithContext({ treemap, self: this }) + const selfEvt = event.bindWithContext(selfContext) // Regular drag event binding for windows/linux users or // other Darwin users who don't use Magic Trackpad or use three finger drag selfEvt('mousedown', this.ondragstart) @@ -317,7 +333,19 @@ export class SelfEvent extends RegisterModule { // For MacOS, we should inject two finger event if (isMacOS()) { - useMagicTrackpad() + useMagicTrackpad(treemap.render.canvas, { + ongesturestart: () => {}, + ongesturemove: (metadata) => { + if (!metadata.isPanGesture) { + this.onwheel.bind(selfContext)({ native: metadata.native, module: Object.create(null) }) + } else { + // + } + }, + ongestureend: () => { + console.log('end') + } + }) } else { // wheel selfEvt('wheel', this.onwheel) From 5084f61535884fcbaf9e63cb3ec8be87223b20f5 Mon Sep 17 00:00:00 2001 From: kanno <812137533@qq.com> Date: Sun, 1 Dec 2024 23:16:10 +0800 Subject: [PATCH 5/8] chore: bump jiek --- .gitignore | 1 + Makefile | 4 + package.json | 5 +- pnpm-lock.yaml | 341 +++++++++++++++++++++++++++++++++++++++- src/primitives/event.ts | 3 +- 5 files changed, 344 insertions(+), 10 deletions(-) diff --git a/.gitignore b/.gitignore index 248502a..bcff4b3 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,4 @@ node_modules dist .DS_Store display +.jk-analyses diff --git a/Makefile b/Makefile index 163c540..e6dbbb5 100644 --- a/Makefile +++ b/Makefile @@ -33,3 +33,7 @@ dev-server: build-server: @echo "Build server" ./node_modules/.bin/esbuild $(FLAGS) --define:LIVE_RELOAD=false + +analyze: + @echo "Start analyze" + $(JK) build --noMin --ana diff --git a/package.json b/package.json index 80d588f..d690216 100644 --- a/package.json +++ b/package.json @@ -27,8 +27,9 @@ "esbuild": "^0.24.0", "eslint": "8", "eslint-config-kagura": "^2.2.1", - "jiek": "^2.1.11", - "typescript": "^5.6.2" + "jiek": "^2.1.13", + "typescript": "^5.6.2", + "vite-bundle-analyzer": "^0.15.2" }, "pnpm": { "overrides": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f4c9254..e16ebf5 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -41,11 +41,14 @@ importers: specifier: ^2.2.1 version: 2.2.1(eslint@8.57.1)(typescript@5.6.2) jiek: - specifier: ^2.1.11 - version: 2.1.11(@pnpm/filter-workspace-packages@10.0.14)(@rollup/plugin-terser@0.4.4(rollup@4.13.2))(@types/node@22.7.4)(esbuild-register@3.6.0(esbuild@0.24.0))(postcss@8.4.47)(rollup-plugin-esbuild@6.1.1(esbuild@0.24.0)(rollup@4.13.2))(rollup-plugin-postcss@4.0.2(postcss@8.4.47))(typescript@5.6.2) + specifier: ^2.1.13 + version: 2.1.13(@pnpm/filter-workspace-packages@10.0.14)(@rollup/plugin-terser@0.4.4(rollup@4.13.2))(@types/node@22.7.4)(esbuild-register@3.6.0(esbuild@0.24.0))(postcss@8.4.47)(rollup-plugin-esbuild@6.1.1(esbuild@0.24.0)(rollup@4.13.2))(rollup-plugin-postcss@4.0.2(postcss@8.4.47))(typescript@5.6.2)(vite-bundle-analyzer@0.15.2) typescript: specifier: ^5.6.2 version: 5.6.2 + vite-bundle-analyzer: + specifier: ^0.15.2 + version: 0.15.2 packages: @@ -734,6 +737,15 @@ packages: rollup: optional: true + '@rollup/plugin-inject@5.0.5': + resolution: {integrity: sha512-2+DEJbNBoPROPkgTDNe8/1YXWcqxbN5DTjASVIOx8HS+pITXushyNiBV56RB08zuptzz8gT3YfkqriTBVycepg==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + '@rollup/plugin-json@6.1.0': resolution: {integrity: sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA==} engines: {node: '>=14.0.0'} @@ -752,6 +764,15 @@ packages: rollup: optional: true + '@rollup/plugin-replace@6.0.1': + resolution: {integrity: sha512-2sPh9b73dj5IxuMmDAsQWVFT7mR+yoHweBaXG2W/R8vQ+IWZlnaI7BR7J6EguVQUp1hd8Z7XuozpDjEKQAAC2Q==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + '@rollup/plugin-terser@0.4.4': resolution: {integrity: sha512-XHeJC5Bgvs8LfukDwWZp7yeqin6ns8RTl2B9avbejt6tZqsqvVoWI7ZTQrcNsfKEDWBTnTxM8nMDkO2IFFbd0A==} engines: {node: '>=14.0.0'} @@ -1010,6 +1031,10 @@ packages: engines: {node: '>= 8'} hasBin: true + accepts@1.3.8: + resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} + engines: {node: '>= 0.6'} + acorn-jsx@5.3.2: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: @@ -1117,6 +1142,10 @@ packages: builtins@5.1.0: resolution: {integrity: sha512-SW9lzGTLvWTP1AY8xeAMZimqDrIaSdLQUcVr9DMef51niJ022Ri87SwRRKYm4A6iHfkPaiVUu/Duw2Wc4J7kKg==} + cache-content-type@1.0.1: + resolution: {integrity: sha512-IKufZ1o4Ut42YUrZSo8+qnMTrFuKkvyoLXUywKz9GJ5BrhOFGhLdkx9sG4KAnVvbY6kEcSFjLQul+DVmBm2bgA==} + engines: {node: '>= 6.0.0'} + callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} @@ -1178,6 +1207,10 @@ packages: resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} engines: {node: '>=0.8'} + co@4.6.0: + resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} + engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} + color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} @@ -1211,6 +1244,18 @@ packages: config-chain@1.1.13: resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} + content-disposition@0.5.4: + resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} + engines: {node: '>= 0.6'} + + content-type@1.0.5: + resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} + engines: {node: '>= 0.6'} + + cookies@0.9.1: + resolution: {integrity: sha512-TG2hpqe4ELx54QER/S3HQ9SRVnQnGBtKUz5bLQWtYAQ+o6GpgMs6sYUvaiJjVxb+UXwhRhAEP3m7LbsIZ77Hmw==} + engines: {node: '>= 0.8'} + cross-spawn@7.0.3: resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} engines: {node: '>= 8'} @@ -1300,10 +1345,25 @@ packages: defaults@1.0.4: resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} + delegates@1.0.0: + resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} + + depd@1.1.2: + resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} + engines: {node: '>= 0.6'} + + depd@2.0.0: + resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} + engines: {node: '>= 0.8'} + dequal@2.0.3: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} + destroy@1.2.0: + resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + detect-indent@6.1.0: resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} engines: {node: '>=8'} @@ -1337,6 +1397,9 @@ packages: resolution: {integrity: sha512-geUcVIIrmLaY+YtuOl4gD7J/QCjsXZa5gUqre9sO6cgH0X/Fa9heBN3l/AWVII6rKPw45ATuCSDWz1pyO+HkPQ==} hasBin: true + ee-first@1.1.1: + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + electron-to-chromium@1.5.62: resolution: {integrity: sha512-t8c+zLmJHa9dJy96yBZRXGQYoiCEnHYgFwn1asvSPZSUdVxnB62A4RASd7k41ytG3ErFBA0TpHlKg9D9SQBmLg==} @@ -1350,6 +1413,10 @@ packages: resolution: {integrity: sha512-6qOwkl1g0fv0DN3Y3ggr2EaZXN71aoAqPp3p/pVaWSBSIo+YjLOWN61Fva43oVyQNPf7kgm8lkudzlzojwE2jw==} engines: {node: '>=10'} + encodeurl@1.0.2: + resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} + engines: {node: '>= 0.8'} + entities@2.2.0: resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} @@ -1373,6 +1440,9 @@ packages: resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} engines: {node: '>=6'} + escape-html@1.0.3: + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + escape-string-regexp@4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} @@ -1609,6 +1679,10 @@ packages: flatted@3.3.1: resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} + fresh@0.5.2: + resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} + engines: {node: '>= 0.6'} + fs-extra@10.1.0: resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} engines: {node: '>=12'} @@ -1671,10 +1745,26 @@ packages: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} + has-symbols@1.0.3: + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + engines: {node: '>= 0.4'} + + has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + hosted-git-info@4.1.0: resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==} engines: {node: '>=10'} + http-assert@1.5.0: + resolution: {integrity: sha512-uPpH7OKX4H25hBmU6G1jWNaqJGpTXxey+YOUizJUAgu0AjLUeC8D73hTrhvDS5D+GJN1DN1+hhc/eF/wpxtp0w==} + engines: {node: '>= 0.8'} + + http-errors@1.8.1: + resolution: {integrity: sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==} + engines: {node: '>= 0.6'} + human-signals@2.1.0: resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} engines: {node: '>=10.17.0'} @@ -1741,6 +1831,10 @@ packages: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} + is-generator-function@1.0.10: + resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} + engines: {node: '>= 0.4'} + is-glob@4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} @@ -1796,8 +1890,8 @@ packages: isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - jiek@2.1.11: - resolution: {integrity: sha512-Uc2thivfpwqAGkfRxtSuVN0CumwQCXRn22gdeo9NzDe9if4qMhQR1AJwFCs5hvZmkSIZA/kwWJ8m7khBysMYRA==} + jiek@2.1.13: + resolution: {integrity: sha512-TErqv1iuc67l31hnkeyHtR5BsL7nQv7H9HfST0FZKSbNydAjVcQxnPGc6hUcl09QK3BGzPnQ11j36ZBOSVt44w==} hasBin: true peerDependencies: '@pnpm/filter-workspace-packages': ^7.2.13||^8.0.0||^9.0.0||^10.0.0 @@ -1808,6 +1902,7 @@ packages: rollup-plugin-postcss: ^4.0.2 rollup-plugin-swc3: ^0.12.1 typescript: ^4.0.0||^5.0.0 + vite-bundle-analyzer: ^0.15.2 peerDependenciesMeta: '@pnpm/filter-workspace-packages': optional: true @@ -1825,6 +1920,8 @@ packages: optional: true typescript: optional: true + vite-bundle-analyzer: + optional: true js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} @@ -1860,9 +1957,24 @@ packages: resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} engines: {node: '>=4.0'} + keygrip@1.1.0: + resolution: {integrity: sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ==} + engines: {node: '>= 0.6'} + keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + koa-compose@4.1.0: + resolution: {integrity: sha512-8ODW8TrDuMYvXRwra/Kh7/rJo9BtOfPc6qO8eAfC80CnCvSjSl0bkRM24X6/XBBEyj0v1nRUQ1LyOy3dbqOWXw==} + + koa-convert@2.0.0: + resolution: {integrity: sha512-asOvN6bFlSnxewce2e/DK3p4tltyfC4VM7ZwuTuepI7dEQVcvpyFuBcEARu1+Hxg8DIwytce2n7jrZtRlPrARA==} + engines: {node: '>= 10'} + + koa@2.15.3: + resolution: {integrity: sha512-j/8tY9j5t+GVMLeioLaxweJiKUayFhlGqNTzf2ZGwL0ZCQijd2RLHK0SLW5Tsko8YyyqCZC2cojIb0/s62qTAg==} + engines: {node: ^4.8.4 || ^6.10.1 || ^7.10.1 || >= 8.1.4} + language-subtag-registry@0.3.23: resolution: {integrity: sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==} @@ -1929,6 +2041,10 @@ packages: mdn-data@2.0.14: resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==} + media-typer@0.3.0: + resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} + engines: {node: '>= 0.6'} + mem@6.1.1: resolution: {integrity: sha512-Ci6bIfq/UgcxPTYa8dQQ5FY3BzKkT894bwXWXxC/zqs0XgMO2cT20CGkOqda7gZNkmK5VP4x89IGZ6K7hfbn3Q==} engines: {node: '>=8'} @@ -1948,6 +2064,14 @@ packages: 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-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + mimic-fn@2.1.0: resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} engines: {node: '>=6'} @@ -1990,6 +2114,10 @@ packages: natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + negotiator@0.6.3: + resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} + engines: {node: '>= 0.6'} + node-releases@2.0.18: resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} @@ -2015,6 +2143,10 @@ packages: nth-check@2.1.1: resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + on-finished@2.4.1: + resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} + engines: {node: '>= 0.8'} + once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} @@ -2022,6 +2154,9 @@ packages: resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} engines: {node: '>=6'} + only@0.0.2: + resolution: {integrity: sha512-Fvw+Jemq5fjjyWz6CpKx6w9s7xxqo3+JCyM0WXWeCSOboZ8ABkyvP8ID4CZuChA/wxSx+XSJmdOm8rGVyJ1hdQ==} + optionator@0.9.4: resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} engines: {node: '>= 0.8.0'} @@ -2086,6 +2221,10 @@ packages: resolution: {integrity: sha512-InpdgIdNe5xWMEUcrVQUniQKwnggBtJ7+SCwh7zQAZwbbIYZV9XdgJyhtmDSSvykFyQXoe4BINnzKTfCwWLs5g==} engines: {node: '>=8.15'} + parseurl@1.3.3: + resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} + engines: {node: '>= 0.8'} + path-absolute@1.0.1: resolution: {integrity: sha512-gds5iRhSeOcDtj8gfWkRHLtZKTPsFVuh7utbjYtvnclw4XM+ffRzJrwqMhOD1PVqef7nBLmgsu1vIujjvAJrAw==} engines: {node: '>=4'} @@ -2481,6 +2620,9 @@ packages: serialize-javascript@6.0.2: resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} + setprototypeof@1.2.0: + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} @@ -2537,6 +2679,10 @@ packages: stacktracey@2.1.8: resolution: {integrity: sha512-Kpij9riA+UNg7TnphqjH7/CzctQ/owJGNbFkfEeve4Z4uxT5+JapVLFXcsurIfN34gnTWZNJ/f7NMG0E8JDzTw==} + statuses@1.5.0: + resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} + engines: {node: '>= 0.6'} + string-hash@1.1.3: resolution: {integrity: sha512-kJUvRUFK49aub+a7T1nNE66EJbZBMnBgoC1UbCZ5n6bsZKBRga4KgBRTMn/pFkeCZSYtNeSyMxPDM0AXWELk2A==} @@ -2612,6 +2758,10 @@ packages: 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'} + ts-api-utils@1.3.0: resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} engines: {node: '>=16'} @@ -2629,6 +2779,10 @@ packages: tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + tsscmp@1.0.6: + resolution: {integrity: sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==} + engines: {node: '>=0.6.x'} + type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} @@ -2645,6 +2799,10 @@ packages: resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} engines: {node: '>=8'} + type-is@1.6.18: + resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} + engines: {node: '>= 0.6'} + typescript@5.6.2: resolution: {integrity: sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw==} engines: {node: '>=14.17'} @@ -2681,10 +2839,18 @@ packages: resolution: {integrity: sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + vary@1.1.2: + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} + version-selector-type@3.0.0: resolution: {integrity: sha512-PSvMIZS7C1MuVNBXl/CDG2pZq8EXy/NW2dHIdm3bVP5N0PC8utDK8ttXLXj44Gn3J0lQE3U7Mpm1estAOd+eiA==} engines: {node: '>=10.13'} + vite-bundle-analyzer@0.15.2: + resolution: {integrity: sha512-AwFOewhvf7EkTACa9c/inbxMrJOWwyVF4nUMITwN26lM5TAYkcnJC4KFgZXym3sYRAWe1Qgvk8X4OFTw4HPaJw==} + hasBin: true + wcwidth@1.0.1: resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} @@ -2727,6 +2893,10 @@ packages: resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} engines: {node: '>= 6'} + ylru@1.4.0: + resolution: {integrity: sha512-2OQsPNEmBCvXuFlIni/a+Rn+R2pHW9INm0BxXJ4hVDA8TirqMj+J/Rp9ItLatT/5pZqWwefVrTQcHpixsxnVlA==} + engines: {node: '>= 4.0.0'} + yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} @@ -3187,8 +3357,7 @@ snapshots: dependencies: '@nolyfill/shared': 1.0.28 - '@nolyfill/safe-buffer@1.0.41': - optional: true + '@nolyfill/safe-buffer@1.0.41': {} '@nolyfill/safe-regex-test@1.0.29': {} @@ -3631,6 +3800,14 @@ snapshots: optionalDependencies: rollup: 4.13.2 + '@rollup/plugin-inject@5.0.5(rollup@4.13.2)': + dependencies: + '@rollup/pluginutils': 5.1.2(rollup@4.13.2) + estree-walker: 2.0.2 + magic-string: 0.30.12 + optionalDependencies: + rollup: 4.13.2 + '@rollup/plugin-json@6.1.0(rollup@4.13.2)': dependencies: '@rollup/pluginutils': 5.1.2(rollup@4.13.2) @@ -3647,6 +3824,13 @@ snapshots: optionalDependencies: rollup: 4.13.2 + '@rollup/plugin-replace@6.0.1(rollup@4.13.2)': + dependencies: + '@rollup/pluginutils': 5.1.2(rollup@4.13.2) + magic-string: 0.30.12 + optionalDependencies: + rollup: 4.13.2 + '@rollup/plugin-terser@0.4.4(rollup@4.13.2)': dependencies: serialize-javascript: 6.0.2 @@ -3926,6 +4110,11 @@ snapshots: isexe: 2.0.0 optional: true + accepts@1.3.8: + dependencies: + mime-types: 2.1.35 + negotiator: 0.6.3 + acorn-jsx@5.3.2(acorn@8.12.1): dependencies: acorn: 8.12.1 @@ -4046,6 +4235,11 @@ snapshots: semver: 7.6.3 optional: true + cache-content-type@1.0.1: + dependencies: + mime-types: 2.1.35 + ylru: 1.4.0 + callsites@3.1.0: {} camelcase-keys@6.2.2: @@ -4111,6 +4305,8 @@ snapshots: clone@1.0.4: optional: true + co@4.6.0: {} + color-convert@2.0.1: dependencies: color-name: 1.1.4 @@ -4143,6 +4339,17 @@ snapshots: proto-list: 1.2.4 optional: true + content-disposition@0.5.4: + dependencies: + safe-buffer: '@nolyfill/safe-buffer@1.0.41' + + content-type@1.0.5: {} + + cookies@0.9.1: + dependencies: + depd: 2.0.0 + keygrip: 1.1.0 + cross-spawn@7.0.3: dependencies: path-key: 3.1.1 @@ -4255,8 +4462,16 @@ snapshots: clone: 1.0.4 optional: true + delegates@1.0.0: {} + + depd@1.1.2: {} + + depd@2.0.0: {} + dequal@2.0.3: {} + destroy@1.2.0: {} + detect-indent@6.1.0: {} detect-libc@2.0.3: @@ -4303,6 +4518,8 @@ snapshots: '@dprint/win32-arm64': 0.47.2 '@dprint/win32-x64': 0.47.2 + ee-first@1.1.1: {} + electron-to-chromium@1.5.62: optional: true @@ -4315,6 +4532,8 @@ snapshots: mem: 8.1.1 optional: true + encodeurl@1.0.2: {} + entities@2.2.0: optional: true @@ -4364,6 +4583,8 @@ snapshots: escalade@3.2.0: optional: true + escape-html@1.0.3: {} + escape-string-regexp@4.0.0: {} eslint-config-kagura@2.2.1(eslint@8.57.1)(typescript@5.6.2): @@ -4732,6 +4953,8 @@ snapshots: flatted@3.3.1: {} + fresh@0.5.2: {} + fs-extra@10.1.0: dependencies: graceful-fs: 4.2.11 @@ -4807,11 +5030,30 @@ snapshots: has-flag@4.0.0: {} + has-symbols@1.0.3: {} + + has-tostringtag@1.0.2: + dependencies: + has-symbols: 1.0.3 + hosted-git-info@4.1.0: dependencies: lru-cache: 6.0.0 optional: true + http-assert@1.5.0: + dependencies: + deep-equal: '@nolyfill/deep-equal@1.0.29' + http-errors: 1.8.1 + + http-errors@1.8.1: + dependencies: + depd: 1.1.2 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 1.5.0 + toidentifier: 1.0.1 + human-signals@2.1.0: optional: true @@ -4868,6 +5110,10 @@ snapshots: is-fullwidth-code-point@3.0.0: {} + is-generator-function@1.0.10: + dependencies: + has-tostringtag: 1.0.2 + is-glob@4.0.3: dependencies: is-extglob: 2.1.1 @@ -4914,21 +5160,24 @@ snapshots: isexe@2.0.0: {} - jiek@2.1.11(@pnpm/filter-workspace-packages@10.0.14)(@rollup/plugin-terser@0.4.4(rollup@4.13.2))(@types/node@22.7.4)(esbuild-register@3.6.0(esbuild@0.24.0))(postcss@8.4.47)(rollup-plugin-esbuild@6.1.1(esbuild@0.24.0)(rollup@4.13.2))(rollup-plugin-postcss@4.0.2(postcss@8.4.47))(typescript@5.6.2): + jiek@2.1.13(@pnpm/filter-workspace-packages@10.0.14)(@rollup/plugin-terser@0.4.4(rollup@4.13.2))(@types/node@22.7.4)(esbuild-register@3.6.0(esbuild@0.24.0))(postcss@8.4.47)(rollup-plugin-esbuild@6.1.1(esbuild@0.24.0)(rollup@4.13.2))(rollup-plugin-postcss@4.0.2(postcss@8.4.47))(typescript@5.6.2)(vite-bundle-analyzer@0.15.2): dependencies: '@inquirer/prompts': 7.1.0(@types/node@22.7.4) '@jiek/pkger': 0.2.1 '@jiek/rollup-plugin-dts': 6.2.2(rollup@4.13.2)(typescript@5.6.2) '@jiek/utils': 0.2.3 '@rollup/plugin-commonjs': 28.0.1(rollup@4.13.2) + '@rollup/plugin-inject': 5.0.5(rollup@4.13.2) '@rollup/plugin-json': 6.1.0(rollup@4.13.2) '@rollup/plugin-node-resolve': 15.3.0(rollup@4.13.2) + '@rollup/plugin-replace': 6.0.1(rollup@4.13.2) cli-progress: 3.12.0 commander: 12.1.0 detect-indent: 6.1.0 execa: 9.3.1 js-yaml: 4.1.0 jsonc-parser: 3.3.1 + koa: 2.15.3 rollup: 4.13.2 optionalDependencies: '@pnpm/filter-workspace-packages': 10.0.14 @@ -4938,8 +5187,10 @@ snapshots: rollup-plugin-esbuild: 6.1.1(esbuild@0.24.0)(rollup@4.13.2) rollup-plugin-postcss: 4.0.2(postcss@8.4.47) typescript: 5.6.2 + vite-bundle-analyzer: 0.15.2 transitivePeerDependencies: - '@types/node' + - supports-color js-tokens@4.0.0: optional: true @@ -4976,10 +5227,49 @@ snapshots: object.assign: '@nolyfill/object.assign@1.0.28' object.values: '@nolyfill/object.values@1.0.28' + keygrip@1.1.0: + dependencies: + tsscmp: 1.0.6 + keyv@4.5.4: dependencies: json-buffer: 3.0.1 + koa-compose@4.1.0: {} + + koa-convert@2.0.0: + dependencies: + co: 4.6.0 + koa-compose: 4.1.0 + + koa@2.15.3: + dependencies: + accepts: 1.3.8 + cache-content-type: 1.0.1 + content-disposition: 0.5.4 + content-type: 1.0.5 + cookies: 0.9.1 + debug: 4.3.7 + delegates: 1.0.0 + depd: 2.0.0 + destroy: 1.2.0 + encodeurl: 1.0.2 + escape-html: 1.0.3 + fresh: 0.5.2 + http-assert: 1.5.0 + http-errors: 1.8.1 + is-generator-function: 1.0.10 + koa-compose: 4.1.0 + koa-convert: 2.0.0 + on-finished: 2.4.1 + only: 0.0.2 + parseurl: 1.3.3 + statuses: 1.5.0 + type-is: 1.6.18 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + language-subtag-registry@0.3.23: {} language-tags@1.0.9: @@ -5049,6 +5339,8 @@ snapshots: mdn-data@2.0.14: optional: true + media-typer@0.3.0: {} + mem@6.1.1: dependencies: map-age-cleaner: 0.1.3 @@ -5071,6 +5363,12 @@ snapshots: braces: 3.0.3 picomatch: 2.3.1 + mime-db@1.52.0: {} + + mime-types@2.1.35: + dependencies: + mime-db: 1.52.0 + mimic-fn@2.1.0: optional: true @@ -5105,6 +5403,8 @@ snapshots: natural-compare@1.4.0: {} + negotiator@0.6.3: {} + node-releases@2.0.18: optional: true @@ -5131,6 +5431,10 @@ snapshots: boolbase: 1.0.0 optional: true + on-finished@2.4.1: + dependencies: + ee-first: 1.1.1 + once@1.4.0: dependencies: wrappy: 1.0.2 @@ -5140,6 +5444,8 @@ snapshots: mimic-fn: 2.1.0 optional: true + only@0.0.2: {} + optionator@0.9.4: dependencies: deep-is: 0.1.4 @@ -5212,6 +5518,8 @@ snapshots: semver: 6.3.1 optional: true + parseurl@1.3.3: {} + path-absolute@1.0.1: optional: true @@ -5653,6 +5961,8 @@ snapshots: randombytes: 2.1.0 optional: true + setprototypeof@1.2.0: {} + shebang-command@2.0.0: dependencies: shebang-regex: 3.0.0 @@ -5709,6 +6019,8 @@ snapshots: get-source: 2.0.12 optional: true + statuses@1.5.0: {} + string-hash@1.1.3: optional: true @@ -5788,6 +6100,8 @@ snapshots: dependencies: is-number: 7.0.0 + toidentifier@1.0.1: {} + ts-api-utils@1.3.0(typescript@5.6.2): dependencies: typescript: 5.6.2 @@ -5802,6 +6116,8 @@ snapshots: tslib@2.8.1: optional: true + tsscmp@1.0.6: {} + type-check@0.4.0: dependencies: prelude-ls: 1.2.1 @@ -5813,6 +6129,11 @@ snapshots: type-fest@0.6.0: optional: true + type-is@1.6.18: + dependencies: + media-typer: 0.3.0 + mime-types: 2.1.35 + typescript@5.6.2: {} undici-types@6.19.8: {} @@ -5849,11 +6170,15 @@ snapshots: builtins: 5.1.0 optional: true + vary@1.1.2: {} + version-selector-type@3.0.0: dependencies: semver: 7.6.3 optional: true + vite-bundle-analyzer@0.15.2: {} + wcwidth@1.0.1: dependencies: defaults: 1.0.4 @@ -5903,6 +6228,8 @@ snapshots: yaml@1.10.2: optional: true + ylru@1.4.0: {} + yocto-queue@0.1.0: {} yoctocolors-cjs@2.1.2: {} diff --git a/src/primitives/event.ts b/src/primitives/event.ts index 912afad..6801406 100644 --- a/src/primitives/event.ts +++ b/src/primitives/event.ts @@ -334,7 +334,8 @@ export class SelfEvent extends RegisterModule { // For MacOS, we should inject two finger event if (isMacOS()) { useMagicTrackpad(treemap.render.canvas, { - ongesturestart: () => {}, + ongesturestart: () => { + }, ongesturemove: (metadata) => { if (!metadata.isPanGesture) { this.onwheel.bind(selfContext)({ native: metadata.native, module: Object.create(null) }) From 1071310fc422710e01335eb1536e3ecc0e7a546e Mon Sep 17 00:00:00 2001 From: kanno <812137533@qq.com> Date: Mon, 2 Dec 2024 11:17:35 +0800 Subject: [PATCH 6/8] feat: drag wrappr with raf --- src/primitives/event.ts | 49 +++++++++++++++++++++++++---------------- 1 file changed, 30 insertions(+), 19 deletions(-) diff --git a/src/primitives/event.ts b/src/primitives/event.ts index 6801406..3f37eeb 100644 --- a/src/primitives/event.ts +++ b/src/primitives/event.ts @@ -3,6 +3,7 @@ // If one day etoile need to build as a useful library. Pls rewrite it! // All of implementation don't want to consider the compatibility of the browser. // Currently, it doesn't support moving with two finger on a Magic Trackpad. +// Note: All events that need to trigger rendering should call 'createEffectScope'. import { useMagicTrackpad } from '../etoile/native/magic-trackpad' import { captureBoxXY, createEffectScope } from '../etoile/native/dom' @@ -209,21 +210,32 @@ export class SelfEvent extends RegisterModule { this.self.event.off('mousemove', this.self.onmousemove) this.treemap.event.off(internalEventMappings.ON_ZOOM) this.self.forceDestroy = true - const { native } = metadata - const x = native.offsetX - const y = native.offsetY - const { x: lastX, y: lastY } = this.self.draggingState - const drawX = x - lastX - const drawY = y - lastY - this.self.translateX += drawX - this.self.translateY += drawY - this.self.draggingState = { x, y } - if (this.self.triggerZoom) { - refreshBackgroundLayer(this) - } - this.treemap.reset() - stackMatrixTransformWithGraphAndLayer(this.treemap.elements, this.self.translateX, this.self.translateY, this.self.scaleRatio) - this.treemap.update() + + const effect = createEffectScope() + const animationDuration = 300 + const startTime = Date.now() + + effect.run(() => { + const elapsed = Date.now() - startTime + const progress = Math.min(elapsed / animationDuration, 1) + if (progress >= 1) { + effect.stop() + return true + } + if (this.self.triggerZoom) { + refreshBackgroundLayer(this) + } + const { offsetX: x, offsetY: y } = metadata.native + const { x: lastX, y: lastY } = this.self.draggingState + const drawX = x - lastX + const drawY = y - lastY + this.treemap.reset() + this.self.translateX += drawX + this.self.translateY += drawY + this.self.draggingState = { x, y } + stackMatrixTransformWithGraphAndLayer(this.treemap.elements, this.self.translateX, this.self.translateY, this.self.scaleRatio) + this.treemap.update() + }) } ondragend(this: SelfEventContenxt) { @@ -231,7 +243,6 @@ export class SelfEvent extends RegisterModule { return } this.self.isDragging = false - this.self.draggingState = { x: 0, y: 0 } this.self.highlight.reset() this.self.highlight.setDisplayLayerForHighlight() this.self.event.bindWithContext(this)('mousemove', this.self.onmousemove) @@ -455,13 +466,13 @@ function onZoom(ctx: SelfEventContenxt, node: LayoutModule, root: LayoutModule | const startTime = Date.now() const animationDuration = 300 - const { run, stop } = createEffectScope() - run(() => { + const effect = createEffectScope() + effect.run(() => { const elapsed = Date.now() - startTime const progress = Math.min(elapsed / animationDuration, 1) treemap.backgroundLayer.__refresh__ = false if (progress >= 1) { - stop() + effect.stop() self.layoutWidth = w self.layoutHeight = h self.forceDestroy = false From 81fe684edb6887aab407617e0f44d323ef85e20d Mon Sep 17 00:00:00 2001 From: kanno <812137533@qq.com> Date: Mon, 2 Dec 2024 17:44:54 +0800 Subject: [PATCH 7/8] feat: remove unused bind --- src/primitives/event.ts | 25 +++++++++++-------------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/src/primitives/event.ts b/src/primitives/event.ts index 3f37eeb..2ad25c8 100644 --- a/src/primitives/event.ts +++ b/src/primitives/event.ts @@ -97,22 +97,20 @@ function smoothDrawing(c: SelfEventContenxt) { const progress = Math.min(elapsed / animationDuration, 1) if (self.forceDestroy || progress >= 1) { effect.stop() - self.highlight.reset() - self.highlight.setDisplayLayerForHighlight() return true } const easedProgress = easing.cubicInOut(progress) self.highlight.reset() const mask = createFillBlock(x, y, w, h, { fill, opacity: 0.4, radius: 2, margin: 2 }) self.highlight.highlight.add(mask) - self.highlight.setDisplayLayerForHighlight('1') + self.highlight.setZIndexForHighlight('1') applyForOpacity(mask, 0.4, 0.4, easedProgress) stackMatrixTransform(mask, self.translateX, self.translateY, self.scaleRatio) self.highlight.highlight.update() }) } else { self.highlight.reset() - self.highlight.setDisplayLayerForHighlight() + self.highlight.setZIndexForHighlight() } } @@ -205,7 +203,7 @@ export class SelfEvent extends RegisterModule { } // If highlighting is triggered, it needs to be destroyed first this.self.highlight.reset() - this.self.highlight.setDisplayLayerForHighlight() + this.self.highlight.setZIndexForHighlight() // @ts-expect-error this.self.event.off('mousemove', this.self.onmousemove) this.treemap.event.off(internalEventMappings.ON_ZOOM) @@ -234,6 +232,7 @@ export class SelfEvent extends RegisterModule { this.self.translateY += drawY this.self.draggingState = { x, y } stackMatrixTransformWithGraphAndLayer(this.treemap.elements, this.self.translateX, this.self.translateY, this.self.scaleRatio) + this.treemap.update() }) } @@ -244,7 +243,7 @@ export class SelfEvent extends RegisterModule { } this.self.isDragging = false this.self.highlight.reset() - this.self.highlight.setDisplayLayerForHighlight() + this.self.highlight.setZIndexForHighlight() this.self.event.bindWithContext(this)('mousemove', this.self.onmousemove) } @@ -280,7 +279,7 @@ export class SelfEvent extends RegisterModule { self.forceDestroy = true this.self.highlight.reset() - this.self.highlight.setDisplayLayerForHighlight() + this.self.highlight.setZIndexForHighlight() const factor = absWheelDelta > 3 ? 1.4 : absWheelDelta > 1 ? 1.2 : 1.1 const delta = wheelDelta > 0 ? factor : 1 / factor const targetScaleRatio = self.scaleRatio * delta @@ -371,13 +370,11 @@ export class SelfEvent extends RegisterModule { this.highlight.init(width, height, root) if (!installHightlightEvent) { - bindPrimitiveEvent(this.highlight.highlight.render.canvas, { treemap, self: this }, 'mousemove', event) - bindPrimitiveEvent(this.highlight.highlight.render.canvas, { treemap, self: this }, 'mouseout', event) // highlight selfEvt('mousemove', this.onmousemove) selfEvt('mouseout', this.onmouseout) installHightlightEvent = true - this.highlight.setDisplayLayerForHighlight() + this.highlight.setZIndexForHighlight() } this.highlight.reset() }) @@ -504,14 +501,14 @@ function isScrollWheelOrRightButtonOnMouseupAndDown(e: interface HighlightContext { init: (w: number, h: number, root: HTMLElement) => void reset: () => void - setDisplayLayerForHighlight: (layer?: string) => void + setZIndexForHighlight: (layer?: string) => void get highlight(): Schedule } function createHighlight(): HighlightContext { let s: Schedule | null = null - const setDisplayLayerForHighlight = (layer: string = '-1') => { + const setZIndexForHighlight = (layer: string = '-1') => { if (!s) return const c = s.render.canvas c.style.zIndex = layer @@ -521,7 +518,7 @@ function createHighlight(): HighlightContext { if (!s) { s = new Schedule(root, { width: w, height: h }) } - setDisplayLayerForHighlight() + setZIndexForHighlight() s.render.canvas.style.position = 'absolute' s.render.canvas.style.pointerEvents = 'none' } @@ -535,7 +532,7 @@ function createHighlight(): HighlightContext { return { init, reset, - setDisplayLayerForHighlight, + setZIndexForHighlight, get highlight() { return s! } From 24dba30229616aad8bebddd8606f7d991e7d8c95 Mon Sep 17 00:00:00 2001 From: kanno <812137533@qq.com> Date: Wed, 4 Dec 2024 22:22:18 +0800 Subject: [PATCH 8/8] chore: bump deps --- .vscode/settings.json | 17 +- dprint.json | 28 +- package.json | 4 +- pnpm-lock.yaml | 1329 ++++++++--------------------------------- 4 files changed, 249 insertions(+), 1129 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index a9769af..690808c 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,10 +1,9 @@ { - "eslint.useFlatConfig": true, - "dprint.path": "./node_modules/.bin/dprint", - "editor.defaultFormatter": "dprint.dprint", - "editor.codeActionsOnSave": { - "source.fixAll": "explicit" - }, - "editor.formatOnSave": true, - } - \ No newline at end of file + "eslint.useFlatConfig": true, + "dprint.path": "./node_modules/.bin/dprint", + "editor.defaultFormatter": "dprint.dprint", + "editor.codeActionsOnSave": { + "source.fixAll": "explicit" + }, + "editor.formatOnSave": true, +} diff --git a/dprint.json b/dprint.json index 7b78271..5e65a0f 100644 --- a/dprint.json +++ b/dprint.json @@ -1,30 +1,4 @@ { "lineWidth": 140, - "typescript": { - "semiColons": "asi", - "indentWidth": 2, - "quoteStyle": "preferSingle", - "useTabs": false, - "trailingCommas": "never", - "module.sortImportDeclarations": "maintain", - "importDeclaration.sortNamedImports": "maintain", - "operatorPosition": "maintain", - "jsx.quoteStyle": "preferDouble", - "jsx.bracketPosition": "maintain", - "functionDeclaration.spaceBeforeParentheses": false - }, - "json": {}, - "markdown": {}, - "excludes": [ - "**/node_modules", - "**/*-lock.json" - ], - "plugins": [ - "https://plugins.dprint.dev/typescript-0.93.0.wasm", - "https://plugins.dprint.dev/json-0.19.3.wasm", - "https://plugins.dprint.dev/markdown-0.17.8.wasm", - "https://plugins.dprint.dev/toml-0.6.3.wasm", - "https://plugins.dprint.dev/g-plane/markup_fmt-v0.13.1.wasm", - "https://plugins.dprint.dev/g-plane/pretty_yaml-v0.5.0.wasm" - ] + "extends": "https://dprint.nonzzz.moe/dprint.json" } diff --git a/package.json b/package.json index d690216..8d4a5a2 100644 --- a/package.json +++ b/package.json @@ -25,8 +25,8 @@ "@types/node": "^22.7.4", "dprint": "^0.47.2", "esbuild": "^0.24.0", - "eslint": "8", - "eslint-config-kagura": "^2.2.1", + "eslint": "^9.15.0", + "eslint-config-kagura": "^3.0.1", "jiek": "^2.1.13", "typescript": "^5.6.2", "vite-bundle-analyzer": "^0.15.2" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e16ebf5..09eaf1a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -35,11 +35,11 @@ importers: specifier: 0.24.0 version: 0.24.0 eslint: - specifier: '8' - version: 8.57.1 + specifier: ^9.15.0 + version: 9.15.0 eslint-config-kagura: - specifier: ^2.2.1 - version: 2.2.1(eslint@8.57.1)(typescript@5.6.2) + specifier: ^3.0.1 + version: 3.0.1(@typescript-eslint/eslint-plugin@8.17.0(@typescript-eslint/parser@8.17.0(eslint@9.15.0)(typescript@5.6.2))(eslint@9.15.0)(typescript@5.6.2))(eslint@9.15.0)(typescript@5.6.2) jiek: specifier: ^2.1.13 version: 2.1.13(@pnpm/filter-workspace-packages@10.0.14)(@rollup/plugin-terser@0.4.4(rollup@4.13.2))(@types/node@22.7.4)(esbuild-register@3.6.0(esbuild@0.24.0))(postcss@8.4.47)(rollup-plugin-esbuild@6.1.1(esbuild@0.24.0)(rollup@4.13.2))(rollup-plugin-postcss@4.0.2(postcss@8.4.47))(typescript@5.6.2)(vite-bundle-analyzer@0.15.2) @@ -74,25 +74,21 @@ packages: resolution: {integrity: sha512-B0m1vT5LdVtrNOVdkqpLPrSxuCD+l5bTIgRzPaDoIB1ChWQkler9IlX8C+RStpujjPj6SYvwo5vTzjQSvRdQkA==} cpu: [arm64] os: [linux] - libc: [glibc] '@dprint/linux-arm64-musl@0.47.2': resolution: {integrity: sha512-zID6wZZqpg2/Q2Us+ERQkbhLwlW3p3xaeEr00MPf49bpydmEjMiPuSjWPkNv+slQSIyIsVovOxF4lbNZjsdtvw==} cpu: [arm64] os: [linux] - libc: [musl] '@dprint/linux-x64-glibc@0.47.2': resolution: {integrity: sha512-rB3WXMdINnRd33DItIp7mObS7dzHW90ZzeJSsoKJLPp+Z7wXjjb27UUowfqVI4baa/1pd7sdbX54DPohMtfu/A==} cpu: [x64] os: [linux] - libc: [glibc] '@dprint/linux-x64-musl@0.47.2': resolution: {integrity: sha512-E0+TNbzYdTXJ/jCVjUctVxkda/faw++aDQLfyWGcmdMJnbM7NZz+W4fUpDXzMPsjy+zTWxXcPK7/q2DZz2gnbg==} cpu: [x64] os: [linux] - libc: [musl] '@dprint/win32-arm64@0.47.2': resolution: {integrity: sha512-K1EieTCFjfOCmyIhw9zFSduE6qVCNHEveupqZEfbSkVGw5T9MJQ1I9+n7MDb3RIDYEUk0enJ58/w82q8oDKCyA==} @@ -254,65 +250,57 @@ packages: peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - '@eslint-community/regexpp@4.11.1': - resolution: {integrity: sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q==} + '@eslint-community/regexpp@4.12.1': + resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint-react/ast@1.14.3': - resolution: {integrity: sha512-JU0619vNfl0RaqbsyyEfLJWKupJOmf5JmHt4sCAD6Y1LCW80Pi0ZbBXeCUTdCR36mA8IJxm9PoLFliQyDYj6uw==} - - '@eslint-react/core@1.14.3': - resolution: {integrity: sha512-1T/Zubn9PSwJHNN+4SnXXPb6ZjL1ILl9hN2pkPClh8IyBoCTM+u/BHTfxI3aVF5I8yWLNDaiG7nkaxmxoBEOfQ==} - - '@eslint-react/eslint-plugin@1.14.3': - resolution: {integrity: sha512-U06zO3F56RAYXI0ZKTEpdwyWllV+muvi2gdC1SLARwk4AOmLAV8ke+iHW5EXBfNkCJQ3SgKRan4tpQqqwfEsMA==} - engines: {bun: '>=1.0.15', node: '>=18.18.0'} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: ^4.9.5 || ^5.3.3 - peerDependenciesMeta: - typescript: - optional: true - - '@eslint-react/jsx@1.14.3': - resolution: {integrity: sha512-LJqS63/S8koDJNIqKZ/yLuFvVk4RiK7K3emjUFx+UXHrIdKwFDMpFkksVVbxqeMX70E+toMXgMepABE0pA54ag==} - - '@eslint-react/shared@1.14.3': - resolution: {integrity: sha512-GP+mjNZBGXq2CuwyVTE2+74K3tBixxNeaG3ho3ovpQ7e8NlTD3TOZk5vZyOJaeRqaOJoJa54PURe12Qt6loCdw==} + '@eslint/config-array@0.19.0': + resolution: {integrity: sha512-zdHg2FPIFNKPdcHWtiNT+jEFCHYVplAXRDlQDyqy0zGx/q2parwh7brGJSiTxRk/TSMkbM//zt/f5CHgyTyaSQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint-react/tools@1.14.3': - resolution: {integrity: sha512-NtewO4fWxzGtVCjAhD6NG4FwLev5Xq87KWpW92brPF+AvTzkr04abt3/14CpojJlW9L9SMK6FsX9tFVP7ZBqJQ==} + '@eslint/core@0.9.0': + resolution: {integrity: sha512-7ATR9F0e4W85D/0w7cU0SNj7qkAexMG+bAHEZOjo9akvGuhHE2m7umzWzfnpa0XAg5Kxc1BWmtPMV67jJ+9VUg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint-react/types@1.14.3': - resolution: {integrity: sha512-Hi3rBCX0pAxoQs3MQYX/rt4Fxdz97U0pTjSQsm03dGUBb/BEVgrVK9SEZkCqpfPZ7NXrVhuiYudoJRUylNZyCw==} + '@eslint/eslintrc@3.2.0': + resolution: {integrity: sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint-react/var@1.14.3': - resolution: {integrity: sha512-APJJVSyrDrvJn3t4qXBg1XpWMxmW5AEym56a9/ILzLtgOWFsDj6gJCy4o2g5UB2AZqtfS6YS5IfU5B1G/wYtiw==} + '@eslint/js@9.15.0': + resolution: {integrity: sha512-tMTqrY+EzbXmKJR5ToI8lxu7jaN5EdmrBFJpQk5JmSlyLsx6o4t27r883K5xsLuCYCpfKBCGswMSWXsM+jB7lg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/eslintrc@2.1.4': - resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@eslint/object-schema@2.1.4': + resolution: {integrity: sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@8.57.1': - resolution: {integrity: sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@eslint/plugin-kit@0.2.3': + resolution: {integrity: sha512-2b/g5hRmpbb1o4GnTZax9N9m0FXzz9OV42ZzI4rDDMDuHUqigAiQCEWChBWCY4ztAGVRjoWT19v0yMmc5/L5kA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@gwhitney/detect-indent@7.0.1': resolution: {integrity: sha512-7bQW+gkKa2kKZPeJf6+c6gFK9ARxQfn+FKy9ScTBppyKRWH2KzsmweXUoklqeEiHiNVWaeP5csIdsNq6w7QhzA==} engines: {node: '>=12.20'} - '@humanwhocodes/config-array@0.13.0': - resolution: {integrity: sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==} - engines: {node: '>=10.10.0'} - deprecated: Use @eslint/config-array instead + '@humanfs/core@0.19.1': + resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} + engines: {node: '>=18.18.0'} + + '@humanfs/node@0.16.6': + resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==} + engines: {node: '>=18.18.0'} '@humanwhocodes/module-importer@1.0.1': resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} engines: {node: '>=12.22'} - '@humanwhocodes/object-schema@2.0.3': - resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} - deprecated: Use @eslint/object-schema instead + '@humanwhocodes/retry@0.3.1': + resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} + engines: {node: '>=18.18'} + + '@humanwhocodes/retry@0.4.1': + resolution: {integrity: sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==} + engines: {node: '>=18.18'} '@inquirer/checkbox@4.0.2': resolution: {integrity: sha512-+gznPl8ip8P8HYHYecDtUtdsh1t2jvb+sWCD72GAiZ9m45RqwrLmReDaqdC0umQfamtFXVRoMVJ2/qINKGm9Tg==} @@ -440,68 +428,22 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} - '@nolyfill/array-includes@1.0.28': - resolution: {integrity: sha512-3LFZArKSQTQu//UvQXb4lBHWvhxmiZ5h2v50WIXfWb5UPNgeLpeGP8WgsfTePCpZgNlxt5JVFDdv5zLRa7cQXw==} - engines: {node: '>=12.4.0'} - - '@nolyfill/array.prototype.flat@1.0.28': - resolution: {integrity: sha512-bvBWaZDCWV7+jD70tJCy3Olp03Qx9svHN2KmC2j0CYvqfYRet5+iOb09nzb6QULqGrj7O8DQJ03ZQk6gih9J3g==} - engines: {node: '>=12.4.0'} - - '@nolyfill/array.prototype.flatmap@1.0.28': - resolution: {integrity: sha512-Ui/aMijqnYISchzIG0MbRiRh2DKWORJW2s//nw6rJ5jFp6x+nmFCQ5U2be3+id36VsmTxXiv+qLAHxdfXz8g8g==} - engines: {node: '>=12.4.0'} - '@nolyfill/deep-equal@1.0.29': resolution: {integrity: sha512-EtrJBbOXHhVz8Y1gMYolKgPqh2u96UPqkZMHR0lcjn3y4TC4R7GuN3E4kEhDIpyK3q1+y7HHPHHkt5fGvW1crQ==} engines: {node: '>=12.4.0'} - '@nolyfill/es-iterator-helpers@1.0.21': - resolution: {integrity: sha512-i326KeE0nhW4STobcUhkxpXzZUddedCmfh7b/IyXR9kW0CFHiNNT80C3JSEy33mUlhZtk/ezX47nymcFxyBigg==} - engines: {node: '>=12.4.0'} - - '@nolyfill/hasown@1.0.29': - resolution: {integrity: sha512-9h/nxZqmCy26r9VXGUz+Q77vq3eINXOYgE4st3dj6DoE7tulfJueCLw5d4hfDy3S8mKg4cFXaP+KxYQ+txvMzw==} - engines: {node: '>=12.4.0'} - '@nolyfill/is-core-module@1.0.39': resolution: {integrity: sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==} engines: {node: '>=12.4.0'} - '@nolyfill/object.assign@1.0.28': - resolution: {integrity: sha512-rrtnXgU2XJvUF9jFMwRbyvLdAlCIJOKtecflza4xWDom6u8UPliTOS0OQ6kvhql7/hpv9b8x9p0s467BVY58xg==} - engines: {node: '>=12.4.0'} - - '@nolyfill/object.fromentries@1.0.28': - resolution: {integrity: sha512-EUt70p38p+xdHDi2i8pIgw6HjrI3y9zndVhAZdEQsAvatKGKRpe3XWZRleEwYRZjkbeAG53Pz30j4tE1IJjvQQ==} - engines: {node: '>=12.4.0'} - - '@nolyfill/object.values@1.0.28': - resolution: {integrity: sha512-W6CdQv4Y/19aA5tenUhRELqlBoD92D4Uh1TDp5uHXD7s9zEHgcDCPCdA8ak6y4I66fR//Fir6C1mAQWv1QLnXw==} - engines: {node: '>=12.4.0'} - '@nolyfill/safe-buffer@1.0.41': resolution: {integrity: sha512-QUutoN6a0Rf49n6kYVSppQpfraXfrtrUaxTU/GhcxIhz+3GHp+SrBVnTKE3ASB7AzgZJ7XrxhaBgwrF+hSmeKg==} engines: {node: '>=12.4.0'} - '@nolyfill/safe-regex-test@1.0.29': - resolution: {integrity: sha512-aar+tW/KIy5tzhV/DDty2IM3tEvXqj6dhP8iXIVZOa9gFwPqLZzy54D7gYkn7EwxLPNhHordzsqmnrFEHDYTSg==} - engines: {node: '>=12.4.0'} - '@nolyfill/safer-buffer@1.0.41': resolution: {integrity: sha512-RieuhcNjFpL2NObzKlsNGM5rCan1y2PH3KUUJ01Yhxqj4gTB20WplufPmQRSrLdI9BWf8cBrxvXuRtjvMRKzxQ==} engines: {node: '>=12.4.0'} - '@nolyfill/shared@1.0.21': - resolution: {integrity: sha512-qDc/NoaFU23E0hhiDPeUrvWzTXIPE+RbvRQtRWSeHHNmCIgYI9HS1jKzNYNJxv4jvZ/1VmM3L6rNVxbj+LBMNA==} - - '@nolyfill/shared@1.0.28': - resolution: {integrity: sha512-UJTshFMDgugBcYXGLopbL1enYpGREOEfjUMQKLPLeJqWfbfElGtYbGbUcucCENa7cicGo3M5u/DnPiZe/PYQyw==} - - '@nolyfill/string.prototype.includes@1.0.28': - resolution: {integrity: sha512-RfwmNcAKnstWgNxfVlYpz/hK6V2pnl0r1uinLmGrf4pYN+QviciawKGcBUjkyeB8WUFCuIDE9JhCnTydqJ5O2w==} - engines: {node: '>=12.4.0'} - '@pnpm/catalogs.config@0.1.1': resolution: {integrity: sha512-9djTcIYTeK3JpqB1EO57Bbd7hJyMhvYXCGzfMqypWgpJlpjKSgta6XrmcmqN+/NRhLO/l3AbF5hvfnXApYTq7Q==} engines: {node: '>=18.12'} @@ -820,43 +762,36 @@ packages: resolution: {integrity: sha512-L1+D8/wqGnKQIlh4Zre9i4R4b4noxzH5DDciyahX4oOz62CphY7WDWqJoQ66zNR4oScLNOqQJfNSIAe/6TPUmQ==} cpu: [arm64] os: [linux] - libc: [glibc] '@rollup/rollup-linux-arm64-musl@4.13.2': resolution: {integrity: sha512-tK5eoKFkXdz6vjfkSTCupUzCo40xueTOiOO6PeEIadlNBkadH1wNOH8ILCPIl8by/Gmb5AGAeQOFeLev7iZDOA==} cpu: [arm64] os: [linux] - libc: [musl] '@rollup/rollup-linux-powerpc64le-gnu@4.13.2': resolution: {integrity: sha512-zvXvAUGGEYi6tYhcDmb9wlOckVbuD+7z3mzInCSTACJ4DQrdSLPNUeDIcAQW39M3q6PDquqLWu7pnO39uSMRzQ==} cpu: [ppc64le] os: [linux] - libc: [glibc] '@rollup/rollup-linux-riscv64-gnu@4.13.2': resolution: {integrity: sha512-C3GSKvMtdudHCN5HdmAMSRYR2kkhgdOfye4w0xzyii7lebVr4riCgmM6lRiSCnJn2w1Xz7ZZzHKuLrjx5620kw==} cpu: [riscv64] os: [linux] - libc: [glibc] '@rollup/rollup-linux-s390x-gnu@4.13.2': resolution: {integrity: sha512-l4U0KDFwzD36j7HdfJ5/TveEQ1fUTjFFQP5qIt9gBqBgu1G8/kCaq5Ok05kd5TG9F8Lltf3MoYsUMw3rNlJ0Yg==} cpu: [s390x] os: [linux] - libc: [glibc] '@rollup/rollup-linux-x64-gnu@4.13.2': resolution: {integrity: sha512-xXMLUAMzrtsvh3cZ448vbXqlUa7ZL8z0MwHp63K2IIID2+DeP5iWIT6g1SN7hg1VxPzqx0xZdiDM9l4n9LRU1A==} cpu: [x64] os: [linux] - libc: [glibc] '@rollup/rollup-linux-x64-musl@4.13.2': resolution: {integrity: sha512-M/JYAWickafUijWPai4ehrjzVPKRCyDb1SLuO+ZyPfoXgeCEAlgPkNXewFZx0zcnoIe3ay4UjXIMdXQXOZXWqA==} cpu: [x64] os: [linux] - libc: [musl] '@rollup/rollup-win32-arm64-msvc@4.13.2': resolution: {integrity: sha512-2YWwoVg9KRkIKaXSh0mz3NmfurpmYoBBTAXA9qt7VXk0Xy12PoOP40EFuau+ajgALbbhi4uTj3tSG3tVseCjuA==} @@ -880,22 +815,6 @@ packages: resolution: {integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==} engines: {node: '>=18'} - '@stylistic/eslint-plugin-js@0.0.12': - resolution: {integrity: sha512-VPH7ZMMr2gZ/Cm30NyZRy9U/7gQOL3xZZSwG58D/NdHTBpyOlasnwN0lx4KmRzSECUIkscod9AbQ11yx2QCs5Q==} - - '@stylistic/eslint-plugin-jsx@0.0.12': - resolution: {integrity: sha512-VWxv4t/V83arM5A8yymI9ogzcA0/J8989XTyU4uwLK3K9Z1jFHkHCckBYn6JSlKV0+x8iEOginBdis7TTgx73A==} - - '@stylistic/eslint-plugin-ts@0.0.12': - resolution: {integrity: sha512-ZQNu6+5U70MsIKbIwBXa/mKRnOPm5HJfZ23wl+7DsYnZt7E2ABxU55vQNf3s/KahG6UlWfftwibVMwNU1fjkrw==} - peerDependencies: - eslint: '*' - - '@stylistic/eslint-plugin@0.0.12': - resolution: {integrity: sha512-CNQApx8fPuBI5D8hnkMGazBwUqQIW8SLWZu4CWAQ8EewQp/ZXkypB3AUpQsi1GMnSX3B8y0qg3TPhHneeJUA7g==} - peerDependencies: - eslint: '*' - '@trysound/sax@0.2.0': resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} engines: {node: '>=10.13.0'} @@ -915,108 +834,70 @@ packages: '@types/resolve@1.20.2': resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} - '@types/semver@7.5.8': - resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} - '@types/ssri@7.1.5': resolution: {integrity: sha512-odD/56S3B51liILSk5aXJlnYt99S6Rt9EFDDqGtJM26rKHApHcwyU/UoYHrzKkdkHMAIquGWCuHtQTbes+FRQw==} - '@typescript-eslint/eslint-plugin@6.21.0': - resolution: {integrity: sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==} - engines: {node: ^16.0.0 || >=18.0.0} + '@typescript-eslint/eslint-plugin@8.17.0': + resolution: {integrity: sha512-HU1KAdW3Tt8zQkdvNoIijfWDMvdSweFYm4hWh+KwhPstv+sCmWb89hCIP8msFm9N1R/ooh9honpSuvqKWlYy3w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha - eslint: ^7.0.0 || ^8.0.0 + '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 + eslint: ^8.57.0 || ^9.0.0 typescript: '*' peerDependenciesMeta: typescript: optional: true - '@typescript-eslint/parser@6.21.0': - resolution: {integrity: sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==} - engines: {node: ^16.0.0 || >=18.0.0} + '@typescript-eslint/parser@8.17.0': + resolution: {integrity: sha512-Drp39TXuUlD49F7ilHHCG7TTg8IkA+hxCuULdmzWYICxGXvDXmDmWEjJYZQYgf6l/TFfYNE167m7isnc3xlIEg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^7.0.0 || ^8.0.0 + eslint: ^8.57.0 || ^9.0.0 typescript: '*' peerDependenciesMeta: typescript: optional: true - '@typescript-eslint/scope-manager@6.21.0': - resolution: {integrity: sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==} - engines: {node: ^16.0.0 || >=18.0.0} - - '@typescript-eslint/scope-manager@8.8.0': - resolution: {integrity: sha512-EL8eaGC6gx3jDd8GwEFEV091210U97J0jeEHrAYvIYosmEGet4wJ+g0SYmLu+oRiAwbSA5AVrt6DxLHfdd+bUg==} + '@typescript-eslint/scope-manager@8.17.0': + resolution: {integrity: sha512-/ewp4XjvnxaREtqsZjF4Mfn078RD/9GmiEAtTeLQ7yFdKnqwTOgRMSvFz4et9U5RiJQ15WTGXPLj89zGusvxBg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/type-utils@6.21.0': - resolution: {integrity: sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/type-utils@8.8.0': - resolution: {integrity: sha512-IKwJSS7bCqyCeG4NVGxnOP6lLT9Okc3Zj8hLO96bpMkJab+10HIfJbMouLrlpyOr3yrQ1cA413YPFiGd1mW9/Q==} + '@typescript-eslint/type-utils@8.17.0': + resolution: {integrity: sha512-q38llWJYPd63rRnJ6wY/ZQqIzPrBCkPdpIsaCfkR3Q4t3p6sb422zougfad4TFW9+ElIFLVDzWGiGAfbb/v2qw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: + eslint: ^8.57.0 || ^9.0.0 typescript: '*' peerDependenciesMeta: typescript: optional: true - '@typescript-eslint/types@6.21.0': - resolution: {integrity: sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==} - engines: {node: ^16.0.0 || >=18.0.0} - - '@typescript-eslint/types@8.8.0': - resolution: {integrity: sha512-QJwc50hRCgBd/k12sTykOJbESe1RrzmX6COk8Y525C9l7oweZ+1lw9JiU56im7Amm8swlz00DRIlxMYLizr2Vw==} + '@typescript-eslint/types@8.17.0': + resolution: {integrity: sha512-gY2TVzeve3z6crqh2Ic7Cr+CAv6pfb0Egee7J5UAVWCpVvDI/F71wNfolIim4FE6hT15EbpZFVUj9j5i38jYXA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@6.21.0': - resolution: {integrity: sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==} - engines: {node: ^16.0.0 || >=18.0.0} + '@typescript-eslint/typescript-estree@8.17.0': + resolution: {integrity: sha512-JqkOopc1nRKZpX+opvKqnM3XUlM7LpFMD0lYxTqOTKQfCWAmxw45e3qlOCsEqEB2yuacujivudOFpCnqkBDNMw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '*' peerDependenciesMeta: typescript: optional: true - '@typescript-eslint/typescript-estree@8.8.0': - resolution: {integrity: sha512-ZaMJwc/0ckLz5DaAZ+pNLmHv8AMVGtfWxZe/x2JVEkD5LnmhWiQMMcYT7IY7gkdJuzJ9P14fRy28lUrlDSWYdw==} + '@typescript-eslint/utils@8.17.0': + resolution: {integrity: sha512-bQC8BnEkxqG8HBGKwG9wXlZqg37RKSMY7v/X8VEWD8JG2JuTHuNK0VFvMPMUKQcbk6B+tf05k+4AShAEtCtJ/w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: + eslint: ^8.57.0 || ^9.0.0 typescript: '*' peerDependenciesMeta: typescript: optional: true - '@typescript-eslint/utils@6.21.0': - resolution: {integrity: sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - - '@typescript-eslint/utils@8.8.0': - resolution: {integrity: sha512-QE2MgfOTem00qrlPgyByaCHay9yb1+9BjnMFnSFkUKQfu7adBXDTnCAivURnuPPAG/qiB+kzKkZKmKfaMT0zVg==} + '@typescript-eslint/visitor-keys@8.17.0': + resolution: {integrity: sha512-1Hm7THLpO6ww5QU6H/Qp+AusUUl+z/CAm3cNZZ0jQvon9yicgO7Rwd+/WWRpMKLYV6p2UvdbR27c86rzCPpreg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - - '@typescript-eslint/visitor-keys@6.21.0': - resolution: {integrity: sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==} - engines: {node: ^16.0.0 || >=18.0.0} - - '@typescript-eslint/visitor-keys@8.8.0': - resolution: {integrity: sha512-8mq51Lx6Hpmd7HnA2fcHQo3YgfX1qbccxQOgZcb4tvasu//zXRaA1j5ZRFeCw/VRAdFi4mRM9DnZw0Nu0Q2d1g==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@ungap/structured-clone@1.2.0': - resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} '@zkochan/retry@0.2.0': resolution: {integrity: sha512-WhB+2B/ZPlW2Xy/kMJBrMbqecWXcbDDgn0K0wKBAgO2OlBTz1iLJrRWduo+DGGn0Akvz1Lu4Xvls7dJojximWw==} @@ -1040,8 +921,8 @@ packages: peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - acorn@8.12.1: - resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==} + acorn@8.14.0: + resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} engines: {node: '>=0.4.0'} hasBin: true @@ -1079,31 +960,13 @@ packages: argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - aria-query@5.1.3: - resolution: {integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==} - - array-union@2.1.0: - resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} - engines: {node: '>=8'} - as-table@1.0.55: resolution: {integrity: sha512-xvsWESUJn0JN421Xb9MQw6AsMHRCUknCe0Wjlxvjud80mU4E6hQf1A6NzQKcYNmYw62MfzEtXc+badstZP3JpQ==} - ast-types-flow@0.0.8: - resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} - astral-regex@2.0.0: resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} engines: {node: '>=8'} - axe-core@4.10.0: - resolution: {integrity: sha512-Mr2ZakwQ7XUAjp7pAwQWRhhK8mQQ6JAaNWSjmjxil0R8BPioMtQsTLOolGYkji1rcL++3dCqZA3zWqpT+9Ew6g==} - engines: {node: '>=4'} - - axobject-query@4.1.0: - resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} - engines: {node: '>= 0.4'} - balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} @@ -1111,9 +974,6 @@ packages: resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} engines: {node: '>=4'} - birecord@0.1.1: - resolution: {integrity: sha512-VUpsf/qykW0heRlC8LooCq28Kxn3mAqKohhDG/49rrsQ1dT1CXyj/pgXS+5BSRzFTR/3DyIBOqQOrGyZOh71Aw==} - boolbase@1.0.0: resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} @@ -1260,6 +1120,10 @@ packages: resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} engines: {node: '>= 8'} + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} + crypto-random-string@2.0.0: resolution: {integrity: sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==} engines: {node: '>=8'} @@ -1308,9 +1172,6 @@ packages: resolution: {integrity: sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==} engines: {node: '>=8.0.0'} - damerau-levenshtein@1.0.8: - resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} - data-uri-to-buffer@2.0.2: resolution: {integrity: sha512-ND9qDTLc6diwj+Xe5cdAgVTbLVdXbtxTJRXRhli8Mowuaan+0EJOtdqJ0QCHNSSPyoXGx9HX2/VMnKeC34AChA==} @@ -1318,14 +1179,6 @@ packages: resolution: {integrity: sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og==} engines: {node: '>= 6'} - debug@3.2.7: - resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - debug@4.3.7: resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} engines: {node: '>=6.0'} @@ -1372,14 +1225,6 @@ packages: resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} engines: {node: '>=8'} - dir-glob@3.0.1: - resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} - engines: {node: '>=8'} - - doctrine@3.0.0: - resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} - engines: {node: '>=6.0.0'} - dom-serializer@1.4.1: resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} @@ -1406,9 +1251,6 @@ packages: emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - emoji-regex@9.2.2: - resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - encode-registry@3.0.1: resolution: {integrity: sha512-6qOwkl1g0fv0DN3Y3ggr2EaZXN71aoAqPp3p/pVaWSBSIo+YjLOWN61Fva43oVyQNPf7kgm8lkudzlzojwE2jw==} engines: {node: '>=10'} @@ -1447,144 +1289,45 @@ packages: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} - eslint-config-kagura@2.2.1: - resolution: {integrity: sha512-wLHiNVSOEez+Qwxu4NhLGNwF4RNZDCZi32NFFlStDTTFk4Xg6pmHgOOW7gsnld8bJHiOG6d+yUpYcBQ3sL3vEA==} + eslint-config-kagura@3.0.1: + resolution: {integrity: sha512-HUW0uvXa29du/cqqlt/g1a8gBFJ0yyMcS9oMrY2cv7B0s4mTdiBQ6XGPdcDi1P8TD77Ul2wO9ftFDPqV5ccfZA==} peerDependencies: eslint: '>= 8.0.0' - eslint-import-resolver-node@0.3.9: - resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} - - eslint-module-utils@2.12.0: - resolution: {integrity: sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==} - engines: {node: '>=4'} - peerDependencies: - '@typescript-eslint/parser': '*' - eslint: '*' - eslint-import-resolver-node: '*' - eslint-import-resolver-typescript: '*' - eslint-import-resolver-webpack: '*' - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true - eslint: - optional: true - eslint-import-resolver-node: - optional: true - eslint-import-resolver-typescript: - optional: true - eslint-import-resolver-webpack: - optional: true - - eslint-plugin-i@2.29.1: - resolution: {integrity: sha512-ORizX37MelIWLbMyqI7hi8VJMf7A0CskMmYkB+lkCX3aF4pkGV7kwx5bSEb4qx7Yce2rAf9s34HqDRPjGRZPNQ==} - engines: {node: '>=12'} - peerDependencies: - eslint: ^7.2.0 || ^8 - - eslint-plugin-jsx-a11y@6.10.0: - resolution: {integrity: sha512-ySOHvXX8eSN6zz8Bywacm7CvGNhUtdjvqfQDVe6020TUK34Cywkw7m0KsCCk1Qtm9G1FayfTN1/7mMYnYO2Bhg==} - engines: {node: '>=4.0'} - peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9 - - eslint-plugin-react-debug@1.14.3: - resolution: {integrity: sha512-qEsGT5LGFtYR1Hs9nqfrCqgE8MxrTe5VA7LO7Old8epgHgpgOGIuSIdIKYu7dxlEFGAXFB3JLW7ieYJYcgobbQ==} - engines: {bun: '>=1.0.15', node: '>=18.18.0'} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: ^4.9.5 || ^5.3.3 - peerDependenciesMeta: - typescript: - optional: true - - eslint-plugin-react-dom@1.14.3: - resolution: {integrity: sha512-tVA7RQI6Jxomeqrckqi/y1gEmcdI29b268p7K8WjRUWNUDXbZR6vEyaLBqzI8+ykO1HsK8+QhOKUHgUKHjOZBQ==} - engines: {bun: '>=1.0.15', node: '>=18.18.0'} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: ^4.9.5 || ^5.3.3 - peerDependenciesMeta: - typescript: - optional: true - - eslint-plugin-react-hooks-extra@1.14.3: - resolution: {integrity: sha512-G6mFfYiKgKbGJOUlmvcsN+n0hNiRGa9pNenv4hSlbm3TJFmlrLG+cHvOa9xe88AvaLJHfF5obgF8X/zhSekIfA==} - engines: {bun: '>=1.0.15', node: '>=18.18.0'} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: ^4.9.5 || ^5.3.3 - peerDependenciesMeta: - typescript: - optional: true - - eslint-plugin-react-hooks@4.6.2: - resolution: {integrity: sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==} - engines: {node: '>=10'} - peerDependencies: - eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 - - eslint-plugin-react-naming-convention@1.14.3: - resolution: {integrity: sha512-qj7XpwYQAKNCTloWA9vPNYDRMsiLa5H/jlF3mH17Is+j/pLH97NRG9CQXbh6kEdLbBFSsHwTDvyP22+CPVZhiA==} - engines: {bun: '>=1.0.15', node: '>=18.18.0'} + eslint-plugin-unused-imports@4.1.4: + resolution: {integrity: sha512-YptD6IzQjDardkl0POxnnRBhU1OEePMV0nd6siHaRBbd+lyh6NAhFEobiznKU7kTsSsDeSD62Pe7kAM1b7dAZQ==} peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: ^4.9.5 || ^5.3.3 - peerDependenciesMeta: - typescript: - optional: true - - eslint-plugin-react-web-api@1.14.3: - resolution: {integrity: sha512-1G/WIUe+ZIPW8px1lmn7ib5fy6LcuwoHDsnq9G92iE8MFXYPA0Pry0ZKaB2lAsjP8rUROv1L9B457QjyCpro2g==} - engines: {bun: '>=1.0.15', node: '>=18.18.0'} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: ^4.9.5 || ^5.3.3 - peerDependenciesMeta: - typescript: - optional: true - - eslint-plugin-react-x@1.14.3: - resolution: {integrity: sha512-VKyF4v1kWp9P6vI7JDJfonmny0HOQiS5v/rMLyldK9UC8k+efJN7dUtLE2Kt7TfxggE5gf+v4rsDB2Opvt5Tvg==} - engines: {bun: '>=1.0.15', node: '>=18.18.0'} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: ^4.9.5 || ^5.3.3 - peerDependenciesMeta: - typescript: - optional: true - - eslint-plugin-unused-imports@3.2.0: - resolution: {integrity: sha512-6uXyn6xdINEpxE1MtDjxQsyXB37lfyO2yKGVVgtD7WEWQGORSOZjgrD6hBhvGv4/SO+TOlS+UnC6JppRqbuwGQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - '@typescript-eslint/eslint-plugin': 6 - 7 - eslint: '8' + '@typescript-eslint/eslint-plugin': ^8.0.0-0 || ^7.0.0 || ^6.0.0 || ^5.0.0 + eslint: ^9.0.0 || ^8.0.0 peerDependenciesMeta: '@typescript-eslint/eslint-plugin': optional: true - eslint-rule-composer@0.3.0: - resolution: {integrity: sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg==} - engines: {node: '>=4.0.0'} - - eslint-scope@7.2.2: - resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + eslint-scope@8.2.0: + resolution: {integrity: sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} eslint-visitor-keys@3.4.3: resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - eslint@8.57.1: - resolution: {integrity: sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options. + eslint-visitor-keys@4.2.0: + resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint@9.15.0: + resolution: {integrity: sha512-7CrWySmIibCgT1Os28lUU6upBshZ+GxybLOrmRzi08kS8MBuO8QA7pXEgYgY5W8vK3e74xv0lpjo9DbaGU9Rkw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true + peerDependencies: + jiti: '*' + peerDependenciesMeta: + jiti: + optional: true - espree@9.6.1: - resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + espree@10.3.0: + resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} esquery@1.6.0: resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} @@ -1660,9 +1403,9 @@ packages: resolution: {integrity: sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==} engines: {node: '>=18'} - file-entry-cache@6.0.1: - resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} - engines: {node: ^10.12.0 || >=12.0.0} + file-entry-cache@8.0.0: + resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} + engines: {node: '>=16.0.0'} fill-range@7.1.1: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} @@ -1672,9 +1415,9 @@ packages: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} - flat-cache@3.2.0: - resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} - engines: {node: ^10.12.0 || >=12.0.0} + flat-cache@4.0.1: + resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} + engines: {node: '>=16'} flatted@3.3.1: resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} @@ -1687,9 +1430,6 @@ packages: resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} engines: {node: '>=12'} - fs.realpath@1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} @@ -1720,17 +1460,9 @@ packages: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} - glob@7.2.3: - resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} - deprecated: Glob versions prior to v9 are no longer supported - - globals@13.24.0: - resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} - engines: {node: '>=8'} - - globby@11.1.0: - resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} - engines: {node: '>=10'} + globals@14.0.0: + resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} + engines: {node: '>=18'} graceful-fs@4.2.10: resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} @@ -1806,10 +1538,6 @@ packages: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} - inflight@1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} - deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. - inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} @@ -1839,12 +1567,6 @@ packages: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} - is-immutable-type@5.0.0: - resolution: {integrity: sha512-mcvHasqbRBWJznuPqqHRKiJgYAz60sZ0mvO3bN70JbkuK7ksfmgc489aKZYxMEjIbRvyOseaTjaRZLRF/xFeRA==} - peerDependencies: - eslint: '*' - typescript: '>=4.7.4' - is-module@1.0.0: resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} @@ -1852,10 +1574,6 @@ packages: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} - is-path-inside@3.0.3: - resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} - engines: {node: '>=8'} - is-plain-obj@2.1.0: resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} engines: {node: '>=8'} @@ -1953,10 +1671,6 @@ packages: jsonfile@6.1.0: resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} - jsx-ast-utils@3.3.5: - resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} - engines: {node: '>=4.0'} - keygrip@1.1.0: resolution: {integrity: sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ==} engines: {node: '>= 0.6'} @@ -1975,13 +1689,6 @@ packages: resolution: {integrity: sha512-j/8tY9j5t+GVMLeioLaxweJiKUayFhlGqNTzf2ZGwL0ZCQijd2RLHK0SLW5Tsko8YyyqCZC2cojIb0/s62qTAg==} engines: {node: ^4.8.4 || ^6.10.1 || ^7.10.1 || >= 8.1.4} - language-subtag-registry@0.3.23: - resolution: {integrity: sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==} - - language-tags@1.0.9: - resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==} - engines: {node: '>=0.10'} - levn@0.4.1: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} @@ -2080,17 +1787,9 @@ packages: resolution: {integrity: sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ==} engines: {node: '>=8'} - minimatch@10.0.1: - resolution: {integrity: sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==} - engines: {node: 20 || >=22} - minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} - minimatch@9.0.3: - resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} - engines: {node: '>=16 || 14 >=14.17'} - minimatch@9.0.5: resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} engines: {node: '>=16 || 14 >=14.17'} @@ -2147,9 +1846,6 @@ packages: resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} engines: {node: '>= 0.8'} - once@1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} - onetime@5.1.2: resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} engines: {node: '>=6'} @@ -2233,10 +1929,6 @@ packages: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} - path-is-absolute@1.0.1: - resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} - engines: {node: '>=0.10.0'} - path-key@3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} @@ -2255,10 +1947,6 @@ packages: resolution: {integrity: sha512-cMMJTAZlion/RWRRC48UbrDymEIt+/YSD/l8NqjneyDw2rDOBQcP5yRkMB4CYGn47KMhZvbblBP7Z79OsMw72w==} engines: {node: '>=8.15'} - path-type@4.0.0: - resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} - engines: {node: '>=8'} - picocolors@1.1.0: resolution: {integrity: sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==} @@ -2569,11 +2257,6 @@ packages: rfc4648@1.5.3: resolution: {integrity: sha512-MjOWxM065+WswwnmNONOT+bD1nXzY9Km6u3kzvnx8F8/HXGZdz3T6e6vZJ8Q/RIMUSp/nxqjH3GwvJDy8ijeQQ==} - rimraf@3.0.2: - resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} - deprecated: Rimraf versions prior to v4 are no longer supported - hasBin: true - rollup-plugin-esbuild@6.1.1: resolution: {integrity: sha512-CehMY9FAqJD5OUaE/Mi1r5z0kNeYxItmRO2zG4Qnv2qWKF09J2lTy5GUzjJR354ZPrLkCj4fiBN41lo8PzBUhw==} engines: {node: '>=14.18.0'} @@ -2631,10 +2314,6 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - short-unique-id@5.2.0: - resolution: {integrity: sha512-cMGfwNyfDZ/nzJ2k2M+ClthBIh//GlZl1JEf47Uoa9XR11bz8Pa2T2wQO4bVrRdH48LrIDWJahQziKo3MjhsWg==} - hasBin: true - signal-exit@3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} @@ -2642,10 +2321,6 @@ packages: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} - slash@3.0.0: - resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} - engines: {node: '>=8'} - slice-ansi@3.0.0: resolution: {integrity: sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==} engines: {node: '>=8'} @@ -2690,9 +2365,6 @@ packages: resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} engines: {node: '>=10'} - string-ts@2.2.0: - resolution: {integrity: sha512-VTP0LLZo4Jp9Gz5IiDVMS9WyLx/3IeYh0PXUn0NdPqusUFNgkHPWiEdbB9TU2Iv3myUskraD5WtYEdHUrQEIlQ==} - string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} @@ -2747,9 +2419,6 @@ packages: engines: {node: '>=10'} hasBin: true - text-table@0.2.0: - resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} - tmp@0.0.33: resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} engines: {node: '>=0.6.0'} @@ -2768,14 +2437,6 @@ packages: peerDependencies: typescript: '>=4.2.0' - ts-declaration-location@1.0.4: - resolution: {integrity: sha512-r4JoxYhKULbZuH81Pjrp9OEG5St7XWk7zXwGkLKhmVcjiBVHTJXV5wK6dEa9JKW5QGSTW6b1lOjxAKp8R1SQhg==} - peerDependencies: - typescript: '>=4.0.0' - - ts-pattern@5.4.0: - resolution: {integrity: sha512-hgfOMfjlrARCnYtGD/xEAkFHDXuSyuqjzFSltyQCbN689uNvoQL20TVN2XFcLMjfNuwSsQGU+xtH6MrjIwhwUg==} - tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} @@ -2803,6 +2464,16 @@ packages: resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} engines: {node: '>= 0.6'} + typescript-eslint@8.17.0: + resolution: {integrity: sha512-409VXvFd/f1br1DCbuKNFqQpXICoTB+V51afcwG1pn1a3Cp92MqAUges3YjwEdQ0cMUoCIodjVDAYzyD8h3SYA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + typescript@5.6.2: resolution: {integrity: sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw==} engines: {node: '>=14.17'} @@ -2875,9 +2546,6 @@ packages: resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} engines: {node: '>=10'} - wrappy@1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - write-file-atomic@5.0.1: resolution: {integrity: sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} @@ -3017,126 +2685,29 @@ snapshots: '@esbuild/win32-x64@0.24.0': optional: true - '@eslint-community/eslint-utils@4.4.0(eslint@8.57.1)': + '@eslint-community/eslint-utils@4.4.0(eslint@9.15.0)': dependencies: - eslint: 8.57.1 + eslint: 9.15.0 eslint-visitor-keys: 3.4.3 - '@eslint-community/regexpp@4.11.1': {} - - '@eslint-react/ast@1.14.3(eslint@8.57.1)(typescript@5.6.2)': - dependencies: - '@eslint-react/tools': 1.14.3 - '@eslint-react/types': 1.14.3(eslint@8.57.1)(typescript@5.6.2) - '@typescript-eslint/types': 8.8.0 - '@typescript-eslint/typescript-estree': 8.8.0(typescript@5.6.2) - '@typescript-eslint/utils': 8.8.0(eslint@8.57.1)(typescript@5.6.2) - birecord: 0.1.1 - string-ts: 2.2.0 - ts-pattern: 5.4.0 - transitivePeerDependencies: - - eslint - - supports-color - - typescript - - '@eslint-react/core@1.14.3(eslint@8.57.1)(typescript@5.6.2)': - dependencies: - '@eslint-react/ast': 1.14.3(eslint@8.57.1)(typescript@5.6.2) - '@eslint-react/jsx': 1.14.3(eslint@8.57.1)(typescript@5.6.2) - '@eslint-react/shared': 1.14.3(eslint@8.57.1)(typescript@5.6.2) - '@eslint-react/tools': 1.14.3 - '@eslint-react/types': 1.14.3(eslint@8.57.1)(typescript@5.6.2) - '@eslint-react/var': 1.14.3(eslint@8.57.1)(typescript@5.6.2) - '@typescript-eslint/scope-manager': 8.8.0 - '@typescript-eslint/type-utils': 8.8.0(eslint@8.57.1)(typescript@5.6.2) - '@typescript-eslint/types': 8.8.0 - '@typescript-eslint/utils': 8.8.0(eslint@8.57.1)(typescript@5.6.2) - birecord: 0.1.1 - short-unique-id: 5.2.0 - ts-pattern: 5.4.0 - transitivePeerDependencies: - - eslint - - supports-color - - typescript - - '@eslint-react/eslint-plugin@1.14.3(eslint@8.57.1)(typescript@5.6.2)': - dependencies: - '@eslint-react/shared': 1.14.3(eslint@8.57.1)(typescript@5.6.2) - '@eslint-react/tools': 1.14.3 - '@eslint-react/types': 1.14.3(eslint@8.57.1)(typescript@5.6.2) - '@typescript-eslint/scope-manager': 8.8.0 - '@typescript-eslint/type-utils': 8.8.0(eslint@8.57.1)(typescript@5.6.2) - '@typescript-eslint/types': 8.8.0 - '@typescript-eslint/utils': 8.8.0(eslint@8.57.1)(typescript@5.6.2) - eslint: 8.57.1 - eslint-plugin-react-debug: 1.14.3(eslint@8.57.1)(typescript@5.6.2) - eslint-plugin-react-dom: 1.14.3(eslint@8.57.1)(typescript@5.6.2) - eslint-plugin-react-hooks-extra: 1.14.3(eslint@8.57.1)(typescript@5.6.2) - eslint-plugin-react-naming-convention: 1.14.3(eslint@8.57.1)(typescript@5.6.2) - eslint-plugin-react-web-api: 1.14.3(eslint@8.57.1)(typescript@5.6.2) - eslint-plugin-react-x: 1.14.3(eslint@8.57.1)(typescript@5.6.2) - optionalDependencies: - typescript: 5.6.2 - transitivePeerDependencies: - - supports-color - - '@eslint-react/jsx@1.14.3(eslint@8.57.1)(typescript@5.6.2)': - dependencies: - '@eslint-react/ast': 1.14.3(eslint@8.57.1)(typescript@5.6.2) - '@eslint-react/tools': 1.14.3 - '@eslint-react/types': 1.14.3(eslint@8.57.1)(typescript@5.6.2) - '@eslint-react/var': 1.14.3(eslint@8.57.1)(typescript@5.6.2) - '@typescript-eslint/scope-manager': 8.8.0 - '@typescript-eslint/types': 8.8.0 - '@typescript-eslint/utils': 8.8.0(eslint@8.57.1)(typescript@5.6.2) - ts-pattern: 5.4.0 - transitivePeerDependencies: - - eslint - - supports-color - - typescript + '@eslint-community/regexpp@4.12.1': {} - '@eslint-react/shared@1.14.3(eslint@8.57.1)(typescript@5.6.2)': + '@eslint/config-array@0.19.0': dependencies: - '@eslint-react/tools': 1.14.3 - '@typescript-eslint/utils': 8.8.0(eslint@8.57.1)(typescript@5.6.2) - picomatch: 4.0.2 + '@eslint/object-schema': 2.1.4 + debug: 4.3.7 + minimatch: 3.1.2 transitivePeerDependencies: - - eslint - supports-color - - typescript - '@eslint-react/tools@1.14.3': {} + '@eslint/core@0.9.0': {} - '@eslint-react/types@1.14.3(eslint@8.57.1)(typescript@5.6.2)': - dependencies: - '@eslint-react/tools': 1.14.3 - '@typescript-eslint/types': 8.8.0 - '@typescript-eslint/utils': 8.8.0(eslint@8.57.1)(typescript@5.6.2) - transitivePeerDependencies: - - eslint - - supports-color - - typescript - - '@eslint-react/var@1.14.3(eslint@8.57.1)(typescript@5.6.2)': - dependencies: - '@eslint-react/ast': 1.14.3(eslint@8.57.1)(typescript@5.6.2) - '@eslint-react/tools': 1.14.3 - '@eslint-react/types': 1.14.3(eslint@8.57.1)(typescript@5.6.2) - '@typescript-eslint/scope-manager': 8.8.0 - '@typescript-eslint/types': 8.8.0 - '@typescript-eslint/utils': 8.8.0(eslint@8.57.1)(typescript@5.6.2) - ts-pattern: 5.4.0 - transitivePeerDependencies: - - eslint - - supports-color - - typescript - - '@eslint/eslintrc@2.1.4': + '@eslint/eslintrc@3.2.0': dependencies: ajv: 6.12.6 debug: 4.3.7 - espree: 9.6.1 - globals: 13.24.0 + espree: 10.3.0 + globals: 14.0.0 ignore: 5.3.2 import-fresh: 3.3.0 js-yaml: 4.1.0 @@ -3145,22 +2716,29 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@8.57.1': {} + '@eslint/js@9.15.0': {} + + '@eslint/object-schema@2.1.4': {} + + '@eslint/plugin-kit@0.2.3': + dependencies: + levn: 0.4.1 '@gwhitney/detect-indent@7.0.1': optional: true - '@humanwhocodes/config-array@0.13.0': + '@humanfs/core@0.19.1': {} + + '@humanfs/node@0.16.6': dependencies: - '@humanwhocodes/object-schema': 2.0.3 - debug: 4.3.7 - minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color + '@humanfs/core': 0.19.1 + '@humanwhocodes/retry': 0.3.1 '@humanwhocodes/module-importer@1.0.1': {} - '@humanwhocodes/object-schema@2.0.3': {} + '@humanwhocodes/retry@0.3.1': {} + + '@humanwhocodes/retry@0.4.1': {} '@inquirer/checkbox@4.0.2(@types/node@22.7.4)': dependencies: @@ -3321,56 +2899,16 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.17.1 - '@nolyfill/array-includes@1.0.28': - dependencies: - '@nolyfill/shared': 1.0.28 - - '@nolyfill/array.prototype.flat@1.0.28': - dependencies: - '@nolyfill/shared': 1.0.28 - - '@nolyfill/array.prototype.flatmap@1.0.28': - dependencies: - '@nolyfill/shared': 1.0.28 - '@nolyfill/deep-equal@1.0.29': dependencies: dequal: 2.0.3 - '@nolyfill/es-iterator-helpers@1.0.21': - dependencies: - '@nolyfill/shared': 1.0.21 - - '@nolyfill/hasown@1.0.29': {} - '@nolyfill/is-core-module@1.0.39': {} - '@nolyfill/object.assign@1.0.28': - dependencies: - '@nolyfill/shared': 1.0.28 - - '@nolyfill/object.fromentries@1.0.28': - dependencies: - '@nolyfill/shared': 1.0.28 - - '@nolyfill/object.values@1.0.28': - dependencies: - '@nolyfill/shared': 1.0.28 - '@nolyfill/safe-buffer@1.0.41': {} - '@nolyfill/safe-regex-test@1.0.29': {} - '@nolyfill/safer-buffer@1.0.41': {} - '@nolyfill/shared@1.0.21': {} - - '@nolyfill/shared@1.0.28': {} - - '@nolyfill/string.prototype.includes@1.0.28': - dependencies: - '@nolyfill/shared': 1.0.28 - '@pnpm/catalogs.config@0.1.1': dependencies: '@pnpm/error': 6.0.2 @@ -3897,48 +3435,6 @@ snapshots: '@sindresorhus/merge-streams@4.0.0': {} - '@stylistic/eslint-plugin-js@0.0.12(eslint@8.57.1)': - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.1) - acorn: 8.12.1 - escape-string-regexp: 4.0.0 - eslint-visitor-keys: 3.4.3 - espree: 9.6.1 - esutils: 2.0.3 - graphemer: 1.4.0 - transitivePeerDependencies: - - eslint - - '@stylistic/eslint-plugin-jsx@0.0.12(eslint@8.57.1)': - dependencies: - '@stylistic/eslint-plugin-js': 0.0.12(eslint@8.57.1) - estraverse: 5.3.0 - jsx-ast-utils: 3.3.5 - transitivePeerDependencies: - - eslint - - '@stylistic/eslint-plugin-ts@0.0.12(eslint@8.57.1)(typescript@5.6.2)': - dependencies: - '@stylistic/eslint-plugin-js': 0.0.12(eslint@8.57.1) - '@typescript-eslint/scope-manager': 6.21.0 - '@typescript-eslint/type-utils': 6.21.0(eslint@8.57.1)(typescript@5.6.2) - '@typescript-eslint/utils': 6.21.0(eslint@8.57.1)(typescript@5.6.2) - eslint: 8.57.1 - graphemer: 1.4.0 - transitivePeerDependencies: - - supports-color - - typescript - - '@stylistic/eslint-plugin@0.0.12(eslint@8.57.1)(typescript@5.6.2)': - dependencies: - '@stylistic/eslint-plugin-js': 0.0.12(eslint@8.57.1) - '@stylistic/eslint-plugin-jsx': 0.0.12(eslint@8.57.1) - '@stylistic/eslint-plugin-ts': 0.0.12(eslint@8.57.1)(typescript@5.6.2) - eslint: 8.57.1 - transitivePeerDependencies: - - supports-color - - typescript - '@trysound/sax@0.2.0': optional: true @@ -3954,103 +3450,65 @@ snapshots: '@types/resolve@1.20.2': {} - '@types/semver@7.5.8': {} - '@types/ssri@7.1.5': dependencies: '@types/node': 22.7.4 optional: true - '@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.6.2))(eslint@8.57.1)(typescript@5.6.2)': + '@typescript-eslint/eslint-plugin@8.17.0(@typescript-eslint/parser@8.17.0(eslint@9.15.0)(typescript@5.6.2))(eslint@9.15.0)(typescript@5.6.2)': dependencies: - '@eslint-community/regexpp': 4.11.1 - '@typescript-eslint/parser': 6.21.0(eslint@8.57.1)(typescript@5.6.2) - '@typescript-eslint/scope-manager': 6.21.0 - '@typescript-eslint/type-utils': 6.21.0(eslint@8.57.1)(typescript@5.6.2) - '@typescript-eslint/utils': 6.21.0(eslint@8.57.1)(typescript@5.6.2) - '@typescript-eslint/visitor-keys': 6.21.0 - debug: 4.3.7 - eslint: 8.57.1 + '@eslint-community/regexpp': 4.12.1 + '@typescript-eslint/parser': 8.17.0(eslint@9.15.0)(typescript@5.6.2) + '@typescript-eslint/scope-manager': 8.17.0 + '@typescript-eslint/type-utils': 8.17.0(eslint@9.15.0)(typescript@5.6.2) + '@typescript-eslint/utils': 8.17.0(eslint@9.15.0)(typescript@5.6.2) + '@typescript-eslint/visitor-keys': 8.17.0 + eslint: 9.15.0 graphemer: 1.4.0 ignore: 5.3.2 natural-compare: 1.4.0 - semver: 7.6.3 ts-api-utils: 1.3.0(typescript@5.6.2) optionalDependencies: typescript: 5.6.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.6.2)': + '@typescript-eslint/parser@8.17.0(eslint@9.15.0)(typescript@5.6.2)': dependencies: - '@typescript-eslint/scope-manager': 6.21.0 - '@typescript-eslint/types': 6.21.0 - '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.6.2) - '@typescript-eslint/visitor-keys': 6.21.0 + '@typescript-eslint/scope-manager': 8.17.0 + '@typescript-eslint/types': 8.17.0 + '@typescript-eslint/typescript-estree': 8.17.0(typescript@5.6.2) + '@typescript-eslint/visitor-keys': 8.17.0 debug: 4.3.7 - eslint: 8.57.1 + eslint: 9.15.0 optionalDependencies: typescript: 5.6.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@6.21.0': - dependencies: - '@typescript-eslint/types': 6.21.0 - '@typescript-eslint/visitor-keys': 6.21.0 - - '@typescript-eslint/scope-manager@8.8.0': + '@typescript-eslint/scope-manager@8.17.0': dependencies: - '@typescript-eslint/types': 8.8.0 - '@typescript-eslint/visitor-keys': 8.8.0 + '@typescript-eslint/types': 8.17.0 + '@typescript-eslint/visitor-keys': 8.17.0 - '@typescript-eslint/type-utils@6.21.0(eslint@8.57.1)(typescript@5.6.2)': + '@typescript-eslint/type-utils@8.17.0(eslint@9.15.0)(typescript@5.6.2)': dependencies: - '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.6.2) - '@typescript-eslint/utils': 6.21.0(eslint@8.57.1)(typescript@5.6.2) + '@typescript-eslint/typescript-estree': 8.17.0(typescript@5.6.2) + '@typescript-eslint/utils': 8.17.0(eslint@9.15.0)(typescript@5.6.2) debug: 4.3.7 - eslint: 8.57.1 + eslint: 9.15.0 ts-api-utils: 1.3.0(typescript@5.6.2) optionalDependencies: typescript: 5.6.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/type-utils@8.8.0(eslint@8.57.1)(typescript@5.6.2)': - dependencies: - '@typescript-eslint/typescript-estree': 8.8.0(typescript@5.6.2) - '@typescript-eslint/utils': 8.8.0(eslint@8.57.1)(typescript@5.6.2) - debug: 4.3.7 - ts-api-utils: 1.3.0(typescript@5.6.2) - optionalDependencies: - typescript: 5.6.2 - transitivePeerDependencies: - - eslint - - supports-color - - '@typescript-eslint/types@6.21.0': {} - - '@typescript-eslint/types@8.8.0': {} - - '@typescript-eslint/typescript-estree@6.21.0(typescript@5.6.2)': - dependencies: - '@typescript-eslint/types': 6.21.0 - '@typescript-eslint/visitor-keys': 6.21.0 - debug: 4.3.7 - globby: 11.1.0 - is-glob: 4.0.3 - minimatch: 9.0.3 - semver: 7.6.3 - ts-api-utils: 1.3.0(typescript@5.6.2) - optionalDependencies: - typescript: 5.6.2 - transitivePeerDependencies: - - supports-color + '@typescript-eslint/types@8.17.0': {} - '@typescript-eslint/typescript-estree@8.8.0(typescript@5.6.2)': + '@typescript-eslint/typescript-estree@8.17.0(typescript@5.6.2)': dependencies: - '@typescript-eslint/types': 8.8.0 - '@typescript-eslint/visitor-keys': 8.8.0 + '@typescript-eslint/types': 8.17.0 + '@typescript-eslint/visitor-keys': 8.17.0 debug: 4.3.7 fast-glob: 3.3.2 is-glob: 4.0.3 @@ -4062,42 +3520,22 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@6.21.0(eslint@8.57.1)(typescript@5.6.2)': - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.1) - '@types/json-schema': 7.0.15 - '@types/semver': 7.5.8 - '@typescript-eslint/scope-manager': 6.21.0 - '@typescript-eslint/types': 6.21.0 - '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.6.2) - eslint: 8.57.1 - semver: 7.6.3 - transitivePeerDependencies: - - supports-color - - typescript - - '@typescript-eslint/utils@8.8.0(eslint@8.57.1)(typescript@5.6.2)': + '@typescript-eslint/utils@8.17.0(eslint@9.15.0)(typescript@5.6.2)': dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.1) - '@typescript-eslint/scope-manager': 8.8.0 - '@typescript-eslint/types': 8.8.0 - '@typescript-eslint/typescript-estree': 8.8.0(typescript@5.6.2) - eslint: 8.57.1 + '@eslint-community/eslint-utils': 4.4.0(eslint@9.15.0) + '@typescript-eslint/scope-manager': 8.17.0 + '@typescript-eslint/types': 8.17.0 + '@typescript-eslint/typescript-estree': 8.17.0(typescript@5.6.2) + eslint: 9.15.0 + optionalDependencies: + typescript: 5.6.2 transitivePeerDependencies: - supports-color - - typescript - '@typescript-eslint/visitor-keys@6.21.0': + '@typescript-eslint/visitor-keys@8.17.0': dependencies: - '@typescript-eslint/types': 6.21.0 - eslint-visitor-keys: 3.4.3 - - '@typescript-eslint/visitor-keys@8.8.0': - dependencies: - '@typescript-eslint/types': 8.8.0 - eslint-visitor-keys: 3.4.3 - - '@ungap/structured-clone@1.2.0': {} + '@typescript-eslint/types': 8.17.0 + eslint-visitor-keys: 4.2.0 '@zkochan/retry@0.2.0': optional: true @@ -4115,11 +3553,11 @@ snapshots: mime-types: 2.1.35 negotiator: 0.6.3 - acorn-jsx@5.3.2(acorn@8.12.1): + acorn-jsx@5.3.2(acorn@8.14.0): dependencies: - acorn: 8.12.1 + acorn: 8.14.0 - acorn@8.12.1: {} + acorn@8.14.0: {} ajv@6.12.6: dependencies: @@ -4162,26 +3600,14 @@ snapshots: argparse@2.0.1: {} - aria-query@5.1.3: - dependencies: - deep-equal: '@nolyfill/deep-equal@1.0.29' - - array-union@2.1.0: {} - as-table@1.0.55: dependencies: printable-characters: 1.0.42 optional: true - ast-types-flow@0.0.8: {} - astral-regex@2.0.0: optional: true - axe-core@4.10.0: {} - - axobject-query@4.1.0: {} - balanced-match@1.0.2: {} better-path-resolve@1.0.0: @@ -4189,8 +3615,6 @@ snapshots: is-windows: 1.0.2 optional: true - birecord@0.1.1: {} - boolbase@1.0.0: optional: true @@ -4356,6 +3780,12 @@ snapshots: shebang-command: 2.0.0 which: 2.0.2 + cross-spawn@7.0.6: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + crypto-random-string@2.0.0: optional: true @@ -4437,18 +3867,12 @@ snapshots: css-tree: 1.1.3 optional: true - damerau-levenshtein@1.0.8: {} - data-uri-to-buffer@2.0.2: optional: true data-uri-to-buffer@3.0.1: optional: true - debug@3.2.7: - dependencies: - ms: 2.1.3 - debug@4.3.7: dependencies: ms: 2.1.3 @@ -4477,14 +3901,6 @@ snapshots: detect-libc@2.0.3: optional: true - dir-glob@3.0.1: - dependencies: - path-type: 4.0.0 - - doctrine@3.0.0: - dependencies: - esutils: 2.0.3 - dom-serializer@1.4.1: dependencies: domelementtype: 2.3.0 @@ -4525,8 +3941,6 @@ snapshots: emoji-regex@8.0.0: {} - emoji-regex@9.2.2: {} - encode-registry@3.0.1: dependencies: mem: 8.1.1 @@ -4587,267 +4001,76 @@ snapshots: escape-string-regexp@4.0.0: {} - eslint-config-kagura@2.2.1(eslint@8.57.1)(typescript@5.6.2): - dependencies: - '@eslint-react/eslint-plugin': 1.14.3(eslint@8.57.1)(typescript@5.6.2) - '@stylistic/eslint-plugin': 0.0.12(eslint@8.57.1)(typescript@5.6.2) - '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.6.2))(eslint@8.57.1)(typescript@5.6.2) - '@typescript-eslint/parser': 6.21.0(eslint@8.57.1)(typescript@5.6.2) - eslint: 8.57.1 - eslint-plugin-i: 2.29.1(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.6.2))(eslint@8.57.1) - eslint-plugin-jsx-a11y: 6.10.0(eslint@8.57.1) - eslint-plugin-react-hooks: 4.6.2(eslint@8.57.1) - eslint-plugin-unused-imports: 3.2.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.6.2))(eslint@8.57.1)(typescript@5.6.2))(eslint@8.57.1) - globals: 13.24.0 - transitivePeerDependencies: - - eslint-import-resolver-typescript - - eslint-import-resolver-webpack - - supports-color - - typescript - - eslint-import-resolver-node@0.3.9: + eslint-config-kagura@3.0.1(@typescript-eslint/eslint-plugin@8.17.0(@typescript-eslint/parser@8.17.0(eslint@9.15.0)(typescript@5.6.2))(eslint@9.15.0)(typescript@5.6.2))(eslint@9.15.0)(typescript@5.6.2): dependencies: - debug: 3.2.7 - is-core-module: '@nolyfill/is-core-module@1.0.39' - resolve: 1.22.8 - transitivePeerDependencies: - - supports-color - - eslint-module-utils@2.12.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.6.2))(eslint-import-resolver-node@0.3.9)(eslint@8.57.1): - dependencies: - debug: 3.2.7 - optionalDependencies: - '@typescript-eslint/parser': 6.21.0(eslint@8.57.1)(typescript@5.6.2) - eslint: 8.57.1 - eslint-import-resolver-node: 0.3.9 - transitivePeerDependencies: - - supports-color - - eslint-plugin-i@2.29.1(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.6.2))(eslint@8.57.1): - dependencies: - debug: 4.3.7 - doctrine: 3.0.0 - eslint: 8.57.1 - eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.6.2))(eslint-import-resolver-node@0.3.9)(eslint@8.57.1) - get-tsconfig: 4.8.1 - is-glob: 4.0.3 - minimatch: 3.1.2 - semver: 7.6.3 - transitivePeerDependencies: - - '@typescript-eslint/parser' - - eslint-import-resolver-typescript - - eslint-import-resolver-webpack - - supports-color - - eslint-plugin-jsx-a11y@6.10.0(eslint@8.57.1): - dependencies: - aria-query: 5.1.3 - array-includes: '@nolyfill/array-includes@1.0.28' - array.prototype.flatmap: '@nolyfill/array.prototype.flatmap@1.0.28' - ast-types-flow: 0.0.8 - axe-core: 4.10.0 - axobject-query: 4.1.0 - damerau-levenshtein: 1.0.8 - emoji-regex: 9.2.2 - es-iterator-helpers: '@nolyfill/es-iterator-helpers@1.0.21' - eslint: 8.57.1 - hasown: '@nolyfill/hasown@1.0.29' - jsx-ast-utils: 3.3.5 - language-tags: 1.0.9 - minimatch: 3.1.2 - object.fromentries: '@nolyfill/object.fromentries@1.0.28' - safe-regex-test: '@nolyfill/safe-regex-test@1.0.29' - string.prototype.includes: '@nolyfill/string.prototype.includes@1.0.28' - - eslint-plugin-react-debug@1.14.3(eslint@8.57.1)(typescript@5.6.2): - dependencies: - '@eslint-react/ast': 1.14.3(eslint@8.57.1)(typescript@5.6.2) - '@eslint-react/core': 1.14.3(eslint@8.57.1)(typescript@5.6.2) - '@eslint-react/jsx': 1.14.3(eslint@8.57.1)(typescript@5.6.2) - '@eslint-react/shared': 1.14.3(eslint@8.57.1)(typescript@5.6.2) - '@eslint-react/tools': 1.14.3 - '@eslint-react/types': 1.14.3(eslint@8.57.1)(typescript@5.6.2) - '@eslint-react/var': 1.14.3(eslint@8.57.1)(typescript@5.6.2) - '@typescript-eslint/scope-manager': 8.8.0 - '@typescript-eslint/type-utils': 8.8.0(eslint@8.57.1)(typescript@5.6.2) - '@typescript-eslint/types': 8.8.0 - '@typescript-eslint/utils': 8.8.0(eslint@8.57.1)(typescript@5.6.2) - eslint: 8.57.1 - string-ts: 2.2.0 - ts-pattern: 5.4.0 - optionalDependencies: - typescript: 5.6.2 - transitivePeerDependencies: - - supports-color - - eslint-plugin-react-dom@1.14.3(eslint@8.57.1)(typescript@5.6.2): - dependencies: - '@eslint-react/ast': 1.14.3(eslint@8.57.1)(typescript@5.6.2) - '@eslint-react/core': 1.14.3(eslint@8.57.1)(typescript@5.6.2) - '@eslint-react/jsx': 1.14.3(eslint@8.57.1)(typescript@5.6.2) - '@eslint-react/shared': 1.14.3(eslint@8.57.1)(typescript@5.6.2) - '@eslint-react/tools': 1.14.3 - '@eslint-react/types': 1.14.3(eslint@8.57.1)(typescript@5.6.2) - '@eslint-react/var': 1.14.3(eslint@8.57.1)(typescript@5.6.2) - '@typescript-eslint/scope-manager': 8.8.0 - '@typescript-eslint/types': 8.8.0 - '@typescript-eslint/utils': 8.8.0(eslint@8.57.1)(typescript@5.6.2) - eslint: 8.57.1 - ts-pattern: 5.4.0 - optionalDependencies: - typescript: 5.6.2 - transitivePeerDependencies: - - supports-color - - eslint-plugin-react-hooks-extra@1.14.3(eslint@8.57.1)(typescript@5.6.2): - dependencies: - '@eslint-react/ast': 1.14.3(eslint@8.57.1)(typescript@5.6.2) - '@eslint-react/core': 1.14.3(eslint@8.57.1)(typescript@5.6.2) - '@eslint-react/jsx': 1.14.3(eslint@8.57.1)(typescript@5.6.2) - '@eslint-react/shared': 1.14.3(eslint@8.57.1)(typescript@5.6.2) - '@eslint-react/tools': 1.14.3 - '@eslint-react/types': 1.14.3(eslint@8.57.1)(typescript@5.6.2) - '@eslint-react/var': 1.14.3(eslint@8.57.1)(typescript@5.6.2) - '@typescript-eslint/scope-manager': 8.8.0 - '@typescript-eslint/type-utils': 8.8.0(eslint@8.57.1)(typescript@5.6.2) - '@typescript-eslint/types': 8.8.0 - '@typescript-eslint/utils': 8.8.0(eslint@8.57.1)(typescript@5.6.2) - eslint: 8.57.1 - ts-pattern: 5.4.0 - optionalDependencies: - typescript: 5.6.2 - transitivePeerDependencies: - - supports-color - - eslint-plugin-react-hooks@4.6.2(eslint@8.57.1): - dependencies: - eslint: 8.57.1 - - eslint-plugin-react-naming-convention@1.14.3(eslint@8.57.1)(typescript@5.6.2): - dependencies: - '@eslint-react/ast': 1.14.3(eslint@8.57.1)(typescript@5.6.2) - '@eslint-react/core': 1.14.3(eslint@8.57.1)(typescript@5.6.2) - '@eslint-react/jsx': 1.14.3(eslint@8.57.1)(typescript@5.6.2) - '@eslint-react/shared': 1.14.3(eslint@8.57.1)(typescript@5.6.2) - '@eslint-react/tools': 1.14.3 - '@eslint-react/types': 1.14.3(eslint@8.57.1)(typescript@5.6.2) - '@typescript-eslint/scope-manager': 8.8.0 - '@typescript-eslint/type-utils': 8.8.0(eslint@8.57.1)(typescript@5.6.2) - '@typescript-eslint/types': 8.8.0 - '@typescript-eslint/utils': 8.8.0(eslint@8.57.1)(typescript@5.6.2) - eslint: 8.57.1 - ts-pattern: 5.4.0 - optionalDependencies: - typescript: 5.6.2 - transitivePeerDependencies: - - supports-color - - eslint-plugin-react-web-api@1.14.3(eslint@8.57.1)(typescript@5.6.2): - dependencies: - '@eslint-react/ast': 1.14.3(eslint@8.57.1)(typescript@5.6.2) - '@eslint-react/core': 1.14.3(eslint@8.57.1)(typescript@5.6.2) - '@eslint-react/jsx': 1.14.3(eslint@8.57.1)(typescript@5.6.2) - '@eslint-react/shared': 1.14.3(eslint@8.57.1)(typescript@5.6.2) - '@eslint-react/tools': 1.14.3 - '@eslint-react/types': 1.14.3(eslint@8.57.1)(typescript@5.6.2) - '@eslint-react/var': 1.14.3(eslint@8.57.1)(typescript@5.6.2) - '@typescript-eslint/scope-manager': 8.8.0 - '@typescript-eslint/types': 8.8.0 - '@typescript-eslint/utils': 8.8.0(eslint@8.57.1)(typescript@5.6.2) - birecord: 0.1.1 - eslint: 8.57.1 - ts-pattern: 5.4.0 - optionalDependencies: - typescript: 5.6.2 - transitivePeerDependencies: - - supports-color - - eslint-plugin-react-x@1.14.3(eslint@8.57.1)(typescript@5.6.2): - dependencies: - '@eslint-react/ast': 1.14.3(eslint@8.57.1)(typescript@5.6.2) - '@eslint-react/core': 1.14.3(eslint@8.57.1)(typescript@5.6.2) - '@eslint-react/jsx': 1.14.3(eslint@8.57.1)(typescript@5.6.2) - '@eslint-react/shared': 1.14.3(eslint@8.57.1)(typescript@5.6.2) - '@eslint-react/tools': 1.14.3 - '@eslint-react/types': 1.14.3(eslint@8.57.1)(typescript@5.6.2) - '@eslint-react/var': 1.14.3(eslint@8.57.1)(typescript@5.6.2) - '@typescript-eslint/scope-manager': 8.8.0 - '@typescript-eslint/type-utils': 8.8.0(eslint@8.57.1)(typescript@5.6.2) - '@typescript-eslint/types': 8.8.0 - '@typescript-eslint/utils': 8.8.0(eslint@8.57.1)(typescript@5.6.2) - eslint: 8.57.1 - is-immutable-type: 5.0.0(eslint@8.57.1)(typescript@5.6.2) - ts-pattern: 5.4.0 - optionalDependencies: - typescript: 5.6.2 + '@typescript-eslint/parser': 8.17.0(eslint@9.15.0)(typescript@5.6.2) + eslint: 9.15.0 + eslint-plugin-unused-imports: 4.1.4(@typescript-eslint/eslint-plugin@8.17.0(@typescript-eslint/parser@8.17.0(eslint@9.15.0)(typescript@5.6.2))(eslint@9.15.0)(typescript@5.6.2))(eslint@9.15.0) + typescript-eslint: 8.17.0(eslint@9.15.0)(typescript@5.6.2) transitivePeerDependencies: + - '@typescript-eslint/eslint-plugin' - supports-color + - typescript - eslint-plugin-unused-imports@3.2.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.6.2))(eslint@8.57.1)(typescript@5.6.2))(eslint@8.57.1): + eslint-plugin-unused-imports@4.1.4(@typescript-eslint/eslint-plugin@8.17.0(@typescript-eslint/parser@8.17.0(eslint@9.15.0)(typescript@5.6.2))(eslint@9.15.0)(typescript@5.6.2))(eslint@9.15.0): dependencies: - eslint: 8.57.1 - eslint-rule-composer: 0.3.0 + eslint: 9.15.0 optionalDependencies: - '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.6.2))(eslint@8.57.1)(typescript@5.6.2) + '@typescript-eslint/eslint-plugin': 8.17.0(@typescript-eslint/parser@8.17.0(eslint@9.15.0)(typescript@5.6.2))(eslint@9.15.0)(typescript@5.6.2) - eslint-rule-composer@0.3.0: {} - - eslint-scope@7.2.2: + eslint-scope@8.2.0: dependencies: esrecurse: 4.3.0 estraverse: 5.3.0 eslint-visitor-keys@3.4.3: {} - eslint@8.57.1: + eslint-visitor-keys@4.2.0: {} + + eslint@9.15.0: dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.1) - '@eslint-community/regexpp': 4.11.1 - '@eslint/eslintrc': 2.1.4 - '@eslint/js': 8.57.1 - '@humanwhocodes/config-array': 0.13.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@9.15.0) + '@eslint-community/regexpp': 4.12.1 + '@eslint/config-array': 0.19.0 + '@eslint/core': 0.9.0 + '@eslint/eslintrc': 3.2.0 + '@eslint/js': 9.15.0 + '@eslint/plugin-kit': 0.2.3 + '@humanfs/node': 0.16.6 '@humanwhocodes/module-importer': 1.0.1 - '@nodelib/fs.walk': 1.2.8 - '@ungap/structured-clone': 1.2.0 + '@humanwhocodes/retry': 0.4.1 + '@types/estree': 1.0.6 + '@types/json-schema': 7.0.15 ajv: 6.12.6 chalk: 4.1.2 - cross-spawn: 7.0.3 + cross-spawn: 7.0.6 debug: 4.3.7 - doctrine: 3.0.0 escape-string-regexp: 4.0.0 - eslint-scope: 7.2.2 - eslint-visitor-keys: 3.4.3 - espree: 9.6.1 + eslint-scope: 8.2.0 + eslint-visitor-keys: 4.2.0 + espree: 10.3.0 esquery: 1.6.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 - file-entry-cache: 6.0.1 + file-entry-cache: 8.0.0 find-up: 5.0.0 glob-parent: 6.0.2 - globals: 13.24.0 - graphemer: 1.4.0 ignore: 5.3.2 imurmurhash: 0.1.4 is-glob: 4.0.3 - is-path-inside: 3.0.3 - js-yaml: 4.1.0 json-stable-stringify-without-jsonify: 1.0.1 - levn: 0.4.1 lodash.merge: 4.6.2 minimatch: 3.1.2 natural-compare: 1.4.0 optionator: 0.9.4 - strip-ansi: 6.0.1 - text-table: 0.2.0 transitivePeerDependencies: - supports-color - espree@9.6.1: + espree@10.3.0: dependencies: - acorn: 8.12.1 - acorn-jsx: 5.3.2(acorn@8.12.1) - eslint-visitor-keys: 3.4.3 + acorn: 8.14.0 + acorn-jsx: 5.3.2(acorn@8.14.0) + eslint-visitor-keys: 4.2.0 esquery@1.6.0: dependencies: @@ -4871,7 +4094,7 @@ snapshots: execa@5.1.1: dependencies: - cross-spawn: 7.0.3 + cross-spawn: 7.0.6 get-stream: 6.0.1 human-signals: 2.1.0 is-stream: 2.0.1 @@ -4932,9 +4155,9 @@ snapshots: dependencies: is-unicode-supported: 2.1.0 - file-entry-cache@6.0.1: + file-entry-cache@8.0.0: dependencies: - flat-cache: 3.2.0 + flat-cache: 4.0.1 fill-range@7.1.1: dependencies: @@ -4945,11 +4168,10 @@ snapshots: locate-path: 6.0.0 path-exists: 4.0.0 - flat-cache@3.2.0: + flat-cache@4.0.1: dependencies: flatted: 3.3.1 keyv: 4.5.4 - rimraf: 3.0.2 flatted@3.3.1: {} @@ -4962,8 +4184,6 @@ snapshots: universalify: 2.0.1 optional: true - fs.realpath@1.0.0: {} - fsevents@2.3.3: optional: true @@ -4989,6 +4209,7 @@ snapshots: get-tsconfig@4.8.1: dependencies: resolve-pkg-maps: 1.0.0 + optional: true glob-parent@5.1.2: dependencies: @@ -4998,27 +4219,7 @@ snapshots: dependencies: is-glob: 4.0.3 - glob@7.2.3: - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - path-is-absolute: 1.0.1 - - globals@13.24.0: - dependencies: - type-fest: 0.20.2 - - globby@11.1.0: - dependencies: - array-union: 2.1.0 - dir-glob: 3.0.1 - fast-glob: 3.3.2 - ignore: 5.3.2 - merge2: 1.4.1 - slash: 3.0.0 + globals@14.0.0: {} graceful-fs@4.2.10: optional: true @@ -5090,11 +4291,6 @@ snapshots: imurmurhash@0.1.4: {} - inflight@1.0.6: - dependencies: - once: 1.4.0 - wrappy: 1.0.2 - inherits@2.0.4: {} ini@1.3.8: @@ -5118,22 +4314,10 @@ snapshots: dependencies: is-extglob: 2.1.1 - is-immutable-type@5.0.0(eslint@8.57.1)(typescript@5.6.2): - dependencies: - '@typescript-eslint/type-utils': 8.8.0(eslint@8.57.1)(typescript@5.6.2) - eslint: 8.57.1 - ts-api-utils: 1.3.0(typescript@5.6.2) - ts-declaration-location: 1.0.4(typescript@5.6.2) - typescript: 5.6.2 - transitivePeerDependencies: - - supports-color - is-module@1.0.0: {} is-number@7.0.0: {} - is-path-inside@3.0.3: {} - is-plain-obj@2.1.0: optional: true @@ -5220,13 +4404,6 @@ snapshots: graceful-fs: 4.2.11 optional: true - jsx-ast-utils@3.3.5: - dependencies: - array-includes: '@nolyfill/array-includes@1.0.28' - array.prototype.flat: '@nolyfill/array.prototype.flat@1.0.28' - object.assign: '@nolyfill/object.assign@1.0.28' - object.values: '@nolyfill/object.values@1.0.28' - keygrip@1.1.0: dependencies: tsscmp: 1.0.6 @@ -5270,12 +4447,6 @@ snapshots: transitivePeerDependencies: - supports-color - language-subtag-registry@0.3.23: {} - - language-tags@1.0.9: - dependencies: - language-subtag-registry: 0.3.23 - levn@0.4.1: dependencies: prelude-ls: 1.2.1 @@ -5375,18 +4546,10 @@ snapshots: mimic-fn@3.1.0: optional: true - minimatch@10.0.1: - dependencies: - brace-expansion: 2.0.1 - minimatch@3.1.2: dependencies: brace-expansion: 1.1.11 - minimatch@9.0.3: - dependencies: - brace-expansion: 2.0.1 - minimatch@9.0.5: dependencies: brace-expansion: 2.0.1 @@ -5435,10 +4598,6 @@ snapshots: dependencies: ee-first: 1.1.1 - once@1.4.0: - dependencies: - wrappy: 1.0.2 - onetime@5.1.2: dependencies: mimic-fn: 2.1.0 @@ -5525,8 +4684,6 @@ snapshots: path-exists@4.0.0: {} - path-is-absolute@1.0.1: {} - path-key@3.1.1: {} path-key@4.0.0: {} @@ -5541,8 +4698,6 @@ snapshots: unique-string: 2.0.0 optional: true - path-type@4.0.0: {} - picocolors@1.1.0: optional: true @@ -5857,7 +5012,8 @@ snapshots: resolve-from@5.0.0: optional: true - resolve-pkg-maps@1.0.0: {} + resolve-pkg-maps@1.0.0: + optional: true resolve@1.22.8: dependencies: @@ -5870,10 +5026,6 @@ snapshots: rfc4648@1.5.3: optional: true - rimraf@3.0.2: - dependencies: - glob: 7.2.3 - rollup-plugin-esbuild@6.1.1(esbuild@0.24.0)(rollup@4.13.2): dependencies: '@rollup/pluginutils': 5.1.2(rollup@4.13.2) @@ -5969,15 +5121,11 @@ snapshots: shebang-regex@3.0.0: {} - short-unique-id@5.2.0: {} - signal-exit@3.0.7: optional: true signal-exit@4.1.0: {} - slash@3.0.0: {} - slice-ansi@3.0.0: dependencies: ansi-styles: 4.3.0 @@ -6030,8 +5178,6 @@ snapshots: strip-ansi: 6.0.1 optional: true - string-ts@2.2.0: {} - string-width@4.2.3: dependencies: emoji-regex: 8.0.0 @@ -6085,13 +5231,11 @@ snapshots: terser@5.36.0: dependencies: '@jridgewell/source-map': 0.3.6 - acorn: 8.12.1 + acorn: 8.14.0 commander: 2.20.3 source-map-support: 0.5.21 optional: true - text-table@0.2.0: {} - tmp@0.0.33: dependencies: os-tmpdir: 1.0.2 @@ -6106,13 +5250,6 @@ snapshots: dependencies: typescript: 5.6.2 - ts-declaration-location@1.0.4(typescript@5.6.2): - dependencies: - minimatch: 10.0.1 - typescript: 5.6.2 - - ts-pattern@5.4.0: {} - tslib@2.8.1: optional: true @@ -6122,7 +5259,8 @@ snapshots: dependencies: prelude-ls: 1.2.1 - type-fest@0.20.2: {} + type-fest@0.20.2: + optional: true type-fest@0.21.3: {} @@ -6134,6 +5272,17 @@ snapshots: media-typer: 0.3.0 mime-types: 2.1.35 + typescript-eslint@8.17.0(eslint@9.15.0)(typescript@5.6.2): + dependencies: + '@typescript-eslint/eslint-plugin': 8.17.0(@typescript-eslint/parser@8.17.0(eslint@9.15.0)(typescript@5.6.2))(eslint@9.15.0)(typescript@5.6.2) + '@typescript-eslint/parser': 8.17.0(eslint@9.15.0)(typescript@5.6.2) + '@typescript-eslint/utils': 8.17.0(eslint@9.15.0)(typescript@5.6.2) + eslint: 9.15.0 + optionalDependencies: + typescript: 5.6.2 + transitivePeerDependencies: + - supports-color + typescript@5.6.2: {} undici-types@6.19.8: {} @@ -6208,8 +5357,6 @@ snapshots: strip-ansi: 6.0.1 optional: true - wrappy@1.0.2: {} - write-file-atomic@5.0.1: dependencies: imurmurhash: 0.1.4