diff --git a/.changeset/rotten-bags-speak.md b/.changeset/rotten-bags-speak.md new file mode 100644 index 000000000..82076729c --- /dev/null +++ b/.changeset/rotten-bags-speak.md @@ -0,0 +1,10 @@ +--- +'@neodrag/core': patch +'@neodrag/react': patch +'@neodrag/solid': patch +'@neodrag/svelte': patch +'@neodrag/vanilla': patch +'@neodrag/vue': patch +--- + +fix: apply neodrag class on action init, not pointerdown diff --git a/.gitignore b/.gitignore index 2c27709a2..9243a10ba 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ dist/ .DS_Store .env .pnpm-store/ +.turbo \ No newline at end of file diff --git a/.prettierrc b/.prettierrc index 67578c132..b2ca63be6 100644 --- a/.prettierrc +++ b/.prettierrc @@ -1,5 +1,6 @@ { - "singleQuote": true, - "printWidth": 100, - "useTabs": true + "singleQuote": true, + "printWidth": 100, + "useTabs": true, + "trailingComma": "all" } diff --git a/docs/src/data/sizes.json b/docs/src/data/sizes.json index b48821812..62f5ece2c 100644 --- a/docs/src/data/sizes.json +++ b/docs/src/data/sizes.json @@ -1,22 +1,22 @@ { - "react": { - "size": 2.18, - "version": "2.2.0" - }, - "solid": { - "size": 1.98, - "version": "2.2.0" - }, - "svelte": { - "size": 1.94, - "version": "2.2.0" - }, - "vanilla": { - "size": 2, - "version": "2.2.0" - }, - "vue": { - "size": 1.98, - "version": "2.2.0" - } -} + "svelte": { + "size": 3.64, + "version": "2.2.0" + }, + "react": { + "size": 2.28, + "version": "2.2.0" + }, + "solid": { + "size": 2.07, + "version": "2.2.0" + }, + "vue": { + "size": 1.98, + "version": "2.2.0" + }, + "vanilla": { + "size": 2.1, + "version": "2.2.0" + } +} \ No newline at end of file diff --git a/docs/src/helpers/utils.ts b/docs/src/helpers/utils.ts index 3d6335c46..b9501d02c 100644 --- a/docs/src/helpers/utils.ts +++ b/docs/src/helpers/utils.ts @@ -20,3 +20,8 @@ export function elements_overlap(el1: HTMLElement, el2: HTMLElement) { export function wait_for(ms: number) { return new Promise((r) => setTimeout(r, ms)); } + +// Add scroll helpers +export function isWindow(container: HTMLElement | Window): container is Window { + return container === window; +} diff --git a/package.json b/package.json index 52041d77e..c57f1dcbf 100644 --- a/package.json +++ b/package.json @@ -5,8 +5,8 @@ "type": "module", "scripts": { "changeset": "changeset", - "compile": "pnpm -r compile", - "docs:build": "pnpm compile && pnpm sizes && cd docs && pnpm build", + "compile": "turbo run compile", + "docs:build": "turbo run docs#build", "ci:version": "changeset version", "ci:release": "changeset publish", "sizes": "tsx scripts/gather-sizes.ts" @@ -14,7 +14,7 @@ "devDependencies": { "@changesets/changelog-github": "^0.5.0", "@changesets/cli": "^2.27.1", - "@sveltejs/vite-plugin-svelte": "3.1.0", + "@sveltejs/vite-plugin-svelte": "5.0.2", "@testing-library/jest-dom": "^6.1.5", "@testing-library/svelte": "^4.0.5", "@types/react": "^18.2.79", @@ -29,9 +29,16 @@ "terser": "^5.26.0", "tsup": "^8.0.1", "tsx": "^4.6.2", + "turbo": "^2.3.3", "typescript": "^5.4.5", "vite": "^5.2.9", "vitest": "^1.5.0", "vue": "^3.4.23" - } + }, + "pnpm": { + "overrides": { + "vite": "^6.0" + } + }, + "packageManager": "pnpm@9.14.0" } diff --git a/packages/config/index.ts b/packages/config/index.ts index 8cadb2a69..eeb2bbc5c 100644 --- a/packages/config/index.ts +++ b/packages/config/index.ts @@ -1,10 +1,17 @@ import { Format } from 'tsup'; import { defineConfig } from 'tsup'; -export const core_config = ({ dtsBanner = '', includeUMD = false, globalName = 'neodrag' } = {}) => +export const core_config = ({ + modularAsIndex = false, + dtsBanner = '', + includeUMD = false, + globalName = 'neodrag', +} = {}) => defineConfig([ { - entry: ['./src/index.ts'], + entry: { + index: `./src/${modularAsIndex ? 'modular' : 'index'}.ts`, + }, format: 'esm', external: ['vue', 'react', 'solid-js', 'svelte'], dts: { resolve: true, banner: dtsBanner }, @@ -12,7 +19,9 @@ export const core_config = ({ dtsBanner = '', includeUMD = false, globalName = ' treeshake: 'smallest', }, { - entry: ['./src/index.ts'], + entry: { + index: `./src/${modularAsIndex ? 'modular' : 'index'}.ts`, + }, minify: 'terser', external: ['vue', 'react', 'solid-js', 'svelte'], format: 'esm', diff --git a/packages/core/package.json b/packages/core/package.json index f9dd6fd16..89ba7cc09 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -13,11 +13,11 @@ "exports": { ".": { "types": "./dist/index.d.ts", - "import": { - "production": "./dist/index.js", - "development": "./dist/index.js" - }, - "default": "./dist/index.js" + "import": "./dist/index.js" + }, + "./plugins": { + "types": "./dist/plugins.d.ts", + "import": "./dist/plugins.js" }, "./package.json": "./package.json" }, diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index 0ad7f6d5f..cb6519fc8 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -1,747 +1,709 @@ -export type DragBoundsCoords = { - /** Number of pixels from left of the document */ - left: number; - - /** Number of pixels from top of the document */ - top: number; - - /** Number of pixels from the right side of document */ - right: number; - - /** Number of pixels from the bottom of the document */ - bottom: number; -}; - -export type DragAxis = 'both' | 'x' | 'y' | 'none'; - -export type DragBounds = - | HTMLElement - | Partial - | 'parent' - | 'body' - | (string & Record); - -export type DragEventData = { - /** How much element moved from its original position horizontally */ - offsetX: number; - - /** How much element moved from its original position vertically */ - offsetY: number; - - /** The node on which the draggable is applied */ - rootNode: HTMLElement; - - /** The element being dragged */ - currentNode: HTMLElement; -}; - -export type DragOptions = { - /** - * Optionally limit the drag area - * - * Accepts `parent` as prefixed value, and limits it to its parent. - * - * Or, you can specify any selector and it will be bound to that. - * - * **Note**: We don't check whether the selector is bigger than the node element. - * You yourself will have to make sure of that, or it may lead to strange behavior - * - * Or, finally, you can pass an object of type `{ top: number; right: number; bottom: number; left: number }`. - * These mimic the css `top`, `right`, `bottom` and `left`, in the sense that `bottom` starts from the bottom of the window, and `right` from right of window. - * If any of these properties are unspecified, they are assumed to be `0`. - */ - bounds?: DragBounds; - - /** - * When to recalculate the dimensions of the `bounds` element. - * - * By default, bounds are recomputed only on dragStart. Use this options to change that behavior. - * - * @default '{ dragStart: true, drag: false, dragEnd: false }' - */ - recomputeBounds?: { - dragStart?: boolean; - drag?: boolean; - dragEnd?: boolean; +import { + applyUserSelectHack, + ignoreMultitouch, + stateMarker, + threshold, + touchAction, + transform, + type Plugin, + type PluginContext, +} from './plugins.ts'; +import { is_svg_element, is_svg_svg_element, listen, type DeepMutable } from './utils.ts'; + +export interface ErrorInfo { + phase: 'setup' | 'start' | 'drag' | 'end' | 'shouldStart'; + plugin?: { + name: string; + hook: string; }; - - /** - * Axis on which the element can be dragged on. Valid values: `both`, `x`, `y`, `none`. - * - * - `both` - Element can move in any direction - * - `x` - Only horizontal movement possible - * - `y` - Only vertical movement possible - * - `none` - No movement at all - * - * @default 'both' - */ - axis?: DragAxis; - - /** - * If false, uses the new translate property instead of transform: translate(); to move the element around. - * - * At present this is true by default, but will be changed to false in a future major version. - * - * @default false - * @deprecated Use `transform` option instead for transform: translate() or any other custom transform. Will be removed in v3. - */ - legacyTranslate?: boolean; - - /** - * If true, uses `translate3d` instead of `translate` to move the element around, and the hardware acceleration kicks in. - * - * `true` by default, but can be set to `false` if [blurry text issue](https://developpaper.com/question/why-does-the-use-of-css3-translate3d-result-in-blurred-display/) occur - * - * @default true - * @deprecated Use `transform` option instead with translate(x, y, 1px). 1px forces some browsers to use GPU acceleration. Will be removed in v3 - */ - gpuAcceleration?: boolean; - - /** - * Custom transform function. If provided, this function will be used to apply the DOM transformations to the root node to move it. - * Existing transform logic, including `gpuAcceleration` and `legacyTranslate`, will be ignored. - * - * You can return a string to apply to a `transform` property, or not return anything and apply your transformations using `rootNode.style.transform = VALUE` - * - * @default undefined - */ - transform?: ({ - offsetX, - offsetY, - rootNode, - }: { - offsetX: number; - offsetY: number; - rootNode: HTMLElement; - }) => string | undefined | void; - - /** - * Applies `user-select: none` on `` element when dragging, - * to prevent the irritating effect where dragging doesn't happen and the text is selected. - * Applied when dragging starts and removed when it stops. - * - * Can be disabled using this option - * - * @default true - */ - applyUserSelectHack?: boolean; - - /** - * Ignores touch events with more than 1 touch. - * This helps when you have multiple elements on a canvas where you want to implement - * pinch-to-zoom behaviour. - * - * @default false - * - */ - ignoreMultitouch?: boolean; - - /** - * Disables dragging altogether. - * - * @default false - */ - disabled?: boolean; - - /** - * Applies a grid on the page to which the element snaps to when dragging, rather than the default continuous grid. - * - * `Note`: If you're programmatically creating the grid, do not set it to [0, 0] ever, that will stop drag at all. Set it to `undefined`. - * - * @default undefined - */ - grid?: [number, number]; - - /** - * Threshold for dragging to start. If the user moves the mouse/finger less than this distance, the dragging won't start. - * - * @default { delay: 0, distance: 3 } - */ - threshold?: { - /** - * Threshold in milliseconds for a pointer movement to be considered a drag - * - * @default 0 - */ - delay?: number; - - /** - * Threshold in pixels for movement to be considered a drag - * - * @default 3 - */ - distance?: number; - }; - - /** - * Control the position manually with your own state - * - * By default, the element will be draggable by mouse/finger, and all options will work as default while dragging. - * - * But changing the `position` option will also move the draggable around. These parameters are reactive, - * so using Svelte's reactive variables as values for position will work like a charm. - * - * - * Note: If you set `disabled: true`, you'll still be able to move the draggable through state variables. Only the user interactions won't work - * - */ - position?: { x: number; y: number }; - - /** - * CSS Selector of an element or multiple elements inside the parent node(on which `use:draggable` is applied). - * - * Can be an element or elements too. If it is provided, Trying to drag inside the `cancel` element(s) will prevent dragging. - * - * @default undefined - */ - cancel?: string | HTMLElement | HTMLElement[]; - - /** - * CSS Selector of an element or multiple elements inside the parent node(on which `use:draggable` is applied). Can be an element or elements too. - * - * If it is provided, Only clicking and dragging on this element will allow the parent to drag, anywhere else on the parent won't work. - * - * @default undefined - */ - handle?: string | HTMLElement | HTMLElement[]; - - /** - * Class to apply on the element on which `use:draggable` is applied. - * Note that if `handle` is provided, it will still apply class on the element to which this action is applied, **NOT** the handle - * - */ - defaultClass?: string; - - /** - * Class to apply on the element when it is dragging - * - * @default 'neodrag-dragging' - */ - defaultClassDragging?: string; - - /** - * Class to apply on the element if it has been dragged at least once. - * - * @default 'neodrag-dragged' - */ - defaultClassDragged?: string; - - /** - * Offsets your element to the position you specify in the very beginning. - * `x` and `y` should be in pixels - * - */ - defaultPosition?: { x: number; y: number }; - - /** - * Fires when dragging start - */ - onDragStart?: (data: DragEventData) => void; - - /** - * Fires when dragging is going on - */ - onDrag?: (data: DragEventData) => void; - - /** - * Fires when dragging ends - */ - onDragEnd?: (data: DragEventData) => void; -}; - -const enum DEFAULT_CLASS { - MAIN = 'neodrag', - DRAGGING = 'neodrag-dragging', - DRAGGED = 'neodrag-dragged', + node: HTMLElement | SVGElement; + error: unknown; } -const DEFAULT_RECOMPUTE_BOUNDS: Exclude = { - dragStart: true, -}; - -const enum DEFAULT_DRAG_THRESHOLD_VALUES { - DELAY = 0, - DISTANCE = 3, +export interface DraggableInstance { + ctx: DeepMutable; + root_node: HTMLElement | SVGElement; + plugins: Plugin[]; + states: Map; + dragstart_prevented: boolean; + current_drag_hook_cancelled: boolean; + failed_plugins: Set; + pointer_captured_id: number | null; + effects: { + paint: Set<() => void>; + immediate: Set<() => void>; + }; + controller: AbortController; } -const DEFAULT_DRAG_THRESHOLD: Exclude = { - delay: DEFAULT_DRAG_THRESHOLD_VALUES.DELAY, - distance: DEFAULT_DRAG_THRESHOLD_VALUES.DISTANCE, -}; - -export function draggable(node: HTMLElement, options: DragOptions = {}) { - let { - bounds, - axis = 'both', - gpuAcceleration = true, - legacyTranslate = false, - transform, - applyUserSelectHack = true, - disabled = false, - ignoreMultitouch = false, - recomputeBounds = DEFAULT_RECOMPUTE_BOUNDS, - grid, - threshold = DEFAULT_DRAG_THRESHOLD, - position, - cancel, - handle, - defaultClass = DEFAULT_CLASS.MAIN, - defaultClassDragging = DEFAULT_CLASS.DRAGGING, - defaultClassDragged = DEFAULT_CLASS.DRAGGED, - defaultPosition = { x: 0, y: 0 }, - onDragStart, - onDrag, - onDragEnd, - } = options; - - /** Make sure user is interacting(clicking, tapping, trying to move) the `node` */ - let is_interacting = false; - /** Whether we should allow for dragging */ - let is_dragging = false; - - let start_time = 0; - let meets_time_threshold = false; - let meets_distance_threshold = false; - - let translate_x = 0, - translate_y = 0; - - let initial_x = 0, - initial_y = 0; - - // The offset of the client position relative to the node's top-left corner - let client_to_node_offsetX = 0, - client_to_node_offsetY = 0; - - let { x: x_offset, y: y_offset } = position - ? { x: position?.x ?? 0, y: position?.y ?? 0 } - : defaultPosition; - - set_translate(x_offset, y_offset); +type Result = { ok: true; value: T } | { ok: false; error: unknown }; - let can_move_in_x: boolean; - let can_move_in_y: boolean; +export const DEFAULTS = { + plugins: [ + ignoreMultitouch(), + stateMarker(), + applyUserSelectHack(), + transform(), + threshold(), + touchAction(), + ], - let body_original_user_select_val = ''; + onError: (error: ErrorInfo) => { + console.error(error); + }, - let computed_bounds: DragBoundsCoords | undefined; - let node_rect: DOMRect; + delegate: () => document.body, +}; - let drag_els: HTMLElement[]; - let cancel_els: HTMLElement[]; +export function createDraggable({ + plugins: initial_plugins = DEFAULTS.plugins, + delegate: delegateTargetFn = DEFAULTS.delegate, + onError = DEFAULTS.onError, +}: { + plugins?: Plugin[]; + delegate?: () => HTMLElement; + onError?: (error: ErrorInfo) => void; +} = {}) { + const instances = new Map(); + let listeners_initialized = false; + + /** track multiple active nodes by pointerId */ + const active_nodes = new Map(); + + function resultify(fn: () => T, errorInfo: Omit): Result { + try { + return { ok: true, value: fn() }; + } catch (error) { + report_error(errorInfo, error); + return { ok: false, error }; + } + } - let currently_dragged_el: HTMLElement; + function report_error(info: Omit, error: unknown) { + if (onError) { + onError({ ...info, error }); + } + } - let is_controlled = !!position; + function initialize_listeners() { + if (listeners_initialized) return; + + const delegateTarget = delegateTargetFn(); + + listen(delegateTarget, 'pointerdown', handle_pointer_down, { + passive: true, + capture: false, + }); + listen(delegateTarget, 'pointermove', handle_pointer_move, { + passive: false, + capture: false, + }); + listen(delegateTarget, 'pointerup', handle_pointer_up, { + passive: true, + capture: false, + }); + listen(delegateTarget, 'pointercancel', handle_pointer_up, { + passive: true, + capture: false, + }); + + listeners_initialized = true; + } - // Set proper defaults for recomputeBounds - recomputeBounds = { ...DEFAULT_RECOMPUTE_BOUNDS, ...recomputeBounds }; + function run_plugins(instance: DraggableInstance, hook: ErrorInfo['phase'], event: PointerEvent) { + let should_run = true; + instance.dragstart_prevented = false; - // Proper defaults for threshold - threshold = { ...DEFAULT_DRAG_THRESHOLD, ...(threshold ?? {}) }; + for (const plugin of instance.plugins) { + // Skip failed plugins + if (instance.failed_plugins.has(plugin.name)) { + continue; + } - let active_pointers = new Set(); + const handler = plugin[hook]; + if (!handler) continue; + + if (instance.current_drag_hook_cancelled && plugin.cancelable !== false) continue; + + const result = resultify( + () => handler.call(plugin, instance.ctx, instance.states.get(plugin.name), event), + { + phase: hook, + plugin: { name: plugin.name, hook }, + node: instance.ctx.rootNode, + }, + ); + + if (!result.ok) { + // If a plugin fails during any hook execution, mark it as failed + instance.failed_plugins.add(plugin.name); + should_run = false; + break; + } - function try_start_drag() { - if ( - is_interacting && - !is_dragging && - meets_distance_threshold && - meets_time_threshold && - currently_dragged_el - ) { - is_dragging = true; - fire_svelte_drag_start_event(); - node_class_list.add(defaultClassDragging); - - if (applyUserSelectHack) { - // Apply user-select: none on body to prevent misbehavior - body_original_user_select_val = body_style.userSelect; - body_style.userSelect = 'none'; + if (result.value === false) { + should_run = false; + break; } } - } - function reset_state() { - is_dragging = false; - meets_time_threshold = false; - meets_distance_threshold = false; + return should_run; } - // Arbitrary constants for better minification - const body_style = document.body.style; - const node_class_list = node.classList; + function flush_effects(instance: DraggableInstance) { + const paint_effects = new Set(instance.effects.paint); + const immediate_effects = new Set(instance.effects.immediate); - function set_translate(x_pos = translate_x, y_pos = translate_y) { - if (!transform) { - if (legacyTranslate) { - let common = `${+x_pos}px, ${+y_pos}px`; - return set_style( - node, - 'transform', - gpuAcceleration ? `translate3d(${common}, 0)` : `translate(${common})`, - ); - } + // Store effects locally and clear the instance effects immediately + // This prevents new effects added during execution from being lost + clear_effects(instance); - return set_style(node, 'translate', `${+x_pos}px ${+y_pos}px`); + if (immediate_effects.size > 0) { + queueMicrotask(() => { + for (const effect of immediate_effects) { + effect(); + } + }); } - // Call transform function if provided - const transform_called = transform({ offsetX: x_pos, offsetY: y_pos, rootNode: node }); - if (is_string(transform_called)) { - set_style(node, 'transform', transform_called); + if (paint_effects.size > 0) { + requestAnimationFrame(() => { + for (const effect of paint_effects) { + effect(); + } + }); } } - function get_event_data() { - return { - offsetX: translate_x, - offsetY: translate_y, - rootNode: node, - currentNode: currently_dragged_el, - }; + function clear_effects(instance: DraggableInstance) { + instance.effects.immediate.clear(); + instance.effects.paint.clear(); } - function call_event(eventName: 'neodrag:start' | 'neodrag' | 'neodrag:end', fn: typeof onDrag) { - const data = get_event_data(); - node.dispatchEvent(new CustomEvent(eventName, { detail: data })); - fn?.(data); - } + function cleanup_active_node(pointer_id: number) { + // If no node is currently being dragged, nothing to clean up + const node = active_nodes.get(pointer_id); + if (!node) return; - function fire_svelte_drag_start_event() { - call_event('neodrag:start', onDragStart); - } + // Get the instance associated with the active node + const instance = instances.get(node); + if (!instance) return; - function fire_svelte_drag_end_event() { - call_event('neodrag:end', onDragEnd); - } + // If we have captured pointer events, release them + if ( + instance.pointer_captured_id && + instance.ctx.currentlyDraggedNode.hasPointerCapture(instance.pointer_captured_id) + ) { + resultify( + () => { + // Release the pointer capture we set earlier + instance.ctx.currentlyDraggedNode.releasePointerCapture(instance.pointer_captured_id!); + }, + { + phase: 'end', + node, + }, + ); + } - function fire_svelte_drag_event() { - call_event('neodrag', onDrag); + // Reset all the drag state + instance.ctx.isInteracting = false; // No longer interacting with element + instance.ctx.isDragging = false; // No longer dragging + instance.dragstart_prevented = false; // Reset prevention flag + instance.pointer_captured_id = null; // Clear pointer ID + active_nodes.delete(pointer_id); // Clear active node reference + clear_effects(instance); // Clear any pending effects } - const listen = addEventListener; - const controller = new AbortController(); - const event_options = { signal: controller.signal, capture: false }; + function handle_pointer_down(e: PointerEvent) { + if (e.button === 2) return; - // On mobile, touch can become extremely janky without it - set_style(node, 'touch-action', 'none'); + // Find the draggable node that contains the target + const draggable_node = find_draggable_node(e); - listen( - 'pointerdown', - (e) => { - if (disabled) return; - if (e.button === 2) return; + if (!draggable_node) return; - active_pointers.add(e.pointerId); + const instance = instances.get(draggable_node)!; + instance.ctx.cachedRootNodeRect = draggable_node.getBoundingClientRect(); - if (ignoreMultitouch && active_pointers.size > 1) return e.preventDefault(); + // Modify this if draggable_node is SVG + // Calculate scale differently for SVG vs HTML + let inverse_scale = 1; + if (draggable_node instanceof SVGElement) { + // For SVG elements, use the bounding box for scale + const bbox = (draggable_node as SVGGraphicsElement).getBBox(); + const rect = instance.ctx.cachedRootNodeRect; + // Only calculate scale if we have valid dimensions + if (bbox.width && rect.width) { + inverse_scale = bbox.width / rect.width; + } + } else { + // For HTML elements, use the original calculation + inverse_scale = draggable_node.offsetWidth / instance.ctx.cachedRootNodeRect.width; + } - // Compute bounds - if (recomputeBounds.dragStart) computed_bounds = compute_bound_rect(bounds, node); + instance.ctx.initial.x = e.clientX - instance.ctx.offset.x / inverse_scale; + instance.ctx.initial.y = e.clientY - instance.ctx.offset.y / inverse_scale; - if (is_string(handle) && is_string(cancel) && handle === cancel) - throw new Error("`handle` selector can't be same as `cancel` selector"); + const should_drag = run_plugins(instance, 'shouldStart', e); + if (!should_drag) return; - node_class_list.add(defaultClass); + instance.ctx.isInteracting = true; + active_nodes.set(e.pointerId, draggable_node); - drag_els = get_handle_els(handle, node); - cancel_els = get_cancel_elements(cancel, node); + const capture_result = resultify( + () => { + instance.pointer_captured_id = e.pointerId; + instance.ctx.currentlyDraggedNode.setPointerCapture(instance.pointer_captured_id); + }, + { + phase: 'start', + node: instance.ctx.currentlyDraggedNode, + }, + ); - can_move_in_x = /(both|x)/.test(axis); - can_move_in_y = /(both|y)/.test(axis); + if (!capture_result.ok) { + cleanup_active_node(e.pointerId); + return; + } + } - if (cancel_element_contains(cancel_els, drag_els)) - throw new Error( - "Element being dragged can't be a child of the element on which `cancel` is applied", - ); + function handle_pointer_move(e: PointerEvent) { + const draggable_node = active_nodes.get(e.pointerId); + if (!draggable_node) return; - const event_target = e.composedPath()[0] as HTMLElement; - if ( - drag_els.some((el) => el.contains(event_target) || el.shadowRoot?.contains(event_target)) && - !cancel_element_contains(cancel_els, [event_target]) - ) { - currently_dragged_el = - drag_els.length === 1 ? node : drag_els.find((el) => el.contains(event_target))!; - is_interacting = true; - start_time = Date.now(); - - // If no delay, immediately set time threshold - if (!threshold.delay) { - meets_time_threshold = true; - } - } else return; + const instance = instances.get(draggable_node)!; + if (!instance.ctx.isInteracting) return; - // Compute current node's bounding client Rectangle - node_rect = node.getBoundingClientRect(); + instance.ctx.lastEvent = e; - const { clientX, clientY } = e; - const inverse_scale = calculate_inverse_scale(); + if (!instance.ctx.isDragging) { + instance.dragstart_prevented = false; + run_plugins(instance, 'drag', e); - if (can_move_in_x) initial_x = clientX - x_offset / inverse_scale; - if (can_move_in_y) initial_y = clientY - y_offset / inverse_scale; + // Bottom: Even if its cancelled, it should still run the plugins that have cancellable: false + if (!instance.dragstart_prevented) { + const start_drag = run_plugins(instance, 'start', e); + if (!start_drag) return clear_effects(instance); + else flush_effects(instance); - // Only the bounds uses these properties at the moment, - // may open up in the future if others need it - if (computed_bounds) { - client_to_node_offsetX = clientX - node_rect.left; - client_to_node_offsetY = clientY - node_rect.top; + instance.ctx.isDragging = true; } - }, - event_options, - ); - - listen( - 'pointermove', - (e) => { - if (!is_interacting || (ignoreMultitouch && active_pointers.size > 1)) return; - - if (!is_dragging) { - // Time threshold - if (!meets_time_threshold) { - const elapsed = Date.now() - start_time; - if (elapsed >= threshold.delay!) { - meets_time_threshold = true; - try_start_drag(); - } - } - - // Distance threshold - if (!meets_distance_threshold) { - const delta_x = e.clientX - initial_x; - const delta_y = e.clientY - initial_y; - const distance = Math.sqrt(delta_x ** 2 + delta_y ** 2); - if (distance >= threshold.distance!) { - meets_distance_threshold = true; - try_start_drag(); - } - } + if (!instance.ctx.isDragging) return; + } - if (!is_dragging) return; - } + e.preventDefault(); - if (recomputeBounds.drag) computed_bounds = compute_bound_rect(bounds, node); + instance.ctx.delta.x = e.clientX - instance.ctx.initial.x - instance.ctx.offset.x; + instance.ctx.delta.y = e.clientY - instance.ctx.initial.y - instance.ctx.offset.y; - e.preventDefault(); + // Core proposes delta + instance.ctx.proposed.x = instance.ctx.delta.x; + instance.ctx.proposed.y = instance.ctx.delta.y; - node_rect = node.getBoundingClientRect(); + // Run the plugins + const run_result = run_plugins(instance, 'drag', e); - // Get final values for clamping - let final_x = e.clientX, - final_y = e.clientY; + if (run_result) flush_effects(instance); + else return clear_effects(instance); - const inverse_scale = calculate_inverse_scale(); + // Whatever offset we have had till now since the draggable() was mounted, add proposals to it, as long as they're not null + instance.ctx.offset.x += instance.ctx.proposed.x ?? 0; + instance.ctx.offset.y += instance.ctx.proposed.y ?? 0; + } - if (computed_bounds) { - // Client position is limited to this virtual boundary to prevent node going out of bounds - const virtual_client_bounds: DragBoundsCoords = { - left: computed_bounds.left + client_to_node_offsetX, - top: computed_bounds.top + client_to_node_offsetY, - right: computed_bounds.right + client_to_node_offsetX - node_rect.width, - bottom: computed_bounds.bottom + client_to_node_offsetY - node_rect.height, - }; + function handle_pointer_up(e: PointerEvent) { + const draggable_node = active_nodes.get(e.pointerId); + if (!draggable_node) return; - final_x = clamp(final_x, virtual_client_bounds.left, virtual_client_bounds.right); - final_y = clamp(final_y, virtual_client_bounds.top, virtual_client_bounds.bottom); - } + const instance = instances.get(draggable_node)!; + if (!instance.ctx.isInteracting) return; - if (Array.isArray(grid)) { - let [x_snap, y_snap] = grid; + if (instance.ctx.isDragging) { + listen(draggable_node as HTMLElement, 'click', (e) => e.stopPropagation(), { + once: true, + signal: instance.controller.signal, + capture: true, + }); + } - if (isNaN(+x_snap) || x_snap < 0) - throw new Error('1st argument of `grid` must be a valid positive number'); + if ( + instance.pointer_captured_id && + instance.ctx.currentlyDraggedNode.hasPointerCapture(instance.pointer_captured_id) + ) { + instance.ctx.currentlyDraggedNode.releasePointerCapture(instance.pointer_captured_id); + } - if (isNaN(+y_snap) || y_snap < 0) - throw new Error('2nd argument of `grid` must be a valid positive number'); + // Call the dragEnd hooks + run_plugins(instance, 'end', e); + flush_effects(instance); - let delta_x = final_x - initial_x, - delta_y = final_y - initial_y; + if (instance.ctx.proposed.x) instance.ctx.initial.x = instance.ctx.offset.x; + if (instance.ctx.proposed.y) instance.ctx.initial.y = instance.ctx.offset.y; - [delta_x, delta_y] = snap_to_grid( - [x_snap / inverse_scale, y_snap / inverse_scale], - delta_x, - delta_y, - ); + instance.ctx.proposed.x = 0; + instance.ctx.proposed.y = 0; + instance.ctx.isInteracting = false; + instance.ctx.isDragging = false; + instance.dragstart_prevented = false; + instance.pointer_captured_id = null; + clear_effects(instance); + } - final_x = initial_x + delta_x; - final_y = initial_y + delta_y; + function find_draggable_node(e: PointerEvent): HTMLElement | SVGElement | null { + // composedPath() gives us the event path in the DOM from target up to window + const path = e.composedPath(); + // Find first element in path that's a draggable + for (const el of path) { + if ( + (el instanceof HTMLElement || (is_svg_element(el) && !is_svg_svg_element(el))) && + instances.has(el) + ) { + return el; } + } + return null; + } - if (can_move_in_x) translate_x = Math.round((final_x - initial_x) * inverse_scale); - if (can_move_in_y) translate_y = Math.round((final_y - initial_y) * inverse_scale); - - x_offset = translate_x; - y_offset = translate_y; - - fire_svelte_drag_event(); - - set_translate(); - }, - event_options, - ); + function initialize_plugins(new_plugins: Plugin[]) { + // Create combined array + const combined = new Array(new_plugins.length + initial_plugins.length); + for (let i = 0; i < new_plugins.length; i++) { + combined[i] = new_plugins[i]; + } + for (let i = 0; i < initial_plugins.length; i++) { + combined[new_plugins.length + i] = initial_plugins[i]; + } - listen( - 'pointerup', - (e) => { - active_pointers.delete(e.pointerId); + // Sort by priority and deduplicate in one pass + return Array.from( + combined + .sort((a, b) => (b.priority ?? 0) - (a.priority ?? 0)) + .reduce((map, plugin) => { + if (!map.has(plugin.name)) { + map.set(plugin.name, plugin); + } + return map; + }, new Map()) + .values(), + ) as Plugin[]; + } - if (!is_interacting) return; + function update(instance: DraggableInstance, new_plugins: Plugin[] = []): void { + // Early return if no plugins and instance has no plugins + if (!new_plugins.length && !instance.plugins.length) { + return; + } - if (is_dragging) { - // Listen for click handler and cancel it - listen('click', (e) => e.stopPropagation(), { - once: true, - signal: controller.signal, - capture: true, - }); + // Check if instance is currently dragging or interacting + const is_active = instance.ctx.isDragging || instance.ctx.isInteracting; + + // Initialize plugins only if needed + const new_plugin_list = is_active + ? new_plugins.filter((p) => p.liveUpdate) + : initialize_plugins(new_plugins); + + if (is_active) { + // Fast path for active instances + let has_changes = false; + const len = new_plugin_list.length; + + // Use for loop for better performance + for (let i = 0; i < len; i++) { + const plugin = new_plugin_list[i]; + const old_plugin = find_plugin_by_name(instance.plugins, plugin.name); + + // Allow failed plugins to try setup again during update + if (instance.failed_plugins.has(plugin.name)) { + const result = resultify( + () => { + if (plugin.setup) { + const value = plugin.setup(instance.ctx); + if (value) instance.states.set(plugin.name, value); + } + }, + { + phase: 'setup', + plugin: { name: plugin.name, hook: 'setup' }, + node: instance.root_node, + }, + ); + + if (result.ok) { + // If setup succeeds this time, remove from failed plugins + instance.failed_plugins.delete(plugin.name); + has_changes = true; + } + } else if (update_plugin_if_needed(instance, old_plugin, plugin)) { + has_changes = true; + } + } - if (recomputeBounds.dragEnd) computed_bounds = compute_bound_rect(bounds, node); + // Only rerun drag if changes occurred and we have a last event + if (has_changes && instance.ctx.lastEvent && is_node_active(instance.root_node)) { + handle_pointer_move(instance.ctx.lastEvent); + } - // Apply class defaultClassDragged - node_class_list.remove(defaultClassDragging); - node_class_list.add(defaultClassDragged); + return; + } - if (applyUserSelectHack) body_style.userSelect = body_original_user_select_val; + // Inactive instance path - handle cleanup and setup + let has_changes = false; + + // Process removals first + if (instance.plugins.length > 0) { + const removed = find_removed_plugins(instance.plugins, new_plugin_list); + if (removed.length > 0) { + cleanup_plugins(instance, removed); + // Remove any failed plugins that were removed + for (const plugin of removed) { + instance.failed_plugins.delete(plugin.name); + } + has_changes = true; + } + } - fire_svelte_drag_end_event(); + // Process updates and additions + const len = new_plugin_list.length; + for (let i = 0; i < len; i++) { + const plugin = new_plugin_list[i]; + const old_plugin = find_plugin_by_name(instance.plugins, plugin.name); + + // Always try to setup new plugins, even if they failed before + if (instance.failed_plugins.has(plugin.name)) { + const result = resultify( + () => { + if (plugin.setup) { + const value = plugin.setup(instance.ctx); + if (value) instance.states.set(plugin.name, value); + } + }, + { + phase: 'setup', + plugin: { name: plugin.name, hook: 'setup' }, + node: instance.root_node, + }, + ); - if (can_move_in_x) initial_x = translate_x; - if (can_move_in_y) initial_y = translate_y; + if (result.ok) { + instance.failed_plugins.delete(plugin.name); + has_changes = true; + } + } else if (update_plugin_if_needed(instance, old_plugin, plugin)) { + has_changes = true; } + } - is_interacting = false; - reset_state(); - }, - event_options, - ); - - function calculate_inverse_scale() { - // Calculate the current scale of the node - let inverse_scale = node.offsetWidth / node_rect.width; - if (isNaN(inverse_scale)) inverse_scale = 1; - return inverse_scale; + // Update instance plugins only if needed + if (has_changes) { + instance.plugins = new_plugin_list; + } } - return { - destroy: (): void => controller.abort(), - update: (options: DragOptions): void => { - // Update all the values that need to be changed - axis = options.axis || 'both'; - disabled = options.disabled ?? false; - ignoreMultitouch = options.ignoreMultitouch ?? false; - handle = options.handle; - bounds = options.bounds; - recomputeBounds = options.recomputeBounds ?? DEFAULT_RECOMPUTE_BOUNDS; - cancel = options.cancel; - applyUserSelectHack = options.applyUserSelectHack ?? true; - grid = options.grid; - gpuAcceleration = options.gpuAcceleration ?? true; - legacyTranslate = options.legacyTranslate ?? true; - transform = options.transform; - threshold = { ...DEFAULT_DRAG_THRESHOLD, ...(options.threshold ?? {}) }; - - const dragged = node_class_list.contains(defaultClassDragged); - - node_class_list.remove(defaultClass, defaultClassDragged); - - defaultClass = options.defaultClass ?? DEFAULT_CLASS.MAIN; - defaultClassDragging = options.defaultClassDragging ?? DEFAULT_CLASS.DRAGGING; - defaultClassDragged = options.defaultClassDragged ?? DEFAULT_CLASS.DRAGGED; - - node_class_list.add(defaultClass); - - if (dragged) node_class_list.add(defaultClassDragged); - - if (is_controlled) { - x_offset = translate_x = options.position?.x ?? translate_x; - y_offset = translate_y = options.position?.y ?? translate_y; - - set_translate(); + // Helper functions to improve readability and reusability + function find_plugin_by_name(plugins: Plugin[], name: string): Plugin | undefined { + const len = plugins.length; + for (let i = 0; i < len; i++) { + if (plugins[i].name === name) { + return plugins[i]; } - }, - }; -} - -const clamp = (val: number, min: number, max: number) => Math.min(Math.max(val, min), max); - -const is_string = (val: unknown): val is string => typeof val === 'string'; - -const snap_to_grid = ( - [x_snap, y_snap]: [number, number], - pending_x: number, - pending_y: number, -): [number, number] => { - const calc = (val: number, snap: number) => (snap === 0 ? 0 : Math.ceil(val / snap) * snap); - - const x = calc(pending_x, x_snap); - const y = calc(pending_y, y_snap); - - return [x, y]; -}; + } + return undefined; + } -function get_handle_els(handle: DragOptions['handle'], node: HTMLElement): HTMLElement[] { - if (!handle) return [node]; + function update_plugin_if_needed( + instance: DraggableInstance, + old_plugin: Plugin | undefined, + new_plugin: Plugin, + ): boolean { + // Skip if same instance and not live-updateable + if (old_plugin === new_plugin && !new_plugin.liveUpdate) { + return false; + } - if (is_HTMLElement(handle)) return [handle]; - if (Array.isArray(handle)) return handle; + // Clean up old instance if different + if (old_plugin && old_plugin !== new_plugin) { + old_plugin.cleanup?.(instance.ctx, instance.states.get(old_plugin.name)); + instance.states.delete(old_plugin.name); + } - // Valid!! Let's check if this selector exists or not - const handle_els = node.querySelectorAll(handle); - if (handle_els === null) - throw new Error( - 'Selector passed for `handle` option should be child of the element on which the action is applied', - ); + // Setup new plugin + const state = new_plugin.setup?.(instance.ctx); + if (state) { + instance.states.set(new_plugin.name, state); + } - return Array.from(handle_els.values()); -} + return true; + } -function get_cancel_elements(cancel: DragOptions['cancel'], node: HTMLElement): HTMLElement[] { - if (!cancel) return []; + function find_removed_plugins(old_plugins: Plugin[], new_plugins: Plugin[]): Plugin[] { + return old_plugins.filter((p) => !new_plugins.some((np) => np.name === p.name)); + } - if (is_HTMLElement(cancel)) return [cancel]; - if (Array.isArray(cancel)) return cancel; + function cleanup_plugins(instance: DraggableInstance, plugins: Plugin[]): void { + const len = plugins.length; + for (let i = 0; i < len; i++) { + const plugin = plugins[i]; + plugin.cleanup?.(instance.ctx, instance.states.get(plugin.name)); + instance.states.delete(plugin.name); + } + } - const cancel_els = node.querySelectorAll(cancel); + function is_node_active(node: HTMLElement | SVGElement): boolean { + for (const activeNode of active_nodes.values()) { + if (activeNode === node) return true; + } + return false; + } - if (cancel_els === null) - throw new Error( - 'Selector passed for `cancel` option should be child of the element on which the action is applied', - ); + function destroy(instance: DraggableInstance) { + for (const [pointer_id, active_node] of active_nodes) { + if (active_node === instance.root_node) { + cleanup_active_node(pointer_id); + } + } - return Array.from(cancel_els.values()); -} + for (const plugin of instance.plugins) { + plugin.cleanup?.(instance.ctx, instance.states.get(plugin.name)); + } -const cancel_element_contains = (cancel_elements: HTMLElement[], drag_elements: HTMLElement[]) => - cancel_elements.some((cancelEl) => drag_elements.some((el) => cancelEl.contains(el))); + instances.delete(instance.root_node); + } -function compute_bound_rect(bounds: DragOptions['bounds'], rootNode: HTMLElement) { - if (bounds === undefined) return; + // Dispose all draggable instances. Can't be recreated again + function dispose() { + for (const instance of instances.values()) { + destroy(instance); + } + } - if (is_HTMLElement(bounds)) return bounds.getBoundingClientRect(); + return { + instances, + draggable: (node: HTMLElement | SVGElement, plugins: Plugin[] = []) => { + if (is_svg_svg_element(node)) { + throw new Error( + 'Dragging the root SVG element directly is not recommended. ' + + 'Instead, either:\n' + + '1. Wrap your SVG in a div and make the div draggable\n' + + '2. Use viewBox manipulation if you want to pan the SVG canvas\n' + + '3. Or if you really need to transform the SVG element, use CSS transforms', + ); + } - if (typeof bounds === 'object') { - // we have the left right etc + initialize_listeners(); + + const instance: DraggableInstance = { + ctx: {} as DeepMutable, + root_node: node, + plugins: [], + states: new Map(), + controller: new AbortController(), + failed_plugins: new Set(), + dragstart_prevented: false, + current_drag_hook_cancelled: false, + pointer_captured_id: null, + effects: { + immediate: new Set<() => void>(), + paint: new Set<() => void>(), + }, + }; + + let currently_dragged_element = node; + + instance.ctx = { + proposed: { x: 0, y: 0 }, + delta: { x: 0, y: 0 }, + offset: { x: 0, y: 0 }, + initial: { x: 0, y: 0 }, + isDragging: false, + isInteracting: false, + rootNode: node, + cachedRootNodeRect: node.getBoundingClientRect(), + lastEvent: null, + get currentlyDraggedNode() { + return currently_dragged_element; + }, + set currentlyDraggedNode(val) { + // In case a plugin switches currentDraggedElement through the pointermove + if ( + instance.pointer_captured_id && + currently_dragged_element.hasPointerCapture(instance.pointer_captured_id) + ) { + currently_dragged_element.releasePointerCapture(instance.pointer_captured_id); + val.setPointerCapture(instance.pointer_captured_id); + } - const { top = 0, left = 0, right = 0, bottom = 0 } = bounds; + currently_dragged_element = val; + }, + + effect: { + immediate: (func) => { + instance.effects.immediate.add(func); + }, + + paint: (func) => { + instance.effects.paint.add(func); + }, + }, + + propose(x: number | null, y: number | null) { + this.proposed.x = x; + this.proposed.y = y; + }, + + cancel() { + instance.current_drag_hook_cancelled = true; + }, + + preventStart() { + instance.dragstart_prevented = true; + }, + + setForcedPosition(x, y) { + this.offset.x = x; + this.offset.y = y; + // Only sync initial with offset when not dragging + // This maintains the drag calculations during active drags + if (!this.isDragging) { + this.initial.x = x; + this.initial.y = y; + } + }, + }; + + // Initial setup + instance.plugins = initialize_plugins(plugins); + for (const plugin of instance.plugins) { + const result = resultify( + () => { + const value = plugin.setup?.(instance.ctx); + if (value) instance.states.set(plugin.name, value); + flush_effects(instance); + }, + { + phase: 'setup', + plugin: { name: plugin.name, hook: 'setup' }, + node: instance.root_node, + }, + ); - const computed_right = window.innerWidth - right; - const computed_bottom = window.innerHeight - bottom; + if (!result.ok) { + instance.failed_plugins.add(plugin.name); + } + } - return { top, right: computed_right, bottom: computed_bottom, left }; - } + // Register instance + instances.set(node, instance); - // It's a string - if (bounds === 'parent') return (rootNode.parentNode).getBoundingClientRect(); + return { + update: (newOptions: Plugin[]) => update(instance, newOptions), + destroy: () => destroy(instance), + }; + }, - const node = document.querySelector(bounds); - if (node === null) - throw new Error("The selector provided for bound doesn't exists in the document."); + dispose, - return node.getBoundingClientRect(); + [Symbol.dispose]: dispose, + }; } - -const set_style = (el: HTMLElement, style: string, value: string) => - el.style.setProperty(style, value); - -const is_HTMLElement = (obj: unknown): obj is HTMLElement => obj instanceof HTMLElement; diff --git a/packages/core/src/plugins.ts b/packages/core/src/plugins.ts new file mode 100644 index 000000000..64ca7a626 --- /dev/null +++ b/packages/core/src/plugins.ts @@ -0,0 +1,1032 @@ +import { + get_node_style, + is_null, + ReadonlyToShallowMutable, + set_node_dataset, + set_node_key_style, +} from './utils.ts'; + +export interface PluginContext { + delta: { x: number; y: number }; + proposed: { x: number | null; y: number | null }; + offset: { x: number; y: number }; + initial: { x: number; y: number }; + isDragging: boolean; + isInteracting: boolean; + rootNode: HTMLElement | SVGElement; + lastEvent: PointerEvent | null; + cachedRootNodeRect: DOMRect; + currentlyDraggedNode: HTMLElement | SVGElement; + effect: { + immediate: (fn: () => void) => void; + paint: (fn: () => void) => void; + }; + propose: (x: number | null, y: number | null) => void; + cancel: () => void; + preventStart: () => void; + setForcedPosition: (x: number, y: number) => void; +} + +export interface Plugin { + name: string; + priority?: number; + liveUpdate?: boolean; + cancelable?: boolean; + setup?: (ctx: PluginContext) => State; + shouldStart?: (ctx: PluginContext, state: State, event: PointerEvent) => boolean; + start?: (ctx: PluginContext, state: State, event: PointerEvent) => void; + drag?: (ctx: PluginContext, state: State, event: PointerEvent) => void; + end?: (ctx: PluginContext, state: State, event: PointerEvent) => void; + cleanup?: (ctx: PluginContext, state: State) => void; + args?: any; +} + +interface BasePluginStructure { + name: string; + priority?: number; + liveUpdate?: boolean; + cancelable?: boolean; +} + +interface PluginStructure extends BasePluginStructure { + setup?: (args: ArgsTuple, ctx: PluginContext) => State; + shouldStart?: (args: ArgsTuple, ctx: PluginContext, state: State, event: PointerEvent) => boolean; + start?: (args: ArgsTuple, ctx: PluginContext, state: State, event: PointerEvent) => void; + drag?: (args: ArgsTuple, ctx: PluginContext, state: State, event: PointerEvent) => void; + end?: (args: ArgsTuple, ctx: PluginContext, state: State, event: PointerEvent) => void; + cleanup?: (args: ArgsTuple, ctx: PluginContext, state: State) => void; +} + +export function unstable_definePlugin( + structure: PluginStructure, + defaultArgs?: ArgsTuple, +) { + const base_plugin = { + name: structure.name, + priority: structure.priority, + liveUpdate: structure.liveUpdate, + cancelable: structure.cancelable, + } as Plugin; + + if (structure.setup) { + base_plugin.setup = function (this: Plugin & { args: ArgsTuple }, ctx: PluginContext) { + return structure.setup?.(this.args, ctx); + }; + } + + if (structure.shouldStart) { + base_plugin.shouldStart = function ( + this: Plugin & { args: ArgsTuple }, + ctx: PluginContext, + state: State, + event: PointerEvent, + ) { + return structure.shouldStart?.(this.args, ctx, state, event) ?? true; + }; + } + + if (structure.start) { + base_plugin.start = function ( + this: Plugin & { args: ArgsTuple }, + ctx: PluginContext, + state: State, + event: PointerEvent, + ) { + structure.start?.(this.args, ctx, state, event); + }; + } + + if (structure.drag) { + base_plugin.drag = function ( + this: Plugin & { args: ArgsTuple }, + ctx: PluginContext, + state: State, + event: PointerEvent, + ) { + structure.drag?.(this.args, ctx, state, event); + }; + } + + if (structure.end) { + base_plugin.end = function ( + this: Plugin & { args: ArgsTuple }, + ctx: PluginContext, + state: State, + event: PointerEvent, + ) { + structure.end?.(this.args, ctx, state, event); + }; + } + + if (structure.cleanup) { + base_plugin.cleanup = function ( + this: Plugin & { args: ArgsTuple }, + ctx: PluginContext, + state: State, + ) { + structure.cleanup?.(this.args, ctx, state); + }; + } + + let last_args: ArgsTuple; + let memoized_plugin: Plugin & { args: ArgsTuple }; + + return (...args: ArgsTuple): Plugin & { args: ArgsTuple } => { + const final_args = args.length ? args : defaultArgs ?? ([] as unknown as ArgsTuple); + + if (memoized_plugin && last_args === final_args) { + return memoized_plugin; + } + + last_args = final_args; + // ATTENTION: YOu may want to avoid using spread and just mutate the memoized_plugin + // Past Puru has already done it, creates weird issues. + memoized_plugin = { ...base_plugin, args: final_args }; + return memoized_plugin; + }; +} + +export const ignoreMultitouch = unstable_definePlugin( + { + name: 'neodrag:ignoreMultitouch', + + setup() { + return { + active_pointers: new Set(), + }; + }, + + start(args, ctx, state, event) { + ctx.effect.paint(() => { + state.active_pointers.add(event.pointerId); + + if (args && state.active_pointers.size > 1) { + event.preventDefault(); + } + }); + }, + + drag(args, ctx, state) { + if (args && state.active_pointers.size > 1) { + ctx.cancel(); + } + }, + + end(_args, _ctx, state, event) { + state.active_pointers.delete(event.pointerId); + }, + }, + [true] as [value?: boolean], +); + +export const stateMarker = unstable_definePlugin({ + name: 'neodrag:stateMarker', + cancelable: false, + + setup(_args, ctx) { + set_node_dataset(ctx.rootNode, 'neodrag', ''); + set_node_dataset(ctx.rootNode, 'neodrag-state', 'idle'); + set_node_dataset(ctx.rootNode, 'neodrag-count', '0'); + + return { + count: 0, + }; + }, + + start(_args, ctx) { + ctx.effect.paint(() => { + set_node_dataset(ctx.rootNode, 'neodrag-state', 'dragging'); + }); + }, + + end(_args, ctx, state) { + set_node_dataset(ctx.rootNode, 'neodrag-state', 'idle'); + set_node_dataset(ctx.rootNode, 'neodrag-count', ++state.count); + }, +}); + +// Degree of Freedom X and Y +export const axis = unstable_definePlugin<[value?: 'x' | 'y']>({ + name: 'neodrag:axis', + + drag([value], ctx) { + // Let dragging go on if axis is undefined + if (!value) return; + + ctx.propose(value === 'x' ? ctx.proposed.x : null, value === 'y' ? ctx.proposed.y : null); + }, +}); + +export const applyUserSelectHack = unstable_definePlugin( + { + name: 'neodrag:applyUserSelectHack', + cancelable: false, + + setup() { + return { + body_user_select_val: '', + }; + }, + + start([value], ctx, state) { + ctx.effect.paint(() => { + if (value) { + state.body_user_select_val = + get_node_style(document.body, 'user-select') ?? + // Safari sucks. It doesn't work with getPropertyValue or setProperty if it has prefix, + // And safari never implemened unvendored user-select + document.body.style.webkitUserSelect ?? + ''; + + set_node_key_style(document.body, 'user-select', 'none'); + document.body.style.webkitUserSelect = 'none'; + } + }); + }, + + end([value], _, state) { + if (value) { + set_node_key_style(document.body, 'user-select', state.body_user_select_val); + document.body.style.webkitUserSelect = state.body_user_select_val; + } + }, + }, + [true] as [value?: boolean], +); + +const calc = (val: number, snap: number) => (snap === 0 ? 0 : Math.ceil(val / snap) * snap); + +function snap_to_grid( + snaps: [number | null | undefined, number | null | undefined] | undefined, + pending_x: number | null, + pending_y: number | null, +) { + const x = pending_x && snaps?.[0] ? calc(pending_x, snaps?.[0]) : pending_x; + const y = pending_y && snaps?.[1] ? calc(pending_y, snaps?.[1]) : pending_y; + + return [x, y] as const; +} + +export const grid = unstable_definePlugin< + [[x: number | null | undefined, y: number | null | undefined]?] +>({ + name: 'neodrag:grid', + + drag([values], ctx) { + ctx.propose(...snap_to_grid(values, ctx.proposed.x, ctx.proposed.y)); + }, +}); + +export const disabled = unstable_definePlugin({ + name: 'neodrag:disabled', + shouldStart() { + return false; + }, +}); + +function get_current_transform(element: SVGGraphicsElement) { + const transform = element.transform.baseVal; + if (transform.numberOfItems === 0) { + const svg = element.ownerSVGElement; + if (!svg) return { x: 0, y: 0 }; + + const matrix = svg.createSVGTransform().matrix; + transform.insertItemBefore(svg.createSVGTransformFromMatrix(matrix), 0); + } + + const matrix = transform.consolidate()?.matrix; + return matrix ? { x: matrix.e, y: matrix.f } : { x: 0, y: 0 }; +} + +export const transform = unstable_definePlugin< + [func?: (args: { offsetX: number; offsetY: number; rootNode: HTMLElement | SVGElement }) => void], + { is_svg: boolean } +>({ + name: 'neodrag:transform', + priority: -1000, + cancelable: false, + liveUpdate: true, + + setup([func], ctx) { + const is_svg = ctx.rootNode instanceof SVGElement; + + if (is_svg) { + // For SVG elements, get initial transform + const element = ctx.rootNode as SVGGraphicsElement; + const current_transform = get_current_transform(element); + ctx.offset.x = current_transform.x; + ctx.offset.y = current_transform.y; + } + + // Apply initial transform if needed + if (ctx.offset.x !== 0 || ctx.offset.y !== 0) { + if (func) { + func({ + offsetX: ctx.offset.x, + offsetY: ctx.offset.y, + rootNode: ctx.rootNode, + }); + } else if (is_svg) { + const element = ctx.rootNode as SVGGraphicsElement; + const svg = element.ownerSVGElement; + if (!svg) throw new Error("Root Node's ownerSVGElement is null"); + + const translation = svg.createSVGTransform(); + translation.setTranslate(ctx.offset.x, ctx.offset.y); + + const transform = element.transform.baseVal; + transform.clear(); + transform.appendItem(translation); + } else { + ctx.rootNode.style.translate = `${ctx.offset.x}px ${ctx.offset.y}px`; + } + } + + return { is_svg: is_svg }; + }, + + drag([func], ctx, state) { + ctx.effect.paint(() => { + if (func) { + return func({ + offsetX: ctx.offset.x, + offsetY: ctx.offset.y, + rootNode: ctx.rootNode, + }); + } + + if (state?.is_svg) { + const element = ctx.rootNode as SVGGraphicsElement; + const svg = element.ownerSVGElement; + if (!svg) return; + + const translation = svg.createSVGTransform(); + + translation.setTranslate(ctx.offset.x, ctx.offset.y); + + const transform = element.transform.baseVal; + transform.clear(); + transform.appendItem(translation); + // debugger; + } else { + ctx.rootNode.style.translate = `${ctx.offset.x}px ${ctx.offset.y}px`; + } + }); + }, +}); + +type BoundFromFunction = (data: { + root_node: HTMLElement | SVGElement; +}) => [[x1: number, y1: number], [x2: number, y2: number]]; + +export const BoundsFrom = { + element( + element: HTMLElement, + padding?: { top?: number; left?: number; right?: number; bottom?: number }, + ): BoundFromFunction { + return () => { + const rect = element.getBoundingClientRect(); + + if (rect.left === 0 && rect.right === 0 && rect.top === 0 && rect.bottom === 0) { + throw new Error( + 'bounds element has no dimensions. This may happen due to display:contents', + ); + } + + return [ + [rect.left + (padding?.left ?? 0), rect.top + (padding?.top ?? 0)], + [rect.right - (padding?.right ?? 0), rect.bottom - (padding?.bottom ?? 0)], + ]; + }; + }, + + selector( + selector: string, + padding?: { + top?: number; + left?: number; + right?: number; + bottom?: number; + }, + root?: HTMLElement, + ): BoundFromFunction { + return (ctx) => { + const element = (root ?? document).querySelector(selector); + if (!element) + throw new Error(`bounds selector ${selector} did not match any elements in the DOM`); + + return BoundsFrom.element(element, padding)(ctx); + }; + }, + + viewport(padding?: { + top?: number; + left?: number; + right?: number; + bottom?: number; + }): BoundFromFunction { + return (ctx) => BoundsFrom.element(document.documentElement, padding)(ctx); + }, + + parent(padding?: { + top?: number; + left?: number; + right?: number; + bottom?: number; + }): BoundFromFunction { + return (ctx) => BoundsFrom.element(ctx.root_node.parentNode as HTMLElement, padding)(ctx); + }, +}; + +const clamp = (val: number, min: number, max: number) => Math.min(max, Math.max(min, val)); +export const bounds = unstable_definePlugin< + [ + value: BoundFromFunction, + shouldRecompute?: (ctx: { readonly hook: 'dragStart' | 'drag' | 'dragEnd' }) => boolean, + ], + { + bounds: [[number, number], [number, number]]; + } +>( + { + name: 'neodrag:bounds', + + setup([value], ctx) { + const bounds = value({ root_node: ctx.rootNode }); + const element_width = ctx.cachedRootNodeRect.width; + const element_height = ctx.cachedRootNodeRect.height; + + if ( + bounds[1][0] - bounds[0][0] < element_width || + bounds[1][1] - bounds[0][1] < element_height + ) { + throw new Error( + 'Bounds dimensions cannot be smaller than the draggable element dimensions', + ); + } + + return { + bounds, + }; + }, + + start([value, shouldRecompute], ctx, state) { + if (shouldRecompute?.({ hook: 'dragStart' })) { + state.bounds = value({ root_node: ctx.rootNode }); + } + }, + + drag([value, shouldRecompute], ctx, state) { + if (!ctx.isDragging) return; + if (shouldRecompute?.({ hook: 'drag' })) { + state.bounds = value({ root_node: ctx.rootNode }); + } + + const bound_coords = state.bounds; + const element_width = ctx.cachedRootNodeRect.width; + const element_height = ctx.cachedRootNodeRect.height; + + // Convert absolute bounds to allowed movement bounds + // Need to consider: + // 1. Current accumulated offset (ctx.offset) + // 2. Where user grabbed the element (pointer_offset) + // 3. Element dimensions + const allowed_movement_x1 = bound_coords[0][0] - ctx.offset.x; // max left + const allowed_movement_y1 = bound_coords[0][1] - ctx.offset.y; // max top + const allowed_movement_x2 = bound_coords[1][0] - element_width - ctx.offset.x; // max right + const allowed_movement_y2 = bound_coords[1][1] - element_height - ctx.offset.y; // max bottom + + // Now clamp the proposed delta movement to our allowed movement bounds + ctx.propose( + ctx.proposed.x != null + ? clamp(ctx.proposed.x, allowed_movement_x1, allowed_movement_x2) + : ctx.proposed.x, + ctx.proposed.y != null + ? clamp(ctx.proposed.y, allowed_movement_y1, allowed_movement_y2) + : ctx.proposed.y, + ); + }, + + end([value, shouldRecompute], context, state) { + if (shouldRecompute?.({ hook: 'dragEnd' })) { + state.bounds = value({ root_node: context.rootNode }); + } + }, + }, + [ + () => [ + [0, 0], + [0, 0], + ], + (ctx) => ctx.hook === 'dragStart', + ], +); + +export const threshold = unstable_definePlugin< + [options?: { delay?: number; distance?: number } | null], + | { + enabled: true; + start_time: number; + start_position: { x: number; y: number }; + options: { + delay: number; + distance: number; + }; + } + | { + enabled: false; + } +>({ + name: 'neodrag:threshold', + + setup([options]) { + // Behavior: If options is null, then threshold plugin does nothing + // If options is undefined, then threshold plugin uses default options + // If options is {}, then threshold plugin uses default options + // If options is { delay: 10, distance: 5 }, then threshold plugin uses the provided options + const enabled = !is_null(options); + + if (!enabled) return { enabled }; + + const _options = { ...(options ?? {}) } as { + delay: number; + distance: number; + }; + _options.delay ??= 0; + _options.distance ??= 3; + + if (_options.delay < 0) throw new Error('delay must be >= 0'); + if (_options.distance < 0) throw new Error('distance must be >= 0'); + + return { + enabled, + start_time: 0, + start_position: { x: 0, y: 0 }, + options: _options, + }; + }, + + shouldStart(_args, _ctx, state, event) { + if (state.enabled) { + state.start_time = Date.now(); + state.start_position.x = event.clientX; + state.start_position.y = event.clientY; + } + + return true; + }, + + drag(_args, ctx, state, event) { + if (!state.enabled) return; + if (ctx.isDragging) return; + + // First check if we're still on the draggable element + if (!ctx.currentlyDraggedNode.contains(event.target as Node)) { + ctx.preventStart(); + return; + } + + if (state.options.delay) { + const elapsed = Date.now() - state.start_time; + if (elapsed < state.options.delay) { + ctx.preventStart(); + return; + } + } + + if (state.options.distance) { + const delta_x = event.clientX - state.start_position.x; + const delta_y = event.clientY - state.start_position.y; + const distance = delta_x ** 2 + delta_y ** 2; + if (distance <= state.options.distance ** 2) { + ctx.preventStart(); + return; + } + } + }, +}); + +export type DragEventData = Readonly<{ + /** How much element moved from its original position horizontally */ + offset: Readonly<{ x: number; y: number }>; + + /** The node on which the draggable is applied */ + rootNode: HTMLElement | SVGElement; + + /** The element being dragged */ + currentNode: HTMLElement | SVGElement; +}>; + +export const events = unstable_definePlugin< + [ + events: { + onDragStart?: (data: DragEventData) => void; + onDrag?: (data: DragEventData) => void; + onDragEnd?: (data: DragEventData) => void; + }, + ], + ReadonlyToShallowMutable +>( + { + name: 'neodrag:events', + cancelable: false, + + setup(_args, ctx) { + return { + offset: ctx.offset, + rootNode: ctx.rootNode, + currentNode: ctx.currentlyDraggedNode, + } as DragEventData; + }, + + start([options], ctx, state) { + ctx.effect.immediate(() => { + state.offset = ctx.offset; + state.currentNode = ctx.currentlyDraggedNode; + options.onDragStart?.(state); + }); + }, + + drag([options], ctx, state) { + ctx.effect.immediate(() => { + state.offset = ctx.offset; + state.currentNode = ctx.currentlyDraggedNode; + + options.onDrag?.(state); + }); + }, + + end([options], ctx, state) { + ctx.effect.immediate(() => { + state.offset = ctx.offset; + state.currentNode = ctx.currentlyDraggedNode; + + options.onDragEnd?.(state); + }); + }, + }, + [{}], +); + +type ControlZone = { + element: Element; + top: number; + right: number; + bottom: number; + left: number; + area: number; +}; + +export const ControlFrom = { + selector(selector: string): (root: Element) => ControlZone[] { + return (root: Element) => ControlFrom.elements(root.querySelectorAll(selector))(root); + }, + + elements: + (elements: NodeListOf | Element[]) => + (root: Element): ControlZone[] => { + const root_rect = root.getBoundingClientRect(); + + const data: { + element: Element; + top: number; + right: number; + bottom: number; + left: number; + area: number; + }[] = []; + + elements.forEach((el) => { + const rect = el.getBoundingClientRect(); + + data.push({ + element: el, + top: rect.top - root_rect.top, + right: rect.right - root_rect.left, + bottom: rect.bottom - root_rect.top, + left: rect.left - root_rect.left, + area: rect.width * rect.height, + }); + }); + + return data; + }, +}; + +// Helper to check if a zone is nested within another zone +function is_nested(inner: ControlZone, outer: ControlZone) { + return ( + inner.area < outer.area && + inner.left >= outer.left && + inner.right <= outer.right && + inner.top >= outer.top && + inner.bottom <= outer.bottom + ); +} + +// Helper function to find all zones containing a point, sorted by area (smallest first) +const find_containing_zones = (ctx: PluginContext, event: PointerEvent, zones: ControlZone[]) => { + return zones + .filter((zone) => is_point_in_zone(event.clientX, event.clientY, zone, ctx.cachedRootNodeRect)) + .sort((a, b) => a.area - b.area); +}; + +const is_point_in_zone = (x: number, y: number, zone: ControlZone, root_rect: DOMRect) => { + const relative_x = x - root_rect.left; + const relative_y = y - root_rect.top; + + return ( + relative_x >= zone.left && + relative_x <= zone.right && + relative_y >= zone.top && + relative_y <= zone.bottom + ); +}; + +export const controls = unstable_definePlugin< + [ + options?: { + allow?: ReturnType<(typeof ControlFrom)[keyof typeof ControlFrom]>; + block?: ReturnType<(typeof ControlFrom)[keyof typeof ControlFrom]>; + priority?: 'allow' | 'block'; + } | null, + ], + { + allow_zones: ControlZone[]; + block_zones: ControlZone[]; + priority: 'allow' | 'block'; + } +>({ + name: 'neodrag:controls', + + setup([options], ctx) { + // Sort zones by area (smallest to largest) to handle nesting properly + return { + allow_zones: (options?.allow?.(ctx.rootNode) ?? []).sort((a, b) => a.area - b.area), + block_zones: (options?.block?.(ctx.rootNode) ?? []).sort((a, b) => a.area - b.area), + priority: options?.priority ?? 'allow', + }; + }, + + shouldStart(_args, ctx, state, event) { + // Find all containing zones for the click point + const containing_allow_zones = find_containing_zones(ctx, event, state.allow_zones); + const containing_block_zones = find_containing_zones(ctx, event, state.block_zones); + + // If there are any allow zones defined, only allow dragging within them + if (state.allow_zones.length > 0 && containing_allow_zones.length === 0) { + return false; + } + + // If no zones contain the point and no allow zones are defined, + // default behavior based on priority + if (containing_allow_zones.length === 0 && containing_block_zones.length === 0) { + return state.allow_zones.length === 0 && state.priority === 'allow'; + } + + // Find the most specific (smallest) zone that should determine the behavior + let final_zone: ControlZone | null = null; + let is_allow = false; + + // Interleave allow and block zones based on nesting + let i = 0, + j = 0; + while (i < containing_allow_zones.length || j < containing_block_zones.length) { + const allow_zone = containing_allow_zones[i]; + const block_zone = containing_block_zones[j]; + + if (!allow_zone) { + final_zone = block_zone; + is_allow = false; + break; + } + + if (!block_zone) { + final_zone = allow_zone; + is_allow = true; + break; + } + + // Compare zones based on nesting + if (is_nested(allow_zone, block_zone)) { + final_zone = allow_zone; + is_allow = true; + break; + } + + if (is_nested(block_zone, allow_zone)) { + final_zone = block_zone; + is_allow = false; + break; + } + + // If not nested, use the smaller area + if (allow_zone.area <= block_zone.area) { + final_zone = allow_zone; + is_allow = true; + i++; + } else { + final_zone = block_zone; + is_allow = false; + j++; + } + } + + // If we found a final determining zone + if (final_zone) { + if (is_allow) { + ctx.currentlyDraggedNode = final_zone.element as HTMLElement; + return true; + } + return false; + } + + // Default to priority if no zones were found, but only if no allow zones are defined + return state.allow_zones.length === 0 && state.priority === 'allow'; + }, +}); + +export const position = unstable_definePlugin< + [ + options?: { + current?: { x: number; y: number } | null; + default?: { x: number; y: number } | null; + } | null, + ] +>( + { + name: 'neodrag:position', + priority: 1000, + liveUpdate: true, + + setup([options], ctx) { + const x = options?.current?.x ?? options?.default?.x ?? ctx.offset.x; + const y = options?.current?.y ?? options?.default?.y ?? ctx.offset.y; + + ctx.setForcedPosition(x, y); + }, + }, + [null], +); + +type TouchActionMode = + // Keyword values + | 'auto' + | 'none' + | 'pan-x' + | 'pan-left' + | 'pan-right' + | 'pan-y' + | 'pan-up' + | 'pan-down' + | 'pinch-zoom' + | 'manipulation' + + // Global values + | 'inherit' + | 'initial' + | 'revert' + | 'revert-layer' + | 'unset'; + +export const touchAction = unstable_definePlugin<[mode?: TouchActionMode | false | null]>( + { + name: 'neodrag:touch-action', + cancelable: false, + liveUpdate: true, + + setup([mode], ctx) { + if (mode !== false && mode !== null) { + set_node_key_style(ctx.rootNode, 'touch-action', mode ?? 'manipulation'); + } + }, + }, + ['manipulation'], +); + +// Scroll-lock plugin that prevents scrolling while dragging +export const scrollLock = unstable_definePlugin( + { + name: 'neodrag:scrollLock', + + setup([options]) { + const defaults = { + lock_axis: 'both', + container: document.documentElement, + allow_scrollbar: false, + }; + + const config = { ...defaults, ...options }; + + return { + config, + original_styles: new Map< + HTMLElement, + { + user_select: string; + touch_action: string; + overflow: string; + } + >(), + container_rect: null as DOMRect | null, + last_container_check: 0, + }; + }, + + start(_args, ctx, state) { + const container = + typeof state.config.container === 'function' + ? state.config.container() + : state.config.container; + + // Reset cache + state.container_rect = null; + state.last_container_check = 0; + + ctx.effect.paint(() => { + // Store original styles + if (container instanceof HTMLElement) { + state.original_styles.set(container, { + user_select: get_node_style(container, 'user-select'), + touch_action: get_node_style(container, 'touch-action'), + overflow: get_node_style(container, 'overflow'), + }); + + // Apply scroll locking styles + set_node_key_style(container, 'user-select', 'none'); + + if (!state.config.allow_scrollbar) { + set_node_key_style(container, 'overflow', 'hidden'); + } + + if (state.config.lock_axis === 'x' || state.config.lock_axis === 'both') { + set_node_key_style(container, 'touch-action', 'pan-y'); + } else if (state.config.lock_axis === 'y') { + set_node_key_style(container, 'touch-action', 'pan-x'); + } + } else { + // For window, we need to lock the body + const body = document.body; + state.original_styles.set(body, { + user_select: get_node_style(body, 'user-select'), + touch_action: get_node_style(body, 'touch-action'), + overflow: get_node_style(body, 'overflow'), + }); + + set_node_key_style(body, 'user-select', 'none'); + + if (!state.config.allow_scrollbar) { + set_node_key_style(body, 'overflow', 'hidden'); + } + + if (state.config.lock_axis === 'x' || state.config.lock_axis === 'both') { + set_node_key_style(body, 'touch-action', 'pan-y'); + } else if (state.config.lock_axis === 'y') { + set_node_key_style(body, 'touch-action', 'pan-x'); + } + } + }); + }, + + end(_args, ctx, state) { + const container = + typeof state.config.container === 'function' + ? state.config.container() + : state.config.container; + + ctx.effect.paint(() => { + const target = container instanceof HTMLElement ? container : document.body; + const originalStyles = state.original_styles.get(target); + + if (originalStyles) { + set_node_key_style(target, 'user-select', originalStyles.user_select); + set_node_key_style(target, 'touch-action', originalStyles.touch_action); + set_node_key_style(target, 'overflow', originalStyles.overflow); + } + + state.original_styles.delete(target); + }); + + // Clear cache + state.container_rect = null; + state.last_container_check = 0; + }, + + cleanup(_args, _ctx, state) { + // Restore any remaining original styles + for (const [element, styles] of state.original_styles) { + set_node_key_style(element, 'user-select', styles.user_select); + set_node_key_style(element, 'touch-action', styles.touch_action); + set_node_key_style(element, 'overflow', styles.overflow); + } + state.original_styles.clear(); + }, + }, + [{}] as [ + options?: { + lockAxis?: 'x' | 'y' | 'both'; // Which axes to lock scrolling on + container?: HTMLElement | (() => HTMLElement); // Custom container to lock + allowScrollbar?: boolean; // Whether to allow scrollbar interaction + } | null, + ], +); diff --git a/packages/core/src/utils.ts b/packages/core/src/utils.ts new file mode 100644 index 000000000..67676edd9 --- /dev/null +++ b/packages/core/src/utils.ts @@ -0,0 +1,86 @@ +// Write a perfectly generic function that is an event listener +// Overload for HTML elements +export function listen( + el: HTMLElement, + type: EventName, + listener: (this: HTMLElement, ev: HTMLElementEventMap[EventName]) => any, + options?: boolean | AddEventListenerOptions, +): void; + +// Overload for SVG elements +export function listen( + el: SVGElement, + type: EventName, + listener: (this: SVGElement, ev: SVGElementEventMap[EventName]) => any, + options?: boolean | AddEventListenerOptions, +): void; + +// Implementation +export function listen( + el: HTMLElement | SVGElement, + type: string, + listener: EventListener, + options?: boolean | AddEventListenerOptions, +) { + el.addEventListener(type, listener, options); +} + +type KebabCase = S extends `${infer C}${infer T}` + ? T extends Uncapitalize + ? `${Lowercase}${KebabCase}` + : `${Lowercase}-${KebabCase>}` + : S; + +// Create a type for vendor prefixed properties +type VendorPrefix = '-webkit-' | '-moz-' | '-ms-' | '-o-'; + +// Take all CSS properties and convert them to kebab, including vendor prefixes +type CSSKebabProperties = { + [K in keyof CSSStyleDeclaration as K extends string + ? KebabCase | `${VendorPrefix}${KebabCase}` + : K]: CSSStyleDeclaration[K]; +}; + +export function set_node_key_style( + node: HTMLElement | SVGElement, + key: T, + value: CSSKebabProperties[T], +) { + node.style.setProperty(key.toString(), value?.toString() ?? ''); +} + +export function get_node_style(node: HTMLElement | SVGElement, key: keyof CSSKebabProperties) { + return node.style.getPropertyValue(key.toString()); +} + +export function set_node_dataset(node: HTMLElement | SVGElement, key: string, value: unknown) { + node.setAttribute(`data-${key}`, value + ''); +} + +export function is_svg_element(element: Element | EventTarget): element is SVGElement { + return element instanceof SVGElement; +} + +export function is_svg_svg_element(element: Element | EventTarget): element is SVGSVGElement { + return element instanceof SVGSVGElement; +} + +export type DeepMutable = T extends object + ? { + -readonly [P in keyof T]: T[P] extends readonly any[] + ? DeepMutable + : T[P] extends object + ? keyof T[P] extends never + ? T[P] + : DeepMutable + : T[P]; + } + : T; + +export type ReadonlyToShallowMutable = T extends object + ? { + -readonly [P in keyof T]: T[P]; + } + : T; + +export const is_null = (v: unknown): v is null => Object.is(v, null); diff --git a/packages/core/test-app/.gitignore b/packages/core/test-app/.gitignore new file mode 100644 index 000000000..bff793d5e --- /dev/null +++ b/packages/core/test-app/.gitignore @@ -0,0 +1,24 @@ +test-results +node_modules + +# Output +.output +.vercel +.netlify +.wrangler +/.svelte-kit +/build + +# OS +.DS_Store +Thumbs.db + +# Env +.env +.env.* +!.env.example +!.env.test + +# Vite +vite.config.js.timestamp-* +vite.config.ts.timestamp-* diff --git a/packages/core/test-app/.npmrc b/packages/core/test-app/.npmrc new file mode 100644 index 000000000..b6f27f135 --- /dev/null +++ b/packages/core/test-app/.npmrc @@ -0,0 +1 @@ +engine-strict=true diff --git a/packages/svelte/demo/README.md b/packages/core/test-app/README.md similarity index 70% rename from packages/svelte/demo/README.md rename to packages/core/test-app/README.md index 5c91169b0..b5b295070 100644 --- a/packages/svelte/demo/README.md +++ b/packages/core/test-app/README.md @@ -1,6 +1,6 @@ -# create-svelte +# sv -Everything you need to build a Svelte project, powered by [`create-svelte`](https://github.com/sveltejs/kit/tree/master/packages/create-svelte). +Everything you need to build a Svelte project, powered by [`sv`](https://github.com/sveltejs/cli). ## Creating a project @@ -8,10 +8,10 @@ If you're seeing this, you've probably already done this step. Congrats! ```bash # create a new project in the current directory -npm create svelte@latest +npx sv create # create a new project in my-app -npm create svelte@latest my-app +npx sv create my-app ``` ## Developing @@ -35,4 +35,4 @@ npm run build You can preview the production build with `npm run preview`. -> To deploy your app, you may need to install an [adapter](https://kit.svelte.dev/docs/adapters) for your target environment. +> To deploy your app, you may need to install an [adapter](https://svelte.dev/docs/kit/adapters) for your target environment. diff --git a/packages/core/test-app/e2e/defaults.test.ts b/packages/core/test-app/e2e/defaults.test.ts new file mode 100644 index 000000000..0b089bb83 --- /dev/null +++ b/packages/core/test-app/e2e/defaults.test.ts @@ -0,0 +1,43 @@ +import { expect, test } from '@playwright/test'; +import { get_mouse_position, setup } from './test-utils'; + +test.describe('defaults', () => { + test('renders a basic div with default class', async ({ page }) => { + await setup(page); + + const div = page.getByTestId('draggable'); + await expect(div).toHaveCSS('translate', 'none'); + }); + + test('should be dragged by mouse', async ({ page, isMobile }) => { + test.skip(isMobile); + + await setup(page); + + const div = page.getByTestId('draggable'); + + await div.hover(); + const { x, y } = await get_mouse_position(page); + await page.mouse.down(); + await page.mouse.move(x + 100, y + 100); + await page.mouse.up(); + + expect(div).toHaveCSS('translate', '100px 100px'); + }); + + test('should be dragged by touch', async ({ page, isMobile }) => { + test.skip(!isMobile); + + await setup(page); + + const div = page.getByTestId('draggable'); + + await div.hover(); + const { x, y } = await get_mouse_position(page); + await page.mouse.down(); + await page.mouse.move(x + 100, y + 100); + await page.mouse.up(); + + expect(div).toHaveCSS('translate', '100px 100px'); + }); +}); diff --git a/packages/core/test-app/e2e/plugins/applyUserSelectHack.test.ts b/packages/core/test-app/e2e/plugins/applyUserSelectHack.test.ts new file mode 100644 index 000000000..9ebfe51ae --- /dev/null +++ b/packages/core/test-app/e2e/plugins/applyUserSelectHack.test.ts @@ -0,0 +1,51 @@ +import test, { expect } from '@playwright/test'; +import { setup } from '../test-utils'; +import { SCHEMAS } from '../../src/lib/schemas'; + +test('true', async ({ page, browserName }) => { + await setup(page, 'plugins/applyUserSelectHack', SCHEMAS.PLUGINS.APPLY_USER_SELECT_HACK, true); + + const body = page.locator('body'); + + // Body should not have user-select: none without dragging + await expect(body).not.toHaveCSS('user-select', 'none'); + + // Now start dragging + const div = page.getByTestId('draggable'); + + await div.hover(); + await page.mouse.down(); + await page.mouse.move(100, 100); + + // Now make sure body has user-select: none + if (browserName === 'webkit') { + await expect(body).toHaveCSS('-webkit-user-select', 'none'); + } else { + await expect(body).toHaveCSS('user-select', 'none'); + } + await page.mouse.up(); + + // Make sure it's removed + await expect(body).not.toHaveCSS('user-select', 'none'); + await expect(body).not.toHaveCSS('-webkit-user-select', 'none'); +}); + +test('false', async ({ page }) => { + await setup(page, 'plugins/applyUserSelectHack', SCHEMAS.PLUGINS.APPLY_USER_SELECT_HACK, false); + + const body = page.locator('body'); + + // Body should not have user-select: none without dragging + await expect(body).not.toHaveCSS('user-select', 'none'); + + // Now start dragging + const div = page.getByTestId('draggable'); + + await div.hover(); + await page.mouse.down(); + await page.mouse.move(100, 100); + // Now make sure body has user-select: none + await expect(body).not.toHaveCSS('user-select', 'none'); + await expect(body).not.toHaveCSS('-webkit-user-select', 'none'); + await page.mouse.up(); +}); diff --git a/packages/core/test-app/e2e/plugins/axis.test.ts b/packages/core/test-app/e2e/plugins/axis.test.ts new file mode 100644 index 000000000..a151b9c4b --- /dev/null +++ b/packages/core/test-app/e2e/plugins/axis.test.ts @@ -0,0 +1,48 @@ +import test, { expect } from '@playwright/test'; +import { get_mouse_position, setup } from '../test-utils'; +import { SCHEMAS } from '../../src/lib/schemas'; + +test('move only on x-axis', async ({ page }) => { + await setup(page, 'plugins/axis', SCHEMAS.PLUGINS.AXIS, 'x'); + + const div = page.getByTestId('draggable'); + + await div.hover(); + const { x, y } = await get_mouse_position(page); + await page.mouse.down(); + await page.mouse.move(x + 100, y + 100); + await page.mouse.up(); + + // Only X should have changed + await expect(div).toHaveCSS('translate', '100px'); +}); + +test('move only on y-axis', async ({ page }) => { + await setup(page, 'plugins/axis', SCHEMAS.PLUGINS.AXIS, 'y'); + + const div = page.getByTestId('draggable'); + + await div.hover(); + const { x, y } = await get_mouse_position(page); + await page.mouse.down(); + await page.mouse.move(x + 100, y + 100); + await page.mouse.up(); + + // Only X should have changed + await expect(div).toHaveCSS('translate', '0px 100px'); +}); + +test('undefined disables the plugin', async ({ page }) => { + await setup(page, 'plugins/axis', SCHEMAS.PLUGINS.AXIS, undefined); + + const div = page.getByTestId('draggable'); + + await div.hover(); + const { x, y } = await get_mouse_position(page); + await page.mouse.down(); + await page.mouse.move(x + 100, y + 100); + await page.mouse.up(); + + // Only X should have changed + await expect(div).toHaveCSS('translate', '100px 100px'); +}); diff --git a/packages/core/test-app/e2e/plugins/bounds.test.ts b/packages/core/test-app/e2e/plugins/bounds.test.ts new file mode 100644 index 000000000..233bb2da3 --- /dev/null +++ b/packages/core/test-app/e2e/plugins/bounds.test.ts @@ -0,0 +1,163 @@ +import test, { expect } from '@playwright/test'; +import { SCHEMAS } from '../../src/lib/schemas'; +import { get_mouse_position, setup } from '../test-utils'; + +test.describe('BoundsFrom.element()', () => { + test('stays within bounds in all directions', async ({ page }) => { + await setup(page, 'plugins/bounds', SCHEMAS.PLUGINS.BOUNDS, { + type: 'element', + }); + + const div = page.getByTestId('draggable'); + + await div.hover(); + const { x, y } = await get_mouse_position(page); + + await page.mouse.down(); + // THe bounds are 200px wide, so we should be able to drag it to the right + await page.mouse.move(x + 10, y + 10); + await page.mouse.up(); + + await expect(div).toHaveCSS('translate', '10px 10px'); + + // Now drag it by 200px to the right + await page.mouse.down(); + await page.mouse.move(x + 210, y + 210); + await page.mouse.up(); + + // It should only have dragged by 100px since the box itself is 100px + await expect(div).toHaveCSS('translate', '100px 100px'); + + await div.hover(); + // Now try to go all the way back to negative mouse coordinates + await page.mouse.down(); + await page.mouse.move(0, 0); + await page.mouse.up(); + + await expect(div).toHaveCSS('translate', '0px'); + }); + + test('error when bounds are smaller than element', async ({ page }) => { + const console_error_promise = page.waitForEvent('console'); + + await setup(page, 'plugins/bounds', SCHEMAS.PLUGINS.BOUNDS, { + type: 'element', + is_smaller_than_element: true, + }); + + const console_error = await console_error_promise; + expect((await console_error.args()[0].jsonValue()).error.toString()).toContain( + 'Bounds dimensions cannot be smaller than the draggable element dimensions', + ); + + // Once this is done, bounds plugin should be no-op, so drag anywhere and confirm + const div = page.getByTestId('draggable'); + + await div.hover(); + const { x, y } = await get_mouse_position(page); + + await page.mouse.down(); + await page.mouse.move(x + 150, y + 10); + await page.mouse.up(); + + await expect(div).toHaveCSS('translate', '150px 10px'); + }); +}); + +test.describe('BoundsFrom.viewport()', () => { + test('stays within bounds in all directions', async ({ page }) => { + await setup(page, 'plugins/bounds', SCHEMAS.PLUGINS.BOUNDS, { + type: 'viewport', + }); + + const div = page.getByTestId('draggable'); + + await div.hover(); + const { x, y } = await get_mouse_position(page); + + await page.mouse.down(); + // The viewport in oru example is only as tall as the page itself, so it it shouldn't + // move in y-direction + await page.mouse.move(x + 10, y + 10); + await page.mouse.up(); + + await expect(div).toHaveCSS('translate', '10px'); + + const viewport_size = page.viewportSize() ?? { width: 0, height: 0 }; + + await div.hover(); + await page.mouse.down(); + // Weird: All browsers will move cursors beyond the viewport, so we need to move it + // except for firefox, so instead of moving to any large distance, we have to move within the viewport + // the -10 is just arbitrary + await page.mouse.move(viewport_size.width - 10, viewport_size.height - 10); + await page.mouse.up(); + + // It should have dragged viewport width minus the box width + await expect(div).toHaveCSS('translate', `${viewport_size.width - 100}px`); + }); +}); + +test.describe('BoundsFrom.selector()', () => { + test('stays within bounds in all directions', async ({ page }) => { + await setup(page, 'plugins/bounds', SCHEMAS.PLUGINS.BOUNDS, { + type: 'selector', + selector: '.selector', + }); + + const div = page.getByTestId('draggable'); + + await div.hover(); + const { x, y } = await get_mouse_position(page); + + await page.mouse.down(); + await page.mouse.move(x + 10, y + 10); + await page.mouse.up(); + + await expect(div).toHaveCSS('translate', '10px 10px'); + + await div.hover(); + await page.mouse.down(); + await page.mouse.move(200, 200); + await page.mouse.up(); + + // It should have dragged viewport width minus the box width + await expect(div).toHaveCSS('translate', `100px 100px`); + }); +}); + +test.describe('BoundsFrom.parent()', () => { + test('stays within bounds in all directions', async ({ page }) => { + await setup(page, 'plugins/bounds', SCHEMAS.PLUGINS.BOUNDS, { + type: 'parent', + }); + + const div = page.getByTestId('draggable'); + + await div.hover(); + const { x, y } = await get_mouse_position(page); + + await page.mouse.down(); + // THe bounds are 200px wide, so we should be able to drag it to the right + await page.mouse.move(x + 10, y + 10); + await page.mouse.up(); + + await expect(div).toHaveCSS('translate', '10px 10px'); + + // Now drag it by 200px to the right + await page.mouse.down(); + await page.mouse.move(x + 210, y + 210); + await page.mouse.up(); + + // It should only have dragged by 100px since the box itself is 100px + await expect(div).toHaveCSS('translate', '100px 100px'); + + await div.hover(); + // Now try to go all the way back to negative mouse coordinates + await page.mouse.down(); + await page.mouse.move(0, 0); + await page.mouse.up(); + + await expect(div).toHaveCSS('translate', '0px'); + }); +}); diff --git a/packages/core/test-app/e2e/plugins/controls.test.ts b/packages/core/test-app/e2e/plugins/controls.test.ts new file mode 100644 index 000000000..f97323835 --- /dev/null +++ b/packages/core/test-app/e2e/plugins/controls.test.ts @@ -0,0 +1,245 @@ +import { expect, test } from '@playwright/test'; +import { get_mouse_position, setup } from '../test-utils'; +import { SCHEMAS } from '../../src/lib/schemas'; + +test('undefined | null disables the plugin', async ({ page }) => { + await setup(page, 'plugins/controls', SCHEMAS.PLUGINS.CONTROLS, { + type: 'undefined,null', + }); + + const div = page.getByTestId('draggable'); + + await div.hover(); + let { x, y } = await get_mouse_position(page); + + await page.mouse.down(); + await page.mouse.move(x + 10, y + 10); + await page.mouse.up(); + + await expect(div).toHaveCSS('translate', '10px 10px'); + + // Locate `.cancel` and try to drag that. If it drags, then the plugin is working as intended for this value + const cancel = div.locator('.cancel'); + await cancel.hover(); + ({ x, y } = await get_mouse_position(page)); + + await page.mouse.down(); + await page.mouse.move(x + 10, y + 10); + await page.mouse.up(); + + await expect(div).toHaveCSS('translate', '20px 20px'); +}); + +test('allow-only', async ({ page }) => { + await setup(page, 'plugins/controls', SCHEMAS.PLUGINS.CONTROLS, { + type: 'allow-only', + }); + + const div = page.getByTestId('draggable'); + const handle = div.locator('.handle'); + + await handle.hover(); + let { x, y } = await get_mouse_position(page); + + await page.mouse.down(); + await page.mouse.move(x + 10, y + 10); + await page.mouse.up(); + + // This should have moved. + await expect(div).toHaveCSS('translate', '10px 10px'); + + // Now move to some point within the box, near bottom right and attempt to drag + await page.mouse.move(100, 100); // 10x10px from the corner + + // Locate `.cancel` and try to drag that. If it drags, then the plugin is working as intended for this value + ({ x, y } = await get_mouse_position(page)); + + await page.mouse.down(); + await page.mouse.move(x + 10, y + 10); + await page.mouse.up(); + + // Should have stayed as is + await expect(div).toHaveCSS('translate', '10px 10px'); +}); + +test('block-only', async ({ page }) => { + await setup(page, 'plugins/controls', SCHEMAS.PLUGINS.CONTROLS, { + type: 'block-only', + }); + + const div = page.getByTestId('draggable'); + const handle = div.locator('.handle'); + const cancel = div.locator('.cancel'); + + await handle.hover(); + let { x, y } = await get_mouse_position(page); + + await page.mouse.down(); + await page.mouse.move(x + 10, y + 10); + await page.mouse.up(); + + // This should have moved. + await expect(div).toHaveCSS('translate', '10px 10px'); + + // Now move to some point within the box, near bottom right and attempt to drag + await page.mouse.move(100, 100); // 10x10px from the corner + + ({ x, y } = await get_mouse_position(page)); + + await page.mouse.down(); + await page.mouse.move(x + 10, y + 10); + await page.mouse.up(); + + // Should have moved + await expect(div).toHaveCSS('translate', '20px 20px'); + + await cancel.hover(); + ({ x, y } = await get_mouse_position(page)); + + await page.mouse.down(); + await page.mouse.move(x + 10, y + 10); + await page.mouse.up(); + + // Should not have moved + await expect(div).toHaveCSS('translate', '20px 20px'); +}); + +test('allow-block', async ({ page }) => { + await setup(page, 'plugins/controls', SCHEMAS.PLUGINS.CONTROLS, { + type: 'allow-block', + }); + + const div = page.getByTestId('draggable'); + const handle = div.locator('.handle'); + const cancel = div.locator('.cancel'); + + await handle.hover(); + let { x, y } = await get_mouse_position(page); + + await page.mouse.down(); + await page.mouse.move(x + 10, y + 10); + await page.mouse.up(); + + // This should have moved. + await expect(div).toHaveCSS('translate', '10px 10px'); + + // Now move to some point within the box, near bottom right and attempt to drag + await page.mouse.move(100, 100); // 10x10px from the corner + + ({ x, y } = await get_mouse_position(page)); + + await page.mouse.down(); + await page.mouse.move(x + 10, y + 10); + await page.mouse.up(); + + // Should not have moved + await expect(div).toHaveCSS('translate', '10px 10px'); + + await cancel.hover(); + ({ x, y } = await get_mouse_position(page)); + + await page.mouse.down(); + await page.mouse.move(x + 10, y + 10); + await page.mouse.up(); + + // Should not have moved + await expect(div).toHaveCSS('translate', '10px 10px'); +}); + +test('allow-block-allow', async ({ page }) => { + await setup(page, 'plugins/controls', SCHEMAS.PLUGINS.CONTROLS, { + type: 'allow-block-allow', + }); + + const div = page.getByTestId('draggable'); + const handle_text = div.locator('.handle').locator('.handle-text'); + const cancel_text = div.locator('.cancel').locator('.cancel-text'); + const handle2 = div.locator('.handle').locator('.handle2'); + + await handle_text.hover(); + let { x, y } = await get_mouse_position(page); + + await page.mouse.down(); + await page.mouse.move(x + 10, y + 10); + await page.mouse.up(); + + // This should have moved. + await expect(div).toHaveCSS('translate', '10px 10px'); + + // Now move to some point within the box, near bottom right and attempt to drag + await page.mouse.move(100, 100); // 10x10px from the corner + + ({ x, y } = await get_mouse_position(page)); + + await page.mouse.down(); + await page.mouse.move(x + 10, y + 10); + await page.mouse.up(); + + // Should not have moved + await expect(div).toHaveCSS('translate', '10px 10px'); + + await cancel_text.hover(); + ({ x, y } = await get_mouse_position(page)); + + await page.mouse.down(); + await page.mouse.move(x + 10, y + 10); + await page.mouse.up(); + + // Should not have moved + await expect(div).toHaveCSS('translate', '10px 10px'); + + // Now try to drag the handle2 + await handle2.hover(); + ({ x, y } = await get_mouse_position(page)); + + await page.mouse.down(); + await page.mouse.move(x + 10, y + 10); + await page.mouse.up(); + + // Should have moved + await expect(div).toHaveCSS('translate', '20px 20px'); +}); + +test('block-allow-block', async ({ page }) => { + await setup(page, 'plugins/controls', SCHEMAS.PLUGINS.CONTROLS, { + type: 'block-allow-block', + }); + + const div = page.getByTestId('draggable'); + const outer_text = div.locator('.outer-handle').locator('.outer-text'); + const inner_handle = div.locator('.inner-handle').locator('.inner-text'); + const middle_handle = div.locator('.middle-handle').locator('.middle-text'); + + // Try dragging from outer handle (in outer block zone) + await outer_text.hover(); + let { x, y } = await get_mouse_position(page); + + await page.mouse.down(); + await page.mouse.move(x + 10, y + 10); + await page.mouse.up(); + + // Should not have moved (blocked by outer block) + await expect(div).toHaveCSS('translate', 'none'); + + // Try dragging from middle handle (in allow zone) + await middle_handle.hover(); + ({ x, y } = await get_mouse_position(page)); + + await page.mouse.down(); + await page.mouse.move(x + 10, y + 10); + await page.mouse.up(); + + // Should have moved (allowed by middle allow zone) + await expect(div).toHaveCSS('translate', '10px 10px'); + + // Try dragging from inner handle (in inner block zone) + await inner_handle.hover(); + ({ x, y } = await get_mouse_position(page)); + + await page.mouse.down(); + await page.mouse.move(x + 10, y + 10); + await page.mouse.up(); + + // Should not have moved more (blocked by inner block) + await expect(div).toHaveCSS('translate', '10px 10px'); +}); diff --git a/packages/core/test-app/e2e/plugins/grid.test.ts b/packages/core/test-app/e2e/plugins/grid.test.ts new file mode 100644 index 000000000..6641e0e60 --- /dev/null +++ b/packages/core/test-app/e2e/plugins/grid.test.ts @@ -0,0 +1,103 @@ +import { expect, test } from '@playwright/test'; +import { SCHEMAS } from '../../src/lib/schemas'; +import { get_mouse_position, setup } from '../test-utils'; + +test('[10, 10]', async ({ page }) => { + await setup(page, 'plugins/grid', SCHEMAS.PLUGINS.GRID, [10, 10]); + + const div = page.getByTestId('draggable'); + + await div.hover(); + const { x, y } = await get_mouse_position(page); + await page.mouse.down(); + await page.mouse.move(x + 94, y + 90); + await page.mouse.up(); + + await expect(div).toHaveCSS('translate', '100px 90px'); + + await page.mouse.down(); + await page.mouse.move(x + 94, y + 91); + await page.mouse.up(); + + await expect(div).toHaveCSS('translate', '100px 90px'); +}); + +test('[23, 102]', async ({ page }) => { + await setup(page, 'plugins/grid', SCHEMAS.PLUGINS.GRID, [23, 102]); + + const div = page.getByTestId('draggable'); + + await div.hover(); + const { x, y } = await get_mouse_position(page); + await page.mouse.down(); + await page.mouse.move(x + 94, y + 90); + await page.mouse.up(); + + await expect(div).toHaveCSS('translate', '115px 102px'); + + await page.mouse.down(); + await page.mouse.move(x + 300, y + 291); + await page.mouse.up(); + + await expect(div).toHaveCSS('translate', '322px 306px'); +}); + +test('undefined should disable the plugin', async ({ page }) => { + await setup(page, 'plugins/grid', SCHEMAS.PLUGINS.GRID, undefined); + + const div = page.getByTestId('draggable'); + + await div.hover(); + const { x, y } = await get_mouse_position(page); + await page.mouse.down(); + await page.mouse.move(x + 94, y + 90); + await page.mouse.up(); + + await expect(div).toHaveCSS('translate', '94px 90px'); + + await page.mouse.down(); + await page.mouse.move(x + 300, y + 291); + await page.mouse.up(); + + await expect(div).toHaveCSS('translate', '300px 291px'); +}); + +test('[10, undefined] should snap in x but let y be free', async ({ page }) => { + await setup(page, 'plugins/grid', SCHEMAS.PLUGINS.GRID, [10, undefined]); + + const div = page.getByTestId('draggable'); + + await div.hover(); + const { x, y } = await get_mouse_position(page); + await page.mouse.down(); + await page.mouse.move(x + 94, y + 90); + await page.mouse.up(); + + await expect(div).toHaveCSS('translate', '100px 90px'); + + await page.mouse.down(); + await page.mouse.move(x + 307, y + 291); + await page.mouse.up(); + + await expect(div).toHaveCSS('translate', '320px 291px'); +}); + +test('[undefined, undefined] does no snapping', async ({ page }) => { + await setup(page, 'plugins/grid', SCHEMAS.PLUGINS.GRID, [undefined, undefined]); + + const div = page.getByTestId('draggable'); + + await div.hover(); + const { x, y } = await get_mouse_position(page); + await page.mouse.down(); + await page.mouse.move(x + 94, y + 90); + await page.mouse.up(); + + await expect(div).toHaveCSS('translate', '94px 90px'); + + await page.mouse.down(); + await page.mouse.move(x + 307, y + 291); + await page.mouse.up(); + + await expect(div).toHaveCSS('translate', '307px 291px'); +}); diff --git a/packages/core/test-app/e2e/plugins/ignoreMultitouch.test.ts b/packages/core/test-app/e2e/plugins/ignoreMultitouch.test.ts new file mode 100644 index 000000000..337509abb --- /dev/null +++ b/packages/core/test-app/e2e/plugins/ignoreMultitouch.test.ts @@ -0,0 +1,8 @@ +import test from '@playwright/test'; + +test('should not allow multitouch', () => { + test.skip( + true, + 'Playwright does not support multiple pointers yet https://github.com/microsoft/playwright/issues/34158', + ); +}); diff --git a/packages/core/test-app/e2e/plugins/position.test.ts b/packages/core/test-app/e2e/plugins/position.test.ts new file mode 100644 index 000000000..1d8f4b8ac --- /dev/null +++ b/packages/core/test-app/e2e/plugins/position.test.ts @@ -0,0 +1,141 @@ +import test, { expect } from '@playwright/test'; +import { get_mouse_position, setup } from '../test-utils'; +import { SCHEMAS } from '../../src/lib/schemas'; + +test('undefined disables the plugin', async ({ page }) => { + await setup(page, 'plugins/position', SCHEMAS.PLUGINS.POSITION, undefined); + + const div = page.getByTestId('draggable'); + + await div.hover(); + const { x, y } = await get_mouse_position(page); + await page.mouse.down(); + await page.mouse.move(x + 100, y + 100); + await page.mouse.up(); + + // This will drag as usual + await expect(div).toHaveCSS('translate', '100px 100px'); +}); + +test('null disables the plugin', async ({ page }) => { + await setup(page, 'plugins/position', SCHEMAS.PLUGINS.POSITION, null); + + const div = page.getByTestId('draggable'); + + await div.hover(); + const { x, y } = await get_mouse_position(page); + await page.mouse.down(); + await page.mouse.move(x + 100, y + 100); + await page.mouse.up(); + + // This will drag as usual + await expect(div).toHaveCSS('translate', '100px 100px'); +}); + +test('default only', async ({ page }) => { + await setup(page, 'plugins/position', SCHEMAS.PLUGINS.POSITION, { + default: { + x: 20, + y: 80, + }, + }); + + const div = page.getByTestId('draggable'); + + // Should be translated by `default` + await expect(div).toHaveCSS('translate', '20px 80px'); + + await div.hover(); + const { x, y } = await get_mouse_position(page); + await page.mouse.down(); + await page.mouse.move(x + 100, y + 100); + await page.mouse.up(); + + // This will drag as usual + await expect(div).toHaveCSS('translate', '120px 180px'); +}); + +test('current only', async ({ page }) => { + await setup(page, 'plugins/position', SCHEMAS.PLUGINS.POSITION, { + current: { + x: 20, + y: 80, + }, + }); + + const div = page.getByTestId('draggable'); + + // Should be translated by `default` + await expect(div).toHaveCSS('translate', '20px 80px'); + + await div.hover(); + const { x, y } = await get_mouse_position(page); + await page.mouse.down(); + await page.mouse.move(x + 100, y + 100); + await page.mouse.up(); + + // This will drag too + await expect(div).toHaveCSS('translate', '120px 180px'); +}); + +test('current-default', async ({ page }) => { + await setup(page, 'plugins/position', SCHEMAS.PLUGINS.POSITION, { + default: { + x: 20, + y: 80, + }, + current: { + x: 100, + y: 180, + }, + }); + + const div = page.getByTestId('draggable'); + + // current ahould be prioritized over default + await expect(div).toHaveCSS('translate', '100px 180px'); + + await div.hover(); + const { x, y } = await get_mouse_position(page); + await page.mouse.down(); + await page.mouse.move(x + 100, y + 100); + await page.mouse.up(); + + // This will drag too + await expect(div).toHaveCSS('translate', '200px 280px'); +}); + +test('two-way-binding', async ({ page }) => { + await setup(page, 'plugins/position', SCHEMAS.PLUGINS.POSITION, { + default: { + x: 20, + y: 80, + }, + current: { + x: 100, + y: 180, + }, + two_way_binding: true, + }); + + const div = page.getByTestId('draggable'); + + // current ahould be prioritized over default + await expect(div).toHaveCSS('translate', '100px 180px'); + + await div.hover(); + const { x, y } = await get_mouse_position(page); + await page.mouse.down(); + await page.mouse.move(x + 100, y + 100); + await page.mouse.up(); + + // This will drag too + await expect(div).toHaveCSS('translate', '200px 280px'); + + const xSlider = page.getByTestId('x-slider'); + const ySlider = page.getByTestId('y-slider'); + + // Check their values, make sure theyre the same as drag translatye + await expect(xSlider).toHaveValue('200'); + await expect(ySlider).toHaveValue('280'); +}); diff --git a/packages/core/test-app/e2e/plugins/stateMarker.test.ts b/packages/core/test-app/e2e/plugins/stateMarker.test.ts new file mode 100644 index 000000000..5fd271780 --- /dev/null +++ b/packages/core/test-app/e2e/plugins/stateMarker.test.ts @@ -0,0 +1,19 @@ +import test, { expect } from '@playwright/test'; +import { get_mouse_position, setup } from '../test-utils'; + +test('should be dragged by mouse', async ({ page }) => { + await setup(page); + + const div = page.getByTestId('draggable'); + + await expect(div).toHaveAttribute('data-neodrag-state', 'idle'); + + await div.hover(); + const { x, y } = await get_mouse_position(page); + await page.mouse.down(); + await page.mouse.move(x + 100, y + 100); + await expect(div).toHaveAttribute('data-neodrag-state', 'dragging'); + await page.mouse.up(); + + await expect(div).toHaveAttribute('data-neodrag-state', 'idle'); +}); diff --git a/packages/core/test-app/e2e/plugins/threshold.test.ts b/packages/core/test-app/e2e/plugins/threshold.test.ts new file mode 100644 index 000000000..7dd8fdb2c --- /dev/null +++ b/packages/core/test-app/e2e/plugins/threshold.test.ts @@ -0,0 +1,135 @@ +import test, { expect } from '@playwright/test'; +import { get_mouse_position, setup, stringify_console_message } from '../test-utils'; +import { SCHEMAS } from '../../src/lib/schemas'; + +test('null disables the plugin', async ({ page }) => { + await setup(page, 'plugins/threshold', SCHEMAS.PLUGINS.THRESHOLD, null); + + const div = page.getByTestId('draggable'); + + await div.hover(); + const { x, y } = await get_mouse_position(page); + await page.mouse.down(); + await page.mouse.move(x + 1, y + 0); + await page.mouse.up(); + + // With threshold set to `null`, the drag of 1px should have happened + await expect(div).toHaveCSS('translate', '1px'); +}); + +test('undefined === defaults', async ({ page }) => { + await setup(page, 'plugins/threshold', SCHEMAS.PLUGINS.THRESHOLD, undefined); + + const div = page.getByTestId('draggable'); + + await div.hover(); + const { x, y } = await get_mouse_position(page); + await page.mouse.down(); + await page.mouse.move(x + 1, y + 0); + await page.mouse.up(); + + // With threshold set to undefined, the drag of 1px should not have happened + await expect(div).not.toHaveCSS('translate', '1px'); +}); + +test('{} switches to defaults', async ({ page }) => { + await setup(page, 'plugins/threshold', SCHEMAS.PLUGINS.THRESHOLD, {}); + + const div = page.getByTestId('draggable'); + + await div.hover(); + const { x, y } = await get_mouse_position(page); + await page.mouse.down(); + await page.mouse.move(x + 1, y + 0); + await page.mouse.up(); + + // With threshold set to undefined, the drag of 1px should have happened + await expect(div).not.toHaveCSS('translate', '1px'); +}); + +test('delay: 400', async ({ page }) => { + await setup(page, 'plugins/threshold', SCHEMAS.PLUGINS.THRESHOLD, { + delay: 400, + }); + + const div = page.getByTestId('draggable'); + + await div.hover(); + const { x, y } = await get_mouse_position(page); + await page.mouse.down(); + await page.mouse.move(x + 1, y + 0); + await page.mouse.up(); + + // Since the delay is 400ms, the drag should not have happened + await expect(div).not.toHaveCSS('translate', '1px'); + + // Now do it again, but wait for 400ms of mouse.down to move the mouse + await page.mouse.down(); + await page.waitForTimeout(400); + await page.mouse.move(x + 1, y + 0); + await page.mouse.move(x + 2, y + 0); + await page.mouse.move(x + 3, y + 0); + await page.mouse.move(x + 5, y + 0); + await page.mouse.up(); + + // Now the drag should have happened + //! OK its kinda weird: We have to move 1px past the threshold to get the drag to happen, and even then it loses 1px + // TODO: Fix it later + await expect(div).toHaveCSS('translate', '4px'); +}); + +test('delay: 400, distance: 0', async ({ page }) => { + await setup(page, 'plugins/threshold', SCHEMAS.PLUGINS.THRESHOLD, { + delay: 400, + distance: 0, + }); + + const div = page.getByTestId('draggable'); + + await div.hover(); + const { x, y } = await get_mouse_position(page); + await page.mouse.down(); + await page.mouse.move(x + 1, y + 0); + await page.mouse.up(); + + // Since the delay is 400ms, the drag should not have happened + await expect(div).not.toHaveCSS('translate', '1px'); + + // Now do it again, but wait for 400ms of mouse.down to move the mouse + await page.mouse.down(); + await page.waitForTimeout(400); + await page.mouse.move(x + 1, y + 0); + await page.mouse.move(x + 2, y + 0); + await page.mouse.up(); + + // Now the drag should have happened + //! OK its kinda weird: We have to move 1px past the threshold to get the drag to happen, and even then it loses 1px + // TODO: Fix it later + await expect(div).toHaveCSS('translate', '1px'); +}); + +test('negative delay', async ({ page }) => { + const console_message_promise = page.waitForEvent('console'); + await setup(page, 'plugins/threshold', SCHEMAS.PLUGINS.THRESHOLD, { + delay: -1, + }); + + const console_error = await console_message_promise; + + expect((await console_error.args()[0].jsonValue()).error.toString()).toContain( + 'delay must be >= 0', + ); +}); + +test('negative distance', async ({ page }) => { + const console_message_promise = page.waitForEvent('console'); + await setup(page, 'plugins/threshold', SCHEMAS.PLUGINS.THRESHOLD, { + distance: -1, + }); + + const console_error = await console_message_promise; + + expect((await console_error.args()[0].jsonValue()).error.toString()).toContain( + 'distance must be >= 0', + ); +}); diff --git a/packages/core/test-app/e2e/plugins/touchAction.test.ts b/packages/core/test-app/e2e/plugins/touchAction.test.ts new file mode 100644 index 000000000..8092de86b --- /dev/null +++ b/packages/core/test-app/e2e/plugins/touchAction.test.ts @@ -0,0 +1,35 @@ +import { expect, test } from '@playwright/test'; +import { SCHEMAS } from '../../src/lib/schemas'; +import { setup } from '../test-utils'; + +test('undefined triggers default behavior', async ({ page }) => { + await setup(page, 'plugins/touchAction', SCHEMAS.PLUGINS.TOUCH_ACTION, 'undefined'); + + const div = page.getByTestId('draggable'); + + await expect(div).toHaveCSS('touch-action', 'manipulation'); +}); + +test('null is false', async ({ page }) => { + await setup(page, 'plugins/touchAction', SCHEMAS.PLUGINS.TOUCH_ACTION, 'null'); + + const div = page.getByTestId('draggable'); + + await expect(div).not.toHaveCSS('touch-action', 'manipulation'); +}); + +test('false', async ({ page }) => { + await setup(page, 'plugins/touchAction', SCHEMAS.PLUGINS.TOUCH_ACTION, 'false'); + + const div = page.getByTestId('draggable'); + + await expect(div).not.toHaveCSS('touch-action', 'manipulation'); +}); + +test('auto', async ({ page }) => { + await setup(page, 'plugins/touchAction', SCHEMAS.PLUGINS.TOUCH_ACTION, 'auto'); + + const div = page.getByTestId('draggable'); + + await expect(div).toHaveCSS('touch-action', 'auto'); +}); diff --git a/packages/core/test-app/e2e/plugins/transform.test.ts b/packages/core/test-app/e2e/plugins/transform.test.ts new file mode 100644 index 000000000..b2918abc6 --- /dev/null +++ b/packages/core/test-app/e2e/plugins/transform.test.ts @@ -0,0 +1,81 @@ +import { test, expect } from '@playwright/test'; +import { get_mouse_position, setup } from '../test-utils'; +import { SCHEMAS } from '../../src/lib/schemas'; + +test.describe('HTMLElement', () => { + test('default', async ({ page }) => { + await setup(page, 'plugins/transform', SCHEMAS.PLUGINS.TRANSFORM, { + is_func: false, + is_svg: false, + }); + + const div = page.getByTestId('draggable'); + + await div.hover(); + const { x, y } = await get_mouse_position(page); + await page.mouse.down(); + await page.mouse.move(x + 100, y + 100); + await page.mouse.up(); + + await expect(div).toHaveCSS('translate', '100px 100px'); + }); + + test('func', async ({ page }) => { + await setup(page, 'plugins/transform', SCHEMAS.PLUGINS.TRANSFORM, { + is_func: true, + is_svg: false, + }); + + const div = page.getByTestId('draggable'); + + await div.hover(); + const { x, y } = await get_mouse_position(page); + await page.mouse.down(); + await page.mouse.move(x + 100, y + 100); + await page.mouse.up(); + + await expect(div).toHaveCSS('left', '100px'); + await expect(div).toHaveCSS('top', '100px'); + }); +}); + +test.describe('SVGElement', () => { + test('default', async ({ page }) => { + await setup(page, 'plugins/transform', SCHEMAS.PLUGINS.TRANSFORM, { + is_func: false, + is_svg: true, + }); + + const div = page.getByTestId('draggable'); + + await div.hover(); + const { x, y } = await get_mouse_position(page); + await page.mouse.down(); + await page.mouse.move(x + 100, y + 100); + await page.mouse.up(); + + await expect(div).toHaveAttribute('transform', /translate\(100[,]? 100\)/); + }); + + test('func', async ({ page, browserName }) => { + await setup(page, 'plugins/transform', SCHEMAS.PLUGINS.TRANSFORM, { + is_func: true, + is_svg: true, + }); + + const div = page.getByTestId('draggable'); + + await div.hover(); + const { x, y } = await get_mouse_position(page); + await page.mouse.down(); + await page.mouse.move(x + 100, y + 100); + await page.mouse.up(); + + if (browserName === 'webkit') { + await expect(div).toHaveAttribute('transform', 'translate(100 100)'); + } else { + await expect(div).toHaveCSS('transform', 'matrix(1, 0, 0, 1, 100, 100)'); + } + await expect(div).toHaveAttribute('data-proof-func-worked', ''); + }); +}); diff --git a/packages/core/test-app/e2e/test-utils.ts b/packages/core/test-app/e2e/test-utils.ts new file mode 100644 index 000000000..5804cd7ea --- /dev/null +++ b/packages/core/test-app/e2e/test-utils.ts @@ -0,0 +1,54 @@ +import { ConsoleMessage, Page } from '@playwright/test'; +import { stringify } from 'devalue'; +import { ZodSchema, z } from 'zod'; + +export function get_mouse_position(page: Page) { + return page.evaluate(() => { + return { + // @ts-ignore + x: window.mouseX, + // @ts-ignore + y: window.mouseY, + }; + }); +} + +/** + * Move the mouse back and forth so the event listeners in the page can track mouse position, and detect it + */ +async function shake_mouse(page: Page) { + await page.mouse.move(1000, 1000); + await page.mouse.click(1000, 1000); + await page.mouse.move(1001, 1001); + await page.mouse.click(1000, 1000); + await page.mouse.move(1000, 1000); +} + +export async function setup( + page: Page, + path = 'defaults', + schema: ZodSchema = z.any(), + options: ZodSchema['_output'] | undefined = undefined, +) { + const validated = schema.parse(options); + console.log('GOING TO: ', `/${path}?options=${stringify(validated)}`); + await page.goto(`/${path}?options=${stringify(options)}`); + await page.waitForLoadState('domcontentloaded'); + await shake_mouse(page); +} + +export async function stringify_console_message(message: ConsoleMessage) { + if (!message.text().includes('JSHandle@error')) { + return `${message.type().substring(0, 3).toUpperCase()} ${message.text()}`; + } + + const messages = await Promise.all( + message.args().map((arg) => { + return arg.getProperty('message'); + }), + ); + + console.log({ messages }); + + return `${message.type().substring(0, 3).toUpperCase()} ${messages.filter(Boolean)}`; +} diff --git a/packages/core/test-app/package.json b/packages/core/test-app/package.json new file mode 100644 index 000000000..a83060afa --- /dev/null +++ b/packages/core/test-app/package.json @@ -0,0 +1,29 @@ +{ + "name": "test-app", + "version": "0.0.1", + "type": "module", + "scripts": { + "dev": "vite dev", + "build": "vite build", + "preview": "vite preview", + "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", + "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", + "test:e2e": "playwright test", + "test": "npm run test:e2e" + }, + "devDependencies": { + "@playwright/test": "^1.45.3", + "@sveltejs/adapter-auto": "^3.0.0", + "@sveltejs/kit": "^2.9.0", + "@sveltejs/vite-plugin-svelte": "^5.0.0", + "svelte": "^5.0.0", + "svelte-check": "^4.0.0", + "typescript": "^5.0.0", + "vite": "^6.0.0", + "vite-plugin-kit-routes": "^0.7.0" + }, + "dependencies": { + "devalue": "^5.1.1", + "zod": "^3.24.1" + } +} diff --git a/packages/core/test-app/playwright.config.ts b/packages/core/test-app/playwright.config.ts new file mode 100644 index 000000000..9ee41b9f7 --- /dev/null +++ b/packages/core/test-app/playwright.config.ts @@ -0,0 +1,33 @@ +import { defineConfig, devices } from '@playwright/test'; + +export default defineConfig({ + webServer: { + command: 'pnpm build && pnpm preview', + port: 3291, + }, + + projects: [ + { + name: 'chrome', + use: { ...devices['Desktop Chrome'] }, + }, + { + name: 'firefox', + use: { ...devices['Desktop Firefox'] }, + }, + { + name: 'safari', + use: { ...devices['Desktop Safari'] }, + }, + { + name: 'chrome.touch', + use: { ...devices['Pixel 7'] }, + }, + { + name: 'safari.mobile', + use: { ...devices['iPhone 15'] }, + }, + ], + + testDir: 'e2e', +}); diff --git a/packages/core/test-app/src/app.d.ts b/packages/core/test-app/src/app.d.ts new file mode 100644 index 000000000..da08e6da5 --- /dev/null +++ b/packages/core/test-app/src/app.d.ts @@ -0,0 +1,13 @@ +// See https://svelte.dev/docs/kit/types#app.d.ts +// for information about these interfaces +declare global { + namespace App { + // interface Error {} + // interface Locals {} + // interface PageData {} + // interface PageState {} + // interface Platform {} + } +} + +export {}; diff --git a/packages/core/test-app/src/app.html b/packages/core/test-app/src/app.html new file mode 100644 index 000000000..77a5ff52c --- /dev/null +++ b/packages/core/test-app/src/app.html @@ -0,0 +1,12 @@ + + + + + + + %sveltekit.head% + + +
%sveltekit.body%
+ + diff --git a/packages/core/test-app/src/lib/Box.svelte b/packages/core/test-app/src/lib/Box.svelte new file mode 100644 index 000000000..e0d01cf91 --- /dev/null +++ b/packages/core/test-app/src/lib/Box.svelte @@ -0,0 +1,33 @@ + + +
+ {@render children?.()} +
+ + diff --git a/packages/core/test-app/src/lib/ROUTES.ts b/packages/core/test-app/src/lib/ROUTES.ts new file mode 100644 index 000000000..1f96ebab9 --- /dev/null +++ b/packages/core/test-app/src/lib/ROUTES.ts @@ -0,0 +1,148 @@ +/* eslint-disable */ +/** + * This file was generated by 'vite-plugin-kit-routes' + * + * >> DO NOT EDIT THIS FILE MANUALLY << + */ + +/** + * PAGES + */ +const PAGES = { + "/": `/`, + "/defaults": `/defaults`, + "/plugins/applyUserSelectHack": `/plugins/applyUserSelectHack`, + "/plugins/axis": `/plugins/axis`, + "/plugins/bounds": `/plugins/bounds`, + "/plugins/controls": `/plugins/controls`, + "/plugins/grid": `/plugins/grid`, + "/plugins/position": `/plugins/position`, + "/plugins/threshold": `/plugins/threshold`, + "/plugins/touchAction": `/plugins/touchAction`, + "/plugins/transform": `/plugins/transform` +} + +/** + * SERVERS + */ +const SERVERS = { + +} + +/** + * ACTIONS + */ +const ACTIONS = { + +} + +/** + * LINKS + */ +const LINKS = { + +} + +type ParamValue = string | number | undefined + +/** + * Append search params to a string + */ +export const appendSp = (sp?: Record, prefix: '?' | '&' = '?') => { + if (sp === undefined) return '' + + const params = new URLSearchParams() + const append = (n: string, v: ParamValue) => { + if (v !== undefined) { + params.append(n, String(v)) + } + } + + for (const [name, val] of Object.entries(sp)) { + if (Array.isArray(val)) { + for (const v of val) { + append(name, v) + } + } else { + append(name, val) + } + } + + const formatted = params.toString() + if (formatted) { + return `${prefix}${formatted}` + } + return '' +} + +/** + * get the current search params + * + * Could be use like this: + * ``` + * route("/cities", { page: 2 }, { ...currentSP() }) + * ``` + */ +export const currentSp = () => { + const params = new URLSearchParams(window.location.search) + const record: Record = {} + for (const [key, value] of params.entries()) { + record[key] = value + } + return record +} + +// route function helpers +type NonFunctionKeys = { [K in keyof T]: T[K] extends Function ? never : K }[keyof T] +type FunctionKeys = { [K in keyof T]: T[K] extends Function ? K : never }[keyof T] +type FunctionParams = T extends (...args: infer P) => any ? P : never + +const AllObjs = { ...PAGES, ...ACTIONS, ...SERVERS, ...LINKS } +type AllTypes = typeof AllObjs + +export type Routes = keyof AllTypes extends `${string}/${infer Route}` ? `/${Route}` : keyof AllTypes +export const routes = [ + ...new Set(Object.keys(AllObjs).map((route) => /^\/.*|[^ ]?\/.*$/.exec(route)?.[0] ?? route)), +] as Routes[] + +/** + * To be used like this: + * ```ts + * import { route } from './ROUTES' + * + * route('site_id', { id: 1 }) + * ``` + */ +export function route>(key: T, ...params: FunctionParams): string +export function route>(key: T): string +export function route(key: T, ...params: any[]): string { + if (AllObjs[key] as any instanceof Function) { + const element = (AllObjs as any)[key] as (...args: any[]) => string + return element(...params) + } else { + return AllObjs[key] as string + } +} + +/** +* Add this type as a generic of the vite plugin `kitRoutes`. +* +* Full example: +* ```ts +* import type { KIT_ROUTES } from '$lib/ROUTES' +* import { kitRoutes } from 'vite-plugin-kit-routes' +* +* kitRoutes({ +* PAGES: { +* // here, key of object will be typed! +* } +* }) +* ``` +*/ +export type KIT_ROUTES = { + PAGES: { '/': never, '/defaults': never, '/plugins/applyUserSelectHack': never, '/plugins/axis': never, '/plugins/bounds': never, '/plugins/controls': never, '/plugins/grid': never, '/plugins/position': never, '/plugins/threshold': never, '/plugins/touchAction': never, '/plugins/transform': never } + SERVERS: Record + ACTIONS: Record + LINKS: Record + Params: Record +} diff --git a/packages/core/test-app/src/lib/helpers.ts b/packages/core/test-app/src/lib/helpers.ts new file mode 100644 index 000000000..f91f977d7 --- /dev/null +++ b/packages/core/test-app/src/lib/helpers.ts @@ -0,0 +1,13 @@ +import { parse } from 'devalue'; +import type { ZodSchema } from 'zod'; + +export function extract_options_from_url(request: Request, schema: ZodSchema) { + const url = new URL(request.url); + + const decoded = decodeURIComponent(url.searchParams.get('options')!); + const options = parse(decoded || ''); + + const value = schema.parse(options); + + return value; +} diff --git a/packages/core/test-app/src/lib/index.ts b/packages/core/test-app/src/lib/index.ts new file mode 100644 index 000000000..856f2b6c3 --- /dev/null +++ b/packages/core/test-app/src/lib/index.ts @@ -0,0 +1 @@ +// place files you want to import through the `$lib` alias in this folder. diff --git a/packages/core/test-app/src/lib/schemas.ts b/packages/core/test-app/src/lib/schemas.ts new file mode 100644 index 000000000..d579722a3 --- /dev/null +++ b/packages/core/test-app/src/lib/schemas.ts @@ -0,0 +1,75 @@ +import { z } from 'zod'; + +export const SCHEMAS = { + PLUGINS: { + AXIS: z.enum(['x', 'y']).optional(), + + BOUNDS: z.object({ + type: z.enum(['parent', 'element', 'viewport', 'selector']), + selector: z.string().optional(), + padding: z + .object({ + top: z.number().optional(), + right: z.number().optional(), + bottom: z.number().optional(), + left: z.number().optional(), + }) + .optional(), + is_smaller_than_element: z.boolean().optional(), + }), + + APPLY_USER_SELECT_HACK: z.boolean(), + + GRID: z.tuple([z.number().nullable().optional(), z.number().nullable().optional()]).optional(), + + TRANSFORM: z.object({ + is_func: z.boolean(), + is_svg: z.boolean(), + }), + + THRESHOLD: z + .object({ + delay: z.number().optional(), + distance: z.number().optional(), + }) + .nullable() + .optional(), + + CONTROLS: z.object({ + type: z.enum([ + 'undefined,null', + 'allow-only', + 'block-only', + 'allow-block', + 'allow-block-allow', + 'block-allow', + 'block-allow-block', + ]), + }), + + POSITION: z + .object({ + two_way_binding: z.boolean().optional(), + + default: z + .object({ + x: z.number(), + y: z.number(), + }) + .optional() + .nullable(), + + current: z + .object({ + x: z.number(), + y: z.number(), + }) + .optional() + .nullable(), + }) + .optional() + .nullable(), + + TOUCH_ACTION: z.enum(['undefined', 'null', 'auto', 'false']), + }, +}; diff --git a/packages/core/test-app/src/routes/(test)/+layout.server.ts b/packages/core/test-app/src/routes/(test)/+layout.server.ts new file mode 100644 index 000000000..a3d15781a --- /dev/null +++ b/packages/core/test-app/src/routes/(test)/+layout.server.ts @@ -0,0 +1 @@ +export const ssr = false; diff --git a/packages/core/test-app/src/routes/(test)/+layout.svelte b/packages/core/test-app/src/routes/(test)/+layout.svelte new file mode 100644 index 000000000..4af2a28f2 --- /dev/null +++ b/packages/core/test-app/src/routes/(test)/+layout.svelte @@ -0,0 +1,32 @@ + + +{@render children()} + + diff --git a/packages/core/test-app/src/routes/(test)/defaults/+page.svelte b/packages/core/test-app/src/routes/(test)/defaults/+page.svelte new file mode 100644 index 000000000..40e4b9e83 --- /dev/null +++ b/packages/core/test-app/src/routes/(test)/defaults/+page.svelte @@ -0,0 +1,5 @@ + + +This is a draggable diff --git a/packages/core/test-app/src/routes/(test)/plugins/applyUserSelectHack/+page.server.ts b/packages/core/test-app/src/routes/(test)/plugins/applyUserSelectHack/+page.server.ts new file mode 100644 index 000000000..bd1461788 --- /dev/null +++ b/packages/core/test-app/src/routes/(test)/plugins/applyUserSelectHack/+page.server.ts @@ -0,0 +1,8 @@ +import { extract_options_from_url } from '$lib/helpers.js'; +import { SCHEMAS } from '$lib/schemas.js'; + +export function load({ request }) { + const value = extract_options_from_url(request, SCHEMAS.PLUGINS.APPLY_USER_SELECT_HACK); + + return { value }; +} diff --git a/packages/core/test-app/src/routes/(test)/plugins/applyUserSelectHack/+page.svelte b/packages/core/test-app/src/routes/(test)/plugins/applyUserSelectHack/+page.svelte new file mode 100644 index 000000000..962d3228f --- /dev/null +++ b/packages/core/test-app/src/routes/(test)/plugins/applyUserSelectHack/+page.svelte @@ -0,0 +1,9 @@ + + + diff --git a/packages/core/test-app/src/routes/(test)/plugins/axis/+page.server.ts b/packages/core/test-app/src/routes/(test)/plugins/axis/+page.server.ts new file mode 100644 index 000000000..b6bfc28c0 --- /dev/null +++ b/packages/core/test-app/src/routes/(test)/plugins/axis/+page.server.ts @@ -0,0 +1,8 @@ +import { extract_options_from_url } from '$lib/helpers.js'; +import { SCHEMAS } from '$lib/schemas.js'; + +export function load({ request }) { + const axis = extract_options_from_url(request, SCHEMAS.PLUGINS.AXIS); + + return { axis }; +} diff --git a/packages/core/test-app/src/routes/(test)/plugins/axis/+page.svelte b/packages/core/test-app/src/routes/(test)/plugins/axis/+page.svelte new file mode 100644 index 000000000..5c3244a2d --- /dev/null +++ b/packages/core/test-app/src/routes/(test)/plugins/axis/+page.svelte @@ -0,0 +1,8 @@ + + + diff --git a/packages/core/test-app/src/routes/(test)/plugins/bounds/+page.server.ts b/packages/core/test-app/src/routes/(test)/plugins/bounds/+page.server.ts new file mode 100644 index 000000000..682fd1502 --- /dev/null +++ b/packages/core/test-app/src/routes/(test)/plugins/bounds/+page.server.ts @@ -0,0 +1,8 @@ +import { extract_options_from_url } from '$lib/helpers.js'; +import { SCHEMAS } from '$lib/schemas.js'; + +export function load({ request }) { + const bounds = extract_options_from_url(request, SCHEMAS.PLUGINS.BOUNDS); + + return { bounds }; +} diff --git a/packages/core/test-app/src/routes/(test)/plugins/bounds/+page.svelte b/packages/core/test-app/src/routes/(test)/plugins/bounds/+page.svelte new file mode 100644 index 000000000..d7364ab37 --- /dev/null +++ b/packages/core/test-app/src/routes/(test)/plugins/bounds/+page.svelte @@ -0,0 +1,80 @@ + + +{#snippet box()} + {#if is_mounted} + + {/if} +{/snippet} + +{#if data.bounds.type === 'parent'} +
+ {@render box()} +
+{:else if data.bounds.type === 'viewport'} + {@render box()} +{:else if data.bounds.type === 'selector'} +
+
+ {@render box()} +
+
+{:else} +
+ {@render box()} +
+{/if} + + diff --git a/packages/core/test-app/src/routes/(test)/plugins/controls/+page.server.ts b/packages/core/test-app/src/routes/(test)/plugins/controls/+page.server.ts new file mode 100644 index 000000000..ecf27ca39 --- /dev/null +++ b/packages/core/test-app/src/routes/(test)/plugins/controls/+page.server.ts @@ -0,0 +1,6 @@ +import { extract_options_from_url } from '$lib/helpers.js'; +import { SCHEMAS } from '$lib/schemas.js'; + +export function load({ request }) { + return extract_options_from_url(request, SCHEMAS.PLUGINS.CONTROLS); +} diff --git a/packages/core/test-app/src/routes/(test)/plugins/controls/+page.svelte b/packages/core/test-app/src/routes/(test)/plugins/controls/+page.svelte new file mode 100644 index 000000000..b4197ed4d --- /dev/null +++ b/packages/core/test-app/src/routes/(test)/plugins/controls/+page.svelte @@ -0,0 +1,78 @@ + + +{#if is_mounted} + + {#if data.type === 'allow-block'} +
+ Handle +

+
Cancel
+
+ {:else if data.type === 'allow-block-allow'} +
+ Handle + +
+ Cancel + +
Handle2
+
+
+ {:else if data.type === 'block-allow-block'} +
+ Outer Block + +
+ Middle Allow + +
+ Inner Block +
+
+
+ {:else} +
Handle
+
Cancel
+ {/if} +
+{/if} + + diff --git a/packages/core/test-app/src/routes/(test)/plugins/grid/+page.server.ts b/packages/core/test-app/src/routes/(test)/plugins/grid/+page.server.ts new file mode 100644 index 000000000..8a215e263 --- /dev/null +++ b/packages/core/test-app/src/routes/(test)/plugins/grid/+page.server.ts @@ -0,0 +1,8 @@ +import { extract_options_from_url } from '$lib/helpers.js'; +import { SCHEMAS } from '$lib/schemas.js'; + +export function load({ request }) { + const grid = extract_options_from_url(request, SCHEMAS.PLUGINS.GRID); + + return { grid }; +} diff --git a/packages/core/test-app/src/routes/(test)/plugins/grid/+page.svelte b/packages/core/test-app/src/routes/(test)/plugins/grid/+page.svelte new file mode 100644 index 000000000..bc5d758fb --- /dev/null +++ b/packages/core/test-app/src/routes/(test)/plugins/grid/+page.svelte @@ -0,0 +1,8 @@ + + + diff --git a/packages/core/test-app/src/routes/(test)/plugins/position/+page.server.ts b/packages/core/test-app/src/routes/(test)/plugins/position/+page.server.ts new file mode 100644 index 000000000..8be52f45b --- /dev/null +++ b/packages/core/test-app/src/routes/(test)/plugins/position/+page.server.ts @@ -0,0 +1,6 @@ +import { extract_options_from_url } from '$lib/helpers.js'; +import { SCHEMAS } from '$lib/schemas.js'; + +export function load({ request }) { + return { options: extract_options_from_url(request, SCHEMAS.PLUGINS.POSITION) }; +} diff --git a/packages/core/test-app/src/routes/(test)/plugins/position/+page.svelte b/packages/core/test-app/src/routes/(test)/plugins/position/+page.svelte new file mode 100644 index 000000000..5799dab68 --- /dev/null +++ b/packages/core/test-app/src/routes/(test)/plugins/position/+page.svelte @@ -0,0 +1,46 @@ + + + + + + + diff --git a/packages/core/test-app/src/routes/(test)/plugins/threshold/+page.server.ts b/packages/core/test-app/src/routes/(test)/plugins/threshold/+page.server.ts new file mode 100644 index 000000000..f4cf73386 --- /dev/null +++ b/packages/core/test-app/src/routes/(test)/plugins/threshold/+page.server.ts @@ -0,0 +1,8 @@ +import { extract_options_from_url } from '$lib/helpers.js'; +import { SCHEMAS } from '$lib/schemas.js'; + +export function load({ request }) { + const threshold = extract_options_from_url(request, SCHEMAS.PLUGINS.THRESHOLD); + + return { threshold }; +} diff --git a/packages/core/test-app/src/routes/(test)/plugins/threshold/+page.svelte b/packages/core/test-app/src/routes/(test)/plugins/threshold/+page.svelte new file mode 100644 index 000000000..9702e0f84 --- /dev/null +++ b/packages/core/test-app/src/routes/(test)/plugins/threshold/+page.svelte @@ -0,0 +1,8 @@ + + + diff --git a/packages/core/test-app/src/routes/(test)/plugins/touchAction/+page.server.ts b/packages/core/test-app/src/routes/(test)/plugins/touchAction/+page.server.ts new file mode 100644 index 000000000..bfb1f2d0b --- /dev/null +++ b/packages/core/test-app/src/routes/(test)/plugins/touchAction/+page.server.ts @@ -0,0 +1,6 @@ +import { extract_options_from_url } from '$lib/helpers.js'; +import { SCHEMAS } from '$lib/schemas.js'; + +export function load({ request }) { + return { value: extract_options_from_url(request, SCHEMAS.PLUGINS.TOUCH_ACTION) }; +} diff --git a/packages/core/test-app/src/routes/(test)/plugins/touchAction/+page.svelte b/packages/core/test-app/src/routes/(test)/plugins/touchAction/+page.svelte new file mode 100644 index 000000000..c859e35ec --- /dev/null +++ b/packages/core/test-app/src/routes/(test)/plugins/touchAction/+page.svelte @@ -0,0 +1,20 @@ + + + diff --git a/packages/core/test-app/src/routes/(test)/plugins/transform/+page.server.ts b/packages/core/test-app/src/routes/(test)/plugins/transform/+page.server.ts new file mode 100644 index 000000000..57a9740da --- /dev/null +++ b/packages/core/test-app/src/routes/(test)/plugins/transform/+page.server.ts @@ -0,0 +1,8 @@ +import { extract_options_from_url } from '$lib/helpers.js'; +import { SCHEMAS } from '$lib/schemas.js'; + +export function load({ request }) { + const args = extract_options_from_url(request, SCHEMAS.PLUGINS.TRANSFORM); + + return args; +} diff --git a/packages/core/test-app/src/routes/(test)/plugins/transform/+page.svelte b/packages/core/test-app/src/routes/(test)/plugins/transform/+page.svelte new file mode 100644 index 000000000..1588e5765 --- /dev/null +++ b/packages/core/test-app/src/routes/(test)/plugins/transform/+page.svelte @@ -0,0 +1,58 @@ + + +{#if data.is_svg} + + + +{:else} +
+{/if} + + diff --git a/packages/core/test-app/src/routes/+page.svelte b/packages/core/test-app/src/routes/+page.svelte new file mode 100644 index 000000000..f219e8afc --- /dev/null +++ b/packages/core/test-app/src/routes/+page.svelte @@ -0,0 +1,8 @@ + + +{#each routes as route} + {route} +
+{/each} diff --git a/packages/core/test-app/static/favicon.png b/packages/core/test-app/static/favicon.png new file mode 100644 index 000000000..825b9e65a Binary files /dev/null and b/packages/core/test-app/static/favicon.png differ diff --git a/packages/core/test-app/svelte.config.js b/packages/core/test-app/svelte.config.js new file mode 100644 index 000000000..1295460d1 --- /dev/null +++ b/packages/core/test-app/svelte.config.js @@ -0,0 +1,18 @@ +import adapter from '@sveltejs/adapter-auto'; +import { vitePreprocess } from '@sveltejs/vite-plugin-svelte'; + +/** @type {import('@sveltejs/kit').Config} */ +const config = { + // Consult https://svelte.dev/docs/kit/integrations + // for more information about preprocessors + preprocess: vitePreprocess(), + + kit: { + // adapter-auto only supports some environments, see https://svelte.dev/docs/kit/adapter-auto for a list. + // If your environment is not supported, or you settled on a specific environment, switch out the adapter. + // See https://svelte.dev/docs/kit/adapters for more information about adapters. + adapter: adapter() + } +}; + +export default config; diff --git a/packages/svelte/demo/tsconfig.json b/packages/core/test-app/tsconfig.json similarity index 69% rename from packages/svelte/demo/tsconfig.json rename to packages/core/test-app/tsconfig.json index 6ae0c8c44..0b2d8865f 100644 --- a/packages/svelte/demo/tsconfig.json +++ b/packages/core/test-app/tsconfig.json @@ -8,9 +8,11 @@ "resolveJsonModule": true, "skipLibCheck": true, "sourceMap": true, - "strict": true + "strict": true, + "moduleResolution": "bundler" } - // Path aliases are handled by https://kit.svelte.dev/docs/configuration#alias + // Path aliases are handled by https://svelte.dev/docs/kit/configuration#alias + // except $lib which is handled by https://svelte.dev/docs/kit/configuration#files // // If you want to overwrite includes/excludes, make sure to copy over the relevant includes/excludes // from the referenced tsconfig.json - TypeScript does not merge them in diff --git a/packages/core/test-app/vite.config.ts b/packages/core/test-app/vite.config.ts new file mode 100644 index 000000000..e995f697d --- /dev/null +++ b/packages/core/test-app/vite.config.ts @@ -0,0 +1,10 @@ +import { sveltekit } from '@sveltejs/kit/vite'; +import { kitRoutes } from 'vite-plugin-kit-routes'; +import { defineConfig } from 'vite'; + +export default defineConfig({ + plugins: [sveltekit(), kitRoutes()], + preview: { + port: 3291, + }, +}); diff --git a/packages/core/tsconfig.json b/packages/core/tsconfig.json index fe38ee7cf..7ef069d1a 100644 --- a/packages/core/tsconfig.json +++ b/packages/core/tsconfig.json @@ -1,15 +1,13 @@ { "compilerOptions": { - "module": "ES2020", + "module": "ES2022", "target": "ESNext", - "declaration": true, - "emitDeclarationOnly": true, - "declarationDir": "dist/", + "noEmit": true, "strict": true, - "esModuleInterop": true, + "lib": ["ES2023.Array", "DOM"], "moduleResolution": "bundler", - "isolatedDeclarations": true, + "allowImportingTsExtensions": true, "types": ["vitest/globals"] }, - "files": ["./src/index.ts"] + "include": ["./src/*.ts"] } diff --git a/packages/core/tsup.config.ts b/packages/core/tsup.config.ts index 51f421e51..da8a0a6aa 100644 --- a/packages/core/tsup.config.ts +++ b/packages/core/tsup.config.ts @@ -1,3 +1,14 @@ -import { core_config } from '../config'; +import { defineConfig } from 'tsup'; -export default core_config; +export default defineConfig([ + { + entry: { + index: `./src/index.ts`, + plugins: `./src/plugins.ts`, + }, + format: 'esm', + dts: { resolve: true }, + clean: true, + treeshake: 'smallest', + }, +]); diff --git a/packages/react/demo/.gitignore b/packages/react/demo/.gitignore deleted file mode 100644 index d451ff16c..000000000 --- a/packages/react/demo/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -node_modules -.DS_Store -dist -dist-ssr -*.local diff --git a/packages/react/demo/index.html b/packages/react/demo/index.html deleted file mode 100644 index 38f386110..000000000 --- a/packages/react/demo/index.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - Vite App - - -
- - - diff --git a/packages/react/demo/package.json b/packages/react/demo/package.json deleted file mode 100644 index 8b7b4952d..000000000 --- a/packages/react/demo/package.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name": "demo", - "private": true, - "version": "0.0.1", - "scripts": { - "dev": "vite", - "build": "vite build", - "preview": "vite preview" - }, - "dependencies": { - "@neodrag/react": "workspace:*" - }, - "devDependencies": { - "@vitejs/plugin-react": "^4.2.1", - "typescript": "^5.3.3", - "vite": "^5.0.10" - } -} diff --git a/packages/react/demo/src/App.tsx b/packages/react/demo/src/App.tsx deleted file mode 100644 index 5c0d6986d..000000000 --- a/packages/react/demo/src/App.tsx +++ /dev/null @@ -1,36 +0,0 @@ -import { useDraggable } from '@neodrag/react'; -import { useRef, useState } from 'react'; - -function App() { - const [position, setPosition] = useState({ x: 0, y: 0 }); - - const draggableRef = useRef(null); - - useDraggable(draggableRef, { - onDrag: ({ offsetX, offsetY }) => setPosition({ x: offsetX, y: offsetY }), - }); - - return ( - <> -
I can be moved with the slider too
- X: - setPosition({ x: +e.target.value, y: position.y })} - /> - Y: - setPosition({ x: position.x, y: +e.target.value })} - /> - - ); -} - -export default App; diff --git a/packages/react/demo/src/index.css b/packages/react/demo/src/index.css deleted file mode 100644 index ec2585e8c..000000000 --- a/packages/react/demo/src/index.css +++ /dev/null @@ -1,13 +0,0 @@ -body { - margin: 0; - font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', - 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', - sans-serif; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -code { - font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New', - monospace; -} diff --git a/packages/react/demo/src/main.tsx b/packages/react/demo/src/main.tsx deleted file mode 100644 index 606a3cf44..000000000 --- a/packages/react/demo/src/main.tsx +++ /dev/null @@ -1,11 +0,0 @@ -import React from 'react' -import ReactDOM from 'react-dom' -import './index.css' -import App from './App' - -ReactDOM.render( - - - , - document.getElementById('root') -) diff --git a/packages/react/demo/tsconfig.json b/packages/react/demo/tsconfig.json deleted file mode 100644 index 4b6d9a3dc..000000000 --- a/packages/react/demo/tsconfig.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "compilerOptions": { - "target": "ESNext", - "useDefineForClassFields": true, - "lib": ["DOM", "DOM.Iterable", "ESNext"], - "allowJs": false, - "skipLibCheck": false, - "esModuleInterop": false, - "allowSyntheticDefaultImports": true, - "strict": true, - "forceConsistentCasingInFileNames": true, - "module": "ESNext", - "moduleResolution": "Node", - "resolveJsonModule": true, - "isolatedModules": true, - "noEmit": true, - "jsx": "react-jsx" - }, - "include": ["./src"] -} diff --git a/packages/react/demo/vite.config.ts b/packages/react/demo/vite.config.ts deleted file mode 100644 index c600eab0b..000000000 --- a/packages/react/demo/vite.config.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { defineConfig } from 'vite'; -import react from '@vitejs/plugin-react'; - -// https://vitejs.dev/config/ -export default defineConfig({ - plugins: [react()], -}); diff --git a/packages/react/package.json b/packages/react/package.json index 100e0740d..b624a5bbf 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -13,11 +13,8 @@ "exports": { ".": { "types": "./dist/index.d.ts", - "import": { - "production": "./dist/min/index.js", - "development": "./dist/index.js" - }, - "default": "./dist/min/index.js" + "import": "./dist/index.js", + "default": "./dist/index.js" }, "./package.json": "./package.json" }, @@ -45,11 +42,12 @@ "homepage": "https://github.com/PuruVJ/neodrag/tree/main/packages/react#readme", "scripts": { "compile": "tsup", - "compile:watch": "tsup --watch", + "turbo:compile": "turbo run compile", + "compile:watch": "turbo watch compile", "pub": "pnpm compile && pnpm publish --no-git-checks --access public", "pub:dry": "pnpm compile && pnpm publish --dry-run --no-git-checks --access public" }, - "devDependencies": { + "dependencies": { "@neodrag/core": "workspace:*" } } diff --git a/packages/react/src/index.ts b/packages/react/src/index.ts index a1639b12d..0093b4844 100644 --- a/packages/react/src/index.ts +++ b/packages/react/src/index.ts @@ -1,100 +1,99 @@ -import { DragEventData, draggable, DragOptions } from '@neodrag/core'; -import React, { useEffect, useRef, useState } from 'react'; - -type DragState = DragEventData; - -type HandleCancelType = - | string - | HTMLElement - | React.RefObject - | (React.RefObject | HTMLElement)[] - | undefined; - -function unwrap_handle_cancel( - val: HandleCancelType, -): string | HTMLElement | HTMLElement[] | undefined { - if (val == undefined || typeof val === 'string' || val instanceof HTMLElement) return val; - if ('current' in val) return val.current!; - - if (Array.isArray(val)) { - // It can only be an array now - return val.map((v) => (v instanceof HTMLElement ? v : v.current!)); - } +import { createDraggable } from '@neodrag/core'; +import { DragEventData, unstable_definePlugin, type Plugin } from '@neodrag/core/plugins'; +import { useEffect, useMemo, useRef, useState } from 'react'; + +const draggable_factory = createDraggable(); + +interface DragState extends DragEventData { + isDragging: boolean; } -type ReactDragOptions = Omit & { - handle?: HandleCancelType; - cancel?: HandleCancelType; +const default_drag_state: DragState = { + offset: { x: 0, y: 0 }, + rootNode: null as unknown as HTMLElement, + currentNode: null as unknown as HTMLElement, + isDragging: false, }; -export function useDraggable( - nodeRef: React.RefObject, - options: ReactDragOptions = {}, -) { - const update_ref = useRef<(options: DragOptions) => void>(); - - const [isDragging, set_is_dragging] = useState(false); - const [dragState, set_drag_state] = useState(); - - let { onDragStart, onDrag, onDragEnd, handle, cancel } = options; - - let new_handle = unwrap_handle_cancel(handle); - let new_cancel = unwrap_handle_cancel(cancel); - - function call_event(arg: DragState, cb: DragOptions['onDrag']) { - set_drag_state(arg); - cb?.(arg); - } - - function custom_on_drag_start(arg: DragState) { - set_is_dragging(true); - call_event(arg, onDragStart); - } - - function custom_on_drag(arg: DragState) { - call_event(arg, onDrag); - } - - function custom_on_drag_end(arg: DragState) { - set_is_dragging(false); - call_event(arg, onDragEnd); - } - - useEffect(() => { - if (typeof window === 'undefined') return; - const node = nodeRef.current; - if (!node) return; - - // Update callbacks - ({ onDragStart, onDrag, onDragEnd } = options); - - const { update, destroy } = draggable(node, { - ...options, - handle: new_handle, - cancel: new_cancel, - onDragStart: custom_on_drag_start, - onDrag: custom_on_drag, - onDragEnd: custom_on_drag_end, +// Create the state sync plugin with the provided setState function +const state_sync = unstable_definePlugin< + [setDragState: React.Dispatch>] +>({ + name: 'react-state-sync', + priority: -1000, // Run last to ensure we get final values + cancelable: false, + + start: ([setDragState], ctx) => { + ctx.effect.immediate(() => { + setDragState((prev) => ({ + ...prev, + isDragging: true, + offset: { ...ctx.offset }, + rootNode: ctx.rootNode, + currentNode: ctx.currentlyDraggedNode, + })); }); - - update_ref.current = update; - - return destroy; - }, []); - - useEffect(() => { - update_ref.current?.({ - ...options, - handle: unwrap_handle_cancel(handle), - cancel: unwrap_handle_cancel(cancel), - onDragStart: custom_on_drag_start, - onDrag: custom_on_drag, - onDragEnd: custom_on_drag_end, + }, + + drag: ([setDragState], ctx) => { + ctx.effect.immediate(() => { + setDragState((prev) => ({ + ...prev, + offset: { ...ctx.offset }, + rootNode: ctx.rootNode, + currentNode: ctx.currentlyDraggedNode, + })); }); - }, [options]); - - return { isDragging, dragState }; + }, + + end: ([setDragState], ctx) => { + ctx.effect.immediate(() => { + setDragState((prev) => ({ + ...prev, + isDragging: false, + offset: { ...ctx.offset }, + rootNode: ctx.rootNode, + currentNode: ctx.currentlyDraggedNode, + })); + }); + }, +}); + +export function wrapper(draggableFactory: ReturnType) { + return (ref: React.RefObject, plugins: Plugin[] = []) => { + const [drag_state, set_drag_state] = useState(default_drag_state); + const instance = useRef>(); + const state_sync_ref = useRef(state_sync(set_drag_state)); + const pluginsRef = useRef(plugins.concat(state_sync_ref.current)); + const is_first_run = useRef(true); + + // Initialize draggable instance + useEffect(() => { + const node = ref.current; + if (!node) return; + + instance.current = draggableFactory.draggable(node, pluginsRef.current); + + return () => instance.current?.destroy(); + }, []); // Changed dependency + + // Handle plugin updates + useEffect(() => { + if (is_first_run.current) { + is_first_run.current = false; + return; + } + + if (!instance.current) return; + + pluginsRef.current = plugins.concat(state_sync_ref.current); + instance.current.update(pluginsRef.current); + }, [plugins]); // Changed dependency + + return drag_state; + }; } -export type { DragAxis, DragBounds, DragBoundsCoords, DragEventData } from '@neodrag/core'; -export type { ReactDragOptions as DragOptions }; +export const useDraggable = wrapper(draggable_factory); +export * from '@neodrag/core/plugins'; +export const instances = draggable_factory.instances; diff --git a/packages/react/tsconfig.json b/packages/react/tsconfig.json index 1b38567ce..e3708c9c2 100644 --- a/packages/react/tsconfig.json +++ b/packages/react/tsconfig.json @@ -1,22 +1,14 @@ { "compilerOptions": { + "module": "ESNext", "target": "ESNext", - "useDefineForClassFields": true, - "declarationDir": "./dist", "declaration": true, "emitDeclarationOnly": true, - "lib": ["DOM", "ESNext"], - "allowJs": false, - "skipLibCheck": false, - "esModuleInterop": false, - "allowSyntheticDefaultImports": true, + "declarationDir": "dist", "strict": true, - "forceConsistentCasingInFileNames": true, - "module": "ESNext", - "moduleResolution": "Node", - "resolveJsonModule": true, - "isolatedModules": true, - "jsx": "react-jsx" + "esModuleInterop": true, + "moduleResolution": "Bundler", + "composite": true }, - "include": ["./src"] + "files": ["./src/index.ts"] } diff --git a/packages/react/tsup.config.ts b/packages/react/tsup.config.ts index bc876e206..8d8421b52 100644 --- a/packages/react/tsup.config.ts +++ b/packages/react/tsup.config.ts @@ -1,3 +1,12 @@ -import { core_config } from '../config'; +import { defineConfig } from 'tsup'; -export default core_config({}); +export default defineConfig([ + { + entry: [`./src/index.ts`], + format: 'esm', + dts: { resolve: true }, + external: ['react', '@neodrag/core'], + clean: true, + treeshake: 'smallest', + }, +]); diff --git a/packages/solid/package.json b/packages/solid/package.json index 62fa9fa1e..59c727518 100644 --- a/packages/solid/package.json +++ b/packages/solid/package.json @@ -13,11 +13,8 @@ "exports": { ".": { "types": "./dist/index.d.ts", - "import": { - "production": "./dist/min/index.js", - "development": "./dist/index.js" - }, - "default": "./dist/min/index.js" + "import": "./dist/index.js", + "default": "./dist/index.js" }, "./package.json": "./package.json" }, @@ -48,7 +45,7 @@ "pub": "pnpm compile && pnpm publish --no-git-checks --access public", "pub:dry": "pnpm compile && pnpm publish --dry-run --no-git-checks --access public" }, - "devDependencies": { + "dependencies": { "@neodrag/core": "workspace:*" }, "peerDependencies": { diff --git a/packages/solid/src/index.ts b/packages/solid/src/index.ts index d6489557f..1cd891935 100644 --- a/packages/solid/src/index.ts +++ b/packages/solid/src/index.ts @@ -1,19 +1,115 @@ -import { draggable, type DragOptions } from '@neodrag/core'; -import { createEffect, onCleanup, type Accessor } from 'solid-js'; +import { createDraggable } from '@neodrag/core'; +import { unstable_definePlugin, type Plugin } from '@neodrag/core/plugins'; +import { createEffect, createMemo, createSignal, onCleanup } from 'solid-js'; -export const createDraggable = () => ({ - draggable: (node: HTMLElement, options: Accessor) => { - const { update, destroy } = draggable(node, options()); +const draggable_factory = createDraggable(); - onCleanup(destroy); - createEffect(() => update(options())); +interface Offset { + x: number; + y: number; +} + +interface DraggableSignals { + offset: () => Offset; + rootNode: () => HTMLElement | SVGElement; + currentNode: () => HTMLElement | SVGElement; + isDragging: () => boolean; +} + +// State sync plugin factory +const state_sync = unstable_definePlugin< + [ + { + setOffset: (offset: Offset) => void; + setRootNode: (node: HTMLElement | SVGElement) => void; + setCurrentNode: (node: HTMLElement | SVGElement) => void; + setIsDragging: (dragging: boolean) => void; + }, + ] +>({ + name: 'solid-state-sync', + priority: -1000, + cancelable: false, + + start: ([setters], ctx) => { + ctx.effect.immediate(() => { + setters.setIsDragging(true); + setters.setOffset({ x: ctx.offset.x, y: ctx.offset.y }); + setters.setRootNode(ctx.rootNode); + setters.setCurrentNode(ctx.currentlyDraggedNode); + }); + }, + + drag: ([setters], ctx) => { + ctx.effect.immediate(() => { + setters.setOffset({ x: ctx.offset.x, y: ctx.offset.y }); + setters.setRootNode(ctx.rootNode); + setters.setCurrentNode(ctx.currentlyDraggedNode); + }); + }, + + end: ([setters], ctx) => { + ctx.effect.immediate(() => { + setters.setIsDragging(false); + setters.setOffset({ x: ctx.offset.x, y: ctx.offset.y }); + setters.setRootNode(ctx.rootNode); + setters.setCurrentNode(ctx.currentlyDraggedNode); + }); }, }); -export type { - DragAxis, - DragBounds, - DragBoundsCoords, - DragEventData, - DragOptions, -} from '@neodrag/core'; +export function wrapper(draggableFactory: ReturnType) { + return ( + ref: () => HTMLElement | SVGElement | null, + pluginFactories: (() => Plugin)[], + ): DraggableSignals => { + const [offset, setOffset] = createSignal({ x: 0, y: 0 }); + const [rootNode, setRootNode] = createSignal( + null as unknown as HTMLElement, + ); + const [currentNode, setCurrentNode] = createSignal( + null as unknown as HTMLElement, + ); + const [isDragging, setIsDragging] = createSignal(false); + + let instance: ReturnType | undefined; + + const setters = { + setOffset, + setRootNode, + setCurrentNode, + setIsDragging, + }; + + const statePlugin = state_sync(setters); + + // Create plugins array - each factory function is wrapped in a memo + const plugins = createMemo(() => pluginFactories.map((factory) => factory())); + + // Initialize draggable instance and handle updates + createEffect(() => { + const node = ref(); + if (!node) return; + + const allPlugins = [...plugins(), statePlugin]; + + if (!instance) { + instance = draggableFactory.draggable(node, allPlugins); + onCleanup(() => instance?.destroy()); + } else { + instance.update(allPlugins); + } + }); + + return { + offset, + rootNode, + currentNode, + isDragging, + }; + }; +} + +export const useDraggable = wrapper(draggable_factory); +export * from '@neodrag/core/plugins'; +export const instances = draggable_factory.instances; diff --git a/packages/solid/tsconfig.json b/packages/solid/tsconfig.json index 0ca3c4636..1b31ab96b 100644 --- a/packages/solid/tsconfig.json +++ b/packages/solid/tsconfig.json @@ -1,21 +1,7 @@ { "compilerOptions": { - "target": "ESNext", - "useDefineForClassFields": true, - "declarationDir": "./dist", - "declaration": true, - "emitDeclarationOnly": true, - "lib": ["DOM", "ESNext"], - "allowJs": false, - "skipLibCheck": false, - "esModuleInterop": false, - "allowSyntheticDefaultImports": true, - "strict": true, - "forceConsistentCasingInFileNames": true, - "module": "ESNext", - "moduleResolution": "Node", - "resolveJsonModule": true, - "preserveSymlinks": false + "moduleResolution": "bundler", + "module": "ESNext" }, "include": ["./src"] } diff --git a/packages/svelte/demo/.gitignore b/packages/svelte/demo/.gitignore deleted file mode 100644 index f4401a32d..000000000 --- a/packages/svelte/demo/.gitignore +++ /dev/null @@ -1,8 +0,0 @@ -.DS_Store -node_modules -/build -/.svelte-kit -/package -.env -.env.* -!.env.example diff --git a/packages/svelte/demo/package.json b/packages/svelte/demo/package.json deleted file mode 100644 index c606c2a8e..000000000 --- a/packages/svelte/demo/package.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "name": "demo", - "version": "0.0.1", - "private": true, - "scripts": { - "dev": "vite dev", - "build": "vite build", - "preview": "vite preview" - }, - "devDependencies": { - "@sveltejs/kit": "2.0.2", - "svelte": "^4.2.8", - "svelte-preprocess": "^5.1.3", - "typescript": "^5.3.3", - "vite": "^5.0.10" - }, - "dependencies": { - "@neodrag/svelte": "workspace:*" - }, - "type": "module" -} diff --git a/packages/svelte/demo/src/app.d.ts b/packages/svelte/demo/src/app.d.ts deleted file mode 100644 index 8f4d63895..000000000 --- a/packages/svelte/demo/src/app.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -// See https://kit.svelte.dev/docs/types#app -// for information about these interfaces -// and what to do when importing types -declare namespace App { - // interface Locals {} - // interface PageData {} - // interface Error {} - // interface Platform {} -} diff --git a/packages/svelte/demo/src/app.html b/packages/svelte/demo/src/app.html deleted file mode 100644 index 4d213668b..000000000 --- a/packages/svelte/demo/src/app.html +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - %sveltekit.head% - - -
%sveltekit.body%
- - diff --git a/packages/svelte/demo/src/routes/2/+page.svelte b/packages/svelte/demo/src/routes/2/+page.svelte deleted file mode 100644 index d9840be96..000000000 --- a/packages/svelte/demo/src/routes/2/+page.svelte +++ /dev/null @@ -1,19 +0,0 @@ - - -
{ - rootNode.style.translate = `${offsetX}px ${offsetY}px 0`; - }, - }} -> - Hello - -
- -
Handle 1
-
Handle 2
-
diff --git a/packages/svelte/demo/svelte.config.js b/packages/svelte/demo/svelte.config.js deleted file mode 100644 index 95c7e3e30..000000000 --- a/packages/svelte/demo/svelte.config.js +++ /dev/null @@ -1,12 +0,0 @@ -import preprocess from 'svelte-preprocess'; - -/** @type {import('@sveltejs/kit').Config} */ -const config = { - // Consult https://github.com/sveltejs/svelte-preprocess - // for more information about preprocessors - preprocess: preprocess(), - - kit: {}, -}; - -export default config; diff --git a/packages/svelte/demo/vite.config.ts b/packages/svelte/demo/vite.config.ts deleted file mode 100644 index 16950342c..000000000 --- a/packages/svelte/demo/vite.config.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { sveltekit } from '@sveltejs/kit/vite'; -import type { UserConfig } from 'vite'; - -const config: UserConfig = { - plugins: [sveltekit()] -}; - -export default config; diff --git a/packages/svelte/package.json b/packages/svelte/package.json index f4501dab9..c9f1cb70b 100644 --- a/packages/svelte/package.json +++ b/packages/svelte/package.json @@ -13,11 +13,8 @@ "exports": { ".": { "types": "./dist/index.d.ts", - "import": { - "production": "./dist/min/index.js", - "development": "./dist/index.js" - }, - "default": "./dist/min/index.js" + "import": "./dist/index.js", + "default": "./dist/index.js" }, "./package.json": "./package.json" }, @@ -49,7 +46,7 @@ "bugs": { "url": "https://github.com/PuruVJ/neodrag/issues" }, - "devDependencies": { + "dependencies": { "@neodrag/core": "workspace:*" }, "homepage": "https://neodrag.dev/docs/svelte" diff --git a/packages/svelte/src/index.ts b/packages/svelte/src/index.ts index 14aec9510..17dba7654 100644 --- a/packages/svelte/src/index.ts +++ b/packages/svelte/src/index.ts @@ -1,91 +1,9 @@ -import { draggable as core_draggable, type DragEventData, type DragOptions } from '@neodrag/core'; +import { createDraggable } from '@neodrag/core'; +import type { Plugin } from '@neodrag/core/plugins'; +import type { Action } from 'svelte/action'; -//!THIS IS HACK, WE WANNA IMPORT THE TYPE WHEN THE ISSUE IS FIXED LATER -/** - * Actions can return an object containing the two properties defined in this interface. Both are optional. - * - update: An action can have a parameter. This method will be called whenever that parameter changes, - * immediately after Svelte has applied updates to the markup. `ActionReturn` and `ActionReturn` both - * mean that the action accepts no parameters. - * - destroy: Method that is called after the element is unmounted - * - * Additionally, you can specify which additional attributes and events the action enables on the applied element. - * This applies to TypeScript typings only and has no effect at runtime. - * - * Example usage: - * ```ts - * interface Attributes { - * newprop?: string; - * 'on:event': (e: CustomEvent) => void; - * } - * - * export function myAction(node: HTMLElement, parameter: Parameter): ActionReturn { - * // ... - * return { - * update: (updatedParameter) => {...}, - * destroy: () => {...} - * }; - * } - * ``` - * - * Docs: https://svelte.dev/docs/svelte-action - */ -export interface ActionReturn< - Parameter = undefined, - Attributes extends Record = Record, -> { - update?: (parameter: Parameter) => void; - destroy?: () => void; - /** - * ### DO NOT USE THIS - * This exists solely for type-checking and has no effect at runtime. - * Set this through the `Attributes` generic instead. - */ - $$_attributes?: Attributes; -} +const { draggable: core, instances } = createDraggable(); -/** - * Actions are functions that are called when an element is created. - * You can use this interface to type such actions. - * The following example defines an action that only works on `
` elements - * and optionally accepts a parameter which it has a default value for: - * ```ts - * export const myAction: Action = (node, param = { someProperty: true }) => { - * // ... - * } - * ``` - * `Action` and `Action` both signal that the action accepts no parameters. - * - * You can return an object with methods `update` and `destroy` from the function and type which additional attributes and events it has. - * See interface `ActionReturn` for more details. - * - * Docs: https://svelte.dev/docs/svelte-action - */ -export interface Action< - Element = HTMLElement, - Parameter = undefined, - Attributes extends Record = Record, -> { - ( - ...args: undefined extends Parameter - ? [node: Node, parameter?: Parameter] - : [node: Node, parameter: Parameter] - ): void | ActionReturn; -} - -export const draggable = core_draggable as Action< - HTMLElement, - DragOptions | undefined, - { - 'on:neodrag:start': (e: CustomEvent) => void; - 'on:neodrag': (e: CustomEvent) => void; - 'on:neodrag:end': (e: CustomEvent) => void; - } ->; - -export type { - DragAxis, - DragBounds, - DragBoundsCoords, - DragEventData, - DragOptions, -} from '@neodrag/core'; +export const draggable = core as Action; +export * from '@neodrag/core/plugins'; +export { instances }; diff --git a/packages/svelte/tsconfig.json b/packages/svelte/tsconfig.json index b43dcf83b..1bfc4c9ba 100644 --- a/packages/svelte/tsconfig.json +++ b/packages/svelte/tsconfig.json @@ -4,7 +4,7 @@ "target": "ESNext", "declaration": true, "emitDeclarationOnly": true, - "declarationDir": "dist/", + "declarationDir": "dist", "strict": true, "esModuleInterop": true, "moduleResolution": "Bundler", diff --git a/packages/svelte/tsup.config.ts b/packages/svelte/tsup.config.ts index bc876e206..a0f6a571f 100644 --- a/packages/svelte/tsup.config.ts +++ b/packages/svelte/tsup.config.ts @@ -1,3 +1,12 @@ -import { core_config } from '../config'; +import { defineConfig } from 'tsup'; -export default core_config({}); +export default defineConfig([ + { + entry: [`./src/index.ts`], + format: 'esm', + dts: true, + external: ['svelte/action', '@neodrag/core'], + clean: true, + treeshake: 'smallest', + }, +]); diff --git a/packages/vanilla/demo-umd/.gitignore b/playground/react/.gitignore similarity index 100% rename from packages/vanilla/demo-umd/.gitignore rename to playground/react/.gitignore diff --git a/playground/react/README.md b/playground/react/README.md new file mode 100644 index 000000000..74872fd4a --- /dev/null +++ b/playground/react/README.md @@ -0,0 +1,50 @@ +# React + TypeScript + Vite + +This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules. + +Currently, two official plugins are available: + +- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react/README.md) uses [Babel](https://babeljs.io/) for Fast Refresh +- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh + +## Expanding the ESLint configuration + +If you are developing a production application, we recommend updating the configuration to enable type aware lint rules: + +- Configure the top-level `parserOptions` property like this: + +```js +export default tseslint.config({ + languageOptions: { + // other options... + parserOptions: { + project: ['./tsconfig.node.json', './tsconfig.app.json'], + tsconfigRootDir: import.meta.dirname, + }, + }, +}) +``` + +- Replace `tseslint.configs.recommended` to `tseslint.configs.recommendedTypeChecked` or `tseslint.configs.strictTypeChecked` +- Optionally add `...tseslint.configs.stylisticTypeChecked` +- Install [eslint-plugin-react](https://github.com/jsx-eslint/eslint-plugin-react) and update the config: + +```js +// eslint.config.js +import react from 'eslint-plugin-react' + +export default tseslint.config({ + // Set the react version + settings: { react: { version: '18.3' } }, + plugins: { + // Add the react plugin + react, + }, + rules: { + // other rules... + // Enable its recommended rules + ...react.configs.recommended.rules, + ...react.configs['jsx-runtime'].rules, + }, +}) +``` diff --git a/playground/react/index.html b/playground/react/index.html new file mode 100644 index 000000000..70ab1e0e8 --- /dev/null +++ b/playground/react/index.html @@ -0,0 +1,12 @@ + + + + + + Vite + React + TS + + +
+ + + diff --git a/playground/react/package.json b/playground/react/package.json new file mode 100644 index 000000000..f51531c00 --- /dev/null +++ b/playground/react/package.json @@ -0,0 +1,23 @@ +{ + "name": "react", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "tsc -b && vite build", + "preview": "vite preview" + }, + "dependencies": { + "@neodrag/react": "workspace:*", + "react": "^19.0.0", + "react-dom": "^19.0.0" + }, + "devDependencies": { + "@types/react": "^19.0.2", + "@types/react-dom": "^19.0.2", + "@vitejs/plugin-react": "^4.3.4", + "babel-plugin-react-compiler": "19.0.0-beta-201e55d-20241215", + "vite": "^6.0.3" + } +} diff --git a/playground/react/src/App.css b/playground/react/src/App.css new file mode 100644 index 000000000..b9d355df2 --- /dev/null +++ b/playground/react/src/App.css @@ -0,0 +1,42 @@ +#root { + max-width: 1280px; + margin: 0 auto; + padding: 2rem; + text-align: center; +} + +.logo { + height: 6em; + padding: 1.5em; + will-change: filter; + transition: filter 300ms; +} +.logo:hover { + filter: drop-shadow(0 0 2em #646cffaa); +} +.logo.react:hover { + filter: drop-shadow(0 0 2em #61dafbaa); +} + +@keyframes logo-spin { + from { + transform: rotate(0deg); + } + to { + transform: rotate(360deg); + } +} + +@media (prefers-reduced-motion: no-preference) { + a:nth-of-type(2) .logo { + animation: logo-spin infinite 20s linear; + } +} + +.card { + padding: 2em; +} + +.read-the-docs { + color: #888; +} diff --git a/playground/react/src/App.tsx b/playground/react/src/App.tsx new file mode 100644 index 000000000..30b2e4bc7 --- /dev/null +++ b/playground/react/src/App.tsx @@ -0,0 +1,48 @@ +import { position as position_plugin, useDraggable } from '@neodrag/react'; +import { useEffect, useRef, useState } from 'react'; + +function App() { + const [position, setPosition] = useState({ x: 0, y: 0 }); + + const draggable_ref = useRef(null); + + const drag_state = useDraggable(draggable_ref, [ + position_plugin({ + current: { ...position }, + }), + ]); + + useEffect(() => { + setPosition(drag_state.offset); + }, [drag_state.offset]); + + useEffect(() => { + console.log(position); + }, [position]); + + return ( + <> +
I can be moved with the slider too
+ X: + setPosition((prev) => ({ ...prev, x: +e.target.value }))} + /> + Y: + setPosition((prev) => ({ ...prev, y: +e.target.value }))} + /> + + ); +} + +export default App; diff --git a/playground/react/src/index.css b/playground/react/src/index.css new file mode 100644 index 000000000..6119ad9a8 --- /dev/null +++ b/playground/react/src/index.css @@ -0,0 +1,68 @@ +:root { + font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif; + line-height: 1.5; + font-weight: 400; + + color-scheme: light dark; + color: rgba(255, 255, 255, 0.87); + background-color: #242424; + + font-synthesis: none; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +a { + font-weight: 500; + color: #646cff; + text-decoration: inherit; +} +a:hover { + color: #535bf2; +} + +body { + margin: 0; + display: flex; + place-items: center; + min-width: 320px; + min-height: 100vh; +} + +h1 { + font-size: 3.2em; + line-height: 1.1; +} + +button { + border-radius: 8px; + border: 1px solid transparent; + padding: 0.6em 1.2em; + font-size: 1em; + font-weight: 500; + font-family: inherit; + background-color: #1a1a1a; + cursor: pointer; + transition: border-color 0.25s; +} +button:hover { + border-color: #646cff; +} +button:focus, +button:focus-visible { + outline: 4px auto -webkit-focus-ring-color; +} + +@media (prefers-color-scheme: light) { + :root { + color: #213547; + background-color: #ffffff; + } + a:hover { + color: #747bff; + } + button { + background-color: #f9f9f9; + } +} diff --git a/playground/react/src/main.tsx b/playground/react/src/main.tsx new file mode 100644 index 000000000..877cc7768 --- /dev/null +++ b/playground/react/src/main.tsx @@ -0,0 +1,9 @@ +import { createRoot } from 'react-dom/client'; +import App from './App.tsx'; +import './index.css'; + +createRoot(document.getElementById('root')!).render( + // + , + // , +); diff --git a/packages/react/demo/src/vite-env.d.ts b/playground/react/src/vite-env.d.ts similarity index 100% rename from packages/react/demo/src/vite-env.d.ts rename to playground/react/src/vite-env.d.ts diff --git a/playground/react/tsconfig.app.json b/playground/react/tsconfig.app.json new file mode 100644 index 000000000..358ca9ba9 --- /dev/null +++ b/playground/react/tsconfig.app.json @@ -0,0 +1,26 @@ +{ + "compilerOptions": { + "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo", + "target": "ES2020", + "useDefineForClassFields": true, + "lib": ["ES2020", "DOM", "DOM.Iterable"], + "module": "ESNext", + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "isolatedModules": true, + "moduleDetection": "force", + "noEmit": true, + "jsx": "react-jsx", + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true, + "noUncheckedSideEffectImports": true + }, + "include": ["src"] +} diff --git a/playground/react/tsconfig.json b/playground/react/tsconfig.json new file mode 100644 index 000000000..88a659fb8 --- /dev/null +++ b/playground/react/tsconfig.json @@ -0,0 +1,4 @@ +{ + "files": [], + "references": [{ "path": "./tsconfig.app.json" }, { "path": "./tsconfig.node.json" }] +} diff --git a/playground/react/tsconfig.node.json b/playground/react/tsconfig.node.json new file mode 100644 index 000000000..db0becc8b --- /dev/null +++ b/playground/react/tsconfig.node.json @@ -0,0 +1,24 @@ +{ + "compilerOptions": { + "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo", + "target": "ES2022", + "lib": ["ES2023"], + "module": "ESNext", + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "isolatedModules": true, + "moduleDetection": "force", + "noEmit": true, + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true, + "noUncheckedSideEffectImports": true + }, + "include": ["vite.config.ts"] +} diff --git a/playground/react/vite.config.ts b/playground/react/vite.config.ts new file mode 100644 index 000000000..8b5b50be7 --- /dev/null +++ b/playground/react/vite.config.ts @@ -0,0 +1,13 @@ +import { defineConfig } from 'vite' +import react from '@vitejs/plugin-react' + +// https://vite.dev/config/ +export default defineConfig({ + plugins: [react({ + babel: { + plugins: [ + ["babel-plugin-react-compiler", {}], + ], + } + })], +}) diff --git a/packages/solid/demo/README.md b/playground/solid/README.md similarity index 100% rename from packages/solid/demo/README.md rename to playground/solid/README.md diff --git a/packages/solid/demo/index.html b/playground/solid/index.html similarity index 100% rename from packages/solid/demo/index.html rename to playground/solid/index.html diff --git a/packages/solid/demo/package.json b/playground/solid/package.json similarity index 93% rename from packages/solid/demo/package.json rename to playground/solid/package.json index ca3f2d81e..2da757f0c 100644 --- a/packages/solid/demo/package.json +++ b/playground/solid/package.json @@ -1,5 +1,5 @@ { - "name": "demo", + "name": "solid-demo", "version": "0.0.0", "private": true, "scripts": { diff --git a/packages/solid/demo/pnpm-lock.yaml b/playground/solid/pnpm-lock.yaml similarity index 100% rename from packages/solid/demo/pnpm-lock.yaml rename to playground/solid/pnpm-lock.yaml diff --git a/packages/solid/demo/src/App.module.css b/playground/solid/src/App.module.css similarity index 100% rename from packages/solid/demo/src/App.module.css rename to playground/solid/src/App.module.css diff --git a/packages/solid/demo/src/App.tsx b/playground/solid/src/App.tsx similarity index 100% rename from packages/solid/demo/src/App.tsx rename to playground/solid/src/App.tsx diff --git a/packages/solid/demo/src/global.d.ts b/playground/solid/src/global.d.ts similarity index 100% rename from packages/solid/demo/src/global.d.ts rename to playground/solid/src/global.d.ts diff --git a/packages/solid/demo/src/index.tsx b/playground/solid/src/index.tsx similarity index 100% rename from packages/solid/demo/src/index.tsx rename to playground/solid/src/index.tsx diff --git a/packages/solid/demo/tsconfig.json b/playground/solid/tsconfig.json similarity index 100% rename from packages/solid/demo/tsconfig.json rename to playground/solid/tsconfig.json diff --git a/packages/solid/demo/vite.config.ts b/playground/solid/vite.config.ts similarity index 100% rename from packages/solid/demo/vite.config.ts rename to playground/solid/vite.config.ts diff --git a/playground/svelte/.gitignore b/playground/svelte/.gitignore new file mode 100644 index 000000000..3b462cb0c --- /dev/null +++ b/playground/svelte/.gitignore @@ -0,0 +1,23 @@ +node_modules + +# Output +.output +.vercel +.netlify +.wrangler +/.svelte-kit +/build + +# OS +.DS_Store +Thumbs.db + +# Env +.env +.env.* +!.env.example +!.env.test + +# Vite +vite.config.js.timestamp-* +vite.config.ts.timestamp-* diff --git a/playground/svelte/.npmrc b/playground/svelte/.npmrc new file mode 100644 index 000000000..b6f27f135 --- /dev/null +++ b/playground/svelte/.npmrc @@ -0,0 +1 @@ +engine-strict=true diff --git a/playground/svelte/README.md b/playground/svelte/README.md new file mode 100644 index 000000000..b5b295070 --- /dev/null +++ b/playground/svelte/README.md @@ -0,0 +1,38 @@ +# sv + +Everything you need to build a Svelte project, powered by [`sv`](https://github.com/sveltejs/cli). + +## Creating a project + +If you're seeing this, you've probably already done this step. Congrats! + +```bash +# create a new project in the current directory +npx sv create + +# create a new project in my-app +npx sv create my-app +``` + +## Developing + +Once you've created a project and installed dependencies with `npm install` (or `pnpm install` or `yarn`), start a development server: + +```bash +npm run dev + +# or start the server and open the app in a new browser tab +npm run dev -- --open +``` + +## Building + +To create a production version of your app: + +```bash +npm run build +``` + +You can preview the production build with `npm run preview`. + +> To deploy your app, you may need to install an [adapter](https://svelte.dev/docs/kit/adapters) for your target environment. diff --git a/playground/svelte/package.json b/playground/svelte/package.json new file mode 100644 index 000000000..cc49bf7c9 --- /dev/null +++ b/playground/svelte/package.json @@ -0,0 +1,25 @@ +{ + "name": "svelte-demo", + "private": true, + "version": "0.0.1", + "type": "module", + "scripts": { + "dev": "vite dev", + "build": "vite build", + "preview": "vite preview", + "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", + "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch" + }, + "dependencies": { + "@neodrag/svelte": "workspace:*" + }, + "devDependencies": { + "@sveltejs/adapter-auto": "^3.0.0", + "@sveltejs/kit": "^2.9.0", + "@sveltejs/vite-plugin-svelte": "^5.0.0", + "svelte": "^5.14.2", + "svelte-check": "^4.0.0", + "typescript": "^5.0.0", + "vite": "^6.0.0" + } +} diff --git a/playground/svelte/src/app.d.ts b/playground/svelte/src/app.d.ts new file mode 100644 index 000000000..da08e6da5 --- /dev/null +++ b/playground/svelte/src/app.d.ts @@ -0,0 +1,13 @@ +// See https://svelte.dev/docs/kit/types#app.d.ts +// for information about these interfaces +declare global { + namespace App { + // interface Error {} + // interface Locals {} + // interface PageData {} + // interface PageState {} + // interface Platform {} + } +} + +export {}; diff --git a/playground/svelte/src/app.html b/playground/svelte/src/app.html new file mode 100644 index 000000000..77a5ff52c --- /dev/null +++ b/playground/svelte/src/app.html @@ -0,0 +1,12 @@ + + + + + + + %sveltekit.head% + + +
%sveltekit.body%
+ + diff --git a/packages/svelte/demo/src/routes/+page.svelte b/playground/svelte/src/routes/+page.svelte similarity index 98% rename from packages/svelte/demo/src/routes/+page.svelte rename to playground/svelte/src/routes/+page.svelte index d4304c062..72bba7621 100644 --- a/packages/svelte/demo/src/routes/+page.svelte +++ b/playground/svelte/src/routes/+page.svelte @@ -2,7 +2,7 @@ import { sineIn } from 'svelte/easing'; import { tweened } from 'svelte/motion'; - import { draggable, type DragOptions } from '@neodrag/svelte'; + import { draggable } from '@neodrag/svelte'; let boundToBody = false; let handleEl: HTMLElement; diff --git a/playground/svelte/src/routes/modular/+page.server.ts b/playground/svelte/src/routes/modular/+page.server.ts new file mode 100644 index 000000000..a3d15781a --- /dev/null +++ b/playground/svelte/src/routes/modular/+page.server.ts @@ -0,0 +1 @@ +export const ssr = false; diff --git a/playground/svelte/src/routes/modular/+page.svelte b/playground/svelte/src/routes/modular/+page.svelte new file mode 100644 index 000000000..e647f8b72 --- /dev/null +++ b/playground/svelte/src/routes/modular/+page.svelte @@ -0,0 +1,84 @@ + + +









+ + + + + +
+ Hello + +
+ +
Handle 1
+
Handle 2
+
+ +
+ +
+ +
+ + diff --git a/playground/svelte/src/routes/modular/position/+page.svelte b/playground/svelte/src/routes/modular/position/+page.svelte new file mode 100644 index 000000000..6f159c352 --- /dev/null +++ b/playground/svelte/src/routes/modular/position/+page.svelte @@ -0,0 +1,41 @@ + + +
I can be moved with the slider too
+X: + +Y: + + + diff --git a/playground/svelte/src/routes/modular/svg/+page.svelte b/playground/svelte/src/routes/modular/svg/+page.svelte new file mode 100644 index 000000000..1b966371c --- /dev/null +++ b/playground/svelte/src/routes/modular/svg/+page.svelte @@ -0,0 +1,89 @@ + + + +
+ +
console.log('HTML drag:', e.offset), + }), + ]} + class="draggable-div" + > + Drag me (HTML) +
+ + + + + console.log('SVG drag:', e.offset), + }), + ]} + x="200" + y="200" + width="100" + height="100" + fill="red" + opacity="0.5" + /> + +
+ + diff --git a/playground/svelte/static/favicon.png b/playground/svelte/static/favicon.png new file mode 100644 index 000000000..825b9e65a Binary files /dev/null and b/playground/svelte/static/favicon.png differ diff --git a/playground/svelte/svelte.config.js b/playground/svelte/svelte.config.js new file mode 100644 index 000000000..1295460d1 --- /dev/null +++ b/playground/svelte/svelte.config.js @@ -0,0 +1,18 @@ +import adapter from '@sveltejs/adapter-auto'; +import { vitePreprocess } from '@sveltejs/vite-plugin-svelte'; + +/** @type {import('@sveltejs/kit').Config} */ +const config = { + // Consult https://svelte.dev/docs/kit/integrations + // for more information about preprocessors + preprocess: vitePreprocess(), + + kit: { + // adapter-auto only supports some environments, see https://svelte.dev/docs/kit/adapter-auto for a list. + // If your environment is not supported, or you settled on a specific environment, switch out the adapter. + // See https://svelte.dev/docs/kit/adapters for more information about adapters. + adapter: adapter() + } +}; + +export default config; diff --git a/playground/svelte/tsconfig.json b/playground/svelte/tsconfig.json new file mode 100644 index 000000000..0b2d8865f --- /dev/null +++ b/playground/svelte/tsconfig.json @@ -0,0 +1,19 @@ +{ + "extends": "./.svelte-kit/tsconfig.json", + "compilerOptions": { + "allowJs": true, + "checkJs": true, + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "resolveJsonModule": true, + "skipLibCheck": true, + "sourceMap": true, + "strict": true, + "moduleResolution": "bundler" + } + // Path aliases are handled by https://svelte.dev/docs/kit/configuration#alias + // except $lib which is handled by https://svelte.dev/docs/kit/configuration#files + // + // If you want to overwrite includes/excludes, make sure to copy over the relevant includes/excludes + // from the referenced tsconfig.json - TypeScript does not merge them in +} diff --git a/playground/svelte/vite.config.ts b/playground/svelte/vite.config.ts new file mode 100644 index 000000000..60653e0bc --- /dev/null +++ b/playground/svelte/vite.config.ts @@ -0,0 +1,10 @@ +import { sveltekit } from '@sveltejs/kit/vite'; +import { defineConfig } from 'vite'; + +export default defineConfig({ + plugins: [sveltekit()], + build: { + minify: false, + target: 'esnext', + }, +}); diff --git a/packages/vanilla/demo/.gitignore b/playground/vanilla-umd/.gitignore similarity index 100% rename from packages/vanilla/demo/.gitignore rename to playground/vanilla-umd/.gitignore diff --git a/packages/vanilla/demo-umd/index.html b/playground/vanilla-umd/index.html similarity index 100% rename from packages/vanilla/demo-umd/index.html rename to playground/vanilla-umd/index.html diff --git a/packages/vanilla/demo-umd/package.json b/playground/vanilla-umd/package.json similarity index 82% rename from packages/vanilla/demo-umd/package.json rename to playground/vanilla-umd/package.json index 68de0394e..8141ff6eb 100644 --- a/packages/vanilla/demo-umd/package.json +++ b/playground/vanilla-umd/package.json @@ -1,5 +1,5 @@ { - "name": "demo", + "name": "vanilla-umd-demo", "private": true, "version": "0.0.0", "scripts": {}, diff --git a/packages/vanilla/demo-umd/src/main.js b/playground/vanilla-umd/src/main.js similarity index 100% rename from packages/vanilla/demo-umd/src/main.js rename to playground/vanilla-umd/src/main.js diff --git a/packages/vanilla/demo-umd/src/style.css b/playground/vanilla-umd/src/style.css similarity index 100% rename from packages/vanilla/demo-umd/src/style.css rename to playground/vanilla-umd/src/style.css diff --git a/packages/vanilla/demo-umd/tsconfig.json b/playground/vanilla-umd/tsconfig.json similarity index 100% rename from packages/vanilla/demo-umd/tsconfig.json rename to playground/vanilla-umd/tsconfig.json diff --git a/packages/vue/demo/.gitignore b/playground/vanilla/.gitignore similarity index 100% rename from packages/vue/demo/.gitignore rename to playground/vanilla/.gitignore diff --git a/packages/vanilla/demo/favicon.svg b/playground/vanilla/favicon.svg similarity index 100% rename from packages/vanilla/demo/favicon.svg rename to playground/vanilla/favicon.svg diff --git a/packages/vanilla/demo/index.html b/playground/vanilla/index.html similarity index 100% rename from packages/vanilla/demo/index.html rename to playground/vanilla/index.html diff --git a/packages/vanilla/demo/package.json b/playground/vanilla/package.json similarity index 91% rename from packages/vanilla/demo/package.json rename to playground/vanilla/package.json index 4d1a0c7a1..323727432 100644 --- a/packages/vanilla/demo/package.json +++ b/playground/vanilla/package.json @@ -1,5 +1,5 @@ { - "name": "demo", + "name": "vanilla-demo", "private": true, "version": "0.0.0", "scripts": { diff --git a/packages/vanilla/demo/src/main.ts b/playground/vanilla/src/main.ts similarity index 100% rename from packages/vanilla/demo/src/main.ts rename to playground/vanilla/src/main.ts diff --git a/packages/vanilla/demo/src/style.css b/playground/vanilla/src/style.css similarity index 100% rename from packages/vanilla/demo/src/style.css rename to playground/vanilla/src/style.css diff --git a/packages/vanilla/demo/src/vite-env.d.ts b/playground/vanilla/src/vite-env.d.ts similarity index 100% rename from packages/vanilla/demo/src/vite-env.d.ts rename to playground/vanilla/src/vite-env.d.ts diff --git a/packages/vanilla/demo/tsconfig.json b/playground/vanilla/tsconfig.json similarity index 100% rename from packages/vanilla/demo/tsconfig.json rename to playground/vanilla/tsconfig.json diff --git a/playground/vue/.gitignore b/playground/vue/.gitignore new file mode 100644 index 000000000..a547bf36d --- /dev/null +++ b/playground/vue/.gitignore @@ -0,0 +1,24 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/packages/vue/demo/CHANGELOG.md b/playground/vue/CHANGELOG.md similarity index 100% rename from packages/vue/demo/CHANGELOG.md rename to playground/vue/CHANGELOG.md diff --git a/packages/vue/demo/README.md b/playground/vue/README.md similarity index 100% rename from packages/vue/demo/README.md rename to playground/vue/README.md diff --git a/packages/vue/demo/index.html b/playground/vue/index.html similarity index 100% rename from packages/vue/demo/index.html rename to playground/vue/index.html diff --git a/packages/vue/demo/package.json b/playground/vue/package.json similarity index 94% rename from packages/vue/demo/package.json rename to playground/vue/package.json index 275023636..365ddbe5b 100644 --- a/packages/vue/demo/package.json +++ b/playground/vue/package.json @@ -1,5 +1,5 @@ { - "name": "demo", + "name": "vue-demo", "private": true, "version": "0.0.9", "scripts": { diff --git a/packages/vue/demo/src/App.vue b/playground/vue/src/App.vue similarity index 100% rename from packages/vue/demo/src/App.vue rename to playground/vue/src/App.vue diff --git a/packages/vue/demo/src/components/HelloWorld.vue b/playground/vue/src/components/HelloWorld.vue similarity index 100% rename from packages/vue/demo/src/components/HelloWorld.vue rename to playground/vue/src/components/HelloWorld.vue diff --git a/packages/vue/demo/src/env.d.ts b/playground/vue/src/env.d.ts similarity index 100% rename from packages/vue/demo/src/env.d.ts rename to playground/vue/src/env.d.ts diff --git a/packages/vue/demo/src/main.ts b/playground/vue/src/main.ts similarity index 100% rename from packages/vue/demo/src/main.ts rename to playground/vue/src/main.ts diff --git a/packages/vue/demo/tsconfig.json b/playground/vue/tsconfig.json similarity index 100% rename from packages/vue/demo/tsconfig.json rename to playground/vue/tsconfig.json diff --git a/packages/vue/demo/tsconfig.node.json b/playground/vue/tsconfig.node.json similarity index 100% rename from packages/vue/demo/tsconfig.node.json rename to playground/vue/tsconfig.node.json diff --git a/packages/vue/demo/vite.config.ts b/playground/vue/vite.config.ts similarity index 100% rename from packages/vue/demo/vite.config.ts rename to playground/vue/vite.config.ts diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7b2de0391..97145f6f5 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4,6 +4,9 @@ settings: autoInstallPeers: true excludeLinksFromLockfile: false +overrides: + vite: ^6.0 + importers: .: @@ -13,10 +16,10 @@ importers: version: 0.5.0 '@changesets/cli': specifier: ^2.27.1 - version: 2.27.10 + version: 2.27.11 '@sveltejs/vite-plugin-svelte': - specifier: 3.1.0 - version: 3.1.0(svelte@4.2.19)(vite@5.4.11(@types/node@20.12.7)(sass@1.82.0)(terser@5.37.0)) + specifier: 5.0.2 + version: 5.0.2(svelte@4.2.19)(vite@6.0.5(@types/node@22.10.2)(jiti@2.4.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1)) '@testing-library/jest-dom': specifier: ^6.1.5 version: 6.6.3 @@ -25,10 +28,10 @@ importers: version: 4.2.3(svelte@4.2.19) '@types/react': specifier: ^18.2.79 - version: 18.3.14 + version: 18.3.18 '@types/react-dom': specifier: ^18.2.25 - version: 18.3.2 + version: 18.3.5(@types/react@18.3.18) brotli-size: specifier: ^4.0.0 version: 4.0.0 @@ -55,19 +58,22 @@ importers: version: 5.37.0 tsup: specifier: ^8.0.1 - version: 8.3.5(postcss@8.4.49)(tsx@4.19.2)(typescript@5.7.2) + version: 8.3.5(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.7.2)(yaml@2.6.1) tsx: specifier: ^4.6.2 version: 4.19.2 + turbo: + specifier: ^2.3.3 + version: 2.3.3 typescript: specifier: ^5.4.5 version: 5.7.2 vite: - specifier: ^5.2.9 - version: 5.4.11(@types/node@20.12.7)(sass@1.82.0)(terser@5.37.0) + specifier: ^6.0 + version: 6.0.5(@types/node@22.10.2)(jiti@2.4.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1) vitest: specifier: ^1.5.0 - version: 1.6.0(@types/node@20.12.7)(jsdom@24.1.3)(sass@1.82.0)(terser@5.37.0) + version: 1.6.0(@types/node@22.10.2)(jiti@2.4.2)(jsdom@24.1.3)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1) vue: specifier: ^3.4.23 version: 3.5.13(typescript@5.7.2) @@ -76,7 +82,7 @@ importers: dependencies: '@astrojs/markdown-remark': specifier: ^6.0.0 - version: 6.0.0 + version: 6.0.1 '@fontsource/jetbrains-mono': specifier: ^5.0.18 version: 5.1.1 @@ -97,44 +103,44 @@ importers: version: 11.0.5 runed: specifier: ^0.18.0 - version: 0.18.0(svelte@5.8.1) + version: 0.18.0(svelte@5.15.0) slugify: specifier: ^1.6.6 version: 1.6.6 svelte-body: specifier: ^2.0.0 - version: 2.0.0(svelte@5.8.1) + version: 2.0.0(svelte@5.15.0) svelte-copy: specifier: ^2.0.0 - version: 2.0.0(svelte@5.8.1) + version: 2.0.0(svelte@5.15.0) svelte-inview: specifier: ^4.0.1 - version: 4.0.4(svelte@5.8.1) + version: 4.0.4(svelte@5.15.0) throttle-debounce: specifier: ^5.0.0 version: 5.0.2 devDependencies: '@astrojs/mdx': specifier: ^4.0.1 - version: 4.0.1(astro@5.0.3(@types/node@20.12.7)(rollup@2.79.1)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(typescript@5.7.2)) + version: 4.0.3(astro@5.1.1(@types/node@22.10.2)(jiti@2.4.2)(rollup@2.79.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2)(typescript@5.7.2)(yaml@2.6.1)) '@astrojs/sitemap': specifier: ^3.2.1 version: 3.2.1 '@astrojs/svelte': specifier: ^7.0.1 - version: 7.0.1(@types/node@20.12.7)(astro@5.0.3(@types/node@20.12.7)(rollup@2.79.1)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(typescript@5.7.2))(sass@1.82.0)(svelte@5.8.1)(terser@5.37.0)(tsx@4.19.2)(typescript@5.7.2) + version: 7.0.2(@types/node@22.10.2)(astro@5.1.1(@types/node@22.10.2)(jiti@2.4.2)(rollup@2.79.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2)(typescript@5.7.2)(yaml@2.6.1))(jiti@2.4.2)(sass@1.83.0)(svelte@5.15.0)(terser@5.37.0)(tsx@4.19.2)(typescript@5.7.2)(yaml@2.6.1) '@iconify/json': specifier: ^2.2.159 - version: 2.2.280 + version: 2.2.287 '@types/throttle-debounce': specifier: ^5.0.2 version: 5.0.2 astro: specifier: ^5.0.3 - version: 5.0.3(@types/node@20.12.7)(rollup@2.79.1)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(typescript@5.7.2) + version: 5.1.1(@types/node@22.10.2)(jiti@2.4.2)(rollup@2.79.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2)(typescript@5.7.2)(yaml@2.6.1) astrojs-service-worker: specifier: ^2.0.0 - version: 2.0.0(@types/babel__core@7.20.5)(astro@5.0.3(@types/node@20.12.7)(rollup@2.79.1)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(typescript@5.7.2)) + version: 2.0.0(@types/babel__core@7.20.5)(astro@5.1.1(@types/node@22.10.2)(jiti@2.4.2)(rollup@2.79.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2)(typescript@5.7.2)(yaml@2.6.1)) autoprefixer: specifier: ^10.4.16 version: 10.4.20(postcss@8.4.49) @@ -149,7 +155,7 @@ importers: version: 8.4.49 postcss-jit-props: specifier: ^1.0.14 - version: 1.0.14(postcss@8.4.49) + version: 1.0.15(postcss@8.4.49) prettier: specifier: ^3.1.1 version: 3.4.2 @@ -158,7 +164,7 @@ importers: version: 0.14.1 prettier-plugin-svelte: specifier: ^3.3.2 - version: 3.3.2(prettier@3.4.2)(svelte@5.8.1) + version: 3.3.2(prettier@3.4.2)(svelte@5.15.0) rehype-autolink-headings: specifier: ^7.1.0 version: 7.1.0 @@ -167,59 +173,125 @@ importers: version: 1.3.1 sass: specifier: ^1.82.0 - version: 1.82.0 + version: 1.83.0 svelte: specifier: ^5.0.0 - version: 5.8.1 + version: 5.15.0 typescript: specifier: ^5.5.0 version: 5.7.2 unplugin-icons: specifier: ^0.21.0 - version: 0.21.0(@vue/compiler-sfc@3.5.13)(svelte@5.8.1)(vue-template-compiler@2.7.16) + version: 0.21.0(@vue/compiler-sfc@3.5.13)(svelte@5.15.0)(vue-template-compiler@2.7.16) vite: - specifier: ^6.0.3 - version: 6.0.3(@types/node@20.12.7)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2) + specifier: ^6.0 + version: 6.0.5(@types/node@22.10.2)(jiti@2.4.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1) packages/core: {} - packages/react: - devDependencies: - '@neodrag/core': - specifier: workspace:* - version: link:../core - - packages/react/demo: + packages/core/test-app: dependencies: - '@neodrag/react': - specifier: workspace:* - version: link:.. + devalue: + specifier: ^5.1.1 + version: 5.1.1 + zod: + specifier: ^3.24.1 + version: 3.24.1 devDependencies: - '@vitejs/plugin-react': - specifier: ^4.2.1 - version: 4.3.4(vite@5.4.11(@types/node@20.12.7)(sass@1.82.0)(terser@5.37.0)) + '@playwright/test': + specifier: ^1.45.3 + version: 1.49.1 + '@sveltejs/adapter-auto': + specifier: ^3.0.0 + version: 3.3.1(@sveltejs/kit@2.14.0(@sveltejs/vite-plugin-svelte@5.0.2(svelte@5.15.0)(vite@6.0.5(@types/node@22.10.2)(jiti@2.4.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1)))(svelte@5.15.0)(vite@6.0.5(@types/node@22.10.2)(jiti@2.4.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1))) + '@sveltejs/kit': + specifier: ^2.9.0 + version: 2.14.0(@sveltejs/vite-plugin-svelte@5.0.2(svelte@5.15.0)(vite@6.0.5(@types/node@22.10.2)(jiti@2.4.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1)))(svelte@5.15.0)(vite@6.0.5(@types/node@22.10.2)(jiti@2.4.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1)) + '@sveltejs/vite-plugin-svelte': + specifier: ^5.0.0 + version: 5.0.2(svelte@5.15.0)(vite@6.0.5(@types/node@22.10.2)(jiti@2.4.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1)) + svelte: + specifier: ^5.0.0 + version: 5.15.0 + svelte-check: + specifier: ^4.0.0 + version: 4.1.1(picomatch@4.0.2)(svelte@5.15.0)(typescript@5.7.2) typescript: - specifier: ^5.3.3 + specifier: ^5.0.0 version: 5.7.2 vite: - specifier: ^5.0.10 - version: 5.4.11(@types/node@20.12.7)(sass@1.82.0)(terser@5.37.0) + specifier: ^6.0 + version: 6.0.5(@types/node@22.10.2)(jiti@2.4.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1) + vite-plugin-kit-routes: + specifier: ^0.7.0 + version: 0.7.2(@sveltejs/kit@2.14.0(@sveltejs/vite-plugin-svelte@5.0.2(svelte@5.15.0)(vite@6.0.5(@types/node@22.10.2)(jiti@2.4.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1)))(svelte@5.15.0)(vite@6.0.5(@types/node@22.10.2)(jiti@2.4.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1))) + + packages/react: + dependencies: + '@neodrag/core': + specifier: workspace:* + version: link:../core packages/solid: dependencies: + '@neodrag/core': + specifier: workspace:* + version: link:../core solid-js: specifier: ^1.0.0 version: 1.9.3 + + packages/svelte: + dependencies: + '@neodrag/core': + specifier: workspace:* + version: link:../core + + packages/vanilla: + devDependencies: + '@neodrag/core': + specifier: workspace:* + version: link:../core + + packages/vue: devDependencies: '@neodrag/core': specifier: workspace:* version: link:../core - packages/solid/demo: + playground/react: + dependencies: + '@neodrag/react': + specifier: workspace:* + version: link:../../packages/react + react: + specifier: ^19.0.0 + version: 19.0.0 + react-dom: + specifier: ^19.0.0 + version: 19.0.0(react@19.0.0) + devDependencies: + '@types/react': + specifier: ^19.0.2 + version: 19.0.2 + '@types/react-dom': + specifier: ^19.0.2 + version: 19.0.2(@types/react@19.0.2) + '@vitejs/plugin-react': + specifier: ^4.3.4 + version: 4.3.4(vite@6.0.5(@types/node@22.10.2)(jiti@2.4.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1)) + babel-plugin-react-compiler: + specifier: 19.0.0-beta-201e55d-20241215 + version: 19.0.0-beta-201e55d-20241215 + vite: + specifier: ^6.0 + version: 6.0.5(@types/node@22.10.2)(jiti@2.4.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1) + + playground/solid: dependencies: '@neodrag/solid': specifier: workspace:* - version: link:.. + version: link:../../packages/solid solid-js: specifier: ^1.8.7 version: 1.9.3 @@ -228,89 +300,77 @@ importers: specifier: ^5.3.3 version: 5.7.2 vite: - specifier: ^5.0.10 - version: 5.4.11(@types/node@20.12.7)(sass@1.82.0)(terser@5.37.0) + specifier: ^6.0 + version: 6.0.5(@types/node@22.10.2)(jiti@2.4.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1) vite-plugin-solid: specifier: ^2.8.0 - version: 2.11.0(@testing-library/jest-dom@6.6.3)(solid-js@1.9.3)(vite@5.4.11(@types/node@20.12.7)(sass@1.82.0)(terser@5.37.0)) - - packages/svelte: - devDependencies: - '@neodrag/core': - specifier: workspace:* - version: link:../core + version: 2.11.0(@testing-library/jest-dom@6.6.3)(solid-js@1.9.3)(vite@6.0.5(@types/node@22.10.2)(jiti@2.4.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1)) - packages/svelte/demo: + playground/svelte: dependencies: '@neodrag/svelte': specifier: workspace:* - version: link:.. + version: link:../../packages/svelte devDependencies: + '@sveltejs/adapter-auto': + specifier: ^3.0.0 + version: 3.3.1(@sveltejs/kit@2.14.0(@sveltejs/vite-plugin-svelte@5.0.2(svelte@5.15.0)(vite@6.0.5(@types/node@22.10.2)(jiti@2.4.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1)))(svelte@5.15.0)(vite@6.0.5(@types/node@22.10.2)(jiti@2.4.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1))) '@sveltejs/kit': - specifier: 2.0.2 - version: 2.0.2(@sveltejs/vite-plugin-svelte@5.0.1(svelte@4.2.19)(vite@5.4.11(@types/node@20.12.7)(sass@1.82.0)(terser@5.37.0)))(svelte@4.2.19)(vite@5.4.11(@types/node@20.12.7)(sass@1.82.0)(terser@5.37.0)) + specifier: ^2.9.0 + version: 2.14.0(@sveltejs/vite-plugin-svelte@5.0.2(svelte@5.15.0)(vite@6.0.5(@types/node@22.10.2)(jiti@2.4.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1)))(svelte@5.15.0)(vite@6.0.5(@types/node@22.10.2)(jiti@2.4.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1)) + '@sveltejs/vite-plugin-svelte': + specifier: ^5.0.0 + version: 5.0.2(svelte@5.15.0)(vite@6.0.5(@types/node@22.10.2)(jiti@2.4.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1)) svelte: - specifier: ^4.2.8 - version: 4.2.19 - svelte-preprocess: - specifier: ^5.1.3 - version: 5.1.4(@babel/core@7.26.0)(postcss@8.4.49)(sass@1.82.0)(svelte@4.2.19)(typescript@5.7.2) + specifier: ^5.14.2 + version: 5.15.0 + svelte-check: + specifier: ^4.0.0 + version: 4.1.1(picomatch@4.0.2)(svelte@5.15.0)(typescript@5.7.2) typescript: - specifier: ^5.3.3 + specifier: ^5.0.0 version: 5.7.2 vite: - specifier: ^5.0.10 - version: 5.4.11(@types/node@20.12.7)(sass@1.82.0)(terser@5.37.0) - - packages/vanilla: - devDependencies: - '@neodrag/core': - specifier: workspace:* - version: link:../core + specifier: ^6.0 + version: 6.0.5(@types/node@22.10.2)(jiti@2.4.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1) - packages/vanilla/demo: + playground/vanilla: dependencies: '@neodrag/vanilla': specifier: workspace:* - version: link:.. + version: link:../../packages/vanilla devDependencies: typescript: specifier: ^5.3.3 version: 5.7.2 vite: - specifier: ^5.0.10 - version: 5.4.11(@types/node@20.12.7)(sass@1.82.0)(terser@5.37.0) + specifier: ^6.0 + version: 6.0.5(@types/node@22.10.2)(jiti@2.4.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1) - packages/vanilla/demo-umd: + playground/vanilla-umd: dependencies: '@neodrag/vanilla': specifier: workspace:* - version: link:.. - - packages/vue: - devDependencies: - '@neodrag/core': - specifier: workspace:* - version: link:../core + version: link:../../packages/vanilla - packages/vue/demo: + playground/vue: dependencies: '@neodrag/vue': specifier: workspace:* - version: link:.. + version: link:../../packages/vue vue: specifier: ^3.3.12 version: 3.5.13(typescript@5.7.2) devDependencies: '@vitejs/plugin-vue': specifier: ^4.5.2 - version: 4.6.2(vite@5.4.11(@types/node@20.12.7)(sass@1.82.0)(terser@5.37.0))(vue@3.5.13(typescript@5.7.2)) + version: 4.6.2(vite@6.0.5(@types/node@22.10.2)(jiti@2.4.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1))(vue@3.5.13(typescript@5.7.2)) typescript: specifier: ^5.3.3 version: 5.7.2 vite: - specifier: ^5.0.10 - version: 5.4.11(@types/node@20.12.7)(sass@1.82.0)(terser@5.37.0) + specifier: ^6.0 + version: 6.0.5(@types/node@22.10.2)(jiti@2.4.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1) vue-tsc: specifier: ^1.8.25 version: 1.8.27(typescript@5.7.2) @@ -351,8 +411,8 @@ packages: '@astrojs/internal-helpers@0.4.2': resolution: {integrity: sha512-EdDWkC3JJVcpGpqJAU/5hSk2LKXyG3mNGkzGoAuyK+xoPHbaVdSuIWoN1QTnmK3N/gGfaaAfM8gO2KDCAW7S3w==} - '@astrojs/language-server@2.8.4': - resolution: {integrity: sha512-sJH5vGTBkhgA8+hdhzX78UUp4cFz4Mt7xkEkevD188OS5bDMkaue6hK+dtXWM47mnrXFveXA2u38K7S+5+IRjA==} + '@astrojs/language-server@2.15.4': + resolution: {integrity: sha512-JivzASqTPR2bao9BWsSc/woPHH7OGSGc9aMxXL4U6egVTqBycB3ZHdBJPuOCVtcGLrzdWTosAqVPz1BVoxE0+A==} hasBin: true peerDependencies: prettier: ^3.0.0 @@ -363,11 +423,11 @@ packages: prettier-plugin-astro: optional: true - '@astrojs/markdown-remark@6.0.0': - resolution: {integrity: sha512-Tabo7xM44Pz2Yf9qpdaCCgxRmtaypi2YCinqTUNefDrWUa+OyKW62OuNeCaGwNh/ys+QAd9FUWN5/3HgPWjP4Q==} + '@astrojs/markdown-remark@6.0.1': + resolution: {integrity: sha512-CTSYijj25NfxgZi15TU3CwPwgyD1/7yA3FcdcNmB9p94nydupiUbrIiq3IqeTp2m5kCVzxbPZeC7fTwEOaNyGw==} - '@astrojs/mdx@4.0.1': - resolution: {integrity: sha512-ShntQtbIsMEnR29DCF9vBNxBOGU29FVRBXKdS5njYic4t4asrbxYmjFXiqqQ0ONnBNHk9P0RHFgqEy1GL/YbJg==} + '@astrojs/mdx@4.0.3': + resolution: {integrity: sha512-8HcuyNG/KgYUAQWVzKFkboXcTOBCW6aQ0WK0Er/iSmVSF0y3yimg4/3QSt+Twv9dogpwIHL+E8iBJKqieFv4+g==} engines: {node: ^18.17.1 || ^20.3.0 || >=22.0.0} peerDependencies: astro: ^5.0.0 @@ -379,8 +439,8 @@ packages: '@astrojs/sitemap@3.2.1': resolution: {integrity: sha512-uxMfO8f7pALq0ADL6Lk68UV6dNYjJ2xGUzyjjVj60JLBs5a6smtlkBYv3tQ0DzoqwS7c9n4FUx5lgv0yPo/fgA==} - '@astrojs/svelte@7.0.1': - resolution: {integrity: sha512-T7cDiqnDUnBdsjnmUM1g4We/waCpYVMjcn6KRFkyuoUOANaC1wNT9/Z2/DONgybwAvvd7w8Pog34Ri0Fqm8oSw==} + '@astrojs/svelte@7.0.2': + resolution: {integrity: sha512-1+SJfU34wjGXBroAHkZRynVSDiAhoYGkn8ODhj20w9wfoUJXnHPgg+0NSDB7pShZRq0rwWDhA3Uo761YXOY4WA==} engines: {node: ^18.17.1 || ^20.3.0 || >=22.0.0} peerDependencies: astro: ^5.0.0 @@ -391,319 +451,167 @@ packages: resolution: {integrity: sha512-wxhSKRfKugLwLlr4OFfcqovk+LIFtKwLyGPqMsv+9/ibqqnW3Gv7tBhtKEb0gAyUAC4G9BTVQeQahqnQAhd6IQ==} engines: {node: ^18.17.1 || ^20.3.0 || >=22.0.0} - '@babel/code-frame@7.24.2': - resolution: {integrity: sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==} - engines: {node: '>=6.9.0'} + '@astrojs/yaml2ts@0.2.2': + resolution: {integrity: sha512-GOfvSr5Nqy2z5XiwqTouBBpy5FyI6DEe+/g/Mk5am9SjILN1S5fOEvYK0GuWHg98yS/dobP4m8qyqw/URW35fQ==} '@babel/code-frame@7.26.2': resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} engines: {node: '>=6.9.0'} - '@babel/compat-data@7.24.4': - resolution: {integrity: sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ==} - engines: {node: '>=6.9.0'} - '@babel/compat-data@7.26.3': resolution: {integrity: sha512-nHIxvKPniQXpmQLb0vhY3VaFb3S0YrTAwpOWJZh1wn3oJPjJk9Asva204PsBdmAE8vpzfHudT8DB0scYvy9q0g==} engines: {node: '>=6.9.0'} - '@babel/core@7.24.4': - resolution: {integrity: sha512-MBVlMXP+kkl5394RBLSxxk/iLTeVGuXTV3cIDXavPpMMqnSnt6apKgan/U8O3USWZCWZT/TbgfEpKa4uMgN4Dg==} - engines: {node: '>=6.9.0'} - '@babel/core@7.26.0': resolution: {integrity: sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==} engines: {node: '>=6.9.0'} - '@babel/generator@7.24.4': - resolution: {integrity: sha512-Xd6+v6SnjWVx/nus+y0l1sxMOTOMBkyL4+BIdbALyatQnAe/SRVjANeDPSCYaX+i1iJmuGSKf3Z+E+V/va1Hvw==} - engines: {node: '>=6.9.0'} - '@babel/generator@7.26.3': resolution: {integrity: sha512-6FF/urZvD0sTeO7k6/B15pMLC4CHUv1426lzr3N01aHJTl046uCAh9LXW/fzeXXjPNCJ6iABW5XaWOsIZB93aQ==} engines: {node: '>=6.9.0'} - '@babel/helper-annotate-as-pure@7.22.5': - resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} - engines: {node: '>=6.9.0'} - - '@babel/helper-builder-binary-assignment-operator-visitor@7.22.15': - resolution: {integrity: sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==} - engines: {node: '>=6.9.0'} - - '@babel/helper-compilation-targets@7.23.6': - resolution: {integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==} + '@babel/helper-annotate-as-pure@7.25.9': + resolution: {integrity: sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==} engines: {node: '>=6.9.0'} '@babel/helper-compilation-targets@7.25.9': resolution: {integrity: sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==} engines: {node: '>=6.9.0'} - '@babel/helper-create-class-features-plugin@7.24.4': - resolution: {integrity: sha512-lG75yeuUSVu0pIcbhiYMXBXANHrpUPaOfu7ryAzskCgKUHuAxRQI5ssrtmF0X9UXldPlvT0XM/A4F44OXRt6iQ==} + '@babel/helper-create-class-features-plugin@7.25.9': + resolution: {integrity: sha512-UTZQMvt0d/rSz6KI+qdu7GQze5TIajwTS++GUozlw8VBJDEOAqSXwm1WvmYEZwqdqSGQshRocPDqrt4HBZB3fQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-create-regexp-features-plugin@7.22.15': - resolution: {integrity: sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==} + '@babel/helper-create-regexp-features-plugin@7.26.3': + resolution: {integrity: sha512-G7ZRb40uUgdKOQqPLjfD12ZmGA54PzqDFUv2BKImnC9QIfGhIHKvVML0oN8IUiDq4iRqpq74ABpvOaerfWdong==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-define-polyfill-provider@0.6.1': - resolution: {integrity: sha512-o7SDgTJuvx5vLKD6SFvkydkSMBvahDKGiNJzG22IZYXhiqoe9efY7zocICBgzHV4IRg5wdgl2nEL/tulKIEIbA==} + '@babel/helper-define-polyfill-provider@0.6.3': + resolution: {integrity: sha512-HK7Bi+Hj6H+VTHA3ZvBis7V/6hu9QuTrnMXNybfUf2iiuU/N97I8VjB+KbhFF8Rld/Lx5MzoCwPCpPjfK+n8Cg==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - '@babel/helper-environment-visitor@7.22.20': - resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==} - engines: {node: '>=6.9.0'} - - '@babel/helper-function-name@7.23.0': - resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==} - engines: {node: '>=6.9.0'} - - '@babel/helper-hoist-variables@7.22.5': - resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} - engines: {node: '>=6.9.0'} - - '@babel/helper-member-expression-to-functions@7.23.0': - resolution: {integrity: sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==} + '@babel/helper-member-expression-to-functions@7.25.9': + resolution: {integrity: sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==} engines: {node: '>=6.9.0'} '@babel/helper-module-imports@7.18.6': resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==} engines: {node: '>=6.9.0'} - '@babel/helper-module-imports@7.24.3': - resolution: {integrity: sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==} - engines: {node: '>=6.9.0'} - '@babel/helper-module-imports@7.25.9': resolution: {integrity: sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==} engines: {node: '>=6.9.0'} - '@babel/helper-module-transforms@7.23.3': - resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - '@babel/helper-module-transforms@7.26.0': resolution: {integrity: sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-optimise-call-expression@7.22.5': - resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==} - engines: {node: '>=6.9.0'} - - '@babel/helper-plugin-utils@7.24.0': - resolution: {integrity: sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w==} + '@babel/helper-optimise-call-expression@7.25.9': + resolution: {integrity: sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==} engines: {node: '>=6.9.0'} '@babel/helper-plugin-utils@7.25.9': resolution: {integrity: sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==} engines: {node: '>=6.9.0'} - '@babel/helper-remap-async-to-generator@7.22.20': - resolution: {integrity: sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==} + '@babel/helper-remap-async-to-generator@7.25.9': + resolution: {integrity: sha512-IZtukuUeBbhgOcaW2s06OXTzVNJR0ybm4W5xC1opWFFJMZbwRj5LCk+ByYH7WdZPZTt8KnFwA8pvjN2yqcPlgw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-replace-supers@7.24.1': - resolution: {integrity: sha512-QCR1UqC9BzG5vZl8BMicmZ28RuUBnHhAMddD8yHFHDRH9lLTZ9uUPehX8ctVPT8l0TKblJidqcgUUKGVrePleQ==} + '@babel/helper-replace-supers@7.25.9': + resolution: {integrity: sha512-IiDqTOTBQy0sWyeXyGSC5TBJpGFXBkRynjBeXsvbhQFKj2viwJC76Epz35YLU1fpe/Am6Vppb7W7zM4fPQzLsQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-simple-access@7.22.5': - resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} - engines: {node: '>=6.9.0'} - - '@babel/helper-skip-transparent-expression-wrappers@7.22.5': - resolution: {integrity: sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==} - engines: {node: '>=6.9.0'} - - '@babel/helper-split-export-declaration@7.22.6': - resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} - engines: {node: '>=6.9.0'} - - '@babel/helper-string-parser@7.24.1': - resolution: {integrity: sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==} + '@babel/helper-skip-transparent-expression-wrappers@7.25.9': + resolution: {integrity: sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==} engines: {node: '>=6.9.0'} '@babel/helper-string-parser@7.25.9': resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==} engines: {node: '>=6.9.0'} - '@babel/helper-validator-identifier@7.22.20': - resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} - engines: {node: '>=6.9.0'} - '@babel/helper-validator-identifier@7.25.9': resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} engines: {node: '>=6.9.0'} - '@babel/helper-validator-option@7.23.5': - resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==} - engines: {node: '>=6.9.0'} - '@babel/helper-validator-option@7.25.9': resolution: {integrity: sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==} engines: {node: '>=6.9.0'} - '@babel/helper-wrap-function@7.22.20': - resolution: {integrity: sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==} - engines: {node: '>=6.9.0'} - - '@babel/helpers@7.24.4': - resolution: {integrity: sha512-FewdlZbSiwaVGlgT1DPANDuCHaDMiOo+D/IDYRFYjHOuv66xMSJ7fQwwODwRNAPkADIO/z1EoF/l2BCWlWABDw==} + '@babel/helper-wrap-function@7.25.9': + resolution: {integrity: sha512-ETzz9UTjQSTmw39GboatdymDq4XIQbR8ySgVrylRhPOFpsd+JrKHIuF0de7GCWmem+T4uC5z7EZguod7Wj4A4g==} engines: {node: '>=6.9.0'} '@babel/helpers@7.26.0': resolution: {integrity: sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==} engines: {node: '>=6.9.0'} - '@babel/highlight@7.24.2': - resolution: {integrity: sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==} - engines: {node: '>=6.9.0'} - - '@babel/parser@7.24.4': - resolution: {integrity: sha512-zTvEBcghmeBma9QIGunWevvBAp4/Qu9Bdq+2k0Ot4fVMD6v3dsC9WOcRSKk7tRRyBM/53yKMJko9xOatGQAwSg==} - engines: {node: '>=6.0.0'} - hasBin: true - '@babel/parser@7.26.3': resolution: {integrity: sha512-WJ/CvmY8Mea8iDXo6a7RK2wbmJITT5fN3BEkRuFlxVyNx8jOKIIhmC4fSkTcPcf8JyavbBwIe6OpiCOBXt/IcA==} engines: {node: '>=6.0.0'} hasBin: true - '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.24.4': - resolution: {integrity: sha512-qpl6vOOEEzTLLcsuqYYo8yDtrTocmu2xkGvgNebvPjT9DTtfFYGmgDqY+rBYXNlqL4s9qLDn6xkrJv4RxAPiTA==} + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.9': + resolution: {integrity: sha512-ZkRyVkThtxQ/J6nv3JFYv1RYY+JT5BvU0y3k5bWrmuG4woXypRa4PXmm9RhOwodRkYFWqC0C0cqcJ4OqR7kW+g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.24.1': - resolution: {integrity: sha512-y4HqEnkelJIOQGd+3g1bTeKsA5c6qM7eOn7VggGVbBc0y8MLSKHacwcIE2PplNlQSj0PqS9rrXL/nkPVK+kUNg==} + '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.25.9': + resolution: {integrity: sha512-MrGRLZxLD/Zjj0gdU15dfs+HH/OXvnw/U4jJD8vpcP2CJQapPEv1IWwjc/qMg7ItBlPwSv1hRBbb7LeuANdcnw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.1': - resolution: {integrity: sha512-Hj791Ii4ci8HqnaKHAlLNs+zaLXb0EzSDhiAWp5VNlyvCNymYfacs64pxTxbH1znW/NcArSmwpmG9IKE/TUVVQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.13.0 - - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.24.1': - resolution: {integrity: sha512-m9m/fXsXLiHfwdgydIFnpk+7jlVbnvlK5B2EKiPdLUb6WX654ZaaEWJUjk8TftRbZpK0XibovlLWX4KIZhV6jw==} + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.9': + resolution: {integrity: sha512-2qUwwfAFpJLZqxd02YW9btUCZHl+RFvdDkNfZwaIJrvB8Tesjsk8pEQkTvGwZXLqXUx/2oyY3ySRhm6HOXuCug==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2': - resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-async-generators@7.8.4': - resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-class-properties@7.12.13': - resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-class-static-block@7.14.5': - resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.25.9': + resolution: {integrity: sha512-6xWgLZTJXwilVjlnV7ospI3xi+sl8lN8rXXbBD6vYn3UYDlGsag8wrZkKcSI8G6KgqKP7vNFaDgeDnfAABq61g==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-dynamic-import@7.8.3': - resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-export-namespace-from@7.8.3': - resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': ^7.13.0 - '@babel/plugin-syntax-import-assertions@7.24.1': - resolution: {integrity: sha512-IuwnI5XnuF189t91XbxmXeCDz3qs6iDRO7GJ++wcfgeXNs/8FmIlKcpDSXNVyuLQxlwvskmI3Ct73wUODkJBlQ==} + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.25.9': + resolution: {integrity: sha512-aLnMXYPnzwwqhYSCyXfKkIkYgJ8zv9RK+roo9DkTXz38ynIhd9XCbN08s3MGvqL2MYGVUGdRQLL/JqBIeJhJBg==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': ^7.0.0 - '@babel/plugin-syntax-import-attributes@7.24.1': - resolution: {integrity: sha512-zhQTMH0X2nVLnb04tz+s7AMuasX8U0FnpE+nHTOhSOINjWMnopoZTxtIKsd45n4GQ/HIZLyfIpoul8e2m0DnRA==} + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2': + resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-import-meta@7.10.4': - resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-json-strings@7.8.3': - resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-jsx@7.24.1': - resolution: {integrity: sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA==} + '@babel/plugin-syntax-import-assertions@7.26.0': + resolution: {integrity: sha512-QCWT5Hh830hK5EQa7XzuqIkQU9tT/whqbDz7kuaZMHFl1inRRg7JnuAEOQ0Ur0QUl0NufCk1msK2BeY79Aj/eg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-logical-assignment-operators@7.10.4': - resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3': - resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-numeric-separator@7.10.4': - resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-object-rest-spread@7.8.3': - resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-optional-catch-binding@7.8.3': - resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-optional-chaining@7.8.3': - resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-private-property-in-object@7.14.5': - resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} + '@babel/plugin-syntax-import-attributes@7.26.0': + resolution: {integrity: sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-top-level-await@7.14.5': - resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} + '@babel/plugin-syntax-jsx@7.25.9': + resolution: {integrity: sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -714,224 +622,230 @@ packages: peerDependencies: '@babel/core': ^7.0.0 - '@babel/plugin-transform-arrow-functions@7.24.1': - resolution: {integrity: sha512-ngT/3NkRhsaep9ck9uj2Xhv9+xB1zShY3tM3g6om4xxCELwCDN4g4Aq5dRn48+0hasAql7s2hdBOysCfNpr4fw==} + '@babel/plugin-transform-arrow-functions@7.25.9': + resolution: {integrity: sha512-6jmooXYIwn9ca5/RylZADJ+EnSxVUS5sjeJ9UPk6RWRzXCmOJCy6dqItPJFpw2cuCangPK4OYr5uhGKcmrm5Qg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-async-generator-functions@7.24.3': - resolution: {integrity: sha512-Qe26CMYVjpQxJ8zxM1340JFNjZaF+ISWpr1Kt/jGo+ZTUzKkfw/pphEWbRCb+lmSM6k/TOgfYLvmbHkUQ0asIg==} + '@babel/plugin-transform-async-generator-functions@7.25.9': + resolution: {integrity: sha512-RXV6QAzTBbhDMO9fWwOmwwTuYaiPbggWQ9INdZqAYeSHyG7FzQ+nOZaUUjNwKv9pV3aE4WFqFm1Hnbci5tBCAw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-async-to-generator@7.24.1': - resolution: {integrity: sha512-AawPptitRXp1y0n4ilKcGbRYWfbbzFWz2NqNu7dacYDtFtz0CMjG64b3LQsb3KIgnf4/obcUL78hfaOS7iCUfw==} + '@babel/plugin-transform-async-to-generator@7.25.9': + resolution: {integrity: sha512-NT7Ejn7Z/LjUH0Gv5KsBCxh7BH3fbLTV0ptHvpeMvrt3cPThHfJfst9Wrb7S8EvJ7vRTFI7z+VAvFVEQn/m5zQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-block-scoped-functions@7.24.1': - resolution: {integrity: sha512-TWWC18OShZutrv9C6mye1xwtam+uNi2bnTOCBUd5sZxyHOiWbU6ztSROofIMrK84uweEZC219POICK/sTYwfgg==} + '@babel/plugin-transform-block-scoped-functions@7.25.9': + resolution: {integrity: sha512-toHc9fzab0ZfenFpsyYinOX0J/5dgJVA2fm64xPewu7CoYHWEivIWKxkK2rMi4r3yQqLnVmheMXRdG+k239CgA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-block-scoping@7.24.4': - resolution: {integrity: sha512-nIFUZIpGKDf9O9ttyRXpHFpKC+X3Y5mtshZONuEUYBomAKoM4y029Jr+uB1bHGPhNmK8YXHevDtKDOLmtRrp6g==} + '@babel/plugin-transform-block-scoping@7.25.9': + resolution: {integrity: sha512-1F05O7AYjymAtqbsFETboN1NvBdcnzMerO+zlMyJBEz6WkMdejvGWw9p05iTSjC85RLlBseHHQpYaM4gzJkBGg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-class-properties@7.24.1': - resolution: {integrity: sha512-OMLCXi0NqvJfORTaPQBwqLXHhb93wkBKZ4aNwMl6WtehO7ar+cmp+89iPEQPqxAnxsOKTaMcs3POz3rKayJ72g==} + '@babel/plugin-transform-class-properties@7.25.9': + resolution: {integrity: sha512-bbMAII8GRSkcd0h0b4X+36GksxuheLFjP65ul9w6C3KgAamI3JqErNgSrosX6ZPj+Mpim5VvEbawXxJCyEUV3Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-class-static-block@7.24.4': - resolution: {integrity: sha512-B8q7Pz870Hz/q9UgP8InNpY01CSLDSCyqX7zcRuv3FcPl87A2G17lASroHWaCtbdIcbYzOZ7kWmXFKbijMSmFg==} + '@babel/plugin-transform-class-static-block@7.26.0': + resolution: {integrity: sha512-6J2APTs7BDDm+UMqP1useWqhcRAXo0WIoVj26N7kPFB6S73Lgvyka4KTZYIxtgYXiN5HTyRObA72N2iu628iTQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.12.0 - '@babel/plugin-transform-classes@7.24.1': - resolution: {integrity: sha512-ZTIe3W7UejJd3/3R4p7ScyyOoafetUShSf4kCqV0O7F/RiHxVj/wRaRnQlrGwflvcehNA8M42HkAiEDYZu2F1Q==} + '@babel/plugin-transform-classes@7.25.9': + resolution: {integrity: sha512-mD8APIXmseE7oZvZgGABDyM34GUmK45Um2TXiBUt7PnuAxrgoSVf123qUzPxEr/+/BHrRn5NMZCdE2m/1F8DGg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-computed-properties@7.24.1': - resolution: {integrity: sha512-5pJGVIUfJpOS+pAqBQd+QMaTD2vCL/HcePooON6pDpHgRp4gNRmzyHTPIkXntwKsq3ayUFVfJaIKPw2pOkOcTw==} + '@babel/plugin-transform-computed-properties@7.25.9': + resolution: {integrity: sha512-HnBegGqXZR12xbcTHlJ9HGxw1OniltT26J5YpfruGqtUHlz/xKf/G2ak9e+t0rVqrjXa9WOhvYPz1ERfMj23AA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-destructuring@7.24.1': - resolution: {integrity: sha512-ow8jciWqNxR3RYbSNVuF4U2Jx130nwnBnhRw6N6h1bOejNkABmcI5X5oz29K4alWX7vf1C+o6gtKXikzRKkVdw==} + '@babel/plugin-transform-destructuring@7.25.9': + resolution: {integrity: sha512-WkCGb/3ZxXepmMiX101nnGiU+1CAdut8oHyEOHxkKuS1qKpU2SMXE2uSvfz8PBuLd49V6LEsbtyPhWC7fnkgvQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-dotall-regex@7.24.1': - resolution: {integrity: sha512-p7uUxgSoZwZ2lPNMzUkqCts3xlp8n+o05ikjy7gbtFJSt9gdU88jAmtfmOxHM14noQXBxfgzf2yRWECiNVhTCw==} + '@babel/plugin-transform-dotall-regex@7.25.9': + resolution: {integrity: sha512-t7ZQ7g5trIgSRYhI9pIJtRl64KHotutUJsh4Eze5l7olJv+mRSg4/MmbZ0tv1eeqRbdvo/+trvJD/Oc5DmW2cA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-duplicate-keys@7.24.1': - resolution: {integrity: sha512-msyzuUnvsjsaSaocV6L7ErfNsa5nDWL1XKNnDePLgmz+WdU4w/J8+AxBMrWfi9m4IxfL5sZQKUPQKDQeeAT6lA==} + '@babel/plugin-transform-duplicate-keys@7.25.9': + resolution: {integrity: sha512-LZxhJ6dvBb/f3x8xwWIuyiAHy56nrRG3PeYTpBkkzkYRRQ6tJLu68lEF5VIqMUZiAV7a8+Tb78nEoMCMcqjXBw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-dynamic-import@7.24.1': - resolution: {integrity: sha512-av2gdSTyXcJVdI+8aFZsCAtR29xJt0S5tas+Ef8NvBNmD1a+N/3ecMLeMBgfcK+xzsjdLDT6oHt+DFPyeqUbDA==} + '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.25.9': + resolution: {integrity: sha512-0UfuJS0EsXbRvKnwcLjFtJy/Sxc5J5jhLHnFhy7u4zih97Hz6tJkLU+O+FMMrNZrosUPxDi6sYxJ/EA8jDiAog==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-dynamic-import@7.25.9': + resolution: {integrity: sha512-GCggjexbmSLaFhqsojeugBpeaRIgWNTcgKVq/0qIteFEqY2A+b9QidYadrWlnbWQUrW5fn+mCvf3tr7OeBFTyg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-exponentiation-operator@7.24.1': - resolution: {integrity: sha512-U1yX13dVBSwS23DEAqU+Z/PkwE9/m7QQy8Y9/+Tdb8UWYaGNDYwTLi19wqIAiROr8sXVum9A/rtiH5H0boUcTw==} + '@babel/plugin-transform-exponentiation-operator@7.26.3': + resolution: {integrity: sha512-7CAHcQ58z2chuXPWblnn1K6rLDnDWieghSOEmqQsrBenH0P9InCUtOJYD89pvngljmZlJcz3fcmgYsXFNGa1ZQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-export-namespace-from@7.24.1': - resolution: {integrity: sha512-Ft38m/KFOyzKw2UaJFkWG9QnHPG/Q/2SkOrRk4pNBPg5IPZ+dOxcmkK5IyuBcxiNPyyYowPGUReyBvrvZs7IlQ==} + '@babel/plugin-transform-export-namespace-from@7.25.9': + resolution: {integrity: sha512-2NsEz+CxzJIVOPx2o9UsW1rXLqtChtLoVnwYHHiB04wS5sgn7mrV45fWMBX0Kk+ub9uXytVYfNP2HjbVbCB3Ww==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-for-of@7.24.1': - resolution: {integrity: sha512-OxBdcnF04bpdQdR3i4giHZNZQn7cm8RQKcSwA17wAAqEELo1ZOwp5FFgeptWUQXFyT9kwHo10aqqauYkRZPCAg==} + '@babel/plugin-transform-for-of@7.25.9': + resolution: {integrity: sha512-LqHxduHoaGELJl2uhImHwRQudhCM50pT46rIBNvtT/Oql3nqiS3wOwP+5ten7NpYSXrrVLgtZU3DZmPtWZo16A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-function-name@7.24.1': - resolution: {integrity: sha512-BXmDZpPlh7jwicKArQASrj8n22/w6iymRnvHYYd2zO30DbE277JO20/7yXJT3QxDPtiQiOxQBbZH4TpivNXIxA==} + '@babel/plugin-transform-function-name@7.25.9': + resolution: {integrity: sha512-8lP+Yxjv14Vc5MuWBpJsoUCd3hD6V9DgBon2FVYL4jJgbnVQ9fTgYmonchzZJOVNgzEgbxp4OwAf6xz6M/14XA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-json-strings@7.24.1': - resolution: {integrity: sha512-U7RMFmRvoasscrIFy5xA4gIp8iWnWubnKkKuUGJjsuOH7GfbMkB+XZzeslx2kLdEGdOJDamEmCqOks6e8nv8DQ==} + '@babel/plugin-transform-json-strings@7.25.9': + resolution: {integrity: sha512-xoTMk0WXceiiIvsaquQQUaLLXSW1KJ159KP87VilruQm0LNNGxWzahxSS6T6i4Zg3ezp4vA4zuwiNUR53qmQAw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-literals@7.24.1': - resolution: {integrity: sha512-zn9pwz8U7nCqOYIiBaOxoQOtYmMODXTJnkxG4AtX8fPmnCRYWBOHD0qcpwS9e2VDSp1zNJYpdnFMIKb8jmwu6g==} + '@babel/plugin-transform-literals@7.25.9': + resolution: {integrity: sha512-9N7+2lFziW8W9pBl2TzaNht3+pgMIRP74zizeCSrtnSKVdUl8mAjjOP2OOVQAfZ881P2cNjDj1uAMEdeD50nuQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-logical-assignment-operators@7.24.1': - resolution: {integrity: sha512-OhN6J4Bpz+hIBqItTeWJujDOfNP+unqv/NJgyhlpSqgBTPm37KkMmZV6SYcOj+pnDbdcl1qRGV/ZiIjX9Iy34w==} + '@babel/plugin-transform-logical-assignment-operators@7.25.9': + resolution: {integrity: sha512-wI4wRAzGko551Y8eVf6iOY9EouIDTtPb0ByZx+ktDGHwv6bHFimrgJM/2T021txPZ2s4c7bqvHbd+vXG6K948Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-member-expression-literals@7.24.1': - resolution: {integrity: sha512-4ojai0KysTWXzHseJKa1XPNXKRbuUrhkOPY4rEGeR+7ChlJVKxFa3H3Bz+7tWaGKgJAXUWKOGmltN+u9B3+CVg==} + '@babel/plugin-transform-member-expression-literals@7.25.9': + resolution: {integrity: sha512-PYazBVfofCQkkMzh2P6IdIUaCEWni3iYEerAsRWuVd8+jlM1S9S9cz1dF9hIzyoZ8IA3+OwVYIp9v9e+GbgZhA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-modules-amd@7.24.1': - resolution: {integrity: sha512-lAxNHi4HVtjnHd5Rxg3D5t99Xm6H7b04hUS7EHIXcUl2EV4yl1gWdqZrNzXnSrHveL9qMdbODlLF55mvgjAfaQ==} + '@babel/plugin-transform-modules-amd@7.25.9': + resolution: {integrity: sha512-g5T11tnI36jVClQlMlt4qKDLlWnG5pP9CSM4GhdRciTNMRgkfpo5cR6b4rGIOYPgRRuFAvwjPQ/Yk+ql4dyhbw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-modules-commonjs@7.24.1': - resolution: {integrity: sha512-szog8fFTUxBfw0b98gEWPaEqF42ZUD/T3bkynW/wtgx2p/XCP55WEsb+VosKceRSd6njipdZvNogqdtI4Q0chw==} + '@babel/plugin-transform-modules-commonjs@7.26.3': + resolution: {integrity: sha512-MgR55l4q9KddUDITEzEFYn5ZsGDXMSsU9E+kh7fjRXTIC3RHqfCo8RPRbyReYJh44HQ/yomFkqbOFohXvDCiIQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-modules-systemjs@7.24.1': - resolution: {integrity: sha512-mqQ3Zh9vFO1Tpmlt8QPnbwGHzNz3lpNEMxQb1kAemn/erstyqw1r9KeOlOfo3y6xAnFEcOv2tSyrXfmMk+/YZA==} + '@babel/plugin-transform-modules-systemjs@7.25.9': + resolution: {integrity: sha512-hyss7iIlH/zLHaehT+xwiymtPOpsiwIIRlCAOwBB04ta5Tt+lNItADdlXw3jAWZ96VJ2jlhl/c+PNIQPKNfvcA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-modules-umd@7.24.1': - resolution: {integrity: sha512-tuA3lpPj+5ITfcCluy6nWonSL7RvaG0AOTeAuvXqEKS34lnLzXpDb0dcP6K8jD0zWZFNDVly90AGFJPnm4fOYg==} + '@babel/plugin-transform-modules-umd@7.25.9': + resolution: {integrity: sha512-bS9MVObUgE7ww36HEfwe6g9WakQ0KF07mQF74uuXdkoziUPfKyu/nIm663kz//e5O1nPInPFx36z7WJmJ4yNEw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-named-capturing-groups-regex@7.22.5': - resolution: {integrity: sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==} + '@babel/plugin-transform-named-capturing-groups-regex@7.25.9': + resolution: {integrity: sha512-oqB6WHdKTGl3q/ItQhpLSnWWOpjUJLsOCLVyeFgeTktkBSCiurvPOsyt93gibI9CmuKvTUEtWmG5VhZD+5T/KA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/plugin-transform-new-target@7.24.1': - resolution: {integrity: sha512-/rurytBM34hYy0HKZQyA0nHbQgQNFm4Q/BOc9Hflxi2X3twRof7NaE5W46j4kQitm7SvACVRXsa6N/tSZxvPug==} + '@babel/plugin-transform-new-target@7.25.9': + resolution: {integrity: sha512-U/3p8X1yCSoKyUj2eOBIx3FOn6pElFOKvAAGf8HTtItuPyB+ZeOqfn+mvTtg9ZlOAjsPdK3ayQEjqHjU/yLeVQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-nullish-coalescing-operator@7.24.1': - resolution: {integrity: sha512-iQ+caew8wRrhCikO5DrUYx0mrmdhkaELgFa+7baMcVuhxIkN7oxt06CZ51D65ugIb1UWRQ8oQe+HXAVM6qHFjw==} + '@babel/plugin-transform-nullish-coalescing-operator@7.25.9': + resolution: {integrity: sha512-ENfftpLZw5EItALAD4WsY/KUWvhUlZndm5GC7G3evUsVeSJB6p0pBeLQUnRnBCBx7zV0RKQjR9kCuwrsIrjWog==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-numeric-separator@7.24.1': - resolution: {integrity: sha512-7GAsGlK4cNL2OExJH1DzmDeKnRv/LXq0eLUSvudrehVA5Rgg4bIrqEUW29FbKMBRT0ztSqisv7kjP+XIC4ZMNw==} + '@babel/plugin-transform-numeric-separator@7.25.9': + resolution: {integrity: sha512-TlprrJ1GBZ3r6s96Yq8gEQv82s8/5HnCVHtEJScUj90thHQbwe+E5MLhi2bbNHBEJuzrvltXSru+BUxHDoog7Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-object-rest-spread@7.24.1': - resolution: {integrity: sha512-XjD5f0YqOtebto4HGISLNfiNMTTs6tbkFf2TOqJlYKYmbo+mN9Dnpl4SRoofiziuOWMIyq3sZEUqLo3hLITFEA==} + '@babel/plugin-transform-object-rest-spread@7.25.9': + resolution: {integrity: sha512-fSaXafEE9CVHPweLYw4J0emp1t8zYTXyzN3UuG+lylqkvYd7RMrsOQ8TYx5RF231be0vqtFC6jnx3UmpJmKBYg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-object-super@7.24.1': - resolution: {integrity: sha512-oKJqR3TeI5hSLRxudMjFQ9re9fBVUU0GICqM3J1mi8MqlhVr6hC/ZN4ttAyMuQR6EZZIY6h/exe5swqGNNIkWQ==} + '@babel/plugin-transform-object-super@7.25.9': + resolution: {integrity: sha512-Kj/Gh+Rw2RNLbCK1VAWj2U48yxxqL2x0k10nPtSdRa0O2xnHXalD0s+o1A6a0W43gJ00ANo38jxkQreckOzv5A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-optional-catch-binding@7.24.1': - resolution: {integrity: sha512-oBTH7oURV4Y+3EUrf6cWn1OHio3qG/PVwO5J03iSJmBg6m2EhKjkAu/xuaXaYwWW9miYtvbWv4LNf0AmR43LUA==} + '@babel/plugin-transform-optional-catch-binding@7.25.9': + resolution: {integrity: sha512-qM/6m6hQZzDcZF3onzIhZeDHDO43bkNNlOX0i8n3lR6zLbu0GN2d8qfM/IERJZYauhAHSLHy39NF0Ctdvcid7g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-optional-chaining@7.24.1': - resolution: {integrity: sha512-n03wmDt+987qXwAgcBlnUUivrZBPZ8z1plL0YvgQalLm+ZE5BMhGm94jhxXtA1wzv1Cu2aaOv1BM9vbVttrzSg==} + '@babel/plugin-transform-optional-chaining@7.25.9': + resolution: {integrity: sha512-6AvV0FsLULbpnXeBjrY4dmWF8F7gf8QnvTEoO/wX/5xm/xE1Xo8oPuD3MPS+KS9f9XBEAWN7X1aWr4z9HdOr7A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-parameters@7.24.1': - resolution: {integrity: sha512-8Jl6V24g+Uw5OGPeWNKrKqXPDw2YDjLc53ojwfMcKwlEoETKU9rU0mHUtcg9JntWI/QYzGAXNWEcVHZ+fR+XXg==} + '@babel/plugin-transform-parameters@7.25.9': + resolution: {integrity: sha512-wzz6MKwpnshBAiRmn4jR8LYz/g8Ksg0o80XmwZDlordjwEk9SxBzTWC7F5ef1jhbrbOW2DJ5J6ayRukrJmnr0g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-private-methods@7.24.1': - resolution: {integrity: sha512-tGvisebwBO5em4PaYNqt4fkw56K2VALsAbAakY0FjTYqJp7gfdrgr7YX76Or8/cpik0W6+tj3rZ0uHU9Oil4tw==} + '@babel/plugin-transform-private-methods@7.25.9': + resolution: {integrity: sha512-D/JUozNpQLAPUVusvqMxyvjzllRaF8/nSrP1s2YGQT/W4LHK4xxsMcHjhOGTS01mp9Hda8nswb+FblLdJornQw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-private-property-in-object@7.24.1': - resolution: {integrity: sha512-pTHxDVa0BpUbvAgX3Gat+7cSciXqUcY9j2VZKTbSB6+VQGpNgNO9ailxTGHSXlqOnX1Hcx1Enme2+yv7VqP9bg==} + '@babel/plugin-transform-private-property-in-object@7.25.9': + resolution: {integrity: sha512-Evf3kcMqzXA3xfYJmZ9Pg1OvKdtqsDMSWBDzZOPLvHiTt36E75jLDQo5w1gtRU95Q4E5PDttrTf25Fw8d/uWLw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-property-literals@7.24.1': - resolution: {integrity: sha512-LetvD7CrHmEx0G442gOomRr66d7q8HzzGGr4PMHGr+5YIm6++Yke+jxj246rpvsbyhJwCLxcTn6zW1P1BSenqA==} + '@babel/plugin-transform-property-literals@7.25.9': + resolution: {integrity: sha512-IvIUeV5KrS/VPavfSM/Iu+RE6llrHrYIKY1yfCzyO/lMXHQ+p7uGhonmGVisv6tSBSVgWzMBohTcvkC9vQcQFA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -948,74 +862,80 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-regenerator@7.24.1': - resolution: {integrity: sha512-sJwZBCzIBE4t+5Q4IGLaaun5ExVMRY0lYwos/jNecjMrVCygCdph3IKv0tkP5Fc87e/1+bebAmEAGBfnRD+cnw==} + '@babel/plugin-transform-regenerator@7.25.9': + resolution: {integrity: sha512-vwDcDNsgMPDGP0nMqzahDWE5/MLcX8sv96+wfX7as7LoF/kr97Bo/7fI00lXY4wUXYfVmwIIyG80fGZ1uvt2qg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-reserved-words@7.24.1': - resolution: {integrity: sha512-JAclqStUfIwKN15HrsQADFgeZt+wexNQ0uLhuqvqAUFoqPMjEcFCYZBhq0LUdz6dZK/mD+rErhW71fbx8RYElg==} + '@babel/plugin-transform-regexp-modifiers@7.26.0': + resolution: {integrity: sha512-vN6saax7lrA2yA/Pak3sCxuD6F5InBjn9IcrIKQPjpsLvuHYLVroTxjdlVRHjjBWxKOqIwpTXDkOssYT4BFdRw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-reserved-words@7.25.9': + resolution: {integrity: sha512-7DL7DKYjn5Su++4RXu8puKZm2XBPHyjWLUidaPEkCUBbE7IPcsrkRHggAOOKydH1dASWdcUBxrkOGNxUv5P3Jg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-shorthand-properties@7.24.1': - resolution: {integrity: sha512-LyjVB1nsJ6gTTUKRjRWx9C1s9hE7dLfP/knKdrfeH9UPtAGjYGgxIbFfx7xyLIEWs7Xe1Gnf8EWiUqfjLhInZA==} + '@babel/plugin-transform-shorthand-properties@7.25.9': + resolution: {integrity: sha512-MUv6t0FhO5qHnS/W8XCbHmiRWOphNufpE1IVxhK5kuN3Td9FT1x4rx4K42s3RYdMXCXpfWkGSbCSd0Z64xA7Ng==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-spread@7.24.1': - resolution: {integrity: sha512-KjmcIM+fxgY+KxPVbjelJC6hrH1CgtPmTvdXAfn3/a9CnWGSTY7nH4zm5+cjmWJybdcPSsD0++QssDsjcpe47g==} + '@babel/plugin-transform-spread@7.25.9': + resolution: {integrity: sha512-oNknIB0TbURU5pqJFVbOOFspVlrpVwo2H1+HUIsVDvp5VauGGDP1ZEvO8Nn5xyMEs3dakajOxlmkNW7kNgSm6A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-sticky-regex@7.24.1': - resolution: {integrity: sha512-9v0f1bRXgPVcPrngOQvLXeGNNVLc8UjMVfebo9ka0WF3/7+aVUHmaJVT3sa0XCzEFioPfPHZiOcYG9qOsH63cw==} + '@babel/plugin-transform-sticky-regex@7.25.9': + resolution: {integrity: sha512-WqBUSgeVwucYDP9U/xNRQam7xV8W5Zf+6Eo7T2SRVUFlhRiMNFdFz58u0KZmCVVqs2i7SHgpRnAhzRNmKfi2uA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-template-literals@7.24.1': - resolution: {integrity: sha512-WRkhROsNzriarqECASCNu/nojeXCDTE/F2HmRgOzi7NGvyfYGq1NEjKBK3ckLfRgGc6/lPAqP0vDOSw3YtG34g==} + '@babel/plugin-transform-template-literals@7.25.9': + resolution: {integrity: sha512-o97AE4syN71M/lxrCtQByzphAdlYluKPDBzDVzMmfCobUjjhAryZV0AIpRPrxN0eAkxXO6ZLEScmt+PNhj2OTw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-typeof-symbol@7.24.1': - resolution: {integrity: sha512-CBfU4l/A+KruSUoW+vTQthwcAdwuqbpRNB8HQKlZABwHRhsdHZ9fezp4Sn18PeAlYxTNiLMlx4xUBV3AWfg1BA==} + '@babel/plugin-transform-typeof-symbol@7.25.9': + resolution: {integrity: sha512-v61XqUMiueJROUv66BVIOi0Fv/CUuZuZMl5NkRoCVxLAnMexZ0A3kMe7vvZ0nulxMuMp0Mk6S5hNh48yki08ZA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-unicode-escapes@7.24.1': - resolution: {integrity: sha512-RlkVIcWT4TLI96zM660S877E7beKlQw7Ig+wqkKBiWfj0zH5Q4h50q6er4wzZKRNSYpfo6ILJ+hrJAGSX2qcNw==} + '@babel/plugin-transform-unicode-escapes@7.25.9': + resolution: {integrity: sha512-s5EDrE6bW97LtxOcGj1Khcx5AaXwiMmi4toFWRDP9/y0Woo6pXC+iyPu/KuhKtfSrNFd7jJB+/fkOtZy6aIC6Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-unicode-property-regex@7.24.1': - resolution: {integrity: sha512-Ss4VvlfYV5huWApFsF8/Sq0oXnGO+jB+rijFEFugTd3cwSObUSnUi88djgR5528Csl0uKlrI331kRqe56Ov2Ng==} + '@babel/plugin-transform-unicode-property-regex@7.25.9': + resolution: {integrity: sha512-Jt2d8Ga+QwRluxRQ307Vlxa6dMrYEMZCgGxoPR8V52rxPyldHu3hdlHspxaqYmE7oID5+kB+UKUB/eWS+DkkWg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-unicode-regex@7.24.1': - resolution: {integrity: sha512-2A/94wgZgxfTsiLaQ2E36XAOdcZmGAaEEgVmxQWwZXWkGhvoHbaqXcKnU8zny4ycpu3vNqg0L/PcCiYtHtA13g==} + '@babel/plugin-transform-unicode-regex@7.25.9': + resolution: {integrity: sha512-yoxstj7Rg9dlNn9UQxzk4fcNivwv4nUYz7fYXBaKxvw/lnmPuOm/ikoELygbYq68Bls3D/D+NBPHiLwZdZZ4HA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-unicode-sets-regex@7.24.1': - resolution: {integrity: sha512-fqj4WuzzS+ukpgerpAoOnMfQXwUHFxXUZUE84oL2Kao2N8uSlvcpnAidKASgsNgzZHBsHWvcm8s9FPWUhAb8fA==} + '@babel/plugin-transform-unicode-sets-regex@7.25.9': + resolution: {integrity: sha512-8BYqO3GeVNHtx69fdPshN3fnzUNLrWdHhk/icSwigksJGczKSizZ+Z6SBCxTs723Fr5VSNorTIK7a+R2tISvwQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/preset-env@7.24.4': - resolution: {integrity: sha512-7Kl6cSmYkak0FK/FXjSEnLJ1N9T/WA2RkMhu17gZ/dsxKJUuTYNIylahPTzqpLyJN4WhDif8X0XK1R8Wsguo/A==} + '@babel/preset-env@7.26.0': + resolution: {integrity: sha512-H84Fxq0CQJNdPFT2DrfnylZ3cf5K43rGfWK4LJGPpjKHiZlk0/RzwEus3PDDZZg+/Er7lCA03MVacueUuXdzfw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1025,43 +945,24 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 - '@babel/regjsgen@0.8.0': - resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==} - - '@babel/runtime@7.24.4': - resolution: {integrity: sha512-dkxf7+hn8mFBwKjs9bvBlArzLVxVbS8usaPUDd5p2a9JCL9tB8OaOVN1isD4+Xyk4ns89/xeOmbQvgdK7IIVdA==} - engines: {node: '>=6.9.0'} - '@babel/runtime@7.26.0': resolution: {integrity: sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==} engines: {node: '>=6.9.0'} - '@babel/template@7.24.0': - resolution: {integrity: sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==} - engines: {node: '>=6.9.0'} - '@babel/template@7.25.9': resolution: {integrity: sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==} engines: {node: '>=6.9.0'} - '@babel/traverse@7.24.1': - resolution: {integrity: sha512-xuU6o9m68KeqZbQuDt2TcKSxUw/mrsvavlEqQ1leZ/B+C9tk6E4sRWy97WaXgvq5E+nU3cXMxv3WKOCanVMCmQ==} - engines: {node: '>=6.9.0'} - '@babel/traverse@7.26.4': resolution: {integrity: sha512-fH+b7Y4p3yqvApJALCPJcwb0/XaOSgtK4pzV6WVjPR5GLFQBRI7pfoX2V2iM48NXvX07NUxxm1Vw98YjqTcU5w==} engines: {node: '>=6.9.0'} - '@babel/types@7.24.0': - resolution: {integrity: sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==} - engines: {node: '>=6.9.0'} - '@babel/types@7.26.3': resolution: {integrity: sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA==} engines: {node: '>=6.9.0'} - '@changesets/apply-release-plan@7.0.6': - resolution: {integrity: sha512-TKhVLtiwtQOgMAC0fCJfmv93faiViKSDqr8oMEqrnNs99gtSC1sZh/aEMS9a+dseU1ESZRCK+ofLgGY7o0fw/Q==} + '@changesets/apply-release-plan@7.0.7': + resolution: {integrity: sha512-qnPOcmmmnD0MfMg9DjU1/onORFyRpDXkMMl2IJg9mECY6RnxL3wN0TCCc92b2sXt1jt8DgjAUUsZYGUGTdYIXA==} '@changesets/assemble-release-plan@6.0.5': resolution: {integrity: sha512-IgvBWLNKZd6k4t72MBTBK3nkygi0j3t3zdC1zrfusYo0KpdsvnDjrMM9vPnTCLCMlfNs55jRL4gIMybxa64FCQ==} @@ -1072,12 +973,12 @@ packages: '@changesets/changelog-github@0.5.0': resolution: {integrity: sha512-zoeq2LJJVcPJcIotHRJEEA2qCqX0AQIeFE+L21L8sRLPVqDhSXY8ZWAt2sohtBpFZkBwu+LUwMSKRr2lMy3LJA==} - '@changesets/cli@2.27.10': - resolution: {integrity: sha512-PfeXjvs9OfQJV8QSFFHjwHX3QnUL9elPEQ47SgkiwzLgtKGyuikWjrdM+lO9MXzOE22FO9jEGkcs4b+B6D6X0Q==} + '@changesets/cli@2.27.11': + resolution: {integrity: sha512-1QislpE+nvJgSZZo9+Lj3Lno5pKBgN46dAV8IVxKJy9wX8AOrs9nn5pYVZuDpoxWJJCALmbfOsHkyxujgetQSg==} hasBin: true - '@changesets/config@3.0.4': - resolution: {integrity: sha512-+DiIwtEBpvvv1z30f8bbOsUQGuccnZl9KRKMM/LxUHuDu5oEjmN+bJQ1RIBKNJjfYMQn8RZzoPiX0UgPaLQyXw==} + '@changesets/config@3.0.5': + resolution: {integrity: sha512-QyXLSSd10GquX7hY0Mt4yQFMEeqnO5z/XLpbIr4PAkNNoQNKwDyiSrx4yd749WddusH1v3OSiA0NRAYmH/APpQ==} '@changesets/errors@0.2.0': resolution: {integrity: sha512-6BLOQUscTpZeGljvyQXlWOItQyU71kCdGz7Pi8H8zdw6BI0g3m43iL4xKUVPWtG+qrrL9DTjpdn8eYuCQSRpow==} @@ -1088,8 +989,8 @@ packages: '@changesets/get-github-info@0.6.0': resolution: {integrity: sha512-v/TSnFVXI8vzX9/w3DU2Ol+UlTZcu3m0kXTjTT4KlAdwSvwutcByYwyYn9hwerPWfPkT2JfpoX0KgvCEi8Q/SA==} - '@changesets/get-release-plan@4.0.5': - resolution: {integrity: sha512-E6wW7JoSMcctdVakut0UB76FrrN3KIeJSXvB+DHMFo99CnC3ZVnNYDCVNClMlqAhYGmLmAj77QfApaI3ca4Fkw==} + '@changesets/get-release-plan@4.0.6': + resolution: {integrity: sha512-FHRwBkY7Eili04Y5YMOZb0ezQzKikTka4wL753vfUA5COSebt7KThqiuCN9BewE4/qFGgF/5t3AuzXx1/UAY4w==} '@changesets/get-version-range-type@0.4.0': resolution: {integrity: sha512-hwawtob9DryoGTpixy1D3ZXbGgJu1Rhr+ySH2PvTLHvkZuQ7sRT4oQwMh0hbqZH1weAooedEjRsbrWcGLCeyVQ==} @@ -1127,9 +1028,21 @@ packages: '@emmetio/css-abbreviation@2.1.8': resolution: {integrity: sha512-s9yjhJ6saOO/uk1V74eifykk2CBYi01STTK3WlXWGOepyKa23ymJ053+DNQjpFcy1ingpaO7AxCcwLvHFY9tuw==} + '@emmetio/css-parser@0.4.0': + resolution: {integrity: sha512-z7wkxRSZgrQHXVzObGkXG+Vmj3uRlpM11oCZ9pbaz0nFejvCDmAiNDpY75+wgXOcffKpj4rzGtwGaZxfJKsJxw==} + + '@emmetio/html-matcher@1.3.0': + resolution: {integrity: sha512-NTbsvppE5eVyBMuyGfVu2CRrLvo7J4YHb6t9sBFLyY03WYhXET37qA4zOYUjBWFCRHO7pS1B9khERtY0f5JXPQ==} + '@emmetio/scanner@1.0.4': resolution: {integrity: sha512-IqRuJtQff7YHHBk4G8YZ45uB9BaAGcwQeVzgj/zj8/UdOhtQpEIupUhSk8dys6spFIWVZVeK20CzGEnqR5SbqA==} + '@emmetio/stream-reader-utils@0.1.0': + resolution: {integrity: sha512-ZsZ2I9Vzso3Ho/pjZFsmmZ++FWeEd/txqybHTm4OgaZzdS8V9V/YYWQwg5TC38Z7uLWUV1vavpLLbjJtKubR1A==} + + '@emmetio/stream-reader@2.2.0': + resolution: {integrity: sha512-fXVXEyFA5Yv3M3n8sUGT7+fvecGrZP4k6FnWWMSZVQf69kAq0LLpaBQLGcPR30m3zMmKYhECP4k/ZkzvhEW5kw==} + '@emnapi/runtime@1.3.1': resolution: {integrity: sha512-kEBmG8KyqtxJZv+ygbEim+KCGtIq1fC22Ms3S4ziXmYKm8uyoLX0MHONVKwp+9opg390VaKRNt4a7A9NwmpNhw==} @@ -1151,6 +1064,12 @@ packages: cpu: [ppc64] os: [aix] + '@esbuild/aix-ppc64@0.24.2': + resolution: {integrity: sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + '@esbuild/android-arm64@0.21.5': resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} engines: {node: '>=12'} @@ -1169,6 +1088,12 @@ packages: cpu: [arm64] os: [android] + '@esbuild/android-arm64@0.24.2': + resolution: {integrity: sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + '@esbuild/android-arm@0.21.5': resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} engines: {node: '>=12'} @@ -1187,6 +1112,12 @@ packages: cpu: [arm] os: [android] + '@esbuild/android-arm@0.24.2': + resolution: {integrity: sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + '@esbuild/android-x64@0.21.5': resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} engines: {node: '>=12'} @@ -1205,6 +1136,12 @@ packages: cpu: [x64] os: [android] + '@esbuild/android-x64@0.24.2': + resolution: {integrity: sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + '@esbuild/darwin-arm64@0.21.5': resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} engines: {node: '>=12'} @@ -1223,6 +1160,12 @@ packages: cpu: [arm64] os: [darwin] + '@esbuild/darwin-arm64@0.24.2': + resolution: {integrity: sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + '@esbuild/darwin-x64@0.21.5': resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} engines: {node: '>=12'} @@ -1241,6 +1184,12 @@ packages: cpu: [x64] os: [darwin] + '@esbuild/darwin-x64@0.24.2': + resolution: {integrity: sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + '@esbuild/freebsd-arm64@0.21.5': resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} engines: {node: '>=12'} @@ -1259,6 +1208,12 @@ packages: cpu: [arm64] os: [freebsd] + '@esbuild/freebsd-arm64@0.24.2': + resolution: {integrity: sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + '@esbuild/freebsd-x64@0.21.5': resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} engines: {node: '>=12'} @@ -1277,6 +1232,12 @@ packages: cpu: [x64] os: [freebsd] + '@esbuild/freebsd-x64@0.24.2': + resolution: {integrity: sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + '@esbuild/linux-arm64@0.21.5': resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} engines: {node: '>=12'} @@ -1295,6 +1256,12 @@ packages: cpu: [arm64] os: [linux] + '@esbuild/linux-arm64@0.24.2': + resolution: {integrity: sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + '@esbuild/linux-arm@0.21.5': resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} engines: {node: '>=12'} @@ -1313,6 +1280,12 @@ packages: cpu: [arm] os: [linux] + '@esbuild/linux-arm@0.24.2': + resolution: {integrity: sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + '@esbuild/linux-ia32@0.21.5': resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} engines: {node: '>=12'} @@ -1331,6 +1304,12 @@ packages: cpu: [ia32] os: [linux] + '@esbuild/linux-ia32@0.24.2': + resolution: {integrity: sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + '@esbuild/linux-loong64@0.21.5': resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} engines: {node: '>=12'} @@ -1349,6 +1328,12 @@ packages: cpu: [loong64] os: [linux] + '@esbuild/linux-loong64@0.24.2': + resolution: {integrity: sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + '@esbuild/linux-mips64el@0.21.5': resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} engines: {node: '>=12'} @@ -1367,6 +1352,12 @@ packages: cpu: [mips64el] os: [linux] + '@esbuild/linux-mips64el@0.24.2': + resolution: {integrity: sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + '@esbuild/linux-ppc64@0.21.5': resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} engines: {node: '>=12'} @@ -1385,6 +1376,12 @@ packages: cpu: [ppc64] os: [linux] + '@esbuild/linux-ppc64@0.24.2': + resolution: {integrity: sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + '@esbuild/linux-riscv64@0.21.5': resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} engines: {node: '>=12'} @@ -1403,6 +1400,12 @@ packages: cpu: [riscv64] os: [linux] + '@esbuild/linux-riscv64@0.24.2': + resolution: {integrity: sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + '@esbuild/linux-s390x@0.21.5': resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} engines: {node: '>=12'} @@ -1421,8 +1424,14 @@ packages: cpu: [s390x] os: [linux] - '@esbuild/linux-x64@0.21.5': - resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} + '@esbuild/linux-s390x@0.24.2': + resolution: {integrity: sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.21.5': + resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} engines: {node: '>=12'} cpu: [x64] os: [linux] @@ -1439,6 +1448,18 @@ packages: cpu: [x64] os: [linux] + '@esbuild/linux-x64@0.24.2': + resolution: {integrity: sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-arm64@0.24.2': + resolution: {integrity: sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + '@esbuild/netbsd-x64@0.21.5': resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} engines: {node: '>=12'} @@ -1457,6 +1478,12 @@ packages: cpu: [x64] os: [netbsd] + '@esbuild/netbsd-x64@0.24.2': + resolution: {integrity: sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + '@esbuild/openbsd-arm64@0.23.1': resolution: {integrity: sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==} engines: {node: '>=18'} @@ -1469,6 +1496,12 @@ packages: cpu: [arm64] os: [openbsd] + '@esbuild/openbsd-arm64@0.24.2': + resolution: {integrity: sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + '@esbuild/openbsd-x64@0.21.5': resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} engines: {node: '>=12'} @@ -1487,6 +1520,12 @@ packages: cpu: [x64] os: [openbsd] + '@esbuild/openbsd-x64@0.24.2': + resolution: {integrity: sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + '@esbuild/sunos-x64@0.21.5': resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} engines: {node: '>=12'} @@ -1505,6 +1544,12 @@ packages: cpu: [x64] os: [sunos] + '@esbuild/sunos-x64@0.24.2': + resolution: {integrity: sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + '@esbuild/win32-arm64@0.21.5': resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} engines: {node: '>=12'} @@ -1523,6 +1568,12 @@ packages: cpu: [arm64] os: [win32] + '@esbuild/win32-arm64@0.24.2': + resolution: {integrity: sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + '@esbuild/win32-ia32@0.21.5': resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} engines: {node: '>=12'} @@ -1541,6 +1592,12 @@ packages: cpu: [ia32] os: [win32] + '@esbuild/win32-ia32@0.24.2': + resolution: {integrity: sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + '@esbuild/win32-x64@0.21.5': resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} engines: {node: '>=12'} @@ -1559,20 +1616,26 @@ packages: cpu: [x64] os: [win32] + '@esbuild/win32-x64@0.24.2': + resolution: {integrity: sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + '@fontsource/jetbrains-mono@5.1.1': resolution: {integrity: sha512-5rwvmdQQpXev4LlBX1P+7h2dguu6iwW/9Npjde4+DEq+HgpVJI/7QY8DI1NVVFdvLtXZNP+vO2L/5BQED6FUhA==} '@fontsource/plus-jakarta-sans@5.1.0': resolution: {integrity: sha512-o6qReKG0r7+YyNzMe0CbIC4u8nsLwUHRe3btQU+cYI/UH8+Cbvv278WICqEuj7zsBRu1eiuBgvBG17+cU+PJIw==} - '@iconify/json@2.2.280': - resolution: {integrity: sha512-3N1lTn6XBPQ+wMTiYkBAx+GE4yBD8B3l9/OGzs2sEy4FDsYoq7lLoiSo7S0XA6NN/dK9rv6bup8NPCIwIkOPOw==} + '@iconify/json@2.2.287': + resolution: {integrity: sha512-JMph4En1aR9acnmlIl0c8ZAQy47G7pmHw/AWpTWAKAzqlOVubCxjWI9b1KzDr/BxF/f3BjXtnFBDz5eKWg9FSA==} '@iconify/types@2.0.0': resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} - '@iconify/utils@2.2.0': - resolution: {integrity: sha512-9A5eZQV9eKlNCXlI/SgYsGRS7YmGmB1oAsRpNVIYBmIzGJRgH+hfG+lo4069s+GFWFNnBAtDg10c53vQZBLfnA==} + '@iconify/utils@2.2.1': + resolution: {integrity: sha512-0/7J7hk4PqXmxo5PDBDxmnecw5PxklZJfNjIVG9FM0mEfVrvfudS22rYWsqVk6gR3UJ/mSYS90X4R3znXnqfNA==} '@img/sharp-darwin-arm64@0.33.5': resolution: {integrity: sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==} @@ -1687,8 +1750,8 @@ packages: resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - '@jridgewell/gen-mapping@0.3.5': - resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} + '@jridgewell/gen-mapping@0.3.8': + resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} engines: {node: '>=6.0.0'} '@jridgewell/resolve-uri@3.1.2': @@ -1708,6 +1771,14 @@ packages: '@jridgewell/trace-mapping@0.3.25': resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + '@kitql/helpers@0.8.10': + resolution: {integrity: sha512-r9m0eQyjy3Z2sdeXA8wRGl2tgKtZ9puPuZ3vm9Cv3WMMWVmbKVzUJvF+4UucsHzT9xECFbO9lcQu7lIb774PPQ==} + engines: {node: ^16.14 || >=18} + + '@kitql/internals@0.10.0': + resolution: {integrity: sha512-qInqbwFkJpoyHg3zAzZhrXnMEpQQY133LjCbOCior8OOnuaZkGju3M7wIZTkYNAUAX7RvNvtYnCOL6gq4Xs90Q==} + engines: {node: ^16.14 || >=18} + '@manypkg/find-root@1.1.0': resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} @@ -1792,6 +1863,12 @@ packages: cpu: [x64] os: [linux] + '@parcel/watcher-wasm@2.5.0': + resolution: {integrity: sha512-Z4ouuR8Pfggk1EYYbTaIoxc+Yv4o7cGQnH0Xy8+pQ+HbiW+ZnwhcD2LPf/prfq1nIWpAxjOkQ8uSMFWMtBLiVQ==} + engines: {node: '>= 10.0.0'} + bundledDependencies: + - napi-wasm + '@parcel/watcher-win32-arm64@2.5.0': resolution: {integrity: sha512-twtft1d+JRNkM5YbmexfcH/N4znDtjgysFaV9zvZmmJezQsKpkfLYJ+JFV3uygugK6AtIM2oADPkB2AdhBrNig==} engines: {node: '>= 10.0.0'} @@ -1818,6 +1895,11 @@ packages: resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} + '@playwright/test@1.49.1': + resolution: {integrity: sha512-Ky+BVzPz8pL6PQxHqNRW1k3mIyv933LML7HktS8uik0bUXNCdPhoS/kLihiO1tMf/egaJb4IutXd7UywvXEW+g==} + engines: {node: '>=18'} + hasBin: true + '@polka/url@1.0.0-next.28': resolution: {integrity: sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw==} @@ -1849,8 +1931,8 @@ packages: peerDependencies: rollup: ^1.20.0||^2.0.0 - '@rollup/pluginutils@5.1.3': - resolution: {integrity: sha512-Pnsb6f32CD2W3uCaLZIzDmeFyQ2b8UWMFI7xtwUezpcGBDVDW6y9XgAWIlARiGAo6eNF5FK5aQTr0LFyNyqq5A==} + '@rollup/pluginutils@5.1.4': + resolution: {integrity: sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==} engines: {node: '>=14.0.0'} peerDependencies: rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 @@ -1858,115 +1940,115 @@ packages: rollup: optional: true - '@rollup/rollup-android-arm-eabi@4.28.1': - resolution: {integrity: sha512-2aZp8AES04KI2dy3Ss6/MDjXbwBzj+i0GqKtWXgw2/Ma6E4jJvujryO6gJAghIRVz7Vwr9Gtl/8na3nDUKpraQ==} + '@rollup/rollup-android-arm-eabi@4.29.1': + resolution: {integrity: sha512-ssKhA8RNltTZLpG6/QNkCSge+7mBQGUqJRisZ2MDQcEGaK93QESEgWK2iOpIDZ7k9zPVkG5AS3ksvD5ZWxmItw==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.28.1': - resolution: {integrity: sha512-EbkK285O+1YMrg57xVA+Dp0tDBRB93/BZKph9XhMjezf6F4TpYjaUSuPt5J0fZXlSag0LmZAsTmdGGqPp4pQFA==} + '@rollup/rollup-android-arm64@4.29.1': + resolution: {integrity: sha512-CaRfrV0cd+NIIcVVN/jx+hVLN+VRqnuzLRmfmlzpOzB87ajixsN/+9L5xNmkaUUvEbI5BmIKS+XTwXsHEb65Ew==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.28.1': - resolution: {integrity: sha512-prduvrMKU6NzMq6nxzQw445zXgaDBbMQvmKSJaxpaZ5R1QDM8w+eGxo6Y/jhT/cLoCvnZI42oEqf9KQNYz1fqQ==} + '@rollup/rollup-darwin-arm64@4.29.1': + resolution: {integrity: sha512-2ORr7T31Y0Mnk6qNuwtyNmy14MunTAMx06VAPI6/Ju52W10zk1i7i5U3vlDRWjhOI5quBcrvhkCHyF76bI7kEw==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.28.1': - resolution: {integrity: sha512-WsvbOunsUk0wccO/TV4o7IKgloJ942hVFK1CLatwv6TJspcCZb9umQkPdvB7FihmdxgaKR5JyxDjWpCOp4uZlQ==} + '@rollup/rollup-darwin-x64@4.29.1': + resolution: {integrity: sha512-j/Ej1oanzPjmN0tirRd5K2/nncAhS9W6ICzgxV+9Y5ZsP0hiGhHJXZ2JQ53iSSjj8m6cRY6oB1GMzNn2EUt6Ng==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.28.1': - resolution: {integrity: sha512-HTDPdY1caUcU4qK23FeeGxCdJF64cKkqajU0iBnTVxS8F7H/7BewvYoG+va1KPSL63kQ1PGNyiwKOfReavzvNA==} + '@rollup/rollup-freebsd-arm64@4.29.1': + resolution: {integrity: sha512-91C//G6Dm/cv724tpt7nTyP+JdN12iqeXGFM1SqnljCmi5yTXriH7B1r8AD9dAZByHpKAumqP1Qy2vVNIdLZqw==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.28.1': - resolution: {integrity: sha512-m/uYasxkUevcFTeRSM9TeLyPe2QDuqtjkeoTpP9SW0XxUWfcYrGDMkO/m2tTw+4NMAF9P2fU3Mw4ahNvo7QmsQ==} + '@rollup/rollup-freebsd-x64@4.29.1': + resolution: {integrity: sha512-hEioiEQ9Dec2nIRoeHUP6hr1PSkXzQaCUyqBDQ9I9ik4gCXQZjJMIVzoNLBRGet+hIUb3CISMh9KXuCcWVW/8w==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.28.1': - resolution: {integrity: sha512-QAg11ZIt6mcmzpNE6JZBpKfJaKkqTm1A9+y9O+frdZJEuhQxiugM05gnCWiANHj4RmbgeVJpTdmKRmH/a+0QbA==} + '@rollup/rollup-linux-arm-gnueabihf@4.29.1': + resolution: {integrity: sha512-Py5vFd5HWYN9zxBv3WMrLAXY3yYJ6Q/aVERoeUFwiDGiMOWsMs7FokXihSOaT/PMWUty/Pj60XDQndK3eAfE6A==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.28.1': - resolution: {integrity: sha512-dRP9PEBfolq1dmMcFqbEPSd9VlRuVWEGSmbxVEfiq2cs2jlZAl0YNxFzAQS2OrQmsLBLAATDMb3Z6MFv5vOcXg==} + '@rollup/rollup-linux-arm-musleabihf@4.29.1': + resolution: {integrity: sha512-RiWpGgbayf7LUcuSNIbahr0ys2YnEERD4gYdISA06wa0i8RALrnzflh9Wxii7zQJEB2/Eh74dX4y/sHKLWp5uQ==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.28.1': - resolution: {integrity: sha512-uGr8khxO+CKT4XU8ZUH1TTEUtlktK6Kgtv0+6bIFSeiSlnGJHG1tSFSjm41uQ9sAO/5ULx9mWOz70jYLyv1QkA==} + '@rollup/rollup-linux-arm64-gnu@4.29.1': + resolution: {integrity: sha512-Z80O+taYxTQITWMjm/YqNoe9d10OX6kDh8X5/rFCMuPqsKsSyDilvfg+vd3iXIqtfmp+cnfL1UrYirkaF8SBZA==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.28.1': - resolution: {integrity: sha512-QF54q8MYGAqMLrX2t7tNpi01nvq5RI59UBNx+3+37zoKX5KViPo/gk2QLhsuqok05sSCRluj0D00LzCwBikb0A==} + '@rollup/rollup-linux-arm64-musl@4.29.1': + resolution: {integrity: sha512-fOHRtF9gahwJk3QVp01a/GqS4hBEZCV1oKglVVq13kcK3NeVlS4BwIFzOHDbmKzt3i0OuHG4zfRP0YoG5OF/rA==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-loongarch64-gnu@4.28.1': - resolution: {integrity: sha512-vPul4uodvWvLhRco2w0GcyZcdyBfpfDRgNKU+p35AWEbJ/HPs1tOUrkSueVbBS0RQHAf/A+nNtDpvw95PeVKOA==} + '@rollup/rollup-linux-loongarch64-gnu@4.29.1': + resolution: {integrity: sha512-5a7q3tnlbcg0OodyxcAdrrCxFi0DgXJSoOuidFUzHZ2GixZXQs6Tc3CHmlvqKAmOs5eRde+JJxeIf9DonkmYkw==} cpu: [loong64] os: [linux] - '@rollup/rollup-linux-powerpc64le-gnu@4.28.1': - resolution: {integrity: sha512-pTnTdBuC2+pt1Rmm2SV7JWRqzhYpEILML4PKODqLz+C7Ou2apEV52h19CR7es+u04KlqplggmN9sqZlekg3R1A==} + '@rollup/rollup-linux-powerpc64le-gnu@4.29.1': + resolution: {integrity: sha512-9b4Mg5Yfz6mRnlSPIdROcfw1BU22FQxmfjlp/CShWwO3LilKQuMISMTtAu/bxmmrE6A902W2cZJuzx8+gJ8e9w==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.28.1': - resolution: {integrity: sha512-vWXy1Nfg7TPBSuAncfInmAI/WZDd5vOklyLJDdIRKABcZWojNDY0NJwruY2AcnCLnRJKSaBgf/GiJfauu8cQZA==} + '@rollup/rollup-linux-riscv64-gnu@4.29.1': + resolution: {integrity: sha512-G5pn0NChlbRM8OJWpJFMX4/i8OEU538uiSv0P6roZcbpe/WfhEO+AT8SHVKfp8qhDQzaz7Q+1/ixMy7hBRidnQ==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.28.1': - resolution: {integrity: sha512-/yqC2Y53oZjb0yz8PVuGOQQNOTwxcizudunl/tFs1aLvObTclTwZ0JhXF2XcPT/zuaymemCDSuuUPXJJyqeDOg==} + '@rollup/rollup-linux-s390x-gnu@4.29.1': + resolution: {integrity: sha512-WM9lIkNdkhVwiArmLxFXpWndFGuOka4oJOZh8EP3Vb8q5lzdSCBuhjavJsw68Q9AKDGeOOIHYzYm4ZFvmWez5g==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.28.1': - resolution: {integrity: sha512-fzgeABz7rrAlKYB0y2kSEiURrI0691CSL0+KXwKwhxvj92VULEDQLpBYLHpF49MSiPG4sq5CK3qHMnb9tlCjBw==} + '@rollup/rollup-linux-x64-gnu@4.29.1': + resolution: {integrity: sha512-87xYCwb0cPGZFoGiErT1eDcssByaLX4fc0z2nRM6eMtV9njAfEE6OW3UniAoDhX4Iq5xQVpE6qO9aJbCFumKYQ==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.28.1': - resolution: {integrity: sha512-xQTDVzSGiMlSshpJCtudbWyRfLaNiVPXt1WgdWTwWz9n0U12cI2ZVtWe/Jgwyv/6wjL7b66uu61Vg0POWVfz4g==} + '@rollup/rollup-linux-x64-musl@4.29.1': + resolution: {integrity: sha512-xufkSNppNOdVRCEC4WKvlR1FBDyqCSCpQeMMgv9ZyXqqtKBfkw1yfGMTUTs9Qsl6WQbJnsGboWCp7pJGkeMhKA==} cpu: [x64] os: [linux] - '@rollup/rollup-win32-arm64-msvc@4.28.1': - resolution: {integrity: sha512-wSXmDRVupJstFP7elGMgv+2HqXelQhuNf+IS4V+nUpNVi/GUiBgDmfwD0UGN3pcAnWsgKG3I52wMOBnk1VHr/A==} + '@rollup/rollup-win32-arm64-msvc@4.29.1': + resolution: {integrity: sha512-F2OiJ42m77lSkizZQLuC+jiZ2cgueWQL5YC9tjo3AgaEw+KJmVxHGSyQfDUoYR9cci0lAywv2Clmckzulcq6ig==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.28.1': - resolution: {integrity: sha512-ZkyTJ/9vkgrE/Rk9vhMXhf8l9D+eAhbAVbsGsXKy2ohmJaWg0LPQLnIxRdRp/bKyr8tXuPlXhIoGlEB5XpJnGA==} + '@rollup/rollup-win32-ia32-msvc@4.29.1': + resolution: {integrity: sha512-rYRe5S0FcjlOBZQHgbTKNrqxCBUmgDJem/VQTCcTnA2KCabYSWQDrytOzX7avb79cAAweNmMUb/Zw18RNd4mng==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.28.1': - resolution: {integrity: sha512-ZvK2jBafvttJjoIdKm/Q/Bh7IJ1Ose9IBOwpOXcOvW3ikGTQGmKDgxTC6oCAzW6PynbkKP8+um1du81XJHZ0JA==} + '@rollup/rollup-win32-x64-msvc@4.29.1': + resolution: {integrity: sha512-+10CMg9vt1MoHj6x1pxyjPSMjHTIlqs8/tBztXvPAx24SKs9jwVnKqHJumlH/IzhaPUaj3T6T6wfZr8okdXaIg==} cpu: [x64] os: [win32] - '@shikijs/core@1.24.0': - resolution: {integrity: sha512-6pvdH0KoahMzr6689yh0QJ3rCgF4j1XsXRHNEeEN6M4xJTfQ6QPWrmHzIddotg+xPJUPEPzYzYCKzpYyhTI6Gw==} + '@shikijs/core@1.24.3': + resolution: {integrity: sha512-VRcf4GYUIkxIchGM9DrapRcxtgojg4IWKUtX5EtW+4PJiGzF2xQqZSv27PJt+WLc18KT3CNLpNWow9JYV5n+Rg==} - '@shikijs/engine-javascript@1.24.0': - resolution: {integrity: sha512-ZA6sCeSsF3Mnlxxr+4wGEJ9Tto4RHmfIS7ox8KIAbH0MTVUkw3roHPHZN+LlJMOHJJOVupe6tvuAzRpN8qK1vA==} + '@shikijs/engine-javascript@1.24.3': + resolution: {integrity: sha512-De8tNLvYjeK6V0Gb47jIH2M+OKkw+lWnSV1j3HVDFMlNIglmVcTMG2fASc29W0zuFbfEEwKjO8Fe4KYSO6Ce3w==} - '@shikijs/engine-oniguruma@1.24.0': - resolution: {integrity: sha512-Eua0qNOL73Y82lGA4GF5P+G2+VXX9XnuUxkiUuwcxQPH4wom+tE39kZpBFXfUuwNYxHSkrSxpB1p4kyRW0moSg==} + '@shikijs/engine-oniguruma@1.24.3': + resolution: {integrity: sha512-iNnx950gs/5Nk+zrp1LuF+S+L7SKEhn8k9eXgFYPGhVshKppsYwRmW8tpmAMvILIMSDfrgqZ0w+3xWVQB//1Xw==} - '@shikijs/types@1.24.0': - resolution: {integrity: sha512-aptbEuq1Pk88DMlCe+FzXNnBZ17LCiLIGWAeCWhoFDzia5Q5Krx3DgnULLiouSdd6+LUM39XwXGppqYE0Ghtug==} + '@shikijs/types@1.24.3': + resolution: {integrity: sha512-FPMrJ69MNxhRtldRk69CghvaGlbbN3pKRuvko0zvbfa2dXp4pAngByToqS5OY5jvN8D7LKR4RJE8UvzlCOuViw==} - '@shikijs/vscode-textmate@9.3.0': - resolution: {integrity: sha512-jn7/7ky30idSkd/O5yDBfAnVt+JJpepofP/POZ1iMOxK59cOfqIgg/Dj0eFsjOTMw+4ycJN0uhZH/Eb0bs/EUA==} + '@shikijs/vscode-textmate@9.3.1': + resolution: {integrity: sha512-79QfK1393x9Ho60QFyLti+QfdJzRQCVLFb97kOIV7Eo9vQU/roINgk7m24uv0a7AUvN//RDH36FLjjK48v0s9g==} '@sinclair/typebox@0.27.8': resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} @@ -1974,22 +2056,19 @@ packages: '@surma/rollup-plugin-off-main-thread@2.2.3': resolution: {integrity: sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ==} - '@sveltejs/kit@2.0.2': - resolution: {integrity: sha512-xFpnLxVQ4KgCbj4Cj2zCFUcyfAoO87nn4nf3XcGJ7ZtOwy20tZ91vXWrtyuum8hakJWVwdNYyGXG9aBoIEYpFQ==} - engines: {node: '>=18.13'} - hasBin: true + '@sveltejs/adapter-auto@3.3.1': + resolution: {integrity: sha512-5Sc7WAxYdL6q9j/+D0jJKjGREGlfIevDyHSQ2eNETHcB1TKlQWHcAo8AS8H1QdjNvSXpvOwNjykDUHPEAyGgdQ==} peerDependencies: - '@sveltejs/vite-plugin-svelte': ^3.0.0 - svelte: ^4.0.0 || ^5.0.0-next.0 - vite: ^5.0.3 + '@sveltejs/kit': ^2.0.0 - '@sveltejs/vite-plugin-svelte-inspector@2.1.0': - resolution: {integrity: sha512-9QX28IymvBlSCqsCll5t0kQVxipsfhFFL+L2t3nTWfXnddYwxBuAEtTtlaVQpRz9c37BhJjltSeY4AJSC03SSg==} - engines: {node: ^18.0.0 || >=20} + '@sveltejs/kit@2.14.0': + resolution: {integrity: sha512-lqLmFb9WTegpj+83cTzvXL6S19UuSf8LEhF/8Mmjg53qqLVMmJt4RcrzOZTzK+o8lgpuXTPYPyKB+RUTNd9JjQ==} + engines: {node: '>=18.13'} + hasBin: true peerDependencies: - '@sveltejs/vite-plugin-svelte': ^3.0.0 + '@sveltejs/vite-plugin-svelte': ^3.0.0 || ^4.0.0-next.1 || ^5.0.0 svelte: ^4.0.0 || ^5.0.0-next.0 - vite: ^5.0.0 + vite: ^6.0 '@sveltejs/vite-plugin-svelte-inspector@4.0.1': resolution: {integrity: sha512-J/Nmb2Q2y7mck2hyCX4ckVHcR5tu2J+MtBEQqpDrrgELZ2uvraQcK/ioCV61AqkdXFgriksOKIceDcQmqnGhVw==} @@ -1997,21 +2076,14 @@ packages: peerDependencies: '@sveltejs/vite-plugin-svelte': ^5.0.0 svelte: ^5.0.0 - vite: ^6.0.0 - - '@sveltejs/vite-plugin-svelte@3.1.0': - resolution: {integrity: sha512-sY6ncCvg+O3njnzbZexcVtUqOBE3iYmQPJ9y+yXSkOwG576QI/xJrBnQSRXFLGwJNBa0T78JEKg5cIR0WOAuUw==} - engines: {node: ^18.0.0 || >=20} - peerDependencies: - svelte: ^4.0.0 || ^5.0.0-next.0 - vite: ^5.0.0 + vite: ^6.0 - '@sveltejs/vite-plugin-svelte@5.0.1': - resolution: {integrity: sha512-D5l5+STmywGoLST07T9mrqqFFU+xgv5fqyTWM+VbxTvQ6jujNn4h3lQNCvlwVYs4Erov8i0K5Rwr3LQtmBYmBw==} + '@sveltejs/vite-plugin-svelte@5.0.2': + resolution: {integrity: sha512-GElAxQMlznx1pRdodtkmiyBZcjlaJntJ8APa2hBhnbUAJqKAFGdmwjRPJhh+2DMxwARRLBzQIs/iZ5EbR4X/og==} engines: {node: ^18.0.0 || ^20.0.0 || >=22} peerDependencies: svelte: ^5.0.0 - vite: ^6.0.0 + vite: ^6.0 '@testing-library/dom@9.3.4': resolution: {integrity: sha512-FlS4ZWlp97iiNWig0Muq8p+3rVDjRiYE+YKGbAqXOu9nwJFFOdL00kFpz42M+4huzYi86vAK1sOOfyOG45muIQ==} @@ -2042,8 +2114,8 @@ packages: '@types/babel__template@7.4.4': resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} - '@types/babel__traverse@7.20.5': - resolution: {integrity: sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ==} + '@types/babel__traverse@7.20.6': + resolution: {integrity: sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==} '@types/cookie@0.6.0': resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==} @@ -2057,17 +2129,14 @@ packages: '@types/estree@0.0.39': resolution: {integrity: sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==} - '@types/estree@1.0.5': - resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} - '@types/estree@1.0.6': resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} '@types/hast@3.0.4': resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} - '@types/mdast@4.0.3': - resolution: {integrity: sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==} + '@types/mdast@4.0.4': + resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} '@types/mdx@2.0.13': resolution: {integrity: sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==} @@ -2084,20 +2153,27 @@ packages: '@types/node@17.0.45': resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==} - '@types/node@20.12.7': - resolution: {integrity: sha512-wq0cICSkRLVaf3UGLMGItu/PtdY7oaXaI/RVU+xliKVOtRna3PRY57ZDfztpDL0n11vfymMUnXv8QwYCO7L1wg==} + '@types/node@22.10.2': + resolution: {integrity: sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ==} '@types/prop-types@15.7.14': resolution: {integrity: sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ==} - '@types/pug@2.0.10': - resolution: {integrity: sha512-Sk/uYFOBAB7mb74XcpizmH0KOR2Pv3D2Hmrh1Dmy5BmK3MpdSa5kqZcg6EKBdklU0bFXX9gCfzvpnyUehrPIuA==} + '@types/react-dom@18.3.5': + resolution: {integrity: sha512-P4t6saawp+b/dFrUr2cvkVsfvPguwsxtH6dNIYRllMsefqFzkZk5UIjzyDOv5g1dXIPdG4Sp1yCR4Z6RCUsG/Q==} + peerDependencies: + '@types/react': ^18.0.0 + + '@types/react-dom@19.0.2': + resolution: {integrity: sha512-c1s+7TKFaDRRxr1TxccIX2u7sfCnc3RxkVyBIUA2lCpyqCF+QoAwQ/CBg7bsMdVwP120HEH143VQezKtef5nCg==} + peerDependencies: + '@types/react': ^19.0.0 - '@types/react-dom@18.3.2': - resolution: {integrity: sha512-Fqp+rcvem9wEnGr3RY8dYNvSQ8PoLqjZ9HLgaPUOjJJD120uDyOxOjc/39M4Kddp9JQCxpGQbnhVQF0C0ncYVg==} + '@types/react@18.3.18': + resolution: {integrity: sha512-t4yC+vtgnkYjNSKlFx1jkAhH8LgTo2N/7Qvi83kdEaUtMDiwpbLAktKDaAMlRcJ5eSxZkH74eEGt1ky31d7kfQ==} - '@types/react@18.3.14': - resolution: {integrity: sha512-NzahNKvjNhVjuPBQ+2G7WlxstQ+47kXZNHlUvFakDViuIEfGY926GqhMueQFZ7woG+sPiQKlF36XfrIUVSUfFg==} + '@types/react@19.0.2': + resolution: {integrity: sha512-USU8ZI/xyKJwFTpjSVIrSeHBVAGagkHQKPNbxeWwql/vDmnTIBgx+TJnhFnj1NXgz8XfprU0egV2dROLGpsBEg==} '@types/resolve@1.17.1': resolution: {integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==} @@ -2111,26 +2187,26 @@ packages: '@types/trusted-types@2.0.7': resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} - '@types/unist@2.0.10': - resolution: {integrity: sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==} + '@types/unist@2.0.11': + resolution: {integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==} - '@types/unist@3.0.2': - resolution: {integrity: sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==} + '@types/unist@3.0.3': + resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} - '@ungap/structured-clone@1.2.0': - resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} + '@ungap/structured-clone@1.2.1': + resolution: {integrity: sha512-fEzPV3hSkSMltkw152tJKNARhOupqbH96MZWyRjNaYZOMIzbrTeQDG+MTc6Mr2pgzFQzFxAfmhGDNP5QK++2ZA==} '@vitejs/plugin-react@4.3.4': resolution: {integrity: sha512-SCCPBJtYLdE8PX/7ZQAs1QAZ8Jqwih+0VBLum1EGqmCCQal+MIUqLCzj3ZUy8ufbC0cAM4LRlSTm7IQJwWT4ug==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: - vite: ^4.2.0 || ^5.0.0 || ^6.0.0 + vite: ^6.0 '@vitejs/plugin-vue@4.6.2': resolution: {integrity: sha512-kqf7SGFoG+80aZG6Pf+gsZIVvGSCKE98JbiWqcCV9cThtg91Jav0yvYFC9Zb+jKetNGF6ZKeoaxgZfND21fWKw==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: - vite: ^4.0.0 || ^5.0.0 + vite: ^6.0 vue: ^3.2.25 '@vitest/expect@1.6.0': @@ -2148,43 +2224,37 @@ packages: '@vitest/utils@1.6.0': resolution: {integrity: sha512-21cPiuGMoMZwiOHa2i4LXkMkMkCGzA+MVFV70jRwHo95dL4x/ts5GZhML1QWuy7yfp3WzK3lRvZi3JnXTYqrBw==} - '@volar/kit@2.1.6': - resolution: {integrity: sha512-dSuXChDGM0nSG/0fxqlNfadjpAeeo1P1SJPBQ+pDf8H1XrqeJq5gIhxRTEbiS+dyNIG69ATq1CArkbCif+oxJw==} + '@volar/kit@2.4.11': + resolution: {integrity: sha512-ups5RKbMzMCr6RKafcCqDRnJhJDNWqo2vfekwOAj6psZ15v5TlcQFQAyokQJ3wZxVkzxrQM+TqTRDENfQEXpmA==} peerDependencies: typescript: '*' '@volar/language-core@1.11.1': resolution: {integrity: sha512-dOcNn3i9GgZAcJt43wuaEykSluAuOkQgzni1cuxLxTV0nJKanQztp7FxyswdRILaKH+P2XZMPRp2S4MV/pElCw==} - '@volar/language-core@2.1.6': - resolution: {integrity: sha512-pAlMCGX/HatBSiDFMdMyqUshkbwWbLxpN/RL7HCQDOo2gYBE+uS+nanosLc1qR6pTQ/U8q00xt8bdrrAFPSC0A==} - - '@volar/language-server@2.1.6': - resolution: {integrity: sha512-0w+FV8ro37hVb3qE4ONo3VbS5kEQXv4H/D2xCePyY5dRw6XnbJAPFNKvoxI9mxHTPonvIG1si5rN9MSGSKtgZQ==} + '@volar/language-core@2.4.11': + resolution: {integrity: sha512-lN2C1+ByfW9/JRPpqScuZt/4OrUUse57GLI6TbLgTIqBVemdl1wNcZ1qYGEo2+Gw8coYLgCy7SuKqn6IrQcQgg==} - '@volar/language-service@2.1.6': - resolution: {integrity: sha512-1OpbbPQ6wUIumwMP5r45y8utVEmvq1n6BC8JHqGKsuFr9RGFIldDBlvA/xuO3MDKhjmmPGPHKb54kg1/YN78ow==} + '@volar/language-server@2.4.11': + resolution: {integrity: sha512-W9P8glH1M8LGREJ7yHRCANI5vOvTrRO15EMLdmh5WNF9sZYSEbQxiHKckZhvGIkbeR1WAlTl3ORTrJXUghjk7g==} - '@volar/snapshot-document@2.1.6': - resolution: {integrity: sha512-YNYk1sCOrGg7VHbZM+1It97q0GWhFxdqIwnxSNFoL0X1LuSRXoCT2DRb/aa1J6aBpPMbKqSFUWHGQEAFUnc4Zw==} + '@volar/language-service@2.4.11': + resolution: {integrity: sha512-KIb6g8gjUkS2LzAJ9bJCLIjfsJjeRtmXlu7b2pDFGD3fNqdbC53cCAKzgWDs64xtQVKYBU13DLWbtSNFtGuMLQ==} '@volar/source-map@1.11.1': resolution: {integrity: sha512-hJnOnwZ4+WT5iupLRnuzbULZ42L7BWWPMmruzwtLhJfpDVoZLjNBxHDi2sY2bgZXCKlpU5XcsMFoYrsQmPhfZg==} - '@volar/source-map@2.1.6': - resolution: {integrity: sha512-TeyH8pHHonRCHYI91J7fWUoxi0zWV8whZTVRlsWHSYfjm58Blalkf9LrZ+pj6OiverPTmrHRkBsG17ScQyWECw==} + '@volar/source-map@2.4.11': + resolution: {integrity: sha512-ZQpmafIGvaZMn/8iuvCFGrW3smeqkq/IIh9F1SdSx9aUl0J4Iurzd6/FhmjNO5g2ejF3rT45dKskgXWiofqlZQ==} '@volar/typescript@1.11.1': resolution: {integrity: sha512-iU+t2mas/4lYierSnoFOeRFQUhAEMgsFuQxoxvwn5EdQopw43j+J27a4lt9LMInx1gLJBC6qL14WYGlgymaSMQ==} - '@volar/typescript@2.1.6': - resolution: {integrity: sha512-JgPGhORHqXuyC3r6skPmPHIZj4LoMmGlYErFTuPNBq9Nhc9VTv7ctHY7A3jMN3ngKEfRrfnUcwXHztvdSQqNfw==} + '@volar/typescript@2.4.11': + resolution: {integrity: sha512-2DT+Tdh88Spp5PyPbqhyoYavYCPDsqbHLFwcUI9K1NlY1YgUJvujGdrqUp0zWxnW7KWNTr3xSpMuv2WnaTKDAw==} - '@vscode/emmet-helper@2.9.3': - resolution: {integrity: sha512-rB39LHWWPQYYlYfpv9qCoZOVioPCftKXXqrsyqN1mTWZM6dTnONT63Db+03vgrBbHzJN45IrgS/AGxw9iiqfEw==} - - '@vscode/l10n@0.0.16': - resolution: {integrity: sha512-JT5CvrIYYCrmB+dCana8sUqJEcGB1ZDXNLMQ2+42bW995WmNoenijWMUdZfwmuQUTQcEVVIa2OecZzTYWUW9Cg==} + '@vscode/emmet-helper@2.11.0': + resolution: {integrity: sha512-QLxjQR3imPZPQltfbWRnHU6JecWTF1QSWhx3GAKQpslx7y3Dp6sIIXhKjiUJ/BR9FX8PVthjr9PD6pNwOJfAzw==} '@vscode/l10n@0.0.18': resolution: {integrity: sha512-KYSIHVmslkaCDyw013pphY+d7x1qV8IZupYfeIfzNA+nsaWHbn5uPuQRvdRFsa9zFzGeudPuoGoZ1Op4jrJXIQ==} @@ -2240,22 +2310,17 @@ packages: resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} engines: {node: '>=0.4.0'} - acorn@8.11.3: - resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} - engines: {node: '>=0.4.0'} - hasBin: true - acorn@8.14.0: resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} engines: {node: '>=0.4.0'} hasBin: true - agent-base@7.1.2: - resolution: {integrity: sha512-JVzqkCNRT+VfqzzgPWDPnwvDheSAUdiMUn3NoLXpDJF5lRqeJqyC9iGsAxIOAW+mzIdq+uP1TvcX6bMtrH0agg==} + agent-base@7.1.3: + resolution: {integrity: sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==} engines: {node: '>= 14'} - ajv@8.12.0: - resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} + ajv@8.17.1: + resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} ansi-align@3.0.1: resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} @@ -2268,14 +2333,10 @@ packages: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} - ansi-regex@6.0.1: - resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} + ansi-regex@6.1.0: + resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} engines: {node: '>=12'} - ansi-styles@3.2.1: - resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} - engines: {node: '>=4'} - ansi-styles@4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} @@ -2307,15 +2368,12 @@ packages: aria-query@5.1.3: resolution: {integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==} - aria-query@5.3.0: - resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} - aria-query@5.3.2: resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==} engines: {node: '>= 0.4'} - array-buffer-byte-length@1.0.1: - resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} + array-buffer-byte-length@1.0.2: + resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==} engines: {node: '>= 0.4'} array-iterate@2.0.1: @@ -2325,22 +2383,26 @@ packages: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} - arraybuffer.prototype.slice@1.0.3: - resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} + arraybuffer.prototype.slice@1.0.4: + resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==} engines: {node: '>= 0.4'} assertion-error@1.1.0: resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} - astring@1.8.6: - resolution: {integrity: sha512-ISvCdHdlTDlH5IpxQJIex7BWBywFWgjJSVdwst+/iQCoEYnyOaQ95+X1JGshuBjGp6nxKUy1jMgE3zPqN7fQdg==} + ast-types@0.16.1: + resolution: {integrity: sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==} + engines: {node: '>=4'} + + astring@1.9.0: + resolution: {integrity: sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==} hasBin: true astro-seo@0.8.4: resolution: {integrity: sha512-Ou1vzQSXAxa0K8rtNtXNvSpYqOGEgMhh0immMxJeXmbVZac3UKCNWAoXWyOQDFYsZvBugCRSg0N1phBqPMVgCw==} - astro@5.0.3: - resolution: {integrity: sha512-qpeN+POmmfAQu/XDXaI2CxkUgQFwH9uMUVaA1reV9rybzIbOVYc3E3BU5SkiP/W4BMUFPdJtyw6+/n/0AUv6rw==} + astro@5.1.1: + resolution: {integrity: sha512-prpWC2PRs4P3FKQg6gZaU+VNMqbZi5pDvORGB2nrjfRjkrvF6/l4BqhvkJ6YQ0Ohm5rIMVz8ljgaRI77mLHbwg==} engines: {node: ^18.17.1 || ^20.3.0 || >=22.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0'} hasBin: true @@ -2349,8 +2411,8 @@ packages: peerDependencies: astro: '>=4.0.0' - async@3.2.5: - resolution: {integrity: sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==} + async@3.2.6: + resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==} asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} @@ -2374,28 +2436,31 @@ packages: resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} engines: {node: '>= 0.4'} - babel-plugin-jsx-dom-expressions@0.37.19: - resolution: {integrity: sha512-nef2eLpWBgFggwrYwN6O3dNKn3RnlX6n4DIamNEAeHwp03kVQUaKUiLaEPnHPJHwxie1KwPelyIY9QikU03vUA==} + babel-plugin-jsx-dom-expressions@0.39.3: + resolution: {integrity: sha512-6RzmSu21zYPlV2gNwzjGG9FgODtt9hIWnx7L//OIioIEuRcnpDZoY8Tr+I81Cy1SrH4qoDyKpwHHo6uAMAeyPA==} peerDependencies: '@babel/core': ^7.20.12 - babel-plugin-polyfill-corejs2@0.4.10: - resolution: {integrity: sha512-rpIuu//y5OX6jVU+a5BCn1R5RSZYWAl2Nar76iwaOdycqb6JPxediskWFMMl7stfwNJR4b7eiQvh5fB5TEQJTQ==} + babel-plugin-polyfill-corejs2@0.4.12: + resolution: {integrity: sha512-CPWT6BwvhrTO2d8QVorhTCQw9Y43zOu7G9HigcfxvepOU6b8o3tcWad6oVgZIsZCTt42FFv97aA7ZJsbM4+8og==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - babel-plugin-polyfill-corejs3@0.10.4: - resolution: {integrity: sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg==} + babel-plugin-polyfill-corejs3@0.10.6: + resolution: {integrity: sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - babel-plugin-polyfill-regenerator@0.6.1: - resolution: {integrity: sha512-JfTApdE++cgcTWjsiCQlLyFBMbTUft9ja17saCc93lgV33h4tuCVj7tlvu//qpLwaG+3yEz7/KhahGrUMkVq9g==} + babel-plugin-polyfill-regenerator@0.6.3: + resolution: {integrity: sha512-LiWSbl4CRSIa5x/JAU6jZiG9eit9w6mz+yVMFwDE83LAWvt0AfGBoZ7HS/mkhrKuh2ZlzfVZYKoLjXdqw6Yt7Q==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - babel-preset-solid@1.8.16: - resolution: {integrity: sha512-b4HFg/xaKM+H3Tu5iUlZ/43TJOZnhi85xrm3JrXDQ0s4cmtmU37bXXYzb2m55G4QKiFjxLAjvb7sUorPrAMs5w==} + babel-plugin-react-compiler@19.0.0-beta-201e55d-20241215: + resolution: {integrity: sha512-c7YAJNlA8kSoIFx2Buq/CeGmC3MbZYznD3H7Q3cdaRyKtwDSSxbM3VJxEhv7lEo64g48aWSBSiCI3XcRw0y/Jw==} + + babel-preset-solid@1.9.3: + resolution: {integrity: sha512-jvlx5wDp8s+bEF9sGFw/84SInXOA51ttkUEroQziKMbxplXThVKt83qB6bDTa1HuLNatdU9FHpFOiQWs1tLQIg==} peerDependencies: '@babel/core': ^7.0.0 @@ -2426,10 +2491,6 @@ packages: brace-expansion@2.0.1: resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} - braces@3.0.2: - resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} - engines: {node: '>=8'} - braces@3.0.3: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} @@ -2438,15 +2499,11 @@ packages: resolution: {integrity: sha512-uA9fOtlTRC0iqKfzff1W34DXUA3GyVqbUaeo3Rw3d4gd1eavKVCETXrn3NzO74W+UVkG3UHu8WxUi+XvKI/huA==} engines: {node: '>= 10.16.0'} - browserslist@4.24.2: - resolution: {integrity: sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==} + browserslist@4.24.3: + resolution: {integrity: sha512-1CPmv8iobE2fyRMV97dAcMVegvvWKxmq94hkLiAkUGwKVTyDLw33K+ZxiFrREKmmps4rIw6grcCFCnTMSZ/YiA==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true - buffer-crc32@1.0.0: - resolution: {integrity: sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w==} - engines: {node: '>=8.0.0'} - buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} @@ -2464,16 +2521,24 @@ packages: resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} engines: {node: '>=8'} - call-bind@1.0.7: - resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} + call-bind-apply-helpers@1.0.1: + resolution: {integrity: sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==} + engines: {node: '>= 0.4'} + + call-bind@1.0.8: + resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==} + engines: {node: '>= 0.4'} + + call-bound@1.0.3: + resolution: {integrity: sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==} engines: {node: '>= 0.4'} camelcase@8.0.0: resolution: {integrity: sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA==} engines: {node: '>=16'} - caniuse-lite@1.0.30001687: - resolution: {integrity: sha512-0S/FDhf4ZiqrTUiQ39dKeUjYRjkv7lOZU1Dgif2rIqrTzX/1wV2hfKu9TOm1IHkdSijfLswxTFzl/cvir+SLSQ==} + caniuse-lite@1.0.30001690: + resolution: {integrity: sha512-5ExiE3qQN6oF8Clf8ifIDcMRCRE/dMGcETG/XGMD8/XiXm6HXQgQTh1yZYLXXpSOsEUlJm1Xr7kGULZTuGtP/w==} ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} @@ -2482,10 +2547,6 @@ packages: resolution: {integrity: sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==} engines: {node: '>=4'} - chalk@2.4.2: - resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} - engines: {node: '>=4'} - chalk@3.0.0: resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} engines: {node: '>=8'} @@ -2494,8 +2555,8 @@ packages: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} - chalk@5.3.0: - resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} + chalk@5.4.1: + resolution: {integrity: sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==} engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} character-entities-html4@2.1.0: @@ -2520,8 +2581,8 @@ packages: resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} engines: {node: '>= 8.10.0'} - chokidar@4.0.1: - resolution: {integrity: sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA==} + chokidar@4.0.3: + resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} engines: {node: '>= 14.16.0'} ci-info@3.9.0: @@ -2532,10 +2593,17 @@ packages: resolution: {integrity: sha512-HutrvTNsF48wnxkzERIXOe5/mlcfFcbfCmwcg6CJnizbSue78AbDt+1cgl26zwn61WFxhcPykPfZrbqjGmBb4A==} engines: {node: '>=8'} + citty@0.1.6: + resolution: {integrity: sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==} + cli-boxes@3.0.0: resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==} engines: {node: '>=10'} + clipboardy@4.0.0: + resolution: {integrity: sha512-5mOlNS0mhX0707P2I0aZ2V/cmHUEO/fL7VFLqszkhUsxt7RwnmrInf/eEQKlf5GzvYeHIjT+Ov1HRfNmymlG0w==} + engines: {node: '>=18'} + cliui@8.0.1: resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} engines: {node: '>=12'} @@ -2550,16 +2618,10 @@ packages: collapse-white-space@2.1.0: resolution: {integrity: sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==} - color-convert@1.9.3: - resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} - color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} - color-name@1.1.3: - resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} - color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} @@ -2600,13 +2662,16 @@ packages: confbox@0.1.8: resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} - consola@3.2.3: - resolution: {integrity: sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==} + consola@3.3.0: + resolution: {integrity: sha512-kxltocVQCwQNFvw40dlVRYeAkAvtYjMFZYNlOcsF5wExPpGwPxMwgx4IfDJvBRPtBpnQwItd5WkTaR0ZwT/TmQ==} engines: {node: ^14.18.0 || >=16.10.0} convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + cookie-es@1.2.2: + resolution: {integrity: sha512-+W7VmiVINB+ywl1HGXJXmrqkOhpKrIiVZV6tQuV54ZyQC7MMuBt81Vc336GMLoHBq5hV/F9eXgt5Mnx0Rha5Fg==} + cookie@0.6.0: resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} engines: {node: '>= 0.6'} @@ -2615,13 +2680,16 @@ packages: resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==} engines: {node: '>= 0.6'} - core-js-compat@3.37.0: - resolution: {integrity: sha512-vYq4L+T8aS5UuFg4UwDhc7YNRWVeVZwltad9C/jV3R2LgVOpS9BDr7l/WL6BN0dbV3k1XejPTHqqEzJgsa0frA==} + core-js-compat@3.39.0: + resolution: {integrity: sha512-VgEUx3VwlExr5no0tXlBt+silBvhTryPwCXRI2Id1PN8WTKu7MreethvddqOubrYxkFdv/RnYrqlv1sFNAUelw==} cross-spawn@7.0.6: resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} + crossws@0.3.1: + resolution: {integrity: sha512-HsZgeVYaG+b5zA+9PbIPGq4+J/CJynJuearykPsXx4V/eMhyQ5EDVg3Ak2FBZtVXCiOLu/U7IiwDHTr9MA+IKw==} + crypto-random-string@2.0.0: resolution: {integrity: sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==} engines: {node: '>=8'} @@ -2649,16 +2717,16 @@ packages: resolution: {integrity: sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==} engines: {node: '>=18'} - data-view-buffer@1.0.1: - resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==} + data-view-buffer@1.0.2: + resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==} engines: {node: '>= 0.4'} - data-view-byte-length@1.0.1: - resolution: {integrity: sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==} + data-view-byte-length@1.0.2: + resolution: {integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==} engines: {node: '>= 0.4'} - data-view-byte-offset@1.0.0: - resolution: {integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==} + data-view-byte-offset@1.0.1: + resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==} engines: {node: '>= 0.4'} dataloader@1.4.0: @@ -2705,6 +2773,9 @@ packages: resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} engines: {node: '>= 0.4'} + defu@6.1.4: + resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} + delayed-stream@1.0.0: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} @@ -2713,6 +2784,9 @@ packages: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} + destr@2.0.3: + resolution: {integrity: sha512-2N3BOUU4gYMpTP24s5rF5iP7BDr7uNTCs4ozw3kf/eKfvWSIu93GEBi5m427YoyJoeOzQ5smuu4nNAPGb8idSQ==} + detect-indent@6.1.0: resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} engines: {node: '>=8'} @@ -2730,9 +2804,6 @@ packages: resolution: {integrity: sha512-KxektNH63SrbfUyDiwXqRb1rLwKt33AmMv+5Nhsw1kqZ13SJBRTgZHtGbE+hH3a1mVW1cz+4pqSWVPAtLVXTzQ==} engines: {node: '>=18'} - devalue@4.3.3: - resolution: {integrity: sha512-UH8EL6H2ifcY8TbD2QsxwCC/pr5xSwPvv85LrLXVihmHVC3T3YqTCIwnR5ak0yO1KYqlxrPVOA/JVZJYPy2ATg==} - devalue@5.1.1: resolution: {integrity: sha512-maua5KUiapvEwiEAe+XnlZ3Rh0GD+qI1J/nb9vrJc3muPXvcF/8gXYTWF76+5DAqHyDUtOIImEuo0YKE9mshVw==} @@ -2768,6 +2839,10 @@ packages: resolution: {integrity: sha512-2QF/g9/zTaPDc3BjNcVTGoBbXBgYfMTTceLaYcFJ/W9kggFUkhxD/hMEeuLKbugyef9SqAx8cpgwlIP/jinUTA==} engines: {node: '>=4'} + dunder-proto@1.0.1: + resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} + engines: {node: '>= 0.4'} + duplexer@0.1.1: resolution: {integrity: sha512-sxNZ+ljy+RA1maXoUReeqBBpBC6RLKmg5ewzV+x+mSETmWNoKdZN6vcQjpFROemza23hGFskJtFNoUWUaQ+R4Q==} @@ -2779,17 +2854,17 @@ packages: engines: {node: '>=0.10.0'} hasBin: true - electron-to-chromium@1.5.71: - resolution: {integrity: sha512-dB68l59BI75W1BUGVTAEJy45CEVuEGy9qPVVQ8pnHyHMn36PLPPoE1mjLH+lo9rKulO3HC2OhbACI/8tCqJBcA==} + electron-to-chromium@1.5.75: + resolution: {integrity: sha512-Lf3++DumRE/QmweGjU+ZcKqQ+3bKkU/qjaKYhIJKEOhgIO9Xs6IiAQFkfFoj+RhgDk4LUeNsLo6plExHqSyu6Q==} - emmet@2.4.7: - resolution: {integrity: sha512-O5O5QNqtdlnQM2bmKHtJgyChcrFMgQuulI+WdiOw2NArzprUqqxUW6bgYtKvzKgrsYpuLWalOkdhNP+1jluhCA==} + emmet@2.4.11: + resolution: {integrity: sha512-23QPJB3moh/U9sT4rQzGgeyyGIrcM+GH5uVYg2C6wZIxAIJq7Ng3QLT79tl8FUwDXhyq9SusfknOrofAKqvgyQ==} emoji-regex-xs@1.0.0: resolution: {integrity: sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==} - emoji-regex@10.3.0: - resolution: {integrity: sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==} + emoji-regex@10.4.0: + resolution: {integrity: sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==} emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -2805,12 +2880,12 @@ packages: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} - es-abstract@1.23.3: - resolution: {integrity: sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==} + es-abstract@1.23.7: + resolution: {integrity: sha512-OygGC8kIcDhXX+6yAZRGLqwi2CmEXCbLQixeGUgYeR+Qwlppqmo7DIDr8XibtEBZp+fJcoYpoatp5qwLMEdcqQ==} engines: {node: '>= 0.4'} - es-define-property@1.0.0: - resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} + es-define-property@1.0.1: + resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} engines: {node: '>= 0.4'} es-errors@1.3.0: @@ -2831,13 +2906,10 @@ packages: resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==} engines: {node: '>= 0.4'} - es-to-primitive@1.2.1: - resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} + es-to-primitive@1.3.0: + resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==} engines: {node: '>= 0.4'} - es6-promise@3.3.1: - resolution: {integrity: sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==} - esast-util-from-estree@2.0.0: resolution: {integrity: sha512-4CyanoAudUSBAn5K13H4JhsMH6L9ZP7XbLVe/dKybkxMO7eDyLsT8UHl9TRNrU2Gr9nz+FovfSIjuXWJ81uVwQ==} @@ -2859,18 +2931,15 @@ packages: engines: {node: '>=18'} hasBin: true - escalade@3.1.2: - resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} - engines: {node: '>=6'} + esbuild@0.24.2: + resolution: {integrity: sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA==} + engines: {node: '>=18'} + hasBin: true escalade@3.2.0: resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} engines: {node: '>=6'} - escape-string-regexp@1.0.5: - resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} - engines: {node: '>=0.8.0'} - escape-string-regexp@5.0.0: resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} engines: {node: '>=12'} @@ -2883,8 +2952,8 @@ packages: engines: {node: '>=4'} hasBin: true - esrap@1.2.3: - resolution: {integrity: sha512-ZlQmCCK+n7SGoqo7DnfKaP1sJZa49P01/dXzmjCASSo04p72w8EksT2NMK8CEX8DhKsfJXANioIw8VyHNsBfvQ==} + esrap@1.3.2: + resolution: {integrity: sha512-C4PXusxYhFT98GjLSmb20k9PREuUdporer50dhzGuJu9IJXktbMddVCMLAERl5dAHyAi73GWWCE4FVHGP1794g==} estree-util-attach-comments@3.0.0: resolution: {integrity: sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==} @@ -2944,6 +3013,9 @@ packages: fast-json-stable-stringify@2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + fast-uri@3.0.3: + resolution: {integrity: sha512-aLrHthzCjH5He4Z2H9YZ+v6Ujb9ocRuW6ZzkJQOrTxleEijANq4v1TsaPaVG1PZcuurEzrLcWRyYBYXD5cEiaw==} + fastq@1.17.1: resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} @@ -2958,10 +3030,6 @@ packages: filelist@1.0.4: resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} - fill-range@7.0.1: - resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} - engines: {node: '>=8'} - fill-range@7.1.1: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} @@ -2984,8 +3052,8 @@ packages: for-each@0.3.3: resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} - foreground-child@3.1.1: - resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} + foreground-child@3.3.0: + resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==} engines: {node: '>=14'} form-data@4.0.1: @@ -3013,6 +3081,11 @@ packages: fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + fsevents@2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} @@ -3021,8 +3094,8 @@ packages: function-bind@1.1.2: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - function.prototype.name@1.1.6: - resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} + function.prototype.name@1.1.8: + resolution: {integrity: sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==} engines: {node: '>= 0.4'} functions-have-names@1.2.3: @@ -3036,26 +3109,29 @@ packages: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} - get-east-asian-width@1.2.0: - resolution: {integrity: sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==} + get-east-asian-width@1.3.0: + resolution: {integrity: sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==} engines: {node: '>=18'} get-func-name@2.0.2: resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} - get-intrinsic@1.2.4: - resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} + get-intrinsic@1.2.6: + resolution: {integrity: sha512-qxsEs+9A+u85HhllWJJFicJfPDhRmjzoYdl64aMWW9yRIJmSyxdn8IEkuIM530/7T+lv0TIHd8L6Q/ra0tEoeA==} engines: {node: '>= 0.4'} get-own-enumerable-property-symbols@3.0.2: resolution: {integrity: sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==} + get-port-please@3.1.2: + resolution: {integrity: sha512-Gxc29eLs1fbn6LQ4jSU4vXjlwyZhF5HsGuMAa7gqBP4Rw4yxxltyDUuF5MBclFzDTXO+ACchGQoeela4DSfzdQ==} + get-stream@8.0.1: resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} engines: {node: '>=16'} - get-symbol-description@1.0.2: - resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} + get-symbol-description@1.1.0: + resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} engines: {node: '>= 0.4'} get-tsconfig@4.8.1: @@ -3068,9 +3144,8 @@ packages: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} - glob@10.3.12: - resolution: {integrity: sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==} - engines: {node: '>=16 || 14 >=14.17'} + glob@10.4.5: + resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} hasBin: true glob@7.2.3: @@ -3081,12 +3156,12 @@ packages: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} - globals@15.13.0: - resolution: {integrity: sha512-49TewVEz0UxZjr1WYYsWpPrhyC/B/pA8Bq0fUmet2n+eR7yn0IvNzNaoBwnK6mdkzcN+se7Ez9zUgULTz2QH4g==} + globals@15.14.0: + resolution: {integrity: sha512-OkToC372DtlQeje9/zHIo5CT8lRP/FUgEOKBEhU4e0abL7J7CD24fD9ohiLN5hagG/kWCYj4K5oaxxtj2Z0Dig==} engines: {node: '>=18'} - globalthis@1.0.3: - resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} + globalthis@1.0.4: + resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} engines: {node: '>= 0.4'} globalyzer@0.1.0: @@ -3099,18 +3174,19 @@ packages: globrex@0.1.2: resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} - gopd@1.0.1: - resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + gopd@1.2.0: + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} + engines: {node: '>= 0.4'} graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - has-bigints@1.0.2: - resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} + h3@1.13.0: + resolution: {integrity: sha512-vFEAu/yf8UMUcB4s43OaDaigcqpQd14yanmOsn+NcRX3/guSKncyE2rOYhq8RIchgJrPSs/QiIddnTTR1ddiAg==} - has-flag@3.0.0: - resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} - engines: {node: '>=4'} + has-bigints@1.1.0: + resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==} + engines: {node: '>= 0.4'} has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} @@ -3119,12 +3195,12 @@ packages: has-property-descriptors@1.0.2: resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} - has-proto@1.0.3: - resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} + has-proto@1.2.0: + resolution: {integrity: sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==} engines: {node: '>= 0.4'} - has-symbols@1.0.3: - resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + has-symbols@1.1.0: + resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} engines: {node: '>= 0.4'} has-tostringtag@1.0.2: @@ -3138,8 +3214,8 @@ packages: hast-util-from-html@2.0.3: resolution: {integrity: sha512-CUSRHXyKjzHov8yKsQjGOElXy/3EKpyX56ELnkHH34vDVw1N1XSQ1ZcAvTyAPtGqLTuKP/uxM+aLkSPqF/EtMw==} - hast-util-from-parse5@8.0.1: - resolution: {integrity: sha512-Er/Iixbc7IEa7r/XLtuG52zoqn/b3Xng/w6aZQ0xGVxzhw5xUFxcRqdPzP6yFi/4HBYRaifaI5fQ1RH8n0ZeOQ==} + hast-util-from-parse5@8.0.2: + resolution: {integrity: sha512-SfMzfdAi/zAoZ1KkFEyyeXBn7u/ShQrfd675ZEE9M3qj+PMFX05xubzRyF76CCSJu8au9jgVxDV1+okFvgZU4A==} hast-util-heading-rank@3.0.0: resolution: {integrity: sha512-EJKb8oMUXVHcWZTDepnr+WNbfnXKFNf9duMesmr4S8SXTJBJ9M4Yok08pu9vxdJwdlGRhVumk9mEhkEvKGifwA==} @@ -3150,17 +3226,17 @@ packages: hast-util-parse-selector@4.0.0: resolution: {integrity: sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==} - hast-util-raw@9.0.2: - resolution: {integrity: sha512-PldBy71wO9Uq1kyaMch9AHIghtQvIwxBUkv823pKmkTM3oV1JxtsTNYdevMxvUHqcnOAuO65JKU2+0NOxc2ksA==} + hast-util-raw@9.1.0: + resolution: {integrity: sha512-Y8/SBAHkZGoNkpzqqfCldijcuUKh7/su31kEBp67cFY09Wy0mTRgtsLYsiIxMJxlu0f6AA5SUTbDR8K0rxnbUw==} hast-util-to-estree@3.1.0: resolution: {integrity: sha512-lfX5g6hqVh9kjS/B9E2gSkvHH4SZNiQFiqWS0x9fENzEl+8W12RqdRxX6d/Cwxi30tPQs3bIO+aolQJNp1bIyw==} - hast-util-to-html@9.0.3: - resolution: {integrity: sha512-M17uBDzMJ9RPCqLMO92gNNUDuBSq10a25SDBI08iCCxmorf4Yy6sYHK57n9WAbRAAaU+DuR4W6GN9K4DFZesYg==} + hast-util-to-html@9.0.4: + resolution: {integrity: sha512-wxQzXtdbhiwGAUKrnQJXlOPmHnEehzphwkK7aluUPQ+lEc1xefC8pblMgpp2w5ldBTEfveRIrADcrhGIWrlTDA==} - hast-util-to-jsx-runtime@2.3.0: - resolution: {integrity: sha512-H/y0+IWPdsLLS738P8tDnrQ8Z+dj12zQQ6WC11TIM21C8WFVoIxcqWXf2H3hiTVZjF1AWqoimGwrTWecWrnmRQ==} + hast-util-to-jsx-runtime@2.3.2: + resolution: {integrity: sha512-1ngXYb+V9UT5h+PxNRa1O1FYguZK/XL+gkeqvp7EdHlB9oHUG0eYRo/vY5inBdcqo3RkPMC58/H94HvkbfGdyg==} hast-util-to-parse5@8.0.0: resolution: {integrity: sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==} @@ -3174,9 +3250,6 @@ packages: hast-util-whitespace@3.0.0: resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} - hastscript@8.0.0: - resolution: {integrity: sha512-dMOtzCEd3ABUeSIISmrETiKuyydk1w0pa+gE/uormcTpSYuaNJPbX1NU3JLyscSLjwAQM8bWMhhIlnCqnRvDTw==} - hastscript@9.0.0: resolution: {integrity: sha512-jzaLBGavEDKHrc5EfFImKN7nZKKBdSLIdGvCwDZ9TfzbF2ffXiov8CKE445L2Z1Ek2t/m4SKQ2j6Ipv7NyUolw==} @@ -3207,6 +3280,10 @@ packages: resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} engines: {node: '>= 14'} + http-shutdown@1.2.2: + resolution: {integrity: sha512-S9wWkJ/VSY9/k4qcjG318bqJNruzE4HySUhFYknwmu6LBP97KLLfwNf+n4V1BHurvFNkSKLFnK/RsuUnRTf9Vw==} + engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} + https-proxy-agent@7.0.6: resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} engines: {node: '>= 14'} @@ -3229,8 +3306,8 @@ packages: idb@7.1.1: resolution: {integrity: sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==} - ignore@5.3.1: - resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} + ignore@5.3.2: + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} immutable@5.0.3: @@ -3253,54 +3330,63 @@ packages: inline-style-parser@0.1.1: resolution: {integrity: sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==} - inline-style-parser@0.2.3: - resolution: {integrity: sha512-qlD8YNDqyTKTyuITrDOffsl6Tdhv+UC4hcdAVuQsK4IMQ99nSgd1MIA/Q+jQYoh9r3hVUXhYh7urSRmXPkW04g==} + inline-style-parser@0.2.4: + resolution: {integrity: sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==} - internal-slot@1.0.7: - resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} + internal-slot@1.1.0: + resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} engines: {node: '>= 0.4'} + iron-webcrypto@1.2.1: + resolution: {integrity: sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg==} + is-alphabetical@2.0.1: resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==} is-alphanumerical@2.0.1: resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==} - is-arguments@1.1.1: - resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} + is-arguments@1.2.0: + resolution: {integrity: sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==} engines: {node: '>= 0.4'} - is-array-buffer@3.0.4: - resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} + is-array-buffer@3.0.5: + resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==} engines: {node: '>= 0.4'} is-arrayish@0.3.2: resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} - is-bigint@1.0.4: - resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} + is-async-function@2.0.0: + resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==} + engines: {node: '>= 0.4'} + + is-bigint@1.1.0: + resolution: {integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==} + engines: {node: '>= 0.4'} is-binary-path@2.1.0: resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} engines: {node: '>=8'} - is-boolean-object@1.1.2: - resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} + is-boolean-object@1.2.1: + resolution: {integrity: sha512-l9qO6eFlUETHtuihLcYOaLKByJ1f+N4kthcU9YjHy3N+B3hWv0y/2Nd0mu/7lTFnRQHTrSdXF50HQ3bl5fEnng==} engines: {node: '>= 0.4'} is-callable@1.2.7: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} engines: {node: '>= 0.4'} - is-core-module@2.13.1: - resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} + is-core-module@2.16.0: + resolution: {integrity: sha512-urTSINYfAYgcbLb0yDQ6egFm6h3Mo1DcF9EkyXSRjjzdHbsulg01qhwWuXdOoUBuTkbQ80KDboXa0vFJ+BDH+g==} + engines: {node: '>= 0.4'} - is-data-view@1.0.1: - resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==} + is-data-view@1.0.2: + resolution: {integrity: sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==} engines: {node: '>= 0.4'} - is-date-object@1.0.5: - resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} + is-date-object@1.1.0: + resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==} engines: {node: '>= 0.4'} is-decimal@2.0.1: @@ -3315,10 +3401,18 @@ packages: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} + is-finalizationregistry@1.1.1: + resolution: {integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==} + engines: {node: '>= 0.4'} + is-fullwidth-code-point@3.0.0: 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'} @@ -3338,12 +3432,8 @@ packages: is-module@1.0.0: resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} - is-negative-zero@2.0.3: - resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} - engines: {node: '>= 0.4'} - - is-number-object@1.0.7: - resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} + is-number-object@1.1.1: + resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==} engines: {node: '>= 0.4'} is-number@7.0.0: @@ -3364,8 +3454,8 @@ packages: is-reference@3.0.3: resolution: {integrity: sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==} - is-regex@1.1.4: - resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} + is-regex@1.2.1: + resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} engines: {node: '>= 0.4'} is-regexp@1.0.0: @@ -3376,8 +3466,8 @@ packages: resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} engines: {node: '>= 0.4'} - is-shared-array-buffer@1.0.3: - resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==} + is-shared-array-buffer@1.0.4: + resolution: {integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==} engines: {node: '>= 0.4'} is-stream@2.0.1: @@ -3388,31 +3478,32 @@ packages: resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - is-string@1.0.7: - resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} + is-string@1.1.1: + resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==} engines: {node: '>= 0.4'} is-subdir@1.2.0: resolution: {integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==} engines: {node: '>=4'} - is-symbol@1.0.4: - resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} + is-symbol@1.1.1: + resolution: {integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==} engines: {node: '>= 0.4'} - is-typed-array@1.1.13: - resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} + is-typed-array@1.1.15: + resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} engines: {node: '>= 0.4'} is-weakmap@2.0.2: resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} engines: {node: '>= 0.4'} - is-weakref@1.0.2: - resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} + is-weakref@1.1.0: + resolution: {integrity: sha512-SXM8Nwyys6nT5WP6pltOwKytLV7FqQ4UiibxVmW+EIosHcmCqkkjViTb5SNssDlkCiEYRP1/pdWUKVvZBmsR2Q==} + engines: {node: '>= 0.4'} - is-weakset@2.0.3: - resolution: {integrity: sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==} + is-weakset@2.0.4: + resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==} engines: {node: '>= 0.4'} is-what@4.1.16: @@ -3427,18 +3518,21 @@ packages: resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==} engines: {node: '>=16'} + is64bit@2.0.0: + resolution: {integrity: sha512-jv+8jaWCl0g2lSBkNSVXdzfBA0npK1HGC2KtWM9FumFRoGS94g3NbCCLVnCYHLjp4GrW2KZeeSTMo5ddtznmGw==} + engines: {node: '>=18'} + isarray@2.0.5: resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - jackspeak@2.3.6: - resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} - engines: {node: '>=14'} + jackspeak@3.4.3: + resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} - jake@10.8.7: - resolution: {integrity: sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w==} + jake@10.9.2: + resolution: {integrity: sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==} engines: {node: '>=10'} hasBin: true @@ -3446,6 +3540,10 @@ packages: resolution: {integrity: sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==} engines: {node: '>= 10.13.0'} + jiti@2.4.2: + resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==} + hasBin: true + joycon@3.1.1: resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} engines: {node: '>=10'} @@ -3473,20 +3571,16 @@ packages: canvas: optional: true - jsesc@0.5.0: - resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} - hasBin: true - - jsesc@2.5.2: - resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} - engines: {node: '>=4'} - hasBin: true - jsesc@3.0.2: resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} engines: {node: '>=6'} hasBin: true + jsesc@3.1.0: + resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} + engines: {node: '>=6'} + hasBin: true + json-schema-traverse@1.0.0: resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} @@ -3501,6 +3595,9 @@ packages: jsonc-parser@2.3.1: resolution: {integrity: sha512-H8jvkz1O50L3dMZCsLqiuB2tA7muqbSg1AtGEkN0leAqGjsUzDJir3Zwr02BhqdcITPg3ei3mZ+HjMocAknhhg==} + jsonc-parser@3.3.1: + resolution: {integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==} + jsonfile@4.0.0: resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} @@ -3533,6 +3630,10 @@ packages: lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + listhen@1.9.0: + resolution: {integrity: sha512-I8oW2+QL5KJo8zXNWX046M134WchxsXC7SawLPvRQpogCbkyQIaFxPE89A2HiwR7vAK2Dm2ERBAmyjTYGYEpBg==} + hasBin: true + load-tsconfig@0.2.5: resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -3577,17 +3678,12 @@ packages: lower-case@2.0.2: resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} - lru-cache@10.2.0: - resolution: {integrity: sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==} - engines: {node: 14 || >=16.14} + lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} - lru-cache@6.0.0: - resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} - engines: {node: '>=10'} - lz-string@1.5.0: resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} hasBin: true @@ -3595,8 +3691,8 @@ packages: magic-string@0.25.9: resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} - magic-string@0.30.14: - resolution: {integrity: sha512-5c99P1WKTed11ZC0HMJOj6CDIue6F8ySu+bJL+85q1zBEIY8IklrJ1eiKC2NDRh3Ct3FcvmJPyQHb9erXMTJNw==} + magic-string@0.30.17: + resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} magicast@0.3.5: resolution: {integrity: sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==} @@ -3605,8 +3701,12 @@ packages: resolution: {integrity: sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==} engines: {node: '>=16'} - markdown-table@3.0.3: - resolution: {integrity: sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==} + markdown-table@3.0.4: + resolution: {integrity: sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==} + + math-intrinsics@1.1.0: + resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} + engines: {node: '>= 0.4'} mdast-util-definitions@6.0.0: resolution: {integrity: sha512-scTllyX6pnYNZH/AIp/0ePz6s4cZtARxImwoPJ7kS42n+MnVsI4XbnG6d4ibehRIldYMWM2LD7ImQblVhUejVQ==} @@ -3614,11 +3714,11 @@ packages: mdast-util-find-and-replace@3.0.1: resolution: {integrity: sha512-SG21kZHGC3XRTSUhtofZkBzZTJNM5ecCi0SK2IMKmSXR8vO3peL+kb1O0z7Zl83jKtutG4k5Wv/W7V3/YHvzPA==} - mdast-util-from-markdown@2.0.0: - resolution: {integrity: sha512-n7MTOr/z+8NAX/wmhhDji8O3bRvPTV/U0oTCaZJkjhPSKTPhS3xufVhKGF8s1pJ7Ox4QgoIU7KHseh09S+9rTA==} + mdast-util-from-markdown@2.0.2: + resolution: {integrity: sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==} - mdast-util-gfm-autolink-literal@2.0.0: - resolution: {integrity: sha512-FyzMsduZZHSc3i0Px3PQcBT4WJY/X/RCtEJKuybiC6sjPqLv7h1yqAkmILZtuxMSsUyaLUWNp71+vQH2zqp5cg==} + mdast-util-gfm-autolink-literal@2.0.1: + resolution: {integrity: sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==} mdast-util-gfm-footnote@2.0.0: resolution: {integrity: sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ==} @@ -3635,11 +3735,11 @@ packages: mdast-util-gfm@3.0.0: resolution: {integrity: sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw==} - mdast-util-mdx-expression@2.0.0: - resolution: {integrity: sha512-fGCu8eWdKUKNu5mohVGkhBXCXGnOTLuFqOvGMvdikr+J1w7lDJgxThOKpwRWzzbyXAU2hhSwsmssOY4yTokluw==} + mdast-util-mdx-expression@2.0.1: + resolution: {integrity: sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==} - mdast-util-mdx-jsx@3.1.2: - resolution: {integrity: sha512-eKMQDeywY2wlHc97k5eD8VC+9ASMjN8ItEZQNGwJ6E0XWKiW/Z0V5/H8pvoXUf+y+Mj0VIgeRRbujBmFn4FTyA==} + mdast-util-mdx-jsx@3.1.3: + resolution: {integrity: sha512-bfOjvNt+1AcbPLTFMFWY149nJz0OjmewJs3LQQ5pIyVGxP4CdOqNVJL6kTaM5c68p8q82Xv3nCyFfUnuEcH3UQ==} mdast-util-mdx@3.0.0: resolution: {integrity: sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==} @@ -3650,11 +3750,11 @@ packages: mdast-util-phrasing@4.1.0: resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==} - mdast-util-to-hast@13.1.0: - resolution: {integrity: sha512-/e2l/6+OdGp/FB+ctrJ9Avz71AN/GRH3oi/3KAx/kMnoUsD6q0woXlDT8lLEeViVKE7oZxE7RXzvO3T8kF2/sA==} + mdast-util-to-hast@13.2.0: + resolution: {integrity: sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==} - mdast-util-to-markdown@2.1.0: - resolution: {integrity: sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==} + mdast-util-to-markdown@2.1.2: + resolution: {integrity: sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==} mdast-util-to-string@4.0.0: resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} @@ -3673,26 +3773,26 @@ packages: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} - micromark-core-commonmark@2.0.0: - resolution: {integrity: sha512-jThOz/pVmAYUtkroV3D5c1osFXAMv9e0ypGDOIZuCeAe91/sD6BoE2Sjzt30yuXtwOYUmySOhMas/PVyh02itA==} + micromark-core-commonmark@2.0.2: + resolution: {integrity: sha512-FKjQKbxd1cibWMM1P9N+H8TwlgGgSkWZMmfuVucLCHaYqeSvJ0hFeHsIa65pA2nYbes0f8LDHPMrd9X7Ujxg9w==} - micromark-extension-gfm-autolink-literal@2.0.0: - resolution: {integrity: sha512-rTHfnpt/Q7dEAK1Y5ii0W8bhfJlVJFnJMHIPisfPK3gpVNuOP0VnRl96+YJ3RYWV/P4gFeQoGKNlT3RhuvpqAg==} + micromark-extension-gfm-autolink-literal@2.1.0: + resolution: {integrity: sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==} - micromark-extension-gfm-footnote@2.0.0: - resolution: {integrity: sha512-6Rzu0CYRKDv3BfLAUnZsSlzx3ak6HAoI85KTiijuKIz5UxZxbUI+pD6oHgw+6UtQuiRwnGRhzMmPRv4smcz0fg==} + micromark-extension-gfm-footnote@2.1.0: + resolution: {integrity: sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==} - micromark-extension-gfm-strikethrough@2.0.0: - resolution: {integrity: sha512-c3BR1ClMp5fxxmwP6AoOY2fXO9U8uFMKs4ADD66ahLTNcwzSCyRVU4k7LPV5Nxo/VJiR4TdzxRQY2v3qIUceCw==} + micromark-extension-gfm-strikethrough@2.1.0: + resolution: {integrity: sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==} - micromark-extension-gfm-table@2.0.0: - resolution: {integrity: sha512-PoHlhypg1ItIucOaHmKE8fbin3vTLpDOUg8KAr8gRCF1MOZI9Nquq2i/44wFvviM4WuxJzc3demT8Y3dkfvYrw==} + micromark-extension-gfm-table@2.1.0: + resolution: {integrity: sha512-Ub2ncQv+fwD70/l4ou27b4YzfNaCJOvyX4HxXU15m7mpYY+rjuWzsLIPZHJL253Z643RpbcP1oeIJlQ/SKW67g==} micromark-extension-gfm-tagfilter@2.0.0: resolution: {integrity: sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==} - micromark-extension-gfm-task-list-item@2.0.1: - resolution: {integrity: sha512-cY5PzGcnULaN5O7T+cOzfMoHjBW7j+T9D2sucA5d/KbsBTPcYdebm9zUd9zzdgJGCwahV+/W78Z3nbulBYVbTw==} + micromark-extension-gfm-task-list-item@2.1.0: + resolution: {integrity: sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==} micromark-extension-gfm@3.0.0: resolution: {integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==} @@ -3700,8 +3800,8 @@ packages: micromark-extension-mdx-expression@3.0.0: resolution: {integrity: sha512-sI0nwhUDz97xyzqJAbHQhp5TfaxEvZZZ2JDqUo+7NvyIYG6BZ5CPPqj2ogUoPJlmXHBnyZUzISg9+oUmU6tUjQ==} - micromark-extension-mdx-jsx@3.0.0: - resolution: {integrity: sha512-uvhhss8OGuzR4/N17L1JwvmJIpPhAd8oByMawEKx6NVdBCbesjH4t+vjEp3ZXft9DwvlKSD07fCeI44/N0Vf2w==} + micromark-extension-mdx-jsx@3.0.1: + resolution: {integrity: sha512-vNuFb9czP8QCtAQcEJn0UJQJZA8Dk6DXKBqx+bg/w0WGuSxDxNr7hErW89tHUY31dUW4NqEOWwmEUNhjTFmHkg==} micromark-extension-mdx-md@2.0.0: resolution: {integrity: sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==} @@ -3712,75 +3812,71 @@ packages: micromark-extension-mdxjs@3.0.0: resolution: {integrity: sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==} - micromark-factory-destination@2.0.0: - resolution: {integrity: sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==} + micromark-factory-destination@2.0.1: + resolution: {integrity: sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==} - micromark-factory-label@2.0.0: - resolution: {integrity: sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==} + micromark-factory-label@2.0.1: + resolution: {integrity: sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==} - micromark-factory-mdx-expression@2.0.1: - resolution: {integrity: sha512-F0ccWIUHRLRrYp5TC9ZYXmZo+p2AM13ggbsW4T0b5CRKP8KHVRB8t4pwtBgTxtjRmwrK0Irwm7vs2JOZabHZfg==} + micromark-factory-mdx-expression@2.0.2: + resolution: {integrity: sha512-5E5I2pFzJyg2CtemqAbcyCktpHXuJbABnsb32wX2U8IQKhhVFBqkcZR5LRm1WVoFqa4kTueZK4abep7wdo9nrw==} - micromark-factory-space@2.0.0: - resolution: {integrity: sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==} + micromark-factory-space@2.0.1: + resolution: {integrity: sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==} - micromark-factory-title@2.0.0: - resolution: {integrity: sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==} + micromark-factory-title@2.0.1: + resolution: {integrity: sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==} - micromark-factory-whitespace@2.0.0: - resolution: {integrity: sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==} + micromark-factory-whitespace@2.0.1: + resolution: {integrity: sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==} - micromark-util-character@2.1.0: - resolution: {integrity: sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==} + micromark-util-character@2.1.1: + resolution: {integrity: sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==} - micromark-util-chunked@2.0.0: - resolution: {integrity: sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==} + micromark-util-chunked@2.0.1: + resolution: {integrity: sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==} - micromark-util-classify-character@2.0.0: - resolution: {integrity: sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==} + micromark-util-classify-character@2.0.1: + resolution: {integrity: sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==} - micromark-util-combine-extensions@2.0.0: - resolution: {integrity: sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==} + micromark-util-combine-extensions@2.0.1: + resolution: {integrity: sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==} - micromark-util-decode-numeric-character-reference@2.0.1: - resolution: {integrity: sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==} + micromark-util-decode-numeric-character-reference@2.0.2: + resolution: {integrity: sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==} - micromark-util-decode-string@2.0.0: - resolution: {integrity: sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==} + micromark-util-decode-string@2.0.1: + resolution: {integrity: sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==} - micromark-util-encode@2.0.0: - resolution: {integrity: sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==} + micromark-util-encode@2.0.1: + resolution: {integrity: sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==} micromark-util-events-to-acorn@2.0.2: resolution: {integrity: sha512-Fk+xmBrOv9QZnEDguL9OI9/NQQp6Hz4FuQ4YmCb/5V7+9eAh1s6AYSvL20kHkD67YIg7EpE54TiSlcsf3vyZgA==} - micromark-util-html-tag-name@2.0.0: - resolution: {integrity: sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==} + micromark-util-html-tag-name@2.0.1: + resolution: {integrity: sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==} - micromark-util-normalize-identifier@2.0.0: - resolution: {integrity: sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==} + micromark-util-normalize-identifier@2.0.1: + resolution: {integrity: sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==} - micromark-util-resolve-all@2.0.0: - resolution: {integrity: sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==} + micromark-util-resolve-all@2.0.1: + resolution: {integrity: sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==} - micromark-util-sanitize-uri@2.0.0: - resolution: {integrity: sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==} + micromark-util-sanitize-uri@2.0.1: + resolution: {integrity: sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==} - micromark-util-subtokenize@2.0.1: - resolution: {integrity: sha512-jZNtiFl/1aY73yS3UGQkutD0UbhTt68qnRpw2Pifmz5wV9h8gOVsN70v+Lq/f1rKaU/W8pxRe8y8Q9FX1AOe1Q==} + micromark-util-subtokenize@2.0.3: + resolution: {integrity: sha512-VXJJuNxYWSoYL6AJ6OQECCFGhIU2GGHMw8tahogePBrjkG8aCCas3ibkp7RnVOSTClg2is05/R7maAhF1XyQMg==} - micromark-util-symbol@2.0.0: - resolution: {integrity: sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==} + micromark-util-symbol@2.0.1: + resolution: {integrity: sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==} - micromark-util-types@2.0.0: - resolution: {integrity: sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==} + micromark-util-types@2.0.1: + resolution: {integrity: sha512-534m2WhVTddrcKVepwmVEVnUAmtrx9bfIjNoQHRqfnvdaHQiFytEhJoTgpWJvDEXCO5gLTQh3wYC1PgOJA4NSQ==} - micromark@4.0.0: - resolution: {integrity: sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==} - - micromatch@4.0.5: - resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} - engines: {node: '>=8.6'} + micromark@4.0.1: + resolution: {integrity: sha512-eBPdkcoCNvYcxQOAKAlceo5SNdzZWfF+FcSupREAzdAh9rRmE239CEQAiTwIgblwnoM8zzj35sZ5ZwvSEOF6Kw==} micromatch@4.0.8: resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} @@ -3794,6 +3890,11 @@ packages: resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} engines: {node: '>= 0.6'} + mime@3.0.0: + resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} + engines: {node: '>=10.0.0'} + hasBin: true + mimic-fn@4.0.0: resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} engines: {node: '>=12'} @@ -3813,17 +3914,10 @@ packages: resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} engines: {node: '>=16 || 14 >=14.17'} - minimist@1.2.8: - resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - - minipass@7.0.4: - resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} + minipass@7.1.2: + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} engines: {node: '>=16 || 14 >=14.17'} - mkdirp@0.5.6: - resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} - hasBin: true - mlly@1.7.3: resolution: {integrity: sha512-xUsx5n/mN0uQf4V548PKQ+YShA4/IW0KI1dZhrNrPCLG+xizETbHTkOa1f8/xut9JRPp8kQuMnz0oqwkTiLo/A==} @@ -3831,10 +3925,6 @@ packages: resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} engines: {node: '>=4'} - mrmime@1.0.1: - resolution: {integrity: sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==} - engines: {node: '>=10'} - mrmime@2.0.0: resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==} engines: {node: '>=10'} @@ -3851,8 +3941,8 @@ packages: mz@2.7.0: resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} - nanoid@3.3.7: - resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} + nanoid@3.3.8: + resolution: {integrity: sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true @@ -3869,6 +3959,9 @@ packages: node-addon-api@7.1.1: resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==} + node-fetch-native@1.6.4: + resolution: {integrity: sha512-IhOigYzAKHd244OC0JIMIUrjzctirCmPkaIfhDeGcEETWof5zKYUW7e7MYvChGWh/4CJeXEgsRyGzuF334rOOQ==} + node-fetch@2.7.0: resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} engines: {node: 4.x || >=6.0.0} @@ -3878,8 +3971,12 @@ packages: encoding: optional: true - node-releases@2.0.18: - resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} + node-forge@1.3.1: + resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} + engines: {node: '>= 6.13.0'} + + node-releases@2.0.19: + resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} @@ -3900,8 +3997,9 @@ packages: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} - object-inspect@1.13.1: - resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} + object-inspect@1.13.3: + resolution: {integrity: sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==} + engines: {node: '>= 0.4'} object-is@1.1.6: resolution: {integrity: sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==} @@ -3911,10 +4009,16 @@ packages: resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} engines: {node: '>= 0.4'} - object.assign@4.1.5: - resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} + object.assign@4.1.7: + resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==} engines: {node: '>= 0.4'} + ofetch@1.4.1: + resolution: {integrity: sha512-QZj2DfGplQAr2oj9KzceK9Hwz6Whxazmn85yYeVuS3u9XTMOGMRx0kO95MQ+vLsj/S/NwBDMMLU5hpxvI6Tklw==} + + ohash@1.1.4: + resolution: {integrity: sha512-FlDryZAahJmEF3VR3w1KogSEdWX3WhA5GPakFx4J81kEAiHyLMpdLLElS8n8dfNadMgAne/MywcvmogzscVt4g==} + once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} @@ -3922,8 +4026,8 @@ packages: resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} engines: {node: '>=12'} - oniguruma-to-es@0.7.0: - resolution: {integrity: sha512-HRaRh09cE0gRS3+wi2zxekB+I5L8C/gN60S+vb11eADHUaB/q4u8wGGOX3GvwvitG8ixaeycZfeoyruKQzUgNg==} + oniguruma-to-es@0.8.0: + resolution: {integrity: sha512-rY+/a6b+uCgoYIL9itjY0x99UUDHXmGaw7Jjk5ZvM/3cxDJifyxFr/Zm4tTmF6Tre18gAakJo7AzhKUeMNLgHA==} open-props@1.7.8: resolution: {integrity: sha512-krA26gD4jikp1RehQkO7zOdu3ZXdPRqAOBg5nChCYK0ykpufQflSxHw2t6W5vzG7Ot+J8Lv/NDM8ZwBdbteX5g==} @@ -3947,8 +4051,8 @@ packages: resolution: {integrity: sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==} engines: {node: '>=18'} - p-limit@6.1.0: - resolution: {integrity: sha512-H0jc0q1vOzlEk0TqAKXKZxdl7kX3OFUzCnNVUnq5Pc3DGo0kpeaMuPqxQn235HibwBEb0/pm9dgKTjXy66fBkg==} + p-limit@6.2.0: + resolution: {integrity: sha512-kuUqqHNUqoIWp/c467RI4X6mmyuojY5jGutNU0wVTmEOOfcuwLqyMVoAi9MKi2Ak+5i9+nhmrK4ufZE8069kHA==} engines: {node: '>=18'} p-locate@4.1.0: @@ -3963,26 +4067,26 @@ packages: resolution: {integrity: sha512-NXzu9aQJTAzbBqOt2hwsR63ea7yvxJc0PwN/zobNAudYfb1B7R08SzB4TsLeSbUCuG467NhnoT0oO6w1qRO+BA==} engines: {node: '>=18'} - p-timeout@6.1.2: - resolution: {integrity: sha512-UbD77BuZ9Bc9aABo74gfXhNvzC9Tx7SxtHSh1fxvx3jTLLYvmVhiQZZrJzqqU0jKbN32kb5VOKiLEQI/3bIjgQ==} + p-timeout@6.1.3: + resolution: {integrity: sha512-UJUyfKbwvr/uZSV6btANfb+0t/mOhKV/KXcCUTp8FcQI+v/0d+wXqH4htrW0E4rR6WiEO/EPvUFiV9D5OI4vlw==} engines: {node: '>=14.16'} p-try@2.2.0: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} - package-manager-detector@0.2.7: - resolution: {integrity: sha512-g4+387DXDKlZzHkP+9FLt8yKj8+/3tOkPv7DVTJGGRm00RkEWgqbFstX1mXJ4M0VDYhUqsTOiISqNOJnhAu3PQ==} + package-json-from-dist@1.0.1: + resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} + + package-manager-detector@0.2.8: + resolution: {integrity: sha512-ts9KSdroZisdvKMWVAVCXiKqnqNfXz4+IbrBG8/BWx/TR5le+jfenvoBuIZ6UWM9nz47W7AbD9qYfAwfWMIwzA==} - parse-entities@4.0.1: - resolution: {integrity: sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==} + parse-entities@4.0.2: + resolution: {integrity: sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==} parse-latin@7.0.0: resolution: {integrity: sha512-mhHgobPPua5kZ98EF4HWiH167JWBfl4pvAIXXdbaVohtK7a6YBOy56kvhCqduqyo/f3yrHFWmqmiMg/BkBkYYQ==} - parse5@7.1.2: - resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} - parse5@7.2.1: resolution: {integrity: sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==} @@ -4011,9 +4115,9 @@ packages: path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - path-scurry@1.10.2: - resolution: {integrity: sha512-7xTavNy5RQXnsjANvVvMkEjvloOinkAjv/Z6Ildz9v2RinZ4SBKTWFOVRbaF8p0vpHnyjV/UwNDdKuUv6M5qcA==} - engines: {node: '>=16 || 14 >=14.17'} + path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} @@ -4054,6 +4158,16 @@ packages: pkg-types@1.2.1: resolution: {integrity: sha512-sQoqa8alT3nHjGuTjuKgOnvjo4cljkufdtLMnO2LBP/wRwuDlo1tkaEdMxCRhyGRPacv/ztlZgDPm2b7FAmEvw==} + playwright-core@1.49.1: + resolution: {integrity: sha512-BzmpVcs4kE2CH15rWfzpjzVGhWERJfmnXmniSyKeRZUs9Ws65m+RGIi7mjJK/euCegfn3i7jvqWeWyHe9y3Vgg==} + engines: {node: '>=18'} + hasBin: true + + playwright@1.49.1: + resolution: {integrity: sha512-VYL8zLoNTBxVOrJBbDuRgDWa3i+mfQgDTrL8Ah9QXZ7ax4Dsj0MSq5bYgytRnDVVe+njoKnfsYkH3HzqVj5UZA==} + engines: {node: '>=18'} + hasBin: true + popmotion@11.0.5: resolution: {integrity: sha512-la8gPM1WYeFznb/JqF4GiTkRRPZsfaj2+kCxqQgr2MJylMmIKUwBfWW8Wa5fml/8gmtlD5yI01MP1QCZPWmppA==} @@ -4061,8 +4175,8 @@ packages: resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} engines: {node: '>= 0.4'} - postcss-jit-props@1.0.14: - resolution: {integrity: sha512-GimU4wen29Qr0DbDaAuWrj4NcErYR5x1rxcEFuPVAwF2HEZALydA8tpTMWEyThK7T2bwFTMFMA4G70pL55xUbw==} + postcss-jit-props@1.0.15: + resolution: {integrity: sha512-XHw5sCpuSo431tQ7Awaqlr4gfK+5HTR7JjofmUBLwJWa4vBO0okkNOXFgfPzf3QOHhfVgMtTbzeNqdNbUCf+nQ==} engines: {node: '>=10.0.0'} peerDependencies: postcss: ^8.2.8 @@ -4106,6 +4220,11 @@ packages: prettier: ^3.0.0 svelte: ^3.2.0 || ^4.0.0-next.0 || ^5.0.0-next.0 + prettier@2.8.7: + resolution: {integrity: sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw==} + engines: {node: '>=10.13.0'} + hasBin: true + prettier@2.8.8: resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} engines: {node: '>=10.13.0'} @@ -4152,6 +4271,9 @@ packages: queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + radix3@1.1.2: + resolution: {integrity: sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==} + randombytes@2.1.0: resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} @@ -4160,6 +4282,11 @@ packages: peerDependencies: react: ^18.3.1 + react-dom@19.0.0: + resolution: {integrity: sha512-4GV5sHFG0e/0AD4X+ySy6UJd3jVl1iNsNHdpad0qhABJ11twS3TTBnseqsKurKcsNqCEFeGL3uLpVChpIO3QfQ==} + peerDependencies: + react: ^19.0.0 + react-is@17.0.2: resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} @@ -4174,6 +4301,10 @@ packages: resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} engines: {node: '>=0.10.0'} + react@19.0.0: + resolution: {integrity: sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ==} + engines: {node: '>=0.10.0'} + read-yaml-file@1.1.0: resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==} engines: {node: '>=6'} @@ -4186,6 +4317,10 @@ packages: resolution: {integrity: sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==} engines: {node: '>= 14.16.0'} + recast@0.23.9: + resolution: {integrity: sha512-Hx/BGIbwj+Des3+xy5uAtAbdCyqK9y9wbBcDFDYanLS9JnMqf7OeF87HQwUimE87OEc72mr6tkKUKMBBL+hF9Q==} + engines: {node: '>= 4'} + recma-build-jsx@1.0.0: resolution: {integrity: sha512-8GtdyqaBcDfva+GUKDr3nev3VpKAhup1+RvkMvUxURHpW7QyIvk9F5wz7Vzo06CEMSilw6uArgRqhpiUcWp8ew==} @@ -4202,8 +4337,12 @@ packages: resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} engines: {node: '>=8'} - regenerate-unicode-properties@10.1.1: - resolution: {integrity: sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==} + reflect.getprototypeof@1.0.9: + resolution: {integrity: sha512-r0Ay04Snci87djAsI4U+WNRcSw5S4pOH7qFjd/veA5gC7TbqESR3tcj28ia95L/fYUDw11JKP7uqUKUAfVvV5Q==} + engines: {node: '>= 0.4'} + + regenerate-unicode-properties@10.2.0: + resolution: {integrity: sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==} engines: {node: '>=4'} regenerate@1.4.2: @@ -4215,8 +4354,8 @@ packages: regenerator-transform@0.15.2: resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==} - regex-recursion@4.3.0: - resolution: {integrity: sha512-5LcLnizwjcQ2ALfOj95MjcatxyqF5RPySx9yT+PaXu3Gox2vyAtLDjHB8NTJLtMGkvyau6nI3CfpwFCjPUIs/A==} + regex-recursion@5.0.0: + resolution: {integrity: sha512-UwyOqeobrCCqTXPcsSqH4gDhOjD5cI/b8kjngWgSZbxYh5yVjAwTjO5+hAuPRNiuR70+5RlWSs+U9PVcVcW9Lw==} regex-utilities@2.3.0: resolution: {integrity: sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==} @@ -4224,23 +4363,26 @@ packages: regex@5.0.2: resolution: {integrity: sha512-/pczGbKIQgfTMRV0XjABvc5RzLqQmwqxLHdQao2RTXPk+pmTXB2P0IaUHYdYyk412YLwUIkaeMd5T+RzVgTqnQ==} - regexp.prototype.flags@1.5.2: - resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==} + regexp.prototype.flags@1.5.3: + resolution: {integrity: sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ==} engines: {node: '>= 0.4'} - regexpu-core@5.3.2: - resolution: {integrity: sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==} + regexpu-core@6.2.0: + resolution: {integrity: sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA==} engines: {node: '>=4'} - regjsparser@0.9.1: - resolution: {integrity: sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==} + regjsgen@0.8.0: + resolution: {integrity: sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==} + + regjsparser@0.12.0: + resolution: {integrity: sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==} hasBin: true rehype-autolink-headings@7.1.0: resolution: {integrity: sha512-rItO/pSdvnvsP4QRB1pmPiNHUskikqtPojZKJPPPAVx9Hj8i8TwMBhofrrAYRhYOOBZH9tgmG5lPqDLuIWPWmw==} - rehype-parse@9.0.0: - resolution: {integrity: sha512-WG7nfvmWWkCR++KEkZevZb/uw41E8TsH4DsY9UxsTbIXCVGbAs4S+r8FrQ+OtH5EEQAs+5UxKC42VinkmpA1Yw==} + rehype-parse@9.0.1: + resolution: {integrity: sha512-ksCzCD0Fgfh7trPDxr2rSylbwq9iYDkSn8TCDmEJ49ljEUBxDVCzCHv7QNzZOfODanX4+bWQ4WZqLCRWYLfhag==} rehype-raw@7.0.0: resolution: {integrity: sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==} @@ -4260,8 +4402,8 @@ packages: remark-gfm@4.0.0: resolution: {integrity: sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA==} - remark-mdx@3.0.1: - resolution: {integrity: sha512-3Pz3yPQ5Rht2pM5R+0J2MrGoBSrzf+tJG94N+t/ilfdh8YLyyKYtidAYwTveB20BoHAcwIopOUqhcmh2F7hGYA==} + remark-mdx@3.1.0: + resolution: {integrity: sha512-Ngl/H3YXyBV9RcRNdlYsZujAmhsxwzxpDzpDEhFBVAGthS4GDgnctpDjgFl/ULx5UEDzqtW1cyBSNKqYYrqLBA==} remark-parse@11.0.0: resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==} @@ -4276,6 +4418,9 @@ packages: remark-stringify@11.0.0: resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==} + request-light@0.5.8: + resolution: {integrity: sha512-3Zjgh+8b5fhRJBQZoy+zbVKpAQGLyka0MPgW3zruTF4dFFJ8Fqcfu9YsAvi/rvdcaTeWG3MkbZv4WKxAn/84Lg==} + request-light@0.7.0: resolution: {integrity: sha512-lMbBMrDoxgsyO+yB3sDcrDuX85yYt7sS8BfQd11jtbW/z5ZWgLZRcEGLsLoYw7I0WSUGQBs8CC8ScIxkTX1+6Q==} @@ -4297,8 +4442,9 @@ packages: resolve-pkg-maps@1.0.0: resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} - resolve@1.22.8: - resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} + resolve@1.22.10: + resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} + engines: {node: '>= 0.4'} hasBin: true retext-latin@4.0.0: @@ -4317,24 +4463,19 @@ packages: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - rimraf@2.7.1: - resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} - deprecated: Rimraf versions prior to v4 are no longer supported - hasBin: true - rollup-plugin-terser@7.0.2: resolution: {integrity: sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==} deprecated: This package has been deprecated and is no longer maintained. Please use @rollup/plugin-terser peerDependencies: rollup: ^2.0.0 - rollup@2.79.1: - resolution: {integrity: sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==} + rollup@2.79.2: + resolution: {integrity: sha512-fS6iqSPZDs3dr/y7Od6y5nha8dW1YnbgtsyotCVvoFGKbERG++CVRFv1meyGDE1SNItQA8BrnCw7ScdAhRJ3XQ==} engines: {node: '>=10.0.0'} hasBin: true - rollup@4.28.1: - resolution: {integrity: sha512-61fXYl/qNVinKmGSTHAZ6Yy8I3YIJC/r2m9feHo6SwVAVcLT5MPwOUFe7EuURA/4m0NR8lXG4BBXuo/IZEsjMg==} + rollup@4.29.1: + resolution: {integrity: sha512-RaJ45M/kmJUzSWDs1Nnd5DdV4eerC98idtUOVr6FfKcgxqvjwHmxc5upLF9qZU9EpsVzzhleFahrT3shLuJzIw==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -4356,33 +4497,30 @@ packages: resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} engines: {node: '>=6'} - safe-array-concat@1.1.2: - resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==} + safe-array-concat@1.1.3: + resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==} engines: {node: '>=0.4'} safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - safe-regex-test@1.0.3: - resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} + safe-regex-test@1.1.0: + resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} engines: {node: '>= 0.4'} safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - sander@0.5.1: - resolution: {integrity: sha512-3lVqBir7WuKDHGrKRDn/1Ye3kwpXaDOMsiRP1wd6wpZW56gJhsbp5RqQpA6JG/P+pkXizygnr1dKR8vzWaVsfA==} - sass-formatter@0.7.9: resolution: {integrity: sha512-CWZ8XiSim+fJVG0cFLStwDvft1VI7uvXdCNJYXhDvowiv+DsbD1nXLiQ4zrE5UBvj5DWZJ93cwN0NX5PMsr1Pw==} - sass@1.82.0: - resolution: {integrity: sha512-j4GMCTa8elGyN9A7x7bEglx0VgSpNUG4W4wNedQ33wSMdnkqQCT8HTwOaVSV4e6yQovcu/3Oc4coJP/l0xhL2Q==} + sass@1.83.0: + resolution: {integrity: sha512-qsSxlayzoOjdvXMVLkzF84DJFc2HZEL/rFyGIKbbilYtAvlCxyuzUeff9LawTn4btVnLKg75Z8MMr1lxU1lfGw==} engines: {node: '>=14.0.0'} hasBin: true - sax@1.3.0: - resolution: {integrity: sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==} + sax@1.4.1: + resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} saxes@6.0.0: resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} @@ -4391,15 +4529,13 @@ packages: scheduler@0.23.2: resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} + scheduler@0.25.0: + resolution: {integrity: sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA==} + semver@6.3.1: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true - semver@7.6.0: - resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==} - engines: {node: '>=10'} - hasBin: true - semver@7.6.3: resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} engines: {node: '>=10'} @@ -4441,11 +4577,23 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - shiki@1.24.0: - resolution: {integrity: sha512-qIneep7QRwxRd5oiHb8jaRzH15V/S8F3saCXOdjwRLgozZJr5x2yeBhQtqkO3FSzQDwYEFAYuifg4oHjpDghrg==} + shiki@1.24.3: + resolution: {integrity: sha512-eMeX/ehE2IDKVs71kB4zVcDHjutNcOtm+yIRuR4sA6ThBbdFI0DffGJiyoKCodj0xRGxIoWC3pk/Anmm5mzHmA==} + + side-channel-list@1.0.0: + resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} + engines: {node: '>= 0.4'} + + side-channel-map@1.0.1: + resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} + engines: {node: '>= 0.4'} + + side-channel-weakmap@1.0.2: + resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} + engines: {node: '>= 0.4'} - side-channel@1.0.6: - resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} + side-channel@1.1.0: + resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} engines: {node: '>= 0.4'} siginfo@2.0.0: @@ -4458,9 +4606,9 @@ packages: simple-swizzle@0.2.2: resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} - sirv@2.0.4: - resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==} - engines: {node: '>= 10'} + sirv@3.0.0: + resolution: {integrity: sha512-BPwJGUeDaDCHihkORDchNyyTvWFhcusy1XMmhEVTQTwGeybFbp8YEmB+njbPnth1FibULBSBVwCQni25XlCUDg==} + engines: {node: '>=18'} sisteransi@1.0.5: resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} @@ -4486,14 +4634,6 @@ packages: peerDependencies: solid-js: ^1.3 - sorcery@0.11.1: - resolution: {integrity: sha512-o7npfeJE6wi6J9l0/5LKshFzZ2rMatRiCDwYeDQaOzqdzRJwALhX7mk/A/ecg6wjMu7wdZbmXfD2S/vpOg0bdQ==} - hasBin: true - - source-map-js@1.2.0: - resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} - engines: {node: '>=0.10.0'} - source-map-js@1.2.1: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} @@ -4532,8 +4672,8 @@ packages: std-env@3.8.0: resolution: {integrity: sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w==} - stop-iteration-iterator@1.0.0: - resolution: {integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==} + stop-iteration-iterator@1.1.0: + resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==} engines: {node: '>= 0.4'} stream-replace-string@2.0.0: @@ -4551,16 +4691,17 @@ packages: resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} engines: {node: '>=18'} - string.prototype.matchall@4.0.11: - resolution: {integrity: sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==} + string.prototype.matchall@4.0.12: + resolution: {integrity: sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==} engines: {node: '>= 0.4'} - string.prototype.trim@1.2.9: - resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==} + string.prototype.trim@1.2.10: + resolution: {integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==} engines: {node: '>= 0.4'} - string.prototype.trimend@1.0.8: - resolution: {integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==} + string.prototype.trimend@1.0.9: + resolution: {integrity: sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==} + engines: {node: '>= 0.4'} string.prototype.trimstart@1.0.8: resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} @@ -4603,8 +4744,8 @@ packages: style-to-object@0.4.4: resolution: {integrity: sha512-HYNoHZa2GorYNyqiCaBgsxvcJIn7OHq6inEga+E6Ke3m5JkoqpQbnFssk4jwe+K7AhGa2fcha4wSOf1Kn01dMg==} - style-to-object@1.0.6: - resolution: {integrity: sha512-khxq+Qm3xEyZfKd/y9L3oIWQimxuc4STrQKtQn8aSDRHb8mFgpukgX1hdzfrMEW6JCjyJ8p89x+IUMVnCBI1PA==} + style-to-object@1.0.8: + resolution: {integrity: sha512-xT47I/Eo0rwJmaXC4oilDGDWLohVhR6o/xAQcPQN8q6QBuZVL8qMYL85kLmST5cPjAorwvqIA4qXTRQoYHaL6g==} style-value-types@5.1.2: resolution: {integrity: sha512-Vs9fNreYF9j6W2VvuDTP7kepALi7sk0xtk2Tu8Yxi9UoajJdEVpNpCov0HsLTqXvNGKX+Uv09pkozVITi1jf3Q==} @@ -4617,10 +4758,6 @@ packages: suf-log@2.5.3: resolution: {integrity: sha512-KvC8OPjzdNOe+xQ4XWJV2whQA0aM1kGVczMQ8+dStAO6KfEB140JEVQ9dE76ONZ0/Ylf67ni4tILPJB41U0eow==} - supports-color@5.5.0: - resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} - engines: {node: '>=4'} - supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} @@ -4634,61 +4771,26 @@ packages: peerDependencies: svelte: ^5.0.0 + svelte-check@4.1.1: + resolution: {integrity: sha512-NfaX+6Qtc8W/CyVGS/F7/XdiSSyXz+WGYA9ZWV3z8tso14V2vzjfXviKaTFEzB7g8TqfgO2FOzP6XT4ApSTUTw==} + engines: {node: '>= 18.0.0'} + hasBin: true + peerDependencies: + svelte: ^4.0.0 || ^5.0.0-next.0 + typescript: '>=5.0.0' + svelte-copy@2.0.0: resolution: {integrity: sha512-wJ784qrc9CF7EtrlT2kwJfHnqae/pp4fkgzYeUxex4iFBm6HosT2904t5cZZ1GAZzg/z9V+lCZVP5rpiYsN6Tw==} peerDependencies: svelte: ^5.0.0 - svelte-hmr@0.16.0: - resolution: {integrity: sha512-Gyc7cOS3VJzLlfj7wKS0ZnzDVdv3Pn2IuVeJPk9m2skfhcu5bq3wtIZyQGggr7/Iim5rH5cncyQft/kRLupcnA==} - engines: {node: ^12.20 || ^14.13.1 || >= 16} - peerDependencies: - svelte: ^3.19.0 || ^4.0.0 - svelte-inview@4.0.4: resolution: {integrity: sha512-PlXNSHHijvQ6MhmSYUj6cMyS+39NttoTffk7W5WYF8T2tsyLgJnKhyuAF+/hSujbY0vpsmqXaMd2nolEKvR8Kw==} peerDependencies: svelte: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^5.0.0-next - svelte-preprocess@5.1.4: - resolution: {integrity: sha512-IvnbQ6D6Ao3Gg6ftiM5tdbR6aAETwjhHV+UKGf5bHGYR69RQvF1ho0JKPcbUON4vy4R7zom13jPjgdOWCQ5hDA==} - engines: {node: '>= 16.0.0'} - peerDependencies: - '@babel/core': ^7.10.2 - coffeescript: ^2.5.1 - less: ^3.11.3 || ^4.0.0 - postcss: ^7 || ^8 - postcss-load-config: ^2.1.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 - pug: ^3.0.0 - sass: ^1.26.8 - stylus: ^0.55.0 - sugarss: ^2.0.0 || ^3.0.0 || ^4.0.0 - svelte: ^3.23.0 || ^4.0.0-next.0 || ^4.0.0 || ^5.0.0-next.0 - typescript: '>=3.9.5 || ^4.0.0 || ^5.0.0' - peerDependenciesMeta: - '@babel/core': - optional: true - coffeescript: - optional: true - less: - optional: true - postcss: - optional: true - postcss-load-config: - optional: true - pug: - optional: true - sass: - optional: true - stylus: - optional: true - sugarss: - optional: true - typescript: - optional: true - - svelte2tsx@0.7.30: - resolution: {integrity: sha512-sHXK/vw/sVJmFuPSq6zeKrtuZKvo0jJyEi8ybN0dfrqSYVvHu8zFbO0zQKAL8y/fYackYojH41EJGe6v8rd5fw==} + svelte2tsx@0.7.31: + resolution: {integrity: sha512-exrN1o9mdCLAA7hTCudz731FIxomH/0SN9ZIX+WrY/XnlLuno/NNC1PF6JXPZVqp/4sMMDKteqyKoG44hliljQ==} peerDependencies: svelte: ^3.55 || ^4.0.0-next.0 || ^4.0 || ^5.0.0-next.0 typescript: ^4.9.4 || ^5.0.0 @@ -4697,13 +4799,17 @@ packages: resolution: {integrity: sha512-IY1rnGr6izd10B0A8LqsBfmlT5OILVuZ7XsI0vdGPEvuonFV7NYEUK4dAkm9Zg2q0Um92kYjTpS1CAP3Nh/KWw==} engines: {node: '>=16'} - svelte@5.8.1: - resolution: {integrity: sha512-tqJY46Xoe+KiKvD4/guNlqpE+jco4IBcuaM6Ei9SEMETtsbLMfbak9XjTacqd6aGMmWXh7uFInfFTd4yES5r0A==} + svelte@5.15.0: + resolution: {integrity: sha512-YWl8rAd4hSjERLtLvP6h2pflGtmrJwv+L12BgrOtHYJCpvLS9WKp/YNAdyolw3FymXtcYZqhSWvWlu5O1X7tgQ==} engines: {node: '>=18'} symbol-tree@3.2.4: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} + system-architecture@0.1.0: + resolution: {integrity: sha512-ulAk51I9UVUyJgxlv9M6lFot2WP3e7t8Kz9+IS6D4rVba1tR9kON+Ey69f+1R4Q8cd45Lod6a4IcJIxnzGc/zA==} + engines: {node: '>=18'} + temp-dir@2.0.0: resolution: {integrity: sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==} engines: {node: '>=8'} @@ -4735,6 +4841,9 @@ packages: tiny-glob@0.2.9: resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==} + tiny-invariant@1.3.3: + resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} + tinybench@2.9.0: resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} @@ -4757,10 +4866,6 @@ packages: resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} engines: {node: '>=0.6.0'} - to-fast-properties@2.0.0: - resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} - engines: {node: '>=4'} - to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} @@ -4836,6 +4941,40 @@ packages: engines: {node: '>=18.0.0'} hasBin: true + turbo-darwin-64@2.3.3: + resolution: {integrity: sha512-bxX82xe6du/3rPmm4aCC5RdEilIN99VUld4HkFQuw+mvFg6darNBuQxyWSHZTtc25XgYjQrjsV05888w1grpaA==} + cpu: [x64] + os: [darwin] + + turbo-darwin-arm64@2.3.3: + resolution: {integrity: sha512-DYbQwa3NsAuWkCUYVzfOUBbSUBVQzH5HWUFy2Kgi3fGjIWVZOFk86ss+xsWu//rlEAfYwEmopigsPYSmW4X15A==} + cpu: [arm64] + os: [darwin] + + turbo-linux-64@2.3.3: + resolution: {integrity: sha512-eHj9OIB0dFaP6BxB88jSuaCLsOQSYWBgmhy2ErCu6D2GG6xW3b6e2UWHl/1Ho9FsTg4uVgo4DB9wGsKa5erjUA==} + cpu: [x64] + os: [linux] + + turbo-linux-arm64@2.3.3: + resolution: {integrity: sha512-NmDE/NjZoDj1UWBhMtOPmqFLEBKhzGS61KObfrDEbXvU3lekwHeoPvAMfcovzswzch+kN2DrtbNIlz+/rp8OCg==} + cpu: [arm64] + os: [linux] + + turbo-windows-64@2.3.3: + resolution: {integrity: sha512-O2+BS4QqjK3dOERscXqv7N2GXNcqHr9hXumkMxDj/oGx9oCatIwnnwx34UmzodloSnJpgSqjl8iRWiY65SmYoQ==} + cpu: [x64] + os: [win32] + + turbo-windows-arm64@2.3.3: + resolution: {integrity: sha512-dW4ZK1r6XLPNYLIKjC4o87HxYidtRRcBeo/hZ9Wng2XM/MqqYkAyzJXJGgRMsc0MMEN9z4+ZIfnSNBrA0b08ag==} + cpu: [arm64] + os: [win32] + + turbo@2.3.3: + resolution: {integrity: sha512-DUHWQAcC8BTiUZDRzAYGvpSpGLiaOQPfYXlCieQbwUvmml/LRGIe3raKdrOPOoiX0DYlzxs2nH6BoWJoZrj8hA==} + hasBin: true + type-detect@4.1.0: resolution: {integrity: sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==} engines: {node: '>=4'} @@ -4844,31 +4983,31 @@ packages: resolution: {integrity: sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==} engines: {node: '>=10'} - type-fest@4.30.0: - resolution: {integrity: sha512-G6zXWS1dLj6eagy6sVhOMQiLtJdxQBHIA9Z6HFUNLOlr6MFOgzV8wvmidtPONfPtEUv0uZsy77XJNzTAfwPDaA==} + type-fest@4.30.2: + resolution: {integrity: sha512-UJShLPYi1aWqCdq9HycOL/gwsuqda1OISdBO3t8RlXQC4QvtuIz4b5FCfe2dQIWEpmlRExKmcTBfP1r9bhY7ig==} engines: {node: '>=16'} - typed-array-buffer@1.0.2: - resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==} + typed-array-buffer@1.0.3: + resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==} engines: {node: '>= 0.4'} - typed-array-byte-length@1.0.1: - resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==} + typed-array-byte-length@1.0.3: + resolution: {integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==} engines: {node: '>= 0.4'} - typed-array-byte-offset@1.0.2: - resolution: {integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==} + typed-array-byte-offset@1.0.4: + resolution: {integrity: sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==} engines: {node: '>= 0.4'} - typed-array-length@1.0.6: - resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==} + typed-array-length@1.0.7: + resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} engines: {node: '>= 0.4'} typesafe-path@0.2.2: resolution: {integrity: sha512-OJabfkAg1WLZSqJAJ0Z6Sdt3utnbzr/jh+NAHoyWHJe8CMSy79Gm085094M9nvTPy22KzTVn5Zq5mbapCI/hPA==} - typescript-auto-import-cache@0.3.2: - resolution: {integrity: sha512-+laqe5SFL1vN62FPOOJSUDTZxtgsoOXjneYOXIpx5rQ4UMiN89NAtJLpqLqyebv9fgQ/IMeeTX+mQyRnwvJzvg==} + typescript-auto-import-cache@0.3.5: + resolution: {integrity: sha512-fAIveQKsoYj55CozUiBoj4b/7WpN0i4o74wiGY5JVUEoD0XiqDk1tJqTEjgzL2/AizKQrXxyRosSebyDzBZKjw==} typescript@5.7.2: resolution: {integrity: sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==} @@ -4881,31 +5020,35 @@ packages: ultrahtml@1.5.3: resolution: {integrity: sha512-GykOvZwgDWZlTQMtp5jrD4BVL+gNn2NVlVafjcFUJ7taY20tqYdwdoWBFy6GBJsNTZe1GkGPkSl5knQAjtgceg==} - unbox-primitive@1.0.2: - resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} + unbox-primitive@1.1.0: + resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} + engines: {node: '>= 0.4'} - undici-types@5.26.5: - resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + uncrypto@0.1.3: + resolution: {integrity: sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==} - unicode-canonical-property-names-ecmascript@2.0.0: - resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==} - engines: {node: '>=4'} + undici-types@6.20.0: + resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==} + + unenv@1.10.0: + resolution: {integrity: sha512-wY5bskBQFL9n3Eca5XnhH6KbUo/tfvkwm9OpcdCvLaeA7piBNbavbOKJySEwQ1V0RH6HvNlSAFRTpvTqgKRQXQ==} + + unicode-canonical-property-names-ecmascript@2.0.1: + resolution: {integrity: sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==} + engines: {node: '>=4'} unicode-match-property-ecmascript@2.0.0: resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} engines: {node: '>=4'} - unicode-match-property-value-ecmascript@2.1.0: - resolution: {integrity: sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==} + unicode-match-property-value-ecmascript@2.2.0: + resolution: {integrity: sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==} engines: {node: '>=4'} unicode-property-aliases-ecmascript@2.1.0: resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} engines: {node: '>=4'} - unified@11.0.4: - resolution: {integrity: sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==} - unified@11.0.5: resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==} @@ -4991,6 +5134,69 @@ packages: resolution: {integrity: sha512-5liCNPuJW8dqh3+DM6uNM2EI3MLLpCKp/KY+9pB5M2S2SR2qvvDHhKgBOaTWEbZTAws3CXfB0rKTIolWKL05VQ==} engines: {node: '>=14.0.0'} + unstorage@1.14.1: + resolution: {integrity: sha512-0MBKpoVhNLL/Ixvue9lIsrHkwwWW9/f3TRftsYu1R7nZJJyHSdgPMBDjny2op07nirnS3OX6H3u+YDFGld+1Bg==} + peerDependencies: + '@azure/app-configuration': ^1.8.0 + '@azure/cosmos': ^4.2.0 + '@azure/data-tables': ^13.3.0 + '@azure/identity': ^4.5.0 + '@azure/keyvault-secrets': ^4.9.0 + '@azure/storage-blob': ^12.26.0 + '@capacitor/preferences': ^6.0.3 + '@deno/kv': '>=0.8.4' + '@netlify/blobs': ^6.5.0 || ^7.0.0 || ^8.1.0 + '@planetscale/database': ^1.19.0 + '@upstash/redis': ^1.34.3 + '@vercel/blob': '>=0.27.0' + '@vercel/kv': ^1.0.1 + aws4fetch: ^1.0.20 + db0: '>=0.2.1' + idb-keyval: ^6.2.1 + ioredis: ^5.4.1 + uploadthing: ^7.4.1 + peerDependenciesMeta: + '@azure/app-configuration': + optional: true + '@azure/cosmos': + optional: true + '@azure/data-tables': + optional: true + '@azure/identity': + optional: true + '@azure/keyvault-secrets': + optional: true + '@azure/storage-blob': + optional: true + '@capacitor/preferences': + optional: true + '@deno/kv': + optional: true + '@netlify/blobs': + optional: true + '@planetscale/database': + optional: true + '@upstash/redis': + optional: true + '@vercel/blob': + optional: true + '@vercel/kv': + optional: true + aws4fetch: + optional: true + db0: + optional: true + idb-keyval: + optional: true + ioredis: + optional: true + uploadthing: + optional: true + + untun@0.1.3: + resolution: {integrity: sha512-4luGP9LMYszMRZwsvyUd9MrxgEGZdZuZgpVQHEEX0lCYFESasVRvZd0EYpCkOIbJKHMuv0LskpXc/8Un+MJzEQ==} + hasBin: true + upath@1.2.0: resolution: {integrity: sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==} engines: {node: '>=4'} @@ -5001,8 +5207,8 @@ packages: peerDependencies: browserslist: '>= 4.21.0' - uri-js@4.4.1: - resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + uqr@0.1.2: + resolution: {integrity: sha512-MJu7ypHq6QasgF5YRTjqscSzQp/W11zoUk6kvmlH+fmWEs63Y0Eib13hYFwAzagRJcVY8WVnlV+eBDUGMJ5IbA==} url-parse@1.5.10: resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} @@ -5010,8 +5216,8 @@ packages: validate-html-nesting@1.2.2: resolution: {integrity: sha512-hGdgQozCsQJMyfK5urgFcWEqsSSrK63Awe0t/IMR0bZ0QMtnuaiHzThW81guu3qx9abLi99NEuiaN6P9gVYsNg==} - vfile-location@5.0.2: - resolution: {integrity: sha512-NXPYyxyBSH7zB5U6+3uDdd6Nybz6o6/od9rk8bp9H8GR3L+cm/fC0uUTbqBmUTnMCUDslAGBOIKNfvvb+gGlDg==} + vfile-location@5.0.3: + resolution: {integrity: sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==} vfile-message@4.0.2: resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==} @@ -5024,49 +5230,28 @@ packages: engines: {node: ^18.0.0 || >=20.0.0} hasBin: true + vite-plugin-kit-routes@0.7.2: + resolution: {integrity: sha512-eQe4RsoNCYzRvh1cRjiNomiRRujCkvPsGWZmGHCkTiiPstrMdf6nHvzTIFIO8DFs+Myvu1xD2xZeu347gxOawQ==} + engines: {node: ^16.14 || >=18} + peerDependencies: + '@sveltejs/kit': ^2.4.0 + vite-plugin-solid@2.11.0: resolution: {integrity: sha512-G+NiwDj4EAeUE0wt3Ur9f+Lt9oMUuLd0FIxYuqwJSqRacKQRteCwUFzNy8zMEt88xWokngQhiFjfJMhjc1fDXw==} peerDependencies: '@testing-library/jest-dom': ^5.16.6 || ^5.17.0 || ^6.* solid-js: ^1.7.2 - vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 + vite: ^6.0 peerDependenciesMeta: '@testing-library/jest-dom': optional: true - vite@5.4.11: - resolution: {integrity: sha512-c7jFQRklXua0mTzneGW9QVyxFjUgwcihC4bXEtujIo2ouWCe1Ajt/amn2PCxYnhYfd5k09JX3SB7OYWFKYqj8Q==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - peerDependencies: - '@types/node': ^18.0.0 || >=20.0.0 - less: '*' - lightningcss: ^1.21.0 - sass: '*' - sass-embedded: '*' - stylus: '*' - sugarss: '*' - terser: ^5.4.0 - peerDependenciesMeta: - '@types/node': - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - sass-embedded: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true + vite-plugin-watch-and-run@1.7.2: + resolution: {integrity: sha512-jCwcR1ZEOUPKvW89RMJKoaoiiJmXoah2vV3hHuPpK/btQLVxo9eWasOzN0MMbPMxCncSdg3JSPWpDExfKm4HmA==} + engines: {node: ^16.14 || >=18} - vite@6.0.3: - resolution: {integrity: sha512-Cmuo5P0ENTN6HxLSo6IHsjCLn/81Vgrp81oaiFFMRa8gGDj5xEjIcEpf2ZymZtZR8oU0P2JX5WuUp/rlXcHkAw==} + vite@6.0.5: + resolution: {integrity: sha512-akD5IAH/ID5imgue2DYhzsEwCi0/4VKY31uhMLEYJwPP4TiUp8pL5PIK+Wo7H8qT8JY9i+pVfPydcFPYD1EL7g==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true peerDependencies: @@ -5105,18 +5290,10 @@ packages: yaml: optional: true - vitefu@0.2.5: - resolution: {integrity: sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==} - peerDependencies: - vite: ^3.0.0 || ^4.0.0 || ^5.0.0 - peerDependenciesMeta: - vite: - optional: true - vitefu@1.0.4: resolution: {integrity: sha512-y6zEE3PQf6uu/Mt6DTJ9ih+kyJLr4XcSgHR2zUkM8SWDhuixEJxfJ6CZGMHh1Ec3vPLoEA0IHU5oWzVqw8ulow==} peerDependencies: - vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 + vite: ^6.0 peerDependenciesMeta: vite: optional: true @@ -5146,34 +5323,34 @@ packages: jsdom: optional: true - volar-service-css@0.0.34: - resolution: {integrity: sha512-C7ua0j80ZD7bsgALAz/cA1bykPehoIa5n+3+Ccr+YLpj0fypqw9iLUmGLX11CqzqNCO2XFGe/1eXB/c+SWrF/g==} + volar-service-css@0.0.62: + resolution: {integrity: sha512-JwNyKsH3F8PuzZYuqPf+2e+4CTU8YoyUHEHVnoXNlrLe7wy9U3biomZ56llN69Ris7TTy/+DEX41yVxQpM4qvg==} peerDependencies: - '@volar/language-service': ~2.1.0 + '@volar/language-service': ~2.4.0 peerDependenciesMeta: '@volar/language-service': optional: true - volar-service-emmet@0.0.34: - resolution: {integrity: sha512-ubQvMCmHPp8Ic82LMPkgrp9ot+u2p/RDd0RyT0EykRkZpWsagHUF5HWkVheLfiMyx2rFuWx/+7qZPOgypx6h6g==} + volar-service-emmet@0.0.62: + resolution: {integrity: sha512-U4dxWDBWz7Pi4plpbXf4J4Z/ss6kBO3TYrACxWNsE29abu75QzVS0paxDDhI6bhqpbDFXlpsDhZ9aXVFpnfGRQ==} peerDependencies: - '@volar/language-service': ~2.1.0 + '@volar/language-service': ~2.4.0 peerDependenciesMeta: '@volar/language-service': optional: true - volar-service-html@0.0.34: - resolution: {integrity: sha512-kMEneea1tQbiRcyKavqdrSVt8zV06t+0/3pGkjO3gV6sikXTNShIDkdtB4Tq9vE2cQdM50TuS7utVV7iysUxHw==} + volar-service-html@0.0.62: + resolution: {integrity: sha512-Zw01aJsZRh4GTGUjveyfEzEqpULQUdQH79KNEiKVYHZyuGtdBRYCHlrus1sueSNMxwwkuF5WnOHfvBzafs8yyQ==} peerDependencies: - '@volar/language-service': ~2.1.0 + '@volar/language-service': ~2.4.0 peerDependenciesMeta: '@volar/language-service': optional: true - volar-service-prettier@0.0.34: - resolution: {integrity: sha512-BNfJ8FwfPi1Wm/JkuzNjraOLdtKieGksNT/bDyquygVawv1QUzO2HB1hiMKfZGdcSFG5ZL9R0j7bBfRTfXA2gg==} + volar-service-prettier@0.0.62: + resolution: {integrity: sha512-h2yk1RqRTE+vkYZaI9KYuwpDfOQRrTEMvoHol0yW4GFKc75wWQRrb5n/5abDrzMPrkQbSip8JH2AXbvrRtYh4w==} peerDependencies: - '@volar/language-service': ~2.1.0 + '@volar/language-service': ~2.4.0 prettier: ^2.2 || ^3.0 peerDependenciesMeta: '@volar/language-service': @@ -5181,41 +5358,67 @@ packages: prettier: optional: true - volar-service-typescript-twoslash-queries@0.0.34: - resolution: {integrity: sha512-XAY2YtWKUp6ht89gxt3L5Dr46LU45d/VlBkj1KXUwNlinpoWiGN4Nm3B6DRF3VoBThAnQgm4c7WD0S+5yTzh+w==} + volar-service-typescript-twoslash-queries@0.0.62: + resolution: {integrity: sha512-KxFt4zydyJYYI0kFAcWPTh4u0Ha36TASPZkAnNY784GtgajerUqM80nX/W1d0wVhmcOFfAxkVsf/Ed+tiYU7ng==} peerDependencies: - '@volar/language-service': ~2.1.0 + '@volar/language-service': ~2.4.0 peerDependenciesMeta: '@volar/language-service': optional: true - volar-service-typescript@0.0.34: - resolution: {integrity: sha512-NbAry0w8ZXFgGsflvMwmPDCzgJGx3C+eYxFEbldaumkpTAJiywECWiUbPIOfmEHgpOllUKSnhwtLlWFK4YnfQg==} + volar-service-typescript@0.0.62: + resolution: {integrity: sha512-p7MPi71q7KOsH0eAbZwPBiKPp9B2+qrdHAd6VY5oTo9BUXatsOAdakTm9Yf0DUj6uWBAaOT01BSeVOPwucMV1g==} peerDependencies: - '@volar/language-service': ~2.1.0 + '@volar/language-service': ~2.4.0 peerDependenciesMeta: '@volar/language-service': optional: true - vscode-css-languageservice@6.2.13: - resolution: {integrity: sha512-2rKWXfH++Kxd9Z4QuEgd1IF7WmblWWU7DScuyf1YumoGLkY9DW6wF/OTlhOyO2rN63sWHX2dehIpKBbho4ZwvA==} + volar-service-yaml@0.0.62: + resolution: {integrity: sha512-k7gvv7sk3wa+nGll3MaSKyjwQsJjIGCHFjVkl3wjaSP2nouKyn9aokGmqjrl39mi88Oy49giog2GkZH526wjig==} + peerDependencies: + '@volar/language-service': ~2.4.0 + peerDependenciesMeta: + '@volar/language-service': + optional: true + + vscode-css-languageservice@6.3.2: + resolution: {integrity: sha512-GEpPxrUTAeXWdZWHev1OJU9lz2Q2/PPBxQ2TIRmLGvQiH3WZbqaNoute0n0ewxlgtjzTW3AKZT+NHySk5Rf4Eg==} + + vscode-html-languageservice@5.3.1: + resolution: {integrity: sha512-ysUh4hFeW/WOWz/TO9gm08xigiSsV/FOAZ+DolgJfeLftna54YdmZ4A+lIn46RbdO3/Qv5QHTn1ZGqmrXQhZyA==} + + vscode-json-languageservice@4.1.8: + resolution: {integrity: sha512-0vSpg6Xd9hfV+eZAaYN63xVVMOTmJ4GgHxXnkLCh+9RsQBkWKIghzLhW2B9ebfG+LQQg8uLtsQ2aUKjTgE+QOg==} + engines: {npm: '>=7.0.0'} - vscode-html-languageservice@5.2.0: - resolution: {integrity: sha512-cdNMhyw57/SQzgUUGSIMQ66jikqEN6nBNyhx5YuOyj9310+eY9zw8Q0cXpiKzDX8aHYFewQEXRnigl06j/TVwQ==} + vscode-jsonrpc@6.0.0: + resolution: {integrity: sha512-wnJA4BnEjOSyFMvjZdpiOwhSq9uDoK8e/kpRJDTaMYzwlkrhG1fwDIZI94CLsLzlCK5cIbMMtFlJlfR57Lavmg==} + engines: {node: '>=8.0.0 || >=10.0.0'} vscode-jsonrpc@8.2.0: resolution: {integrity: sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==} engines: {node: '>=14.0.0'} + vscode-languageserver-protocol@3.16.0: + resolution: {integrity: sha512-sdeUoAawceQdgIfTI+sdcwkiK2KU+2cbEYA0agzM2uqaUy2UpnnGHtWTHVEtS0ES4zHU0eMFRGN+oQgDxlD66A==} + vscode-languageserver-protocol@3.17.5: resolution: {integrity: sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==} - vscode-languageserver-textdocument@1.0.11: - resolution: {integrity: sha512-X+8T3GoiwTVlJbicx/sIAF+yuJAqz8VvwJyoMVhwEMoEKE/fkDmrqUgDMyBECcM2A2frVZIUj5HI/ErRXCfOeA==} + vscode-languageserver-textdocument@1.0.12: + resolution: {integrity: sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==} + + vscode-languageserver-types@3.16.0: + resolution: {integrity: sha512-k8luDIWJWyenLc5ToFQQMaSrqCHiLwyKPHKPQZ5zz21vM+vIVUSvsRpcbiECH4WR88K2XZqc4ScRcZ7nk/jbeA==} vscode-languageserver-types@3.17.5: resolution: {integrity: sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==} + vscode-languageserver@7.0.0: + resolution: {integrity: sha512-60HTx5ID+fLRcgdHfmz0LDZAXYEV68fzwG0JWwEPBode9NuMYTIxuYXPg4ngO8i8+Ou0lM7y6GzaYWbiDL0drw==} + hasBin: true + vscode-languageserver@9.0.1: resolution: {integrity: sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g==} hasBin: true @@ -5223,9 +5426,6 @@ packages: vscode-nls@5.2.0: resolution: {integrity: sha512-RAaHx7B14ZU04EU31pT+rKz2/zSl7xMsfIZuo8pd+KZO6PXtQmpevpq3vxvWNcrGbdmhM/rr5Uw5Mz+NBfhVng==} - vscode-uri@2.1.2: - resolution: {integrity: sha512-8TEXQxlldWAuIODdukIb+TR5s+9Ds40eSJrw+1iDDA9IFORPjMELarNQE3myz5XIkWWpdprmJjm1/SxMlWOC8A==} - vscode-uri@3.0.8: resolution: {integrity: sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==} @@ -5284,8 +5484,13 @@ packages: whatwg-url@7.1.0: resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==} - which-boxed-primitive@1.0.2: - resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} + which-boxed-primitive@1.1.1: + resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==} + engines: {node: '>= 0.4'} + + which-builtin-type@1.2.1: + resolution: {integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==} + engines: {node: '>= 0.4'} which-collection@1.0.2: resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} @@ -5299,8 +5504,8 @@ packages: resolution: {integrity: sha512-ysVYmw6+ZBhx3+ZkcPwRuJi38ZOTLJJ33PSHaitLxSKUMsh0LkKd0nC69zZCwt5D+AYUcMK2hhw4yWny20vSGg==} engines: {node: '>=18.12'} - which-typed-array@1.1.15: - resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} + which-typed-array@1.1.18: + resolution: {integrity: sha512-qEcY+KJYlWyLH9vNbsr6/5j59AXk5ni5aakf8ldzBvGde6Iz4sxZGkJyWSAueTG7QhOvNRYb1lDdFmL5Td0QKA==} engines: {node: '>= 0.4'} which@2.0.2: @@ -5412,8 +5617,18 @@ packages: yallist@3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - yallist@4.0.0: - resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + yaml-language-server@1.15.0: + resolution: {integrity: sha512-N47AqBDCMQmh6mBLmI6oqxryHRzi33aPFPsJhYy3VTUGCdLHYjGh4FZzpUjRlphaADBBkDmnkM/++KNIOHi5Rw==} + hasBin: true + + yaml@2.2.2: + resolution: {integrity: sha512-CBKFWExMn46Foo4cldiChEzn7S7SRV+wqiluAb6xmueD/fGyRHIhX8m14vVGgeFWjN540nKCNVj6P21eQjgTuA==} + engines: {node: '>= 14'} + + yaml@2.6.1: + resolution: {integrity: sha512-7r0XPzioN/Q9kXBro/XPnA6kznR73DHq+GXh5ON7ZozRO6aMjbmiBuKste2wslTFkC5d1dw0GooOCepZXJ2SAg==} + engines: {node: '>= 14'} + hasBin: true yargs-parser@21.1.1: resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} @@ -5427,8 +5642,8 @@ packages: resolution: {integrity: sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==} engines: {node: '>=12.20'} - yocto-spinner@0.1.1: - resolution: {integrity: sha512-vb6yztJdmbX9BwiR2NlKim7roGM5xFFhiTO6UstNiKBnh8NT6uFNjpXYC6DWTnLgRRyHh2nDNEM8kLHSRLw4kg==} + yocto-spinner@0.1.2: + resolution: {integrity: sha512-VfmLIh/ZSZOJnVRQZc/dvpPP90lWL4G0bmxQMP0+U/2vKBA8GSpcBuWv17y7F+CZItRuO97HN1wdbb4p10uhOg==} engines: {node: '>=18.19'} yoctocolors@2.1.1: @@ -5438,10 +5653,10 @@ packages: zimmerframe@1.1.2: resolution: {integrity: sha512-rAbqEGa8ovJy4pyBxZM70hg4pE6gDgaQ0Sl9M3enG3I0d6H4XSAM3GeNGLKnsBpuijUow064sf7ww1nutC5/3w==} - zod-to-json-schema@3.23.5: - resolution: {integrity: sha512-5wlSS0bXfF/BrL4jPAbz9da5hDlDptdEppYfe+x4eIJ7jioqKG9uUxOwPzqof09u/XeVdrgFu29lZi+8XNDJtA==} + zod-to-json-schema@3.24.1: + resolution: {integrity: sha512-3h08nf3Vw3Wl3PK+q3ow/lIil81IT2Oa7YpQyUUDsEWbXveMesdfK1xBd2RhCkynwZndAxixji/7SYJJowr62w==} peerDependencies: - zod: ^3.23.3 + zod: ^3.24.1 zod-to-ts@1.2.0: resolution: {integrity: sha512-x30XE43V+InwGpvTySRNz9kB7qFU8DlyEy7BsSTCHPH1R0QasMmHWZDCzYm6bVXtj/9NNJAZF3jW8rzFvH5OFA==} @@ -5449,8 +5664,8 @@ packages: typescript: ^4.9.4 || ^5.0.2 zod: ^3 - zod@3.23.8: - resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==} + zod@3.24.1: + resolution: {integrity: sha512-muH7gBL9sI1nciMZV67X5fTKKBLtwpZ5VBp1vsOQzj1MhrBZ4wlVCm3gedKZWLp0Oyel8sIGfeiz54Su+OVT+A==} zwitch@2.0.4: resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} @@ -5461,31 +5676,31 @@ snapshots: '@ampproject/remapping@2.3.0': dependencies: - '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/gen-mapping': 0.3.8 '@jridgewell/trace-mapping': 0.3.25 '@antfu/install-pkg@0.4.1': dependencies: - package-manager-detector: 0.2.7 + package-manager-detector: 0.2.8 tinyexec: 0.3.1 '@antfu/install-pkg@0.5.0': dependencies: - package-manager-detector: 0.2.7 + package-manager-detector: 0.2.8 tinyexec: 0.3.1 '@antfu/utils@0.7.10': {} - '@apideck/better-ajv-errors@0.3.6(ajv@8.12.0)': + '@apideck/better-ajv-errors@0.3.6(ajv@8.17.1)': dependencies: - ajv: 8.12.0 + ajv: 8.17.1 json-schema: 0.4.0 jsonpointer: 5.0.1 leven: 3.1.0 '@astrojs/check@0.5.10(prettier-plugin-astro@0.14.1)(prettier@3.4.2)(typescript@5.7.2)': dependencies: - '@astrojs/language-server': 2.8.4(prettier-plugin-astro@0.14.1)(prettier@3.4.2)(typescript@5.7.2) + '@astrojs/language-server': 2.15.4(prettier-plugin-astro@0.14.1)(prettier@3.4.2)(typescript@5.7.2) chokidar: 3.6.0 fast-glob: 3.3.2 kleur: 4.1.5 @@ -5499,23 +5714,25 @@ snapshots: '@astrojs/internal-helpers@0.4.2': {} - '@astrojs/language-server@2.8.4(prettier-plugin-astro@0.14.1)(prettier@3.4.2)(typescript@5.7.2)': + '@astrojs/language-server@2.15.4(prettier-plugin-astro@0.14.1)(prettier@3.4.2)(typescript@5.7.2)': dependencies: '@astrojs/compiler': 2.10.3 + '@astrojs/yaml2ts': 0.2.2 '@jridgewell/sourcemap-codec': 1.5.0 - '@volar/kit': 2.1.6(typescript@5.7.2) - '@volar/language-core': 2.1.6 - '@volar/language-server': 2.1.6 - '@volar/language-service': 2.1.6 - '@volar/typescript': 2.1.6 + '@volar/kit': 2.4.11(typescript@5.7.2) + '@volar/language-core': 2.4.11 + '@volar/language-server': 2.4.11 + '@volar/language-service': 2.4.11 fast-glob: 3.3.2 - volar-service-css: 0.0.34(@volar/language-service@2.1.6) - volar-service-emmet: 0.0.34(@volar/language-service@2.1.6) - volar-service-html: 0.0.34(@volar/language-service@2.1.6) - volar-service-prettier: 0.0.34(@volar/language-service@2.1.6)(prettier@3.4.2) - volar-service-typescript: 0.0.34(@volar/language-service@2.1.6) - volar-service-typescript-twoslash-queries: 0.0.34(@volar/language-service@2.1.6) - vscode-html-languageservice: 5.2.0 + muggle-string: 0.4.1 + volar-service-css: 0.0.62(@volar/language-service@2.4.11) + volar-service-emmet: 0.0.62(@volar/language-service@2.4.11) + volar-service-html: 0.0.62(@volar/language-service@2.4.11) + volar-service-prettier: 0.0.62(@volar/language-service@2.4.11)(prettier@3.4.2) + volar-service-typescript: 0.0.62(@volar/language-service@2.4.11) + volar-service-typescript-twoslash-queries: 0.0.62(@volar/language-service@2.4.11) + volar-service-yaml: 0.0.62(@volar/language-service@2.4.11) + vscode-html-languageservice: 5.3.1 vscode-uri: 3.0.8 optionalDependencies: prettier: 3.4.2 @@ -5523,7 +5740,7 @@ snapshots: transitivePeerDependencies: - typescript - '@astrojs/markdown-remark@6.0.0': + '@astrojs/markdown-remark@6.0.1': dependencies: '@astrojs/prism': 3.2.0 github-slugger: 2.0.0 @@ -5538,7 +5755,7 @@ snapshots: remark-parse: 11.0.0 remark-rehype: 11.1.1 remark-smartypants: 3.0.2 - shiki: 1.24.0 + shiki: 1.24.3 unified: 11.0.5 unist-util-remove-position: 5.0.0 unist-util-visit: 5.0.0 @@ -5547,15 +5764,15 @@ snapshots: transitivePeerDependencies: - supports-color - '@astrojs/mdx@4.0.1(astro@5.0.3(@types/node@20.12.7)(rollup@2.79.1)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(typescript@5.7.2))': + '@astrojs/mdx@4.0.3(astro@5.1.1(@types/node@22.10.2)(jiti@2.4.2)(rollup@2.79.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2)(typescript@5.7.2)(yaml@2.6.1))': dependencies: - '@astrojs/markdown-remark': 6.0.0 + '@astrojs/markdown-remark': 6.0.1 '@mdx-js/mdx': 3.1.0(acorn@8.14.0) acorn: 8.14.0 - astro: 5.0.3(@types/node@20.12.7)(rollup@2.79.1)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(typescript@5.7.2) + astro: 5.1.1(@types/node@22.10.2)(jiti@2.4.2)(rollup@2.79.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2)(typescript@5.7.2)(yaml@2.6.1) es-module-lexer: 1.5.4 estree-util-visit: 2.0.0 - hast-util-to-html: 9.0.3 + hast-util-to-html: 9.0.4 kleur: 4.1.5 rehype-raw: 7.0.0 remark-gfm: 4.0.0 @@ -5574,16 +5791,16 @@ snapshots: dependencies: sitemap: 8.0.0 stream-replace-string: 2.0.0 - zod: 3.23.8 + zod: 3.24.1 - '@astrojs/svelte@7.0.1(@types/node@20.12.7)(astro@5.0.3(@types/node@20.12.7)(rollup@2.79.1)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(typescript@5.7.2))(sass@1.82.0)(svelte@5.8.1)(terser@5.37.0)(tsx@4.19.2)(typescript@5.7.2)': + '@astrojs/svelte@7.0.2(@types/node@22.10.2)(astro@5.1.1(@types/node@22.10.2)(jiti@2.4.2)(rollup@2.79.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2)(typescript@5.7.2)(yaml@2.6.1))(jiti@2.4.2)(sass@1.83.0)(svelte@5.15.0)(terser@5.37.0)(tsx@4.19.2)(typescript@5.7.2)(yaml@2.6.1)': dependencies: - '@sveltejs/vite-plugin-svelte': 5.0.1(svelte@5.8.1)(vite@6.0.3(@types/node@20.12.7)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)) - astro: 5.0.3(@types/node@20.12.7)(rollup@2.79.1)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(typescript@5.7.2) - svelte: 5.8.1 - svelte2tsx: 0.7.30(svelte@5.8.1)(typescript@5.7.2) + '@sveltejs/vite-plugin-svelte': 5.0.2(svelte@5.15.0)(vite@6.0.5(@types/node@22.10.2)(jiti@2.4.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1)) + astro: 5.1.1(@types/node@22.10.2)(jiti@2.4.2)(rollup@2.79.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2)(typescript@5.7.2)(yaml@2.6.1) + svelte: 5.15.0 + svelte2tsx: 0.7.31(svelte@5.15.0)(typescript@5.7.2) typescript: 5.7.2 - vite: 6.0.3(@types/node@20.12.7)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2) + vite: 6.0.5(@types/node@22.10.2)(jiti@2.4.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1) transitivePeerDependencies: - '@types/node' - jiti @@ -5610,10 +5827,9 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/code-frame@7.24.2': + '@astrojs/yaml2ts@0.2.2': dependencies: - '@babel/highlight': 7.24.2 - picocolors: 1.1.1 + yaml: 2.6.1 '@babel/code-frame@7.26.2': dependencies: @@ -5621,30 +5837,8 @@ snapshots: js-tokens: 4.0.0 picocolors: 1.1.1 - '@babel/compat-data@7.24.4': {} - '@babel/compat-data@7.26.3': {} - '@babel/core@7.24.4': - dependencies: - '@ampproject/remapping': 2.3.0 - '@babel/code-frame': 7.24.2 - '@babel/generator': 7.24.4 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.4) - '@babel/helpers': 7.24.4 - '@babel/parser': 7.24.4 - '@babel/template': 7.24.0 - '@babel/traverse': 7.24.1 - '@babel/types': 7.24.0 - convert-source-map: 2.0.0 - debug: 4.4.0 - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - '@babel/core@7.26.0': dependencies: '@ampproject/remapping': 2.3.0 @@ -5665,121 +5859,72 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/generator@7.24.4': - dependencies: - '@babel/types': 7.24.0 - '@jridgewell/gen-mapping': 0.3.5 - '@jridgewell/trace-mapping': 0.3.25 - jsesc: 2.5.2 - '@babel/generator@7.26.3': dependencies: '@babel/parser': 7.26.3 '@babel/types': 7.26.3 - '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/gen-mapping': 0.3.8 '@jridgewell/trace-mapping': 0.3.25 - jsesc: 3.0.2 + jsesc: 3.1.0 - '@babel/helper-annotate-as-pure@7.22.5': + '@babel/helper-annotate-as-pure@7.25.9': dependencies: '@babel/types': 7.26.3 - '@babel/helper-builder-binary-assignment-operator-visitor@7.22.15': - dependencies: - '@babel/types': 7.26.3 - - '@babel/helper-compilation-targets@7.23.6': - dependencies: - '@babel/compat-data': 7.24.4 - '@babel/helper-validator-option': 7.23.5 - browserslist: 4.24.2 - lru-cache: 5.1.1 - semver: 6.3.1 - '@babel/helper-compilation-targets@7.25.9': dependencies: '@babel/compat-data': 7.26.3 '@babel/helper-validator-option': 7.25.9 - browserslist: 4.24.2 + browserslist: 4.24.3 lru-cache: 5.1.1 semver: 6.3.1 - '@babel/helper-create-class-features-plugin@7.24.4(@babel/core@7.24.4)': - dependencies: - '@babel/core': 7.24.4 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-function-name': 7.23.0 - '@babel/helper-member-expression-to-functions': 7.23.0 - '@babel/helper-optimise-call-expression': 7.22.5 - '@babel/helper-replace-supers': 7.24.1(@babel/core@7.24.4) - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 + '@babel/helper-create-class-features-plugin@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-member-expression-to-functions': 7.25.9 + '@babel/helper-optimise-call-expression': 7.25.9 + '@babel/helper-replace-supers': 7.25.9(@babel/core@7.26.0) + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + '@babel/traverse': 7.26.4 semver: 6.3.1 + transitivePeerDependencies: + - supports-color - '@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.24.4)': + '@babel/helper-create-regexp-features-plugin@7.26.3(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-annotate-as-pure': 7.22.5 - regexpu-core: 5.3.2 + '@babel/core': 7.26.0 + '@babel/helper-annotate-as-pure': 7.25.9 + regexpu-core: 6.2.0 semver: 6.3.1 - '@babel/helper-define-polyfill-provider@0.6.1(@babel/core@7.24.4)': + '@babel/helper-define-polyfill-provider@0.6.3(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.26.0 + '@babel/helper-compilation-targets': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 debug: 4.4.0 lodash.debounce: 4.0.8 - resolve: 1.22.8 + resolve: 1.22.10 transitivePeerDependencies: - supports-color - '@babel/helper-environment-visitor@7.22.20': {} - - '@babel/helper-function-name@7.23.0': - dependencies: - '@babel/template': 7.24.0 - '@babel/types': 7.24.0 - - '@babel/helper-hoist-variables@7.22.5': - dependencies: - '@babel/types': 7.24.0 - - '@babel/helper-member-expression-to-functions@7.23.0': - dependencies: - '@babel/types': 7.26.3 - - '@babel/helper-module-imports@7.18.6': - dependencies: - '@babel/types': 7.24.0 - - '@babel/helper-module-imports@7.24.3': - dependencies: - '@babel/types': 7.24.0 - - '@babel/helper-module-imports@7.25.9': + '@babel/helper-member-expression-to-functions@7.25.9': dependencies: '@babel/traverse': 7.26.4 '@babel/types': 7.26.3 transitivePeerDependencies: - supports-color - '@babel/helper-module-transforms@7.23.3(@babel/core@7.24.4)': + '@babel/helper-module-imports@7.18.6': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-module-imports': 7.24.3 - '@babel/helper-simple-access': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - '@babel/helper-validator-identifier': 7.22.20 + '@babel/types': 7.26.3 - '@babel/helper-module-transforms@7.26.0(@babel/core@7.24.4)': + '@babel/helper-module-imports@7.25.9': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-module-imports': 7.25.9 - '@babel/helper-validator-identifier': 7.25.9 '@babel/traverse': 7.26.4 + '@babel/types': 7.26.3 transitivePeerDependencies: - supports-color @@ -5792,63 +5937,48 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/helper-optimise-call-expression@7.22.5': + '@babel/helper-optimise-call-expression@7.25.9': dependencies: '@babel/types': 7.26.3 - '@babel/helper-plugin-utils@7.24.0': {} - '@babel/helper-plugin-utils@7.25.9': {} - '@babel/helper-remap-async-to-generator@7.22.20(@babel/core@7.24.4)': - dependencies: - '@babel/core': 7.24.4 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-wrap-function': 7.22.20 - - '@babel/helper-replace-supers@7.24.1(@babel/core@7.24.4)': + '@babel/helper-remap-async-to-generator@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-member-expression-to-functions': 7.23.0 - '@babel/helper-optimise-call-expression': 7.22.5 + '@babel/core': 7.26.0 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-wrap-function': 7.25.9 + '@babel/traverse': 7.26.4 + transitivePeerDependencies: + - supports-color - '@babel/helper-simple-access@7.22.5': + '@babel/helper-replace-supers@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/types': 7.24.0 + '@babel/core': 7.26.0 + '@babel/helper-member-expression-to-functions': 7.25.9 + '@babel/helper-optimise-call-expression': 7.25.9 + '@babel/traverse': 7.26.4 + transitivePeerDependencies: + - supports-color - '@babel/helper-skip-transparent-expression-wrappers@7.22.5': + '@babel/helper-skip-transparent-expression-wrappers@7.25.9': dependencies: + '@babel/traverse': 7.26.4 '@babel/types': 7.26.3 - - '@babel/helper-split-export-declaration@7.22.6': - dependencies: - '@babel/types': 7.24.0 - - '@babel/helper-string-parser@7.24.1': {} + transitivePeerDependencies: + - supports-color '@babel/helper-string-parser@7.25.9': {} - '@babel/helper-validator-identifier@7.22.20': {} - '@babel/helper-validator-identifier@7.25.9': {} - '@babel/helper-validator-option@7.23.5': {} - '@babel/helper-validator-option@7.25.9': {} - '@babel/helper-wrap-function@7.22.20': + '@babel/helper-wrap-function@7.25.9': dependencies: - '@babel/helper-function-name': 7.23.0 '@babel/template': 7.25.9 + '@babel/traverse': 7.26.4 '@babel/types': 7.26.3 - - '@babel/helpers@7.24.4': - dependencies: - '@babel/template': 7.24.0 - '@babel/traverse': 7.24.1 - '@babel/types': 7.24.0 transitivePeerDependencies: - supports-color @@ -5857,585 +5987,491 @@ snapshots: '@babel/template': 7.25.9 '@babel/types': 7.26.3 - '@babel/highlight@7.24.2': - dependencies: - '@babel/helper-validator-identifier': 7.25.9 - chalk: 2.4.2 - js-tokens: 4.0.0 - picocolors: 1.1.1 - - '@babel/parser@7.24.4': - dependencies: - '@babel/types': 7.24.0 - '@babel/parser@7.26.3': dependencies: '@babel/types': 7.26.3 - '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.24.4(@babel/core@7.24.4)': + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.24.1(@babel/core@7.24.4)': - dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.1(@babel/core@7.24.4)': - dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-transform-optional-chaining': 7.24.1(@babel/core@7.24.4) + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/traverse': 7.26.4 + transitivePeerDependencies: + - supports-color - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.24.1(@babel/core@7.24.4)': + '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.24.4)': + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.24.4 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.24.4)': + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + '@babel/plugin-transform-optional-chaining': 7.25.9(@babel/core@7.26.0) + transitivePeerDependencies: + - supports-color - '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.24.4)': + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/traverse': 7.26.4 + transitivePeerDependencies: + - supports-color - '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.24.4)': + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.26.0 - '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.24.4)': + '@babel/plugin-syntax-import-assertions@7.26.0(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.24.4)': + '@babel/plugin-syntax-import-attributes@7.26.0(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-syntax-import-assertions@7.24.1(@babel/core@7.24.4)': + '@babel/plugin-syntax-jsx@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-syntax-import-attributes@7.24.1(@babel/core@7.24.4)': + '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.24.4)': + '@babel/plugin-transform-arrow-functions@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.24.4)': + '@babel/plugin-transform-async-generator-functions@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-remap-async-to-generator': 7.25.9(@babel/core@7.26.0) + '@babel/traverse': 7.26.4 + transitivePeerDependencies: + - supports-color - '@babel/plugin-syntax-jsx@7.24.1(@babel/core@7.24.4)': + '@babel/plugin-transform-async-to-generator@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.24.4 + '@babel/core': 7.26.0 + '@babel/helper-module-imports': 7.25.9 '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-remap-async-to-generator': 7.25.9(@babel/core@7.26.0) + transitivePeerDependencies: + - supports-color - '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.24.4)': + '@babel/plugin-transform-block-scoped-functions@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.24.4)': + '@babel/plugin-transform-block-scoping@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.24.4)': + '@babel/plugin-transform-class-properties@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.26.0 + '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + transitivePeerDependencies: + - supports-color - '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.24.4)': + '@babel/plugin-transform-class-static-block@7.26.0(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.26.0 + '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + transitivePeerDependencies: + - supports-color - '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.24.4)': + '@babel/plugin-transform-classes@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.26.0 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-compilation-targets': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-replace-supers': 7.25.9(@babel/core@7.26.0) + '@babel/traverse': 7.26.4 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color - '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.24.4)': + '@babel/plugin-transform-computed-properties@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/template': 7.25.9 - '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.24.4)': + '@babel/plugin-transform-destructuring@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.24.4)': + '@babel/plugin-transform-dotall-regex@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.24.4)': + '@babel/plugin-transform-duplicate-keys@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.4) - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-transform-arrow-functions@7.24.1(@babel/core@7.24.4)': + '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-transform-async-generator-functions@7.24.3(@babel/core@7.24.4)': + '@babel/plugin-transform-dynamic-import@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.24.4) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.4) + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-transform-async-to-generator@7.24.1(@babel/core@7.24.4)': + '@babel/plugin-transform-exponentiation-operator@7.26.3(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-module-imports': 7.24.3 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.24.4) + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-transform-block-scoped-functions@7.24.1(@babel/core@7.24.4)': + '@babel/plugin-transform-export-namespace-from@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-transform-block-scoping@7.24.4(@babel/core@7.24.4)': + '@babel/plugin-transform-for-of@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + transitivePeerDependencies: + - supports-color - '@babel/plugin-transform-class-properties@7.24.1(@babel/core@7.24.4)': + '@babel/plugin-transform-function-name@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-create-class-features-plugin': 7.24.4(@babel/core@7.24.4) - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.26.0 + '@babel/helper-compilation-targets': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/traverse': 7.26.4 + transitivePeerDependencies: + - supports-color - '@babel/plugin-transform-class-static-block@7.24.4(@babel/core@7.24.4)': + '@babel/plugin-transform-json-strings@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-create-class-features-plugin': 7.24.4(@babel/core@7.24.4) - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.24.4) + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-transform-classes@7.24.1(@babel/core@7.24.4)': + '@babel/plugin-transform-literals@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-function-name': 7.23.0 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-replace-supers': 7.24.1(@babel/core@7.24.4) - '@babel/helper-split-export-declaration': 7.22.6 - globals: 11.12.0 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-transform-computed-properties@7.24.1(@babel/core@7.24.4)': + '@babel/plugin-transform-logical-assignment-operators@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/template': 7.25.9 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-transform-destructuring@7.24.1(@babel/core@7.24.4)': + '@babel/plugin-transform-member-expression-literals@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-transform-dotall-regex@7.24.1(@babel/core@7.24.4)': + '@babel/plugin-transform-modules-amd@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.4) - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.26.0 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + transitivePeerDependencies: + - supports-color - '@babel/plugin-transform-duplicate-keys@7.24.1(@babel/core@7.24.4)': + '@babel/plugin-transform-modules-commonjs@7.26.3(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.26.0 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + transitivePeerDependencies: + - supports-color - '@babel/plugin-transform-dynamic-import@7.24.1(@babel/core@7.24.4)': + '@babel/plugin-transform-modules-systemjs@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.4) + '@babel/core': 7.26.0 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 + '@babel/traverse': 7.26.4 + transitivePeerDependencies: + - supports-color - '@babel/plugin-transform-exponentiation-operator@7.24.1(@babel/core@7.24.4)': + '@babel/plugin-transform-modules-umd@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.15 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.26.0 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + transitivePeerDependencies: + - supports-color - '@babel/plugin-transform-export-namespace-from@7.24.1(@babel/core@7.24.4)': + '@babel/plugin-transform-named-capturing-groups-regex@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.24.4) + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-transform-for-of@7.24.1(@babel/core@7.24.4)': + '@babel/plugin-transform-new-target@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-transform-function-name@7.24.1(@babel/core@7.24.4)': + '@babel/plugin-transform-nullish-coalescing-operator@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-function-name': 7.23.0 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-transform-json-strings@7.24.1(@babel/core@7.24.4)': + '@babel/plugin-transform-numeric-separator@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.4) + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-transform-literals@7.24.1(@babel/core@7.24.4)': + '@babel/plugin-transform-object-rest-spread@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.26.0 + '@babel/helper-compilation-targets': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-parameters': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-logical-assignment-operators@7.24.1(@babel/core@7.24.4)': + '@babel/plugin-transform-object-super@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.4) + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-replace-supers': 7.25.9(@babel/core@7.26.0) + transitivePeerDependencies: + - supports-color - '@babel/plugin-transform-member-expression-literals@7.24.1(@babel/core@7.24.4)': + '@babel/plugin-transform-optional-catch-binding@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-transform-modules-amd@7.24.1(@babel/core@7.24.4)': + '@babel/plugin-transform-optional-chaining@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-module-transforms': 7.26.0(@babel/core@7.24.4) - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-modules-commonjs@7.24.1(@babel/core@7.24.4)': + '@babel/plugin-transform-parameters@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-module-transforms': 7.26.0(@babel/core@7.24.4) - '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-simple-access': 7.22.5 - transitivePeerDependencies: - - supports-color + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-transform-modules-systemjs@7.24.1(@babel/core@7.24.4)': + '@babel/plugin-transform-private-methods@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-module-transforms': 7.26.0(@babel/core@7.24.4) - '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-validator-identifier': 7.22.20 + '@babel/core': 7.26.0 + '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-modules-umd@7.24.1(@babel/core@7.24.4)': + '@babel/plugin-transform-private-property-in-object@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-module-transforms': 7.26.0(@babel/core@7.24.4) - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.26.0 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.24.4)': + '@babel/plugin-transform-property-literals@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.4) - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-transform-new-target@7.24.1(@babel/core@7.24.4)': + '@babel/plugin-transform-react-jsx-self@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-transform-nullish-coalescing-operator@7.24.1(@babel/core@7.24.4)': + '@babel/plugin-transform-react-jsx-source@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.4) + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-transform-numeric-separator@7.24.1(@babel/core@7.24.4)': + '@babel/plugin-transform-regenerator@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.4) + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + regenerator-transform: 0.15.2 - '@babel/plugin-transform-object-rest-spread@7.24.1(@babel/core@7.24.4)': + '@babel/plugin-transform-regexp-modifiers@7.26.0(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.4) - '@babel/plugin-transform-parameters': 7.24.1(@babel/core@7.24.4) + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-transform-object-super@7.24.1(@babel/core@7.24.4)': + '@babel/plugin-transform-reserved-words@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-replace-supers': 7.24.1(@babel/core@7.24.4) + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-transform-optional-catch-binding@7.24.1(@babel/core@7.24.4)': + '@babel/plugin-transform-shorthand-properties@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.4) + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-transform-optional-chaining@7.24.1(@babel/core@7.24.4)': + '@babel/plugin-transform-spread@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.4) + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + transitivePeerDependencies: + - supports-color - '@babel/plugin-transform-parameters@7.24.1(@babel/core@7.24.4)': + '@babel/plugin-transform-sticky-regex@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-transform-private-methods@7.24.1(@babel/core@7.24.4)': + '@babel/plugin-transform-template-literals@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-create-class-features-plugin': 7.24.4(@babel/core@7.24.4) - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-transform-private-property-in-object@7.24.1(@babel/core@7.24.4)': + '@babel/plugin-transform-typeof-symbol@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.24.4(@babel/core@7.24.4) - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.24.4) + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-transform-property-literals@7.24.1(@babel/core@7.24.4)': + '@babel/plugin-transform-unicode-escapes@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-transform-react-jsx-self@7.25.9(@babel/core@7.26.0)': + '@babel/plugin-transform-unicode-property-regex@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.0) '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-transform-react-jsx-source@7.25.9(@babel/core@7.26.0)': + '@babel/plugin-transform-unicode-regex@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.0) '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-transform-regenerator@7.24.1(@babel/core@7.24.4)': + '@babel/plugin-transform-unicode-sets-regex@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 - regenerator-transform: 0.15.2 + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-transform-reserved-words@7.24.1(@babel/core@7.24.4)': - dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-shorthand-properties@7.24.1(@babel/core@7.24.4)': - dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-spread@7.24.1(@babel/core@7.24.4)': - dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - - '@babel/plugin-transform-sticky-regex@7.24.1(@babel/core@7.24.4)': - dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-template-literals@7.24.1(@babel/core@7.24.4)': - dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-typeof-symbol@7.24.1(@babel/core@7.24.4)': - dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-unicode-escapes@7.24.1(@babel/core@7.24.4)': - dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-unicode-property-regex@7.24.1(@babel/core@7.24.4)': - dependencies: - '@babel/core': 7.24.4 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.4) - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-unicode-regex@7.24.1(@babel/core@7.24.4)': - dependencies: - '@babel/core': 7.24.4 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.4) - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-unicode-sets-regex@7.24.1(@babel/core@7.24.4)': - dependencies: - '@babel/core': 7.24.4 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.4) - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/preset-env@7.24.4(@babel/core@7.24.4)': - dependencies: - '@babel/compat-data': 7.24.4 - '@babel/core': 7.24.4 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-validator-option': 7.23.5 - '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.24.4(@babel/core@7.24.4) - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.24.4) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.4) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.24.4) - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.24.4) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.4) - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.24.4) - '@babel/plugin-syntax-import-assertions': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-syntax-import-attributes': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.24.4) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.4) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.4) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.4) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.4) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.4) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.4) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.4) - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.24.4) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.24.4) - '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.24.4) - '@babel/plugin-transform-arrow-functions': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-async-generator-functions': 7.24.3(@babel/core@7.24.4) - '@babel/plugin-transform-async-to-generator': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-block-scoped-functions': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-block-scoping': 7.24.4(@babel/core@7.24.4) - '@babel/plugin-transform-class-properties': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-class-static-block': 7.24.4(@babel/core@7.24.4) - '@babel/plugin-transform-classes': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-computed-properties': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-destructuring': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-dotall-regex': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-duplicate-keys': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-dynamic-import': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-exponentiation-operator': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-export-namespace-from': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-for-of': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-function-name': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-json-strings': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-literals': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-logical-assignment-operators': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-member-expression-literals': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-modules-amd': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-modules-systemjs': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-modules-umd': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.24.4) - '@babel/plugin-transform-new-target': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-nullish-coalescing-operator': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-numeric-separator': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-object-rest-spread': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-object-super': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-optional-catch-binding': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-optional-chaining': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-parameters': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-private-methods': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-private-property-in-object': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-property-literals': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-regenerator': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-reserved-words': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-shorthand-properties': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-spread': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-sticky-regex': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-template-literals': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-typeof-symbol': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-unicode-escapes': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-unicode-property-regex': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-unicode-regex': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-unicode-sets-regex': 7.24.1(@babel/core@7.24.4) - '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.24.4) - babel-plugin-polyfill-corejs2: 0.4.10(@babel/core@7.24.4) - babel-plugin-polyfill-corejs3: 0.10.4(@babel/core@7.24.4) - babel-plugin-polyfill-regenerator: 0.6.1(@babel/core@7.24.4) - core-js-compat: 3.37.0 + '@babel/preset-env@7.26.0(@babel/core@7.26.0)': + dependencies: + '@babel/compat-data': 7.26.3 + '@babel/core': 7.26.0 + '@babel/helper-compilation-targets': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-validator-option': 7.25.9 + '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.26.0) + '@babel/plugin-syntax-import-assertions': 7.26.0(@babel/core@7.26.0) + '@babel/plugin-syntax-import-attributes': 7.26.0(@babel/core@7.26.0) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.26.0) + '@babel/plugin-transform-arrow-functions': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-async-generator-functions': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-async-to-generator': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-block-scoped-functions': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-block-scoping': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-class-properties': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-class-static-block': 7.26.0(@babel/core@7.26.0) + '@babel/plugin-transform-classes': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-computed-properties': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-destructuring': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-dotall-regex': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-duplicate-keys': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-dynamic-import': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-exponentiation-operator': 7.26.3(@babel/core@7.26.0) + '@babel/plugin-transform-export-namespace-from': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-for-of': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-function-name': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-json-strings': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-literals': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-logical-assignment-operators': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-member-expression-literals': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-modules-amd': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-modules-commonjs': 7.26.3(@babel/core@7.26.0) + '@babel/plugin-transform-modules-systemjs': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-modules-umd': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-named-capturing-groups-regex': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-new-target': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-nullish-coalescing-operator': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-numeric-separator': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-object-rest-spread': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-object-super': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-optional-catch-binding': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-optional-chaining': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-parameters': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-private-methods': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-private-property-in-object': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-property-literals': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-regenerator': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-regexp-modifiers': 7.26.0(@babel/core@7.26.0) + '@babel/plugin-transform-reserved-words': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-shorthand-properties': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-spread': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-sticky-regex': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-template-literals': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-typeof-symbol': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-unicode-escapes': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-unicode-property-regex': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-unicode-regex': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-unicode-sets-regex': 7.25.9(@babel/core@7.26.0) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.26.0) + babel-plugin-polyfill-corejs2: 0.4.12(@babel/core@7.26.0) + babel-plugin-polyfill-corejs3: 0.10.6(@babel/core@7.26.0) + babel-plugin-polyfill-regenerator: 0.6.3(@babel/core@7.26.0) + core-js-compat: 3.39.0 semver: 6.3.1 transitivePeerDependencies: - supports-color - '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.24.4)': + '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 '@babel/types': 7.26.3 esutils: 2.0.3 - '@babel/regjsgen@0.8.0': {} - - '@babel/runtime@7.24.4': - dependencies: - regenerator-runtime: 0.14.1 - '@babel/runtime@7.26.0': dependencies: regenerator-runtime: 0.14.1 - '@babel/template@7.24.0': - dependencies: - '@babel/code-frame': 7.26.2 - '@babel/parser': 7.24.4 - '@babel/types': 7.24.0 - '@babel/template@7.25.9': dependencies: '@babel/code-frame': 7.26.2 '@babel/parser': 7.26.3 '@babel/types': 7.26.3 - '@babel/traverse@7.24.1': - dependencies: - '@babel/code-frame': 7.26.2 - '@babel/generator': 7.24.4 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-function-name': 7.23.0 - '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - '@babel/parser': 7.24.4 - '@babel/types': 7.24.0 - debug: 4.4.0 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - '@babel/traverse@7.26.4': dependencies: '@babel/code-frame': 7.26.2 @@ -6448,20 +6484,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/types@7.24.0': - dependencies: - '@babel/helper-string-parser': 7.24.1 - '@babel/helper-validator-identifier': 7.22.20 - to-fast-properties: 2.0.0 - '@babel/types@7.26.3': dependencies: '@babel/helper-string-parser': 7.25.9 '@babel/helper-validator-identifier': 7.25.9 - '@changesets/apply-release-plan@7.0.6': + '@changesets/apply-release-plan@7.0.7': dependencies: - '@changesets/config': 3.0.4 + '@changesets/config': 3.0.5 '@changesets/get-version-range-type': 0.4.0 '@changesets/git': 3.0.2 '@changesets/should-skip-package': 0.1.1 @@ -6473,7 +6503,7 @@ snapshots: outdent: 0.5.0 prettier: 2.8.8 resolve-from: 5.0.0 - semver: 7.6.0 + semver: 7.6.3 '@changesets/assemble-release-plan@6.0.5': dependencies: @@ -6482,7 +6512,7 @@ snapshots: '@changesets/should-skip-package': 0.1.1 '@changesets/types': 6.0.0 '@manypkg/get-packages': 1.1.3 - semver: 7.6.0 + semver: 7.6.3 '@changesets/changelog-git@0.2.0': dependencies: @@ -6496,15 +6526,15 @@ snapshots: transitivePeerDependencies: - encoding - '@changesets/cli@2.27.10': + '@changesets/cli@2.27.11': dependencies: - '@changesets/apply-release-plan': 7.0.6 + '@changesets/apply-release-plan': 7.0.7 '@changesets/assemble-release-plan': 6.0.5 '@changesets/changelog-git': 0.2.0 - '@changesets/config': 3.0.4 + '@changesets/config': 3.0.5 '@changesets/errors': 0.2.0 '@changesets/get-dependents-graph': 2.1.2 - '@changesets/get-release-plan': 4.0.5 + '@changesets/get-release-plan': 4.0.6 '@changesets/git': 3.0.2 '@changesets/logger': 0.1.1 '@changesets/pre': 2.0.1 @@ -6520,14 +6550,14 @@ snapshots: fs-extra: 7.0.1 mri: 1.2.0 p-limit: 2.3.0 - package-manager-detector: 0.2.7 + package-manager-detector: 0.2.8 picocolors: 1.1.1 resolve-from: 5.0.0 - semver: 7.6.0 + semver: 7.6.3 spawndamnit: 3.0.1 term-size: 2.2.1 - '@changesets/config@3.0.4': + '@changesets/config@3.0.5': dependencies: '@changesets/errors': 0.2.0 '@changesets/get-dependents-graph': 2.1.2 @@ -6546,7 +6576,7 @@ snapshots: '@changesets/types': 6.0.0 '@manypkg/get-packages': 1.1.3 picocolors: 1.1.1 - semver: 7.6.0 + semver: 7.6.3 '@changesets/get-github-info@0.6.0': dependencies: @@ -6555,10 +6585,10 @@ snapshots: transitivePeerDependencies: - encoding - '@changesets/get-release-plan@4.0.5': + '@changesets/get-release-plan@4.0.6': dependencies: '@changesets/assemble-release-plan': 6.0.5 - '@changesets/config': 3.0.4 + '@changesets/config': 3.0.5 '@changesets/pre': 2.0.1 '@changesets/read': 0.6.2 '@changesets/types': 6.0.0 @@ -6624,8 +6654,21 @@ snapshots: dependencies: '@emmetio/scanner': 1.0.4 + '@emmetio/css-parser@0.4.0': + dependencies: + '@emmetio/stream-reader': 2.2.0 + '@emmetio/stream-reader-utils': 0.1.0 + + '@emmetio/html-matcher@1.3.0': + dependencies: + '@emmetio/scanner': 1.0.4 + '@emmetio/scanner@1.0.4': {} + '@emmetio/stream-reader-utils@0.1.0': {} + + '@emmetio/stream-reader@2.2.0': {} + '@emnapi/runtime@1.3.1': dependencies: tslib: 2.8.1 @@ -6640,6 +6683,9 @@ snapshots: '@esbuild/aix-ppc64@0.24.0': optional: true + '@esbuild/aix-ppc64@0.24.2': + optional: true + '@esbuild/android-arm64@0.21.5': optional: true @@ -6649,6 +6695,9 @@ snapshots: '@esbuild/android-arm64@0.24.0': optional: true + '@esbuild/android-arm64@0.24.2': + optional: true + '@esbuild/android-arm@0.21.5': optional: true @@ -6658,6 +6707,9 @@ snapshots: '@esbuild/android-arm@0.24.0': optional: true + '@esbuild/android-arm@0.24.2': + optional: true + '@esbuild/android-x64@0.21.5': optional: true @@ -6667,6 +6719,9 @@ snapshots: '@esbuild/android-x64@0.24.0': optional: true + '@esbuild/android-x64@0.24.2': + optional: true + '@esbuild/darwin-arm64@0.21.5': optional: true @@ -6676,6 +6731,9 @@ snapshots: '@esbuild/darwin-arm64@0.24.0': optional: true + '@esbuild/darwin-arm64@0.24.2': + optional: true + '@esbuild/darwin-x64@0.21.5': optional: true @@ -6685,6 +6743,9 @@ snapshots: '@esbuild/darwin-x64@0.24.0': optional: true + '@esbuild/darwin-x64@0.24.2': + optional: true + '@esbuild/freebsd-arm64@0.21.5': optional: true @@ -6694,6 +6755,9 @@ snapshots: '@esbuild/freebsd-arm64@0.24.0': optional: true + '@esbuild/freebsd-arm64@0.24.2': + optional: true + '@esbuild/freebsd-x64@0.21.5': optional: true @@ -6703,6 +6767,9 @@ snapshots: '@esbuild/freebsd-x64@0.24.0': optional: true + '@esbuild/freebsd-x64@0.24.2': + optional: true + '@esbuild/linux-arm64@0.21.5': optional: true @@ -6712,6 +6779,9 @@ snapshots: '@esbuild/linux-arm64@0.24.0': optional: true + '@esbuild/linux-arm64@0.24.2': + optional: true + '@esbuild/linux-arm@0.21.5': optional: true @@ -6721,6 +6791,9 @@ snapshots: '@esbuild/linux-arm@0.24.0': optional: true + '@esbuild/linux-arm@0.24.2': + optional: true + '@esbuild/linux-ia32@0.21.5': optional: true @@ -6730,6 +6803,9 @@ snapshots: '@esbuild/linux-ia32@0.24.0': optional: true + '@esbuild/linux-ia32@0.24.2': + optional: true + '@esbuild/linux-loong64@0.21.5': optional: true @@ -6739,6 +6815,9 @@ snapshots: '@esbuild/linux-loong64@0.24.0': optional: true + '@esbuild/linux-loong64@0.24.2': + optional: true + '@esbuild/linux-mips64el@0.21.5': optional: true @@ -6748,6 +6827,9 @@ snapshots: '@esbuild/linux-mips64el@0.24.0': optional: true + '@esbuild/linux-mips64el@0.24.2': + optional: true + '@esbuild/linux-ppc64@0.21.5': optional: true @@ -6757,6 +6839,9 @@ snapshots: '@esbuild/linux-ppc64@0.24.0': optional: true + '@esbuild/linux-ppc64@0.24.2': + optional: true + '@esbuild/linux-riscv64@0.21.5': optional: true @@ -6766,6 +6851,9 @@ snapshots: '@esbuild/linux-riscv64@0.24.0': optional: true + '@esbuild/linux-riscv64@0.24.2': + optional: true + '@esbuild/linux-s390x@0.21.5': optional: true @@ -6775,6 +6863,9 @@ snapshots: '@esbuild/linux-s390x@0.24.0': optional: true + '@esbuild/linux-s390x@0.24.2': + optional: true + '@esbuild/linux-x64@0.21.5': optional: true @@ -6784,6 +6875,12 @@ snapshots: '@esbuild/linux-x64@0.24.0': optional: true + '@esbuild/linux-x64@0.24.2': + optional: true + + '@esbuild/netbsd-arm64@0.24.2': + optional: true + '@esbuild/netbsd-x64@0.21.5': optional: true @@ -6793,12 +6890,18 @@ snapshots: '@esbuild/netbsd-x64@0.24.0': optional: true + '@esbuild/netbsd-x64@0.24.2': + optional: true + '@esbuild/openbsd-arm64@0.23.1': optional: true '@esbuild/openbsd-arm64@0.24.0': optional: true + '@esbuild/openbsd-arm64@0.24.2': + optional: true + '@esbuild/openbsd-x64@0.21.5': optional: true @@ -6808,6 +6911,9 @@ snapshots: '@esbuild/openbsd-x64@0.24.0': optional: true + '@esbuild/openbsd-x64@0.24.2': + optional: true + '@esbuild/sunos-x64@0.21.5': optional: true @@ -6817,6 +6923,9 @@ snapshots: '@esbuild/sunos-x64@0.24.0': optional: true + '@esbuild/sunos-x64@0.24.2': + optional: true + '@esbuild/win32-arm64@0.21.5': optional: true @@ -6826,6 +6935,9 @@ snapshots: '@esbuild/win32-arm64@0.24.0': optional: true + '@esbuild/win32-arm64@0.24.2': + optional: true + '@esbuild/win32-ia32@0.21.5': optional: true @@ -6835,6 +6947,9 @@ snapshots: '@esbuild/win32-ia32@0.24.0': optional: true + '@esbuild/win32-ia32@0.24.2': + optional: true + '@esbuild/win32-x64@0.21.5': optional: true @@ -6844,24 +6959,27 @@ snapshots: '@esbuild/win32-x64@0.24.0': optional: true + '@esbuild/win32-x64@0.24.2': + optional: true + '@fontsource/jetbrains-mono@5.1.1': {} '@fontsource/plus-jakarta-sans@5.1.0': {} - '@iconify/json@2.2.280': + '@iconify/json@2.2.287': dependencies: '@iconify/types': 2.0.0 pathe: 1.1.2 '@iconify/types@2.0.0': {} - '@iconify/utils@2.2.0': + '@iconify/utils@2.2.1': dependencies: '@antfu/install-pkg': 0.4.1 '@antfu/utils': 0.7.10 '@iconify/types': 2.0.0 debug: 4.4.0 - globals: 15.13.0 + globals: 15.14.0 kolorist: 1.8.0 local-pkg: 0.5.1 mlly: 1.7.3 @@ -6956,7 +7074,7 @@ snapshots: dependencies: '@sinclair/typebox': 0.27.8 - '@jridgewell/gen-mapping@0.3.5': + '@jridgewell/gen-mapping@0.3.8': dependencies: '@jridgewell/set-array': 1.2.1 '@jridgewell/sourcemap-codec': 1.5.0 @@ -6968,7 +7086,7 @@ snapshots: '@jridgewell/source-map@0.3.6': dependencies: - '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/gen-mapping': 0.3.8 '@jridgewell/trace-mapping': 0.3.25 '@jridgewell/sourcemap-codec@1.5.0': {} @@ -6978,16 +7096,27 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.0 + '@kitql/helpers@0.8.10': + dependencies: + esm-env: 1.2.1 + + '@kitql/internals@0.10.0': + dependencies: + '@babel/parser': 7.26.3 + '@kitql/helpers': 0.8.10 + recast: 0.23.9 + svelte: 5.15.0 + '@manypkg/find-root@1.1.0': dependencies: - '@babel/runtime': 7.24.4 + '@babel/runtime': 7.26.0 '@types/node': 12.20.55 find-up: 4.1.0 fs-extra: 8.1.0 '@manypkg/get-packages@1.1.3': dependencies: - '@babel/runtime': 7.24.4 + '@babel/runtime': 7.26.0 '@changesets/types': 4.1.0 '@manypkg/find-root': 1.1.0 fs-extra: 8.1.0 @@ -6996,7 +7125,7 @@ snapshots: '@mdx-js/mdx@3.1.0(acorn@8.14.0)': dependencies: - '@types/estree': 1.0.5 + '@types/estree': 1.0.6 '@types/estree-jsx': 1.0.5 '@types/hast': 3.0.4 '@types/mdx': 2.0.13 @@ -7005,13 +7134,13 @@ snapshots: estree-util-is-identifier-name: 3.0.0 estree-util-scope: 1.0.0 estree-walker: 3.0.3 - hast-util-to-jsx-runtime: 2.3.0 + hast-util-to-jsx-runtime: 2.3.2 markdown-extensions: 2.0.0 recma-build-jsx: 1.0.0 recma-jsx: 1.0.0(acorn@8.14.0) recma-stringify: 1.0.0 rehype-recma: 1.0.0 - remark-mdx: 3.0.1 + remark-mdx: 3.1.0 remark-parse: 11.0.0 remark-rehype: 11.1.1 source-map: 0.7.4 @@ -7068,6 +7197,11 @@ snapshots: '@parcel/watcher-linux-x64-musl@2.5.0': optional: true + '@parcel/watcher-wasm@2.5.0': + dependencies: + is-glob: 4.0.3 + micromatch: 4.0.8 + '@parcel/watcher-win32-arm64@2.5.0': optional: true @@ -7097,136 +7231,141 @@ snapshots: '@parcel/watcher-win32-arm64': 2.5.0 '@parcel/watcher-win32-ia32': 2.5.0 '@parcel/watcher-win32-x64': 2.5.0 - optional: true '@pkgjs/parseargs@0.11.0': optional: true + '@playwright/test@1.49.1': + dependencies: + playwright: 1.49.1 + '@polka/url@1.0.0-next.28': {} - '@rollup/plugin-babel@5.3.1(@babel/core@7.24.4)(@types/babel__core@7.20.5)(rollup@2.79.1)': + '@rollup/plugin-babel@5.3.1(@babel/core@7.26.0)(@types/babel__core@7.20.5)(rollup@2.79.2)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-module-imports': 7.24.3 - '@rollup/pluginutils': 3.1.0(rollup@2.79.1) - rollup: 2.79.1 + '@babel/core': 7.26.0 + '@babel/helper-module-imports': 7.25.9 + '@rollup/pluginutils': 3.1.0(rollup@2.79.2) + rollup: 2.79.2 optionalDependencies: '@types/babel__core': 7.20.5 + transitivePeerDependencies: + - supports-color - '@rollup/plugin-node-resolve@11.2.1(rollup@2.79.1)': + '@rollup/plugin-node-resolve@11.2.1(rollup@2.79.2)': dependencies: - '@rollup/pluginutils': 3.1.0(rollup@2.79.1) + '@rollup/pluginutils': 3.1.0(rollup@2.79.2) '@types/resolve': 1.17.1 builtin-modules: 3.3.0 deepmerge: 4.3.1 is-module: 1.0.0 - resolve: 1.22.8 - rollup: 2.79.1 + resolve: 1.22.10 + rollup: 2.79.2 - '@rollup/plugin-replace@2.4.2(rollup@2.79.1)': + '@rollup/plugin-replace@2.4.2(rollup@2.79.2)': dependencies: - '@rollup/pluginutils': 3.1.0(rollup@2.79.1) + '@rollup/pluginutils': 3.1.0(rollup@2.79.2) magic-string: 0.25.9 - rollup: 2.79.1 + rollup: 2.79.2 - '@rollup/pluginutils@3.1.0(rollup@2.79.1)': + '@rollup/pluginutils@3.1.0(rollup@2.79.2)': dependencies: '@types/estree': 0.0.39 estree-walker: 1.0.1 picomatch: 2.3.1 - rollup: 2.79.1 + rollup: 2.79.2 - '@rollup/pluginutils@5.1.3(rollup@2.79.1)': + '@rollup/pluginutils@5.1.4(rollup@2.79.2)': dependencies: - '@types/estree': 1.0.5 + '@types/estree': 1.0.6 estree-walker: 2.0.2 picomatch: 4.0.2 optionalDependencies: - rollup: 2.79.1 + rollup: 2.79.2 - '@rollup/rollup-android-arm-eabi@4.28.1': + '@rollup/rollup-android-arm-eabi@4.29.1': optional: true - '@rollup/rollup-android-arm64@4.28.1': + '@rollup/rollup-android-arm64@4.29.1': optional: true - '@rollup/rollup-darwin-arm64@4.28.1': + '@rollup/rollup-darwin-arm64@4.29.1': optional: true - '@rollup/rollup-darwin-x64@4.28.1': + '@rollup/rollup-darwin-x64@4.29.1': optional: true - '@rollup/rollup-freebsd-arm64@4.28.1': + '@rollup/rollup-freebsd-arm64@4.29.1': optional: true - '@rollup/rollup-freebsd-x64@4.28.1': + '@rollup/rollup-freebsd-x64@4.29.1': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.28.1': + '@rollup/rollup-linux-arm-gnueabihf@4.29.1': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.28.1': + '@rollup/rollup-linux-arm-musleabihf@4.29.1': optional: true - '@rollup/rollup-linux-arm64-gnu@4.28.1': + '@rollup/rollup-linux-arm64-gnu@4.29.1': optional: true - '@rollup/rollup-linux-arm64-musl@4.28.1': + '@rollup/rollup-linux-arm64-musl@4.29.1': optional: true - '@rollup/rollup-linux-loongarch64-gnu@4.28.1': + '@rollup/rollup-linux-loongarch64-gnu@4.29.1': optional: true - '@rollup/rollup-linux-powerpc64le-gnu@4.28.1': + '@rollup/rollup-linux-powerpc64le-gnu@4.29.1': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.28.1': + '@rollup/rollup-linux-riscv64-gnu@4.29.1': optional: true - '@rollup/rollup-linux-s390x-gnu@4.28.1': + '@rollup/rollup-linux-s390x-gnu@4.29.1': optional: true - '@rollup/rollup-linux-x64-gnu@4.28.1': + '@rollup/rollup-linux-x64-gnu@4.29.1': optional: true - '@rollup/rollup-linux-x64-musl@4.28.1': + '@rollup/rollup-linux-x64-musl@4.29.1': optional: true - '@rollup/rollup-win32-arm64-msvc@4.28.1': + '@rollup/rollup-win32-arm64-msvc@4.29.1': optional: true - '@rollup/rollup-win32-ia32-msvc@4.28.1': + '@rollup/rollup-win32-ia32-msvc@4.29.1': optional: true - '@rollup/rollup-win32-x64-msvc@4.28.1': + '@rollup/rollup-win32-x64-msvc@4.29.1': optional: true - '@shikijs/core@1.24.0': + '@shikijs/core@1.24.3': dependencies: - '@shikijs/engine-javascript': 1.24.0 - '@shikijs/engine-oniguruma': 1.24.0 - '@shikijs/types': 1.24.0 - '@shikijs/vscode-textmate': 9.3.0 + '@shikijs/engine-javascript': 1.24.3 + '@shikijs/engine-oniguruma': 1.24.3 + '@shikijs/types': 1.24.3 + '@shikijs/vscode-textmate': 9.3.1 '@types/hast': 3.0.4 - hast-util-to-html: 9.0.3 + hast-util-to-html: 9.0.4 - '@shikijs/engine-javascript@1.24.0': + '@shikijs/engine-javascript@1.24.3': dependencies: - '@shikijs/types': 1.24.0 - '@shikijs/vscode-textmate': 9.3.0 - oniguruma-to-es: 0.7.0 + '@shikijs/types': 1.24.3 + '@shikijs/vscode-textmate': 9.3.1 + oniguruma-to-es: 0.8.0 - '@shikijs/engine-oniguruma@1.24.0': + '@shikijs/engine-oniguruma@1.24.3': dependencies: - '@shikijs/types': 1.24.0 - '@shikijs/vscode-textmate': 9.3.0 + '@shikijs/types': 1.24.3 + '@shikijs/vscode-textmate': 9.3.1 - '@shikijs/types@1.24.0': + '@shikijs/types@1.24.3': dependencies: - '@shikijs/vscode-textmate': 9.3.0 + '@shikijs/vscode-textmate': 9.3.1 '@types/hast': 3.0.4 - '@shikijs/vscode-textmate@9.3.0': {} + '@shikijs/vscode-textmate@9.3.1': {} '@sinclair/typebox@0.27.8': {} @@ -7235,89 +7374,72 @@ snapshots: ejs: 3.1.10 json5: 2.2.3 magic-string: 0.25.9 - string.prototype.matchall: 4.0.11 + string.prototype.matchall: 4.0.12 - '@sveltejs/kit@2.0.2(@sveltejs/vite-plugin-svelte@5.0.1(svelte@4.2.19)(vite@5.4.11(@types/node@20.12.7)(sass@1.82.0)(terser@5.37.0)))(svelte@4.2.19)(vite@5.4.11(@types/node@20.12.7)(sass@1.82.0)(terser@5.37.0))': + '@sveltejs/adapter-auto@3.3.1(@sveltejs/kit@2.14.0(@sveltejs/vite-plugin-svelte@5.0.2(svelte@5.15.0)(vite@6.0.5(@types/node@22.10.2)(jiti@2.4.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1)))(svelte@5.15.0)(vite@6.0.5(@types/node@22.10.2)(jiti@2.4.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1)))': dependencies: - '@sveltejs/vite-plugin-svelte': 5.0.1(svelte@4.2.19)(vite@5.4.11(@types/node@20.12.7)(sass@1.82.0)(terser@5.37.0)) + '@sveltejs/kit': 2.14.0(@sveltejs/vite-plugin-svelte@5.0.2(svelte@5.15.0)(vite@6.0.5(@types/node@22.10.2)(jiti@2.4.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1)))(svelte@5.15.0)(vite@6.0.5(@types/node@22.10.2)(jiti@2.4.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1)) + import-meta-resolve: 4.1.0 + + '@sveltejs/kit@2.14.0(@sveltejs/vite-plugin-svelte@5.0.2(svelte@5.15.0)(vite@6.0.5(@types/node@22.10.2)(jiti@2.4.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1)))(svelte@5.15.0)(vite@6.0.5(@types/node@22.10.2)(jiti@2.4.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1))': + dependencies: + '@sveltejs/vite-plugin-svelte': 5.0.2(svelte@5.15.0)(vite@6.0.5(@types/node@22.10.2)(jiti@2.4.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1)) '@types/cookie': 0.6.0 cookie: 0.6.0 - devalue: 4.3.3 + devalue: 5.1.1 esm-env: 1.2.1 + import-meta-resolve: 4.1.0 kleur: 4.1.5 - magic-string: 0.30.14 - mrmime: 1.0.1 + magic-string: 0.30.17 + mrmime: 2.0.0 sade: 1.8.1 set-cookie-parser: 2.7.1 - sirv: 2.0.4 - svelte: 4.2.19 + sirv: 3.0.0 + svelte: 5.15.0 tiny-glob: 0.2.9 - vite: 5.4.11(@types/node@20.12.7)(sass@1.82.0)(terser@5.37.0) - - '@sveltejs/vite-plugin-svelte-inspector@2.1.0(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.19)(vite@5.4.11(@types/node@20.12.7)(sass@1.82.0)(terser@5.37.0)))(svelte@4.2.19)(vite@5.4.11(@types/node@20.12.7)(sass@1.82.0)(terser@5.37.0))': - dependencies: - '@sveltejs/vite-plugin-svelte': 3.1.0(svelte@4.2.19)(vite@5.4.11(@types/node@20.12.7)(sass@1.82.0)(terser@5.37.0)) - debug: 4.4.0 - svelte: 4.2.19 - vite: 5.4.11(@types/node@20.12.7)(sass@1.82.0)(terser@5.37.0) - transitivePeerDependencies: - - supports-color + vite: 6.0.5(@types/node@22.10.2)(jiti@2.4.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1) - '@sveltejs/vite-plugin-svelte-inspector@4.0.1(@sveltejs/vite-plugin-svelte@5.0.1(svelte@4.2.19)(vite@5.4.11(@types/node@20.12.7)(sass@1.82.0)(terser@5.37.0)))(svelte@4.2.19)(vite@5.4.11(@types/node@20.12.7)(sass@1.82.0)(terser@5.37.0))': + '@sveltejs/vite-plugin-svelte-inspector@4.0.1(@sveltejs/vite-plugin-svelte@5.0.2(svelte@4.2.19)(vite@6.0.5(@types/node@22.10.2)(jiti@2.4.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1)))(svelte@4.2.19)(vite@6.0.5(@types/node@22.10.2)(jiti@2.4.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1))': dependencies: - '@sveltejs/vite-plugin-svelte': 5.0.1(svelte@4.2.19)(vite@5.4.11(@types/node@20.12.7)(sass@1.82.0)(terser@5.37.0)) + '@sveltejs/vite-plugin-svelte': 5.0.2(svelte@4.2.19)(vite@6.0.5(@types/node@22.10.2)(jiti@2.4.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1)) debug: 4.4.0 svelte: 4.2.19 - vite: 5.4.11(@types/node@20.12.7)(sass@1.82.0)(terser@5.37.0) - transitivePeerDependencies: - - supports-color - - '@sveltejs/vite-plugin-svelte-inspector@4.0.1(@sveltejs/vite-plugin-svelte@5.0.1(svelte@5.8.1)(vite@6.0.3(@types/node@20.12.7)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)))(svelte@5.8.1)(vite@6.0.3(@types/node@20.12.7)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2))': - dependencies: - '@sveltejs/vite-plugin-svelte': 5.0.1(svelte@5.8.1)(vite@6.0.3(@types/node@20.12.7)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)) - debug: 4.4.0 - svelte: 5.8.1 - vite: 6.0.3(@types/node@20.12.7)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2) + vite: 6.0.5(@types/node@22.10.2)(jiti@2.4.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1) transitivePeerDependencies: - supports-color - '@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.19)(vite@5.4.11(@types/node@20.12.7)(sass@1.82.0)(terser@5.37.0))': + '@sveltejs/vite-plugin-svelte-inspector@4.0.1(@sveltejs/vite-plugin-svelte@5.0.2(svelte@5.15.0)(vite@6.0.5(@types/node@22.10.2)(jiti@2.4.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1)))(svelte@5.15.0)(vite@6.0.5(@types/node@22.10.2)(jiti@2.4.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1))': dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 2.1.0(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.19)(vite@5.4.11(@types/node@20.12.7)(sass@1.82.0)(terser@5.37.0)))(svelte@4.2.19)(vite@5.4.11(@types/node@20.12.7)(sass@1.82.0)(terser@5.37.0)) + '@sveltejs/vite-plugin-svelte': 5.0.2(svelte@5.15.0)(vite@6.0.5(@types/node@22.10.2)(jiti@2.4.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1)) debug: 4.4.0 - deepmerge: 4.3.1 - kleur: 4.1.5 - magic-string: 0.30.14 - svelte: 4.2.19 - svelte-hmr: 0.16.0(svelte@4.2.19) - vite: 5.4.11(@types/node@20.12.7)(sass@1.82.0)(terser@5.37.0) - vitefu: 0.2.5(vite@5.4.11(@types/node@20.12.7)(sass@1.82.0)(terser@5.37.0)) + svelte: 5.15.0 + vite: 6.0.5(@types/node@22.10.2)(jiti@2.4.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1) transitivePeerDependencies: - supports-color - '@sveltejs/vite-plugin-svelte@5.0.1(svelte@4.2.19)(vite@5.4.11(@types/node@20.12.7)(sass@1.82.0)(terser@5.37.0))': + '@sveltejs/vite-plugin-svelte@5.0.2(svelte@4.2.19)(vite@6.0.5(@types/node@22.10.2)(jiti@2.4.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1))': dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 4.0.1(@sveltejs/vite-plugin-svelte@5.0.1(svelte@4.2.19)(vite@5.4.11(@types/node@20.12.7)(sass@1.82.0)(terser@5.37.0)))(svelte@4.2.19)(vite@5.4.11(@types/node@20.12.7)(sass@1.82.0)(terser@5.37.0)) + '@sveltejs/vite-plugin-svelte-inspector': 4.0.1(@sveltejs/vite-plugin-svelte@5.0.2(svelte@4.2.19)(vite@6.0.5(@types/node@22.10.2)(jiti@2.4.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1)))(svelte@4.2.19)(vite@6.0.5(@types/node@22.10.2)(jiti@2.4.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1)) debug: 4.4.0 deepmerge: 4.3.1 kleur: 4.1.5 - magic-string: 0.30.14 + magic-string: 0.30.17 svelte: 4.2.19 - vite: 5.4.11(@types/node@20.12.7)(sass@1.82.0)(terser@5.37.0) - vitefu: 1.0.4(vite@5.4.11(@types/node@20.12.7)(sass@1.82.0)(terser@5.37.0)) + vite: 6.0.5(@types/node@22.10.2)(jiti@2.4.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1) + vitefu: 1.0.4(vite@6.0.5(@types/node@22.10.2)(jiti@2.4.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1)) transitivePeerDependencies: - supports-color - '@sveltejs/vite-plugin-svelte@5.0.1(svelte@5.8.1)(vite@6.0.3(@types/node@20.12.7)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2))': + '@sveltejs/vite-plugin-svelte@5.0.2(svelte@5.15.0)(vite@6.0.5(@types/node@22.10.2)(jiti@2.4.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1))': dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 4.0.1(@sveltejs/vite-plugin-svelte@5.0.1(svelte@5.8.1)(vite@6.0.3(@types/node@20.12.7)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)))(svelte@5.8.1)(vite@6.0.3(@types/node@20.12.7)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)) + '@sveltejs/vite-plugin-svelte-inspector': 4.0.1(@sveltejs/vite-plugin-svelte@5.0.2(svelte@5.15.0)(vite@6.0.5(@types/node@22.10.2)(jiti@2.4.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1)))(svelte@5.15.0)(vite@6.0.5(@types/node@22.10.2)(jiti@2.4.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1)) debug: 4.4.0 deepmerge: 4.3.1 kleur: 4.1.5 - magic-string: 0.30.14 - svelte: 5.8.1 - vite: 6.0.3(@types/node@20.12.7)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2) - vitefu: 1.0.4(vite@6.0.3(@types/node@20.12.7)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)) + magic-string: 0.30.17 + svelte: 5.15.0 + vite: 6.0.5(@types/node@22.10.2)(jiti@2.4.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1) + vitefu: 1.0.4(vite@6.0.5(@types/node@22.10.2)(jiti@2.4.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1)) transitivePeerDependencies: - supports-color @@ -7335,7 +7457,7 @@ snapshots: '@testing-library/jest-dom@6.6.3': dependencies: '@adobe/css-tools': 4.4.1 - aria-query: 5.3.0 + aria-query: 5.3.2 chalk: 3.0.0 css.escape: 1.5.1 dom-accessibility-api: 0.6.3 @@ -7359,7 +7481,7 @@ snapshots: '@babel/types': 7.26.3 '@types/babel__generator': 7.6.8 '@types/babel__template': 7.4.4 - '@types/babel__traverse': 7.20.5 + '@types/babel__traverse': 7.20.6 '@types/babel__generator@7.6.8': dependencies: @@ -7370,7 +7492,7 @@ snapshots: '@babel/parser': 7.26.3 '@babel/types': 7.26.3 - '@types/babel__traverse@7.20.5': + '@types/babel__traverse@7.20.6': dependencies: '@babel/types': 7.26.3 @@ -7386,17 +7508,15 @@ snapshots: '@types/estree@0.0.39': {} - '@types/estree@1.0.5': {} - '@types/estree@1.0.6': {} '@types/hast@3.0.4': dependencies: - '@types/unist': 3.0.2 + '@types/unist': 3.0.3 - '@types/mdast@4.0.3': + '@types/mdast@4.0.4': dependencies: - '@types/unist': 3.0.2 + '@types/unist': 3.0.3 '@types/mdx@2.0.13': {} @@ -7404,61 +7524,67 @@ snapshots: '@types/nlcst@2.0.3': dependencies: - '@types/unist': 3.0.2 + '@types/unist': 3.0.3 '@types/node@12.20.55': {} '@types/node@17.0.45': {} - '@types/node@20.12.7': + '@types/node@22.10.2': dependencies: - undici-types: 5.26.5 + undici-types: 6.20.0 '@types/prop-types@15.7.14': {} - '@types/pug@2.0.10': {} + '@types/react-dom@18.3.5(@types/react@18.3.18)': + dependencies: + '@types/react': 18.3.18 - '@types/react-dom@18.3.2': + '@types/react-dom@19.0.2(@types/react@19.0.2)': dependencies: - '@types/react': 18.3.14 + '@types/react': 19.0.2 - '@types/react@18.3.14': + '@types/react@18.3.18': dependencies: '@types/prop-types': 15.7.14 csstype: 3.1.3 + '@types/react@19.0.2': + dependencies: + csstype: 3.1.3 + '@types/resolve@1.17.1': dependencies: - '@types/node': 20.12.7 + '@types/node': 22.10.2 '@types/sax@1.2.7': dependencies: - '@types/node': 20.12.7 + '@types/node': 17.0.45 '@types/throttle-debounce@5.0.2': {} '@types/trusted-types@2.0.7': {} - '@types/unist@2.0.10': {} + '@types/unist@2.0.11': {} - '@types/unist@3.0.2': {} + '@types/unist@3.0.3': {} - '@ungap/structured-clone@1.2.0': {} + '@ungap/structured-clone@1.2.1': {} - '@vitejs/plugin-react@4.3.4(vite@5.4.11(@types/node@20.12.7)(sass@1.82.0)(terser@5.37.0))': + '@vitejs/plugin-react@4.3.4(vite@6.0.5(@types/node@22.10.2)(jiti@2.4.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1))': dependencies: '@babel/core': 7.26.0 '@babel/plugin-transform-react-jsx-self': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-react-jsx-source': 7.25.9(@babel/core@7.26.0) '@types/babel__core': 7.20.5 react-refresh: 0.14.2 - vite: 5.4.11(@types/node@20.12.7)(sass@1.82.0)(terser@5.37.0) + vite: 6.0.5(@types/node@22.10.2)(jiti@2.4.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1) transitivePeerDependencies: - supports-color - '@vitejs/plugin-vue@4.6.2(vite@5.4.11(@types/node@20.12.7)(sass@1.82.0)(terser@5.37.0))(vue@3.5.13(typescript@5.7.2))': + '@vitejs/plugin-vue@4.6.2(vite@6.0.5(@types/node@22.10.2)(jiti@2.4.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1))(vue@3.5.13(typescript@5.7.2))': dependencies: - vite: 5.4.11(@types/node@20.12.7)(sass@1.82.0)(terser@5.37.0) + vite: 6.0.5(@types/node@22.10.2)(jiti@2.4.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1) vue: 3.5.13(typescript@5.7.2) '@vitest/expect@1.6.0': @@ -7475,7 +7601,7 @@ snapshots: '@vitest/snapshot@1.6.0': dependencies: - magic-string: 0.30.14 + magic-string: 0.30.17 pathe: 1.1.2 pretty-format: 29.7.0 @@ -7490,76 +7616,66 @@ snapshots: loupe: 2.3.7 pretty-format: 29.7.0 - '@volar/kit@2.1.6(typescript@5.7.2)': + '@volar/kit@2.4.11(typescript@5.7.2)': dependencies: - '@volar/language-service': 2.1.6 - '@volar/typescript': 2.1.6 + '@volar/language-service': 2.4.11 + '@volar/typescript': 2.4.11 typesafe-path: 0.2.2 typescript: 5.7.2 - vscode-languageserver-textdocument: 1.0.11 + vscode-languageserver-textdocument: 1.0.12 vscode-uri: 3.0.8 '@volar/language-core@1.11.1': dependencies: '@volar/source-map': 1.11.1 - '@volar/language-core@2.1.6': + '@volar/language-core@2.4.11': dependencies: - '@volar/source-map': 2.1.6 + '@volar/source-map': 2.4.11 - '@volar/language-server@2.1.6': + '@volar/language-server@2.4.11': dependencies: - '@volar/language-core': 2.1.6 - '@volar/language-service': 2.1.6 - '@volar/snapshot-document': 2.1.6 - '@volar/typescript': 2.1.6 - '@vscode/l10n': 0.0.16 + '@volar/language-core': 2.4.11 + '@volar/language-service': 2.4.11 + '@volar/typescript': 2.4.11 path-browserify: 1.0.1 request-light: 0.7.0 vscode-languageserver: 9.0.1 vscode-languageserver-protocol: 3.17.5 - vscode-languageserver-textdocument: 1.0.11 + vscode-languageserver-textdocument: 1.0.12 vscode-uri: 3.0.8 - '@volar/language-service@2.1.6': + '@volar/language-service@2.4.11': dependencies: - '@volar/language-core': 2.1.6 + '@volar/language-core': 2.4.11 vscode-languageserver-protocol: 3.17.5 - vscode-languageserver-textdocument: 1.0.11 + vscode-languageserver-textdocument: 1.0.12 vscode-uri: 3.0.8 - '@volar/snapshot-document@2.1.6': - dependencies: - vscode-languageserver-protocol: 3.17.5 - vscode-languageserver-textdocument: 1.0.11 - '@volar/source-map@1.11.1': dependencies: muggle-string: 0.3.1 - '@volar/source-map@2.1.6': - dependencies: - muggle-string: 0.4.1 + '@volar/source-map@2.4.11': {} '@volar/typescript@1.11.1': dependencies: '@volar/language-core': 1.11.1 path-browserify: 1.0.1 - '@volar/typescript@2.1.6': + '@volar/typescript@2.4.11': dependencies: - '@volar/language-core': 2.1.6 + '@volar/language-core': 2.4.11 path-browserify: 1.0.1 + vscode-uri: 3.0.8 - '@vscode/emmet-helper@2.9.3': + '@vscode/emmet-helper@2.11.0': dependencies: - emmet: 2.4.7 + emmet: 2.4.11 jsonc-parser: 2.3.1 - vscode-languageserver-textdocument: 1.0.11 + vscode-languageserver-textdocument: 1.0.12 vscode-languageserver-types: 3.17.5 - vscode-uri: 2.1.2 - - '@vscode/l10n@0.0.16': {} + vscode-uri: 3.0.8 '@vscode/l10n@0.0.18': {} @@ -7584,7 +7700,7 @@ snapshots: '@vue/compiler-ssr': 3.5.13 '@vue/shared': 3.5.13 estree-walker: 2.0.2 - magic-string: 0.30.14 + magic-string: 0.30.17 postcss: 8.4.49 source-map-js: 1.2.1 @@ -7643,22 +7759,16 @@ snapshots: dependencies: acorn: 8.14.0 - acorn@8.11.3: {} - acorn@8.14.0: {} - agent-base@7.1.2: - dependencies: - debug: 4.4.0 - transitivePeerDependencies: - - supports-color + agent-base@7.1.3: {} - ajv@8.12.0: + ajv@8.17.1: dependencies: fast-deep-equal: 3.1.3 + fast-uri: 3.0.3 json-schema-traverse: 1.0.0 require-from-string: 2.0.2 - uri-js: 4.4.1 ansi-align@3.0.1: dependencies: @@ -7668,11 +7778,7 @@ snapshots: ansi-regex@5.0.1: {} - ansi-regex@6.0.1: {} - - ansi-styles@3.2.1: - dependencies: - color-convert: 1.9.3 + ansi-regex@6.1.0: {} ansi-styles@4.3.0: dependencies: @@ -7701,35 +7807,34 @@ snapshots: dependencies: deep-equal: 2.2.3 - aria-query@5.3.0: - dependencies: - dequal: 2.0.3 - aria-query@5.3.2: {} - array-buffer-byte-length@1.0.1: + array-buffer-byte-length@1.0.2: dependencies: - call-bind: 1.0.7 - is-array-buffer: 3.0.4 + call-bound: 1.0.3 + is-array-buffer: 3.0.5 array-iterate@2.0.1: {} array-union@2.1.0: {} - arraybuffer.prototype.slice@1.0.3: + arraybuffer.prototype.slice@1.0.4: dependencies: - array-buffer-byte-length: 1.0.1 - call-bind: 1.0.7 + array-buffer-byte-length: 1.0.2 + call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.3 + es-abstract: 1.23.7 es-errors: 1.3.0 - get-intrinsic: 1.2.4 - is-array-buffer: 3.0.4 - is-shared-array-buffer: 1.0.3 + get-intrinsic: 1.2.6 + is-array-buffer: 3.0.5 assertion-error@1.1.0: {} - astring@1.8.6: {} + ast-types@0.16.1: + dependencies: + tslib: 2.8.1 + + astring@1.9.0: {} astro-seo@0.8.4(prettier-plugin-astro@0.14.1)(prettier@3.4.2)(typescript@5.7.2): dependencies: @@ -7739,14 +7844,14 @@ snapshots: - prettier-plugin-astro - typescript - astro@5.0.3(@types/node@20.12.7)(rollup@2.79.1)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(typescript@5.7.2): + astro@5.1.1(@types/node@22.10.2)(jiti@2.4.2)(rollup@2.79.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2)(typescript@5.7.2)(yaml@2.6.1): dependencies: '@astrojs/compiler': 2.10.3 '@astrojs/internal-helpers': 0.4.2 - '@astrojs/markdown-remark': 6.0.0 + '@astrojs/markdown-remark': 6.0.1 '@astrojs/telemetry': 3.2.0 '@oslojs/encoding': 1.1.0 - '@rollup/pluginutils': 5.1.3(rollup@2.79.1) + '@rollup/pluginutils': 5.1.4(rollup@2.79.2) '@types/cookie': 0.6.0 acorn: 8.14.0 aria-query: 5.3.2 @@ -7773,36 +7878,54 @@ snapshots: http-cache-semantics: 4.1.1 js-yaml: 4.1.0 kleur: 4.1.5 - magic-string: 0.30.14 + magic-string: 0.30.17 magicast: 0.3.5 micromatch: 4.0.8 mrmime: 2.0.0 neotraverse: 0.6.18 - p-limit: 6.1.0 + p-limit: 6.2.0 p-queue: 8.0.1 preferred-pm: 4.0.0 prompts: 2.4.2 rehype: 13.0.2 semver: 7.6.3 - shiki: 1.24.0 + shiki: 1.24.3 tinyexec: 0.3.1 tsconfck: 3.1.4(typescript@5.7.2) ultrahtml: 1.5.3 unist-util-visit: 5.0.0 + unstorage: 1.14.1 vfile: 6.0.3 - vite: 6.0.3(@types/node@20.12.7)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2) - vitefu: 1.0.4(vite@6.0.3(@types/node@20.12.7)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)) + vite: 6.0.5(@types/node@22.10.2)(jiti@2.4.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1) + vitefu: 1.0.4(vite@6.0.5(@types/node@22.10.2)(jiti@2.4.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1)) which-pm: 3.0.0 xxhash-wasm: 1.1.0 yargs-parser: 21.1.1 - yocto-spinner: 0.1.1 - zod: 3.23.8 - zod-to-json-schema: 3.23.5(zod@3.23.8) - zod-to-ts: 1.2.0(typescript@5.7.2)(zod@3.23.8) + yocto-spinner: 0.1.2 + zod: 3.24.1 + zod-to-json-schema: 3.24.1(zod@3.24.1) + zod-to-ts: 1.2.0(typescript@5.7.2)(zod@3.24.1) optionalDependencies: sharp: 0.33.5 transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' - '@types/node' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/kv' + - aws4fetch + - db0 + - idb-keyval + - ioredis - jiti - less - lightningcss @@ -7815,17 +7938,18 @@ snapshots: - terser - tsx - typescript + - uploadthing - yaml - astrojs-service-worker@2.0.0(@types/babel__core@7.20.5)(astro@5.0.3(@types/node@20.12.7)(rollup@2.79.1)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(typescript@5.7.2)): + astrojs-service-worker@2.0.0(@types/babel__core@7.20.5)(astro@5.1.1(@types/node@22.10.2)(jiti@2.4.2)(rollup@2.79.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2)(typescript@5.7.2)(yaml@2.6.1)): dependencies: - astro: 5.0.3(@types/node@20.12.7)(rollup@2.79.1)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)(typescript@5.7.2) + astro: 5.1.1(@types/node@22.10.2)(jiti@2.4.2)(rollup@2.79.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2)(typescript@5.7.2)(yaml@2.6.1) workbox-build: 6.6.0(@types/babel__core@7.20.5) transitivePeerDependencies: - '@types/babel__core' - supports-color - async@3.2.5: {} + async@3.2.6: {} asynckit@0.4.0: {} @@ -7833,8 +7957,8 @@ snapshots: autoprefixer@10.4.20(postcss@8.4.49): dependencies: - browserslist: 4.24.2 - caniuse-lite: 1.0.30001687 + browserslist: 4.24.3 + caniuse-lite: 1.0.30001690 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.1.1 @@ -7847,43 +7971,48 @@ snapshots: axobject-query@4.1.0: {} - babel-plugin-jsx-dom-expressions@0.37.19(@babel/core@7.24.4): + babel-plugin-jsx-dom-expressions@0.39.3(@babel/core@7.26.0): dependencies: - '@babel/core': 7.24.4 + '@babel/core': 7.26.0 '@babel/helper-module-imports': 7.18.6 - '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.24.4) - '@babel/types': 7.24.0 + '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.0) + '@babel/types': 7.26.3 html-entities: 2.3.3 + parse5: 7.2.1 validate-html-nesting: 1.2.2 - babel-plugin-polyfill-corejs2@0.4.10(@babel/core@7.24.4): + babel-plugin-polyfill-corejs2@0.4.12(@babel/core@7.26.0): dependencies: - '@babel/compat-data': 7.24.4 - '@babel/core': 7.24.4 - '@babel/helper-define-polyfill-provider': 0.6.1(@babel/core@7.24.4) + '@babel/compat-data': 7.26.3 + '@babel/core': 7.26.0 + '@babel/helper-define-polyfill-provider': 0.6.3(@babel/core@7.26.0) semver: 6.3.1 transitivePeerDependencies: - supports-color - babel-plugin-polyfill-corejs3@0.10.4(@babel/core@7.24.4): + babel-plugin-polyfill-corejs3@0.10.6(@babel/core@7.26.0): dependencies: - '@babel/core': 7.24.4 - '@babel/helper-define-polyfill-provider': 0.6.1(@babel/core@7.24.4) - core-js-compat: 3.37.0 + '@babel/core': 7.26.0 + '@babel/helper-define-polyfill-provider': 0.6.3(@babel/core@7.26.0) + core-js-compat: 3.39.0 transitivePeerDependencies: - supports-color - babel-plugin-polyfill-regenerator@0.6.1(@babel/core@7.24.4): + babel-plugin-polyfill-regenerator@0.6.3(@babel/core@7.26.0): dependencies: - '@babel/core': 7.24.4 - '@babel/helper-define-polyfill-provider': 0.6.1(@babel/core@7.24.4) + '@babel/core': 7.26.0 + '@babel/helper-define-polyfill-provider': 0.6.3(@babel/core@7.26.0) transitivePeerDependencies: - supports-color - babel-preset-solid@1.8.16(@babel/core@7.24.4): + babel-plugin-react-compiler@19.0.0-beta-201e55d-20241215: dependencies: - '@babel/core': 7.24.4 - babel-plugin-jsx-dom-expressions: 0.37.19(@babel/core@7.24.4) + '@babel/types': 7.26.3 + + babel-preset-solid@1.9.3(@babel/core@7.26.0): + dependencies: + '@babel/core': 7.26.0 + babel-plugin-jsx-dom-expressions: 0.39.3(@babel/core@7.26.0) bail@2.0.2: {} @@ -7901,10 +8030,10 @@ snapshots: dependencies: ansi-align: 3.0.1 camelcase: 8.0.0 - chalk: 5.3.0 + chalk: 5.4.1 cli-boxes: 3.0.0 string-width: 7.2.0 - type-fest: 4.30.0 + type-fest: 4.30.2 widest-line: 5.0.0 wrap-ansi: 9.0.0 @@ -7917,10 +8046,6 @@ snapshots: dependencies: balanced-match: 1.0.2 - braces@3.0.2: - dependencies: - fill-range: 7.0.1 - braces@3.0.3: dependencies: fill-range: 7.1.1 @@ -7929,37 +8054,44 @@ snapshots: dependencies: duplexer: 0.1.1 - browserslist@4.24.2: + browserslist@4.24.3: dependencies: - caniuse-lite: 1.0.30001687 - electron-to-chromium: 1.5.71 - node-releases: 2.0.18 - update-browserslist-db: 1.1.1(browserslist@4.24.2) - - buffer-crc32@1.0.0: {} + caniuse-lite: 1.0.30001690 + electron-to-chromium: 1.5.75 + node-releases: 2.0.19 + update-browserslist-db: 1.1.1(browserslist@4.24.3) buffer-from@1.1.2: {} builtin-modules@3.3.0: {} - bundle-require@5.0.0(esbuild@0.24.0): + bundle-require@5.0.0(esbuild@0.24.2): dependencies: - esbuild: 0.24.0 + esbuild: 0.24.2 load-tsconfig: 0.2.5 cac@6.7.14: {} - call-bind@1.0.7: + call-bind-apply-helpers@1.0.1: dependencies: - es-define-property: 1.0.0 es-errors: 1.3.0 function-bind: 1.1.2 - get-intrinsic: 1.2.4 + + call-bind@1.0.8: + dependencies: + call-bind-apply-helpers: 1.0.1 + es-define-property: 1.0.1 + get-intrinsic: 1.2.6 set-function-length: 1.2.2 + call-bound@1.0.3: + dependencies: + call-bind-apply-helpers: 1.0.1 + get-intrinsic: 1.2.6 + camelcase@8.0.0: {} - caniuse-lite@1.0.30001687: {} + caniuse-lite@1.0.30001690: {} ccount@2.0.1: {} @@ -7973,12 +8105,6 @@ snapshots: pathval: 1.1.1 type-detect: 4.1.0 - chalk@2.4.2: - dependencies: - ansi-styles: 3.2.1 - escape-string-regexp: 1.0.5 - supports-color: 5.5.0 - chalk@3.0.0: dependencies: ansi-styles: 4.3.0 @@ -7989,7 +8115,7 @@ snapshots: ansi-styles: 4.3.0 supports-color: 7.2.0 - chalk@5.3.0: {} + chalk@5.4.1: {} character-entities-html4@2.1.0: {} @@ -8008,7 +8134,7 @@ snapshots: chokidar@3.6.0: dependencies: anymatch: 3.1.3 - braces: 3.0.2 + braces: 3.0.3 glob-parent: 5.1.2 is-binary-path: 2.1.0 is-glob: 4.0.3 @@ -8017,7 +8143,7 @@ snapshots: optionalDependencies: fsevents: 2.3.3 - chokidar@4.0.1: + chokidar@4.0.3: dependencies: readdirp: 4.0.2 @@ -8025,8 +8151,18 @@ snapshots: ci-info@4.1.0: {} + citty@0.1.6: + dependencies: + consola: 3.3.0 + cli-boxes@3.0.0: {} + clipboardy@4.0.0: + dependencies: + execa: 8.0.1 + is-wsl: 3.1.0 + is64bit: 2.0.0 + cliui@8.0.1: dependencies: string-width: 4.2.3 @@ -8045,16 +8181,10 @@ snapshots: collapse-white-space@2.1.0: {} - color-convert@1.9.3: - dependencies: - color-name: 1.1.3 - color-convert@2.0.1: dependencies: color-name: 1.1.4 - color-name@1.1.3: {} - color-name@1.1.4: {} color-string@1.9.1: @@ -8089,17 +8219,19 @@ snapshots: confbox@0.1.8: {} - consola@3.2.3: {} + consola@3.3.0: {} convert-source-map@2.0.0: {} + cookie-es@1.2.2: {} + cookie@0.6.0: {} cookie@0.7.2: {} - core-js-compat@3.37.0: + core-js-compat@3.39.0: dependencies: - browserslist: 4.24.2 + browserslist: 4.24.3 cross-spawn@7.0.6: dependencies: @@ -8107,6 +8239,10 @@ snapshots: shebang-command: 2.0.0 which: 2.0.2 + crossws@0.3.1: + dependencies: + uncrypto: 0.1.3 + crypto-random-string@2.0.0: {} css-tree@2.3.1: @@ -8129,23 +8265,23 @@ snapshots: whatwg-mimetype: 4.0.0 whatwg-url: 14.1.0 - data-view-buffer@1.0.1: + data-view-buffer@1.0.2: dependencies: - call-bind: 1.0.7 + call-bound: 1.0.3 es-errors: 1.3.0 - is-data-view: 1.0.1 + is-data-view: 1.0.2 - data-view-byte-length@1.0.1: + data-view-byte-length@1.0.2: dependencies: - call-bind: 1.0.7 + call-bound: 1.0.3 es-errors: 1.3.0 - is-data-view: 1.0.1 + is-data-view: 1.0.2 - data-view-byte-offset@1.0.0: + data-view-byte-offset@1.0.1: dependencies: - call-bind: 1.0.7 + call-bound: 1.0.3 es-errors: 1.3.0 - is-data-view: 1.0.1 + is-data-view: 1.0.2 dataloader@1.4.0: {} @@ -8169,32 +8305,32 @@ snapshots: deep-equal@2.2.3: dependencies: - array-buffer-byte-length: 1.0.1 - call-bind: 1.0.7 + array-buffer-byte-length: 1.0.2 + call-bind: 1.0.8 es-get-iterator: 1.1.3 - get-intrinsic: 1.2.4 - is-arguments: 1.1.1 - is-array-buffer: 3.0.4 - is-date-object: 1.0.5 - is-regex: 1.1.4 - is-shared-array-buffer: 1.0.3 + get-intrinsic: 1.2.6 + is-arguments: 1.2.0 + is-array-buffer: 3.0.5 + is-date-object: 1.1.0 + is-regex: 1.2.1 + is-shared-array-buffer: 1.0.4 isarray: 2.0.5 object-is: 1.1.6 object-keys: 1.1.1 - object.assign: 4.1.5 - regexp.prototype.flags: 1.5.2 - side-channel: 1.0.6 - which-boxed-primitive: 1.0.2 + object.assign: 4.1.7 + regexp.prototype.flags: 1.5.3 + side-channel: 1.1.0 + which-boxed-primitive: 1.1.1 which-collection: 1.0.2 - which-typed-array: 1.1.15 + which-typed-array: 1.1.18 deepmerge@4.3.1: {} define-data-property@1.1.4: dependencies: - es-define-property: 1.0.0 + es-define-property: 1.0.1 es-errors: 1.3.0 - gopd: 1.0.1 + gopd: 1.2.0 define-properties@1.2.1: dependencies: @@ -8202,14 +8338,17 @@ snapshots: has-property-descriptors: 1.0.2 object-keys: 1.1.1 + defu@6.1.4: {} + delayed-stream@1.0.0: {} dequal@2.0.3: {} + destr@2.0.3: {} + detect-indent@6.1.0: {} - detect-libc@1.0.3: - optional: true + detect-libc@1.0.3: {} detect-libc@2.0.3: optional: true @@ -8218,8 +8357,6 @@ snapshots: dependencies: base-64: 1.0.0 - devalue@4.3.3: {} - devalue@5.1.1: {} devlop@1.1.0: @@ -8244,24 +8381,30 @@ snapshots: dset@3.1.4: {} + dunder-proto@1.0.1: + dependencies: + call-bind-apply-helpers: 1.0.1 + es-errors: 1.3.0 + gopd: 1.2.0 + duplexer@0.1.1: {} eastasianwidth@0.2.0: {} ejs@3.1.10: dependencies: - jake: 10.8.7 + jake: 10.9.2 - electron-to-chromium@1.5.71: {} + electron-to-chromium@1.5.75: {} - emmet@2.4.7: + emmet@2.4.11: dependencies: '@emmetio/abbreviation': 2.3.3 '@emmetio/css-abbreviation': 2.1.8 emoji-regex-xs@1.0.0: {} - emoji-regex@10.3.0: {} + emoji-regex@10.4.0: {} emoji-regex@8.0.0: {} @@ -8274,72 +8417,71 @@ snapshots: entities@4.5.0: {} - es-abstract@1.23.3: + es-abstract@1.23.7: dependencies: - array-buffer-byte-length: 1.0.1 - arraybuffer.prototype.slice: 1.0.3 + array-buffer-byte-length: 1.0.2 + arraybuffer.prototype.slice: 1.0.4 available-typed-arrays: 1.0.7 - call-bind: 1.0.7 - data-view-buffer: 1.0.1 - data-view-byte-length: 1.0.1 - data-view-byte-offset: 1.0.0 - es-define-property: 1.0.0 + call-bind: 1.0.8 + call-bound: 1.0.3 + data-view-buffer: 1.0.2 + data-view-byte-length: 1.0.2 + data-view-byte-offset: 1.0.1 + es-define-property: 1.0.1 es-errors: 1.3.0 es-object-atoms: 1.0.0 es-set-tostringtag: 2.0.3 - es-to-primitive: 1.2.1 - function.prototype.name: 1.1.6 - get-intrinsic: 1.2.4 - get-symbol-description: 1.0.2 - globalthis: 1.0.3 - gopd: 1.0.1 + es-to-primitive: 1.3.0 + function.prototype.name: 1.1.8 + get-intrinsic: 1.2.6 + get-symbol-description: 1.1.0 + globalthis: 1.0.4 + gopd: 1.2.0 has-property-descriptors: 1.0.2 - has-proto: 1.0.3 - has-symbols: 1.0.3 + has-proto: 1.2.0 + has-symbols: 1.1.0 hasown: 2.0.2 - internal-slot: 1.0.7 - is-array-buffer: 3.0.4 + internal-slot: 1.1.0 + is-array-buffer: 3.0.5 is-callable: 1.2.7 - is-data-view: 1.0.1 - is-negative-zero: 2.0.3 - is-regex: 1.1.4 - is-shared-array-buffer: 1.0.3 - is-string: 1.0.7 - is-typed-array: 1.1.13 - is-weakref: 1.0.2 - object-inspect: 1.13.1 + is-data-view: 1.0.2 + is-regex: 1.2.1 + is-shared-array-buffer: 1.0.4 + is-string: 1.1.1 + is-typed-array: 1.1.15 + is-weakref: 1.1.0 + math-intrinsics: 1.1.0 + object-inspect: 1.13.3 object-keys: 1.1.1 - object.assign: 4.1.5 - regexp.prototype.flags: 1.5.2 - safe-array-concat: 1.1.2 - safe-regex-test: 1.0.3 - string.prototype.trim: 1.2.9 - string.prototype.trimend: 1.0.8 + object.assign: 4.1.7 + regexp.prototype.flags: 1.5.3 + safe-array-concat: 1.1.3 + safe-regex-test: 1.1.0 + string.prototype.trim: 1.2.10 + string.prototype.trimend: 1.0.9 string.prototype.trimstart: 1.0.8 - typed-array-buffer: 1.0.2 - typed-array-byte-length: 1.0.1 - typed-array-byte-offset: 1.0.2 - typed-array-length: 1.0.6 - unbox-primitive: 1.0.2 - which-typed-array: 1.1.15 + typed-array-buffer: 1.0.3 + typed-array-byte-length: 1.0.3 + typed-array-byte-offset: 1.0.4 + typed-array-length: 1.0.7 + unbox-primitive: 1.1.0 + which-typed-array: 1.1.18 - es-define-property@1.0.0: - dependencies: - get-intrinsic: 1.2.4 + es-define-property@1.0.1: {} es-errors@1.3.0: {} es-get-iterator@1.1.3: dependencies: - call-bind: 1.0.7 - get-intrinsic: 1.2.4 - has-symbols: 1.0.3 - is-arguments: 1.1.1 + call-bind: 1.0.8 + get-intrinsic: 1.2.6 + has-symbols: 1.1.0 + is-arguments: 1.2.0 is-map: 2.0.3 is-set: 2.0.3 - is-string: 1.0.7 + is-string: 1.1.1 isarray: 2.0.5 - stop-iteration-iterator: 1.0.0 + stop-iteration-iterator: 1.1.0 es-module-lexer@1.5.4: {} @@ -8349,17 +8491,15 @@ snapshots: es-set-tostringtag@2.0.3: dependencies: - get-intrinsic: 1.2.4 + get-intrinsic: 1.2.6 has-tostringtag: 1.0.2 hasown: 2.0.2 - es-to-primitive@1.2.1: + es-to-primitive@1.3.0: dependencies: is-callable: 1.2.7 - is-date-object: 1.0.5 - is-symbol: 1.0.4 - - es6-promise@3.3.1: {} + is-date-object: 1.1.0 + is-symbol: 1.1.1 esast-util-from-estree@2.0.0: dependencies: @@ -8455,22 +8595,45 @@ snapshots: '@esbuild/win32-ia32': 0.24.0 '@esbuild/win32-x64': 0.24.0 - escalade@3.1.2: {} + esbuild@0.24.2: + optionalDependencies: + '@esbuild/aix-ppc64': 0.24.2 + '@esbuild/android-arm': 0.24.2 + '@esbuild/android-arm64': 0.24.2 + '@esbuild/android-x64': 0.24.2 + '@esbuild/darwin-arm64': 0.24.2 + '@esbuild/darwin-x64': 0.24.2 + '@esbuild/freebsd-arm64': 0.24.2 + '@esbuild/freebsd-x64': 0.24.2 + '@esbuild/linux-arm': 0.24.2 + '@esbuild/linux-arm64': 0.24.2 + '@esbuild/linux-ia32': 0.24.2 + '@esbuild/linux-loong64': 0.24.2 + '@esbuild/linux-mips64el': 0.24.2 + '@esbuild/linux-ppc64': 0.24.2 + '@esbuild/linux-riscv64': 0.24.2 + '@esbuild/linux-s390x': 0.24.2 + '@esbuild/linux-x64': 0.24.2 + '@esbuild/netbsd-arm64': 0.24.2 + '@esbuild/netbsd-x64': 0.24.2 + '@esbuild/openbsd-arm64': 0.24.2 + '@esbuild/openbsd-x64': 0.24.2 + '@esbuild/sunos-x64': 0.24.2 + '@esbuild/win32-arm64': 0.24.2 + '@esbuild/win32-ia32': 0.24.2 + '@esbuild/win32-x64': 0.24.2 escalade@3.2.0: {} - escape-string-regexp@1.0.5: {} - escape-string-regexp@5.0.0: {} esm-env@1.2.1: {} esprima@4.0.1: {} - esrap@1.2.3: + esrap@1.3.2: dependencies: '@jridgewell/sourcemap-codec': 1.5.0 - '@types/estree': 1.0.6 estree-util-attach-comments@3.0.0: dependencies: @@ -8493,13 +8656,13 @@ snapshots: estree-util-to-js@2.0.0: dependencies: '@types/estree-jsx': 1.0.5 - astring: 1.8.6 + astring: 1.9.0 source-map: 0.7.4 estree-util-visit@2.0.0: dependencies: '@types/estree-jsx': 1.0.5 - '@types/unist': 3.0.2 + '@types/unist': 3.0.3 estree-walker@1.0.1: {} @@ -8507,7 +8670,7 @@ snapshots: estree-walker@3.0.3: dependencies: - '@types/estree': 1.0.5 + '@types/estree': 1.0.6 esutils@2.0.3: {} @@ -8543,10 +8706,12 @@ snapshots: '@nodelib/fs.walk': 1.2.8 glob-parent: 5.1.2 merge2: 1.4.1 - micromatch: 4.0.5 + micromatch: 4.0.8 fast-json-stable-stringify@2.1.0: {} + fast-uri@3.0.3: {} + fastq@1.17.1: dependencies: reusify: 1.0.4 @@ -8559,10 +8724,6 @@ snapshots: dependencies: minimatch: 5.1.6 - fill-range@7.0.1: - dependencies: - to-regex-range: 5.0.1 - fill-range@7.1.1: dependencies: to-regex-range: 5.0.1 @@ -8576,7 +8737,7 @@ snapshots: find-yarn-workspace-root2@1.2.16: dependencies: - micromatch: 4.0.5 + micromatch: 4.0.8 pkg-dir: 4.2.0 flattie@1.1.1: {} @@ -8585,7 +8746,7 @@ snapshots: dependencies: is-callable: 1.2.7 - foreground-child@3.1.1: + foreground-child@3.3.0: dependencies: cross-spawn: 7.0.6 signal-exit: 4.1.0 @@ -8623,17 +8784,22 @@ snapshots: fs.realpath@1.0.0: {} + fsevents@2.3.2: + optional: true + fsevents@2.3.3: optional: true function-bind@1.1.2: {} - function.prototype.name@1.1.6: + function.prototype.name@1.1.8: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 + call-bound: 1.0.3 define-properties: 1.2.1 - es-abstract: 1.23.3 functions-have-names: 1.2.3 + hasown: 2.0.2 + is-callable: 1.2.7 functions-have-names@1.2.3: {} @@ -8641,27 +8807,34 @@ snapshots: get-caller-file@2.0.5: {} - get-east-asian-width@1.2.0: {} + get-east-asian-width@1.3.0: {} get-func-name@2.0.2: {} - get-intrinsic@1.2.4: + get-intrinsic@1.2.6: dependencies: + call-bind-apply-helpers: 1.0.1 + dunder-proto: 1.0.1 + es-define-property: 1.0.1 es-errors: 1.3.0 + es-object-atoms: 1.0.0 function-bind: 1.1.2 - has-proto: 1.0.3 - has-symbols: 1.0.3 + gopd: 1.2.0 + has-symbols: 1.1.0 hasown: 2.0.2 + math-intrinsics: 1.1.0 get-own-enumerable-property-symbols@3.0.2: {} + get-port-please@3.1.2: {} + get-stream@8.0.1: {} - get-symbol-description@1.0.2: + get-symbol-description@1.1.0: dependencies: - call-bind: 1.0.7 + call-bound: 1.0.3 es-errors: 1.3.0 - get-intrinsic: 1.2.4 + get-intrinsic: 1.2.6 get-tsconfig@4.8.1: dependencies: @@ -8673,13 +8846,14 @@ snapshots: dependencies: is-glob: 4.0.3 - glob@10.3.12: + glob@10.4.5: dependencies: - foreground-child: 3.1.1 - jackspeak: 2.3.6 + foreground-child: 3.3.0 + jackspeak: 3.4.3 minimatch: 9.0.5 - minipass: 7.0.4 - path-scurry: 1.10.2 + minipass: 7.1.2 + package-json-from-dist: 1.0.1 + path-scurry: 1.11.1 glob@7.2.3: dependencies: @@ -8692,11 +8866,12 @@ snapshots: globals@11.12.0: {} - globals@15.13.0: {} + globals@15.14.0: {} - globalthis@1.0.3: + globalthis@1.0.4: dependencies: define-properties: 1.2.1 + gopd: 1.2.0 globalyzer@0.1.0: {} @@ -8705,35 +8880,46 @@ snapshots: array-union: 2.1.0 dir-glob: 3.0.1 fast-glob: 3.3.2 - ignore: 5.3.1 + ignore: 5.3.2 merge2: 1.4.1 slash: 3.0.0 globrex@0.1.2: {} - gopd@1.0.1: - dependencies: - get-intrinsic: 1.2.4 + gopd@1.2.0: {} graceful-fs@4.2.11: {} - has-bigints@1.0.2: {} + h3@1.13.0: + dependencies: + cookie-es: 1.2.2 + crossws: 0.3.1 + defu: 6.1.4 + destr: 2.0.3 + iron-webcrypto: 1.2.1 + ohash: 1.1.4 + radix3: 1.1.2 + ufo: 1.5.4 + uncrypto: 0.1.3 + unenv: 1.10.0 - has-flag@3.0.0: {} + has-bigints@1.1.0: {} has-flag@4.0.0: {} has-property-descriptors@1.0.2: dependencies: - es-define-property: 1.0.0 + es-define-property: 1.0.1 - has-proto@1.0.3: {} + has-proto@1.2.0: + dependencies: + dunder-proto: 1.0.1 - has-symbols@1.0.3: {} + has-symbols@1.1.0: {} has-tostringtag@1.0.2: dependencies: - has-symbols: 1.0.3 + has-symbols: 1.1.0 hasown@2.0.2: dependencies: @@ -8743,20 +8929,20 @@ snapshots: dependencies: '@types/hast': 3.0.4 devlop: 1.1.0 - hast-util-from-parse5: 8.0.1 - parse5: 7.1.2 + hast-util-from-parse5: 8.0.2 + parse5: 7.2.1 vfile: 6.0.3 vfile-message: 4.0.2 - hast-util-from-parse5@8.0.1: + hast-util-from-parse5@8.0.2: dependencies: '@types/hast': 3.0.4 - '@types/unist': 3.0.2 + '@types/unist': 3.0.3 devlop: 1.1.0 - hastscript: 8.0.0 + hastscript: 9.0.0 property-information: 6.5.0 vfile: 6.0.3 - vfile-location: 5.0.2 + vfile-location: 5.0.3 web-namespaces: 2.0.1 hast-util-heading-rank@3.0.0: @@ -8771,15 +8957,15 @@ snapshots: dependencies: '@types/hast': 3.0.4 - hast-util-raw@9.0.2: + hast-util-raw@9.1.0: dependencies: '@types/hast': 3.0.4 - '@types/unist': 3.0.2 - '@ungap/structured-clone': 1.2.0 - hast-util-from-parse5: 8.0.1 + '@types/unist': 3.0.3 + '@ungap/structured-clone': 1.2.1 + hast-util-from-parse5: 8.0.2 hast-util-to-parse5: 8.0.0 html-void-elements: 3.0.0 - mdast-util-to-hast: 13.1.0 + mdast-util-to-hast: 13.2.0 parse5: 7.2.1 unist-util-position: 5.0.0 unist-util-visit: 5.0.0 @@ -8797,8 +8983,8 @@ snapshots: estree-util-attach-comments: 3.0.0 estree-util-is-identifier-name: 3.0.0 hast-util-whitespace: 3.0.0 - mdast-util-mdx-expression: 2.0.0 - mdast-util-mdx-jsx: 3.1.2 + mdast-util-mdx-expression: 2.0.1 + mdast-util-mdx-jsx: 3.1.3 mdast-util-mdxjs-esm: 2.0.1 property-information: 6.5.0 space-separated-tokens: 2.0.2 @@ -8808,35 +8994,35 @@ snapshots: transitivePeerDependencies: - supports-color - hast-util-to-html@9.0.3: + hast-util-to-html@9.0.4: dependencies: '@types/hast': 3.0.4 - '@types/unist': 3.0.2 + '@types/unist': 3.0.3 ccount: 2.0.1 comma-separated-tokens: 2.0.3 hast-util-whitespace: 3.0.0 html-void-elements: 3.0.0 - mdast-util-to-hast: 13.1.0 + mdast-util-to-hast: 13.2.0 property-information: 6.5.0 space-separated-tokens: 2.0.2 stringify-entities: 4.0.4 zwitch: 2.0.4 - hast-util-to-jsx-runtime@2.3.0: + hast-util-to-jsx-runtime@2.3.2: dependencies: '@types/estree': 1.0.6 '@types/hast': 3.0.4 - '@types/unist': 3.0.2 + '@types/unist': 3.0.3 comma-separated-tokens: 2.0.3 devlop: 1.1.0 estree-util-is-identifier-name: 3.0.0 hast-util-whitespace: 3.0.0 - mdast-util-mdx-expression: 2.0.0 - mdast-util-mdx-jsx: 3.1.2 + mdast-util-mdx-expression: 2.0.1 + mdast-util-mdx-jsx: 3.1.3 mdast-util-mdxjs-esm: 2.0.1 property-information: 6.5.0 space-separated-tokens: 2.0.2 - style-to-object: 1.0.6 + style-to-object: 1.0.8 unist-util-position: 5.0.0 vfile-message: 4.0.2 transitivePeerDependencies: @@ -8859,7 +9045,7 @@ snapshots: hast-util-to-text@4.0.2: dependencies: '@types/hast': 3.0.4 - '@types/unist': 3.0.2 + '@types/unist': 3.0.3 hast-util-is-element: 3.0.0 unist-util-find-after: 5.0.0 @@ -8867,14 +9053,6 @@ snapshots: dependencies: '@types/hast': 3.0.4 - hastscript@8.0.0: - dependencies: - '@types/hast': 3.0.4 - comma-separated-tokens: 2.0.3 - hast-util-parse-selector: 4.0.0 - property-information: 6.5.0 - space-separated-tokens: 2.0.2 - hastscript@9.0.0: dependencies: '@types/hast': 3.0.4 @@ -8901,14 +9079,16 @@ snapshots: http-proxy-agent@7.0.2: dependencies: - agent-base: 7.1.2 + agent-base: 7.1.3 debug: 4.4.0 transitivePeerDependencies: - supports-color + http-shutdown@1.2.2: {} + https-proxy-agent@7.0.6: dependencies: - agent-base: 7.1.2 + agent-base: 7.1.3 debug: 4.4.0 transitivePeerDependencies: - supports-color @@ -8927,7 +9107,7 @@ snapshots: idb@7.1.1: {} - ignore@5.3.1: {} + ignore@5.3.2: {} immutable@5.0.3: {} @@ -8944,13 +9124,15 @@ snapshots: inline-style-parser@0.1.1: {} - inline-style-parser@0.2.3: {} + inline-style-parser@0.2.4: {} - internal-slot@1.0.7: + internal-slot@1.1.0: dependencies: es-errors: 1.3.0 hasown: 2.0.2 - side-channel: 1.0.6 + side-channel: 1.1.0 + + iron-webcrypto@1.2.1: {} is-alphabetical@2.0.1: {} @@ -8959,44 +9141,52 @@ snapshots: is-alphabetical: 2.0.1 is-decimal: 2.0.1 - is-arguments@1.1.1: + is-arguments@1.2.0: dependencies: - call-bind: 1.0.7 + call-bound: 1.0.3 has-tostringtag: 1.0.2 - is-array-buffer@3.0.4: + is-array-buffer@3.0.5: dependencies: - call-bind: 1.0.7 - get-intrinsic: 1.2.4 + call-bind: 1.0.8 + call-bound: 1.0.3 + get-intrinsic: 1.2.6 is-arrayish@0.3.2: optional: true - is-bigint@1.0.4: + is-async-function@2.0.0: + dependencies: + has-tostringtag: 1.0.2 + + is-bigint@1.1.0: dependencies: - has-bigints: 1.0.2 + has-bigints: 1.1.0 is-binary-path@2.1.0: dependencies: binary-extensions: 2.3.0 - is-boolean-object@1.1.2: + is-boolean-object@1.2.1: dependencies: - call-bind: 1.0.7 + call-bound: 1.0.3 has-tostringtag: 1.0.2 is-callable@1.2.7: {} - is-core-module@2.13.1: + is-core-module@2.16.0: dependencies: hasown: 2.0.2 - is-data-view@1.0.1: + is-data-view@1.0.2: dependencies: - is-typed-array: 1.1.13 + call-bound: 1.0.3 + get-intrinsic: 1.2.6 + is-typed-array: 1.1.15 - is-date-object@1.0.5: + is-date-object@1.1.0: dependencies: + call-bound: 1.0.3 has-tostringtag: 1.0.2 is-decimal@2.0.1: {} @@ -9005,8 +9195,16 @@ snapshots: is-extglob@2.1.1: {} + is-finalizationregistry@1.1.1: + dependencies: + call-bound: 1.0.3 + 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 @@ -9021,10 +9219,9 @@ snapshots: is-module@1.0.0: {} - is-negative-zero@2.0.3: {} - - is-number-object@1.0.7: + is-number-object@1.1.1: dependencies: + call-bound: 1.0.3 has-tostringtag: 1.0.2 is-number@7.0.0: {} @@ -9039,49 +9236,54 @@ snapshots: dependencies: '@types/estree': 1.0.6 - is-regex@1.1.4: + is-regex@1.2.1: dependencies: - call-bind: 1.0.7 + call-bound: 1.0.3 + gopd: 1.2.0 has-tostringtag: 1.0.2 + hasown: 2.0.2 is-regexp@1.0.0: {} is-set@2.0.3: {} - is-shared-array-buffer@1.0.3: + is-shared-array-buffer@1.0.4: dependencies: - call-bind: 1.0.7 + call-bound: 1.0.3 is-stream@2.0.1: {} is-stream@3.0.0: {} - is-string@1.0.7: + is-string@1.1.1: dependencies: + call-bound: 1.0.3 has-tostringtag: 1.0.2 is-subdir@1.2.0: dependencies: better-path-resolve: 1.0.0 - is-symbol@1.0.4: + is-symbol@1.1.1: dependencies: - has-symbols: 1.0.3 + call-bound: 1.0.3 + has-symbols: 1.1.0 + safe-regex-test: 1.1.0 - is-typed-array@1.1.13: + is-typed-array@1.1.15: dependencies: - which-typed-array: 1.1.15 + which-typed-array: 1.1.18 is-weakmap@2.0.2: {} - is-weakref@1.0.2: + is-weakref@1.1.0: dependencies: - call-bind: 1.0.7 + call-bound: 1.0.3 - is-weakset@2.0.3: + is-weakset@2.0.4: dependencies: - call-bind: 1.0.7 - get-intrinsic: 1.2.4 + call-bound: 1.0.3 + get-intrinsic: 1.2.6 is-what@4.1.16: {} @@ -9091,29 +9293,35 @@ snapshots: dependencies: is-inside-container: 1.0.0 + is64bit@2.0.0: + dependencies: + system-architecture: 0.1.0 + isarray@2.0.5: {} isexe@2.0.0: {} - jackspeak@2.3.6: + jackspeak@3.4.3: dependencies: '@isaacs/cliui': 8.0.2 optionalDependencies: '@pkgjs/parseargs': 0.11.0 - jake@10.8.7: + jake@10.9.2: dependencies: - async: 3.2.5 + async: 3.2.6 chalk: 4.1.2 filelist: 1.0.4 minimatch: 3.1.2 jest-worker@26.6.2: dependencies: - '@types/node': 20.12.7 + '@types/node': 22.10.2 merge-stream: 2.0.0 supports-color: 7.2.0 + jiti@2.4.2: {} + joycon@3.1.1: {} js-tokens@4.0.0: {} @@ -9157,12 +9365,10 @@ snapshots: - supports-color - utf-8-validate - jsesc@0.5.0: {} - - jsesc@2.5.2: {} - jsesc@3.0.2: {} + jsesc@3.1.0: {} + json-schema-traverse@1.0.0: {} json-schema@0.4.0: {} @@ -9171,6 +9377,8 @@ snapshots: jsonc-parser@2.3.1: {} + jsonc-parser@3.3.1: {} + jsonfile@4.0.0: optionalDependencies: graceful-fs: 4.2.11 @@ -9195,6 +9403,27 @@ snapshots: lines-and-columns@1.2.4: {} + listhen@1.9.0: + dependencies: + '@parcel/watcher': 2.5.0 + '@parcel/watcher-wasm': 2.5.0 + citty: 0.1.6 + clipboardy: 4.0.0 + consola: 3.3.0 + crossws: 0.3.1 + defu: 6.1.4 + get-port-please: 3.1.2 + h3: 1.13.0 + http-shutdown: 1.2.2 + jiti: 2.4.2 + mlly: 1.7.3 + node-forge: 1.3.1 + pathe: 1.1.2 + std-env: 3.8.0 + ufo: 1.5.4 + untun: 0.1.3 + uqr: 0.1.2 + load-tsconfig@0.2.5: {} load-yaml-file@0.2.0: @@ -9237,23 +9466,19 @@ snapshots: dependencies: tslib: 2.8.1 - lru-cache@10.2.0: {} + lru-cache@10.4.3: {} lru-cache@5.1.1: dependencies: yallist: 3.1.1 - lru-cache@6.0.0: - dependencies: - yallist: 4.0.0 - lz-string@1.5.0: {} magic-string@0.25.9: dependencies: sourcemap-codec: 1.4.8 - magic-string@0.30.14: + magic-string@0.30.17: dependencies: '@jridgewell/sourcemap-codec': 1.5.0 @@ -9261,123 +9486,124 @@ snapshots: dependencies: '@babel/parser': 7.26.3 '@babel/types': 7.26.3 - source-map-js: 1.2.0 + source-map-js: 1.2.1 markdown-extensions@2.0.0: {} - markdown-table@3.0.3: {} + markdown-table@3.0.4: {} + + math-intrinsics@1.1.0: {} mdast-util-definitions@6.0.0: dependencies: - '@types/mdast': 4.0.3 - '@types/unist': 3.0.2 + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 unist-util-visit: 5.0.0 mdast-util-find-and-replace@3.0.1: dependencies: - '@types/mdast': 4.0.3 + '@types/mdast': 4.0.4 escape-string-regexp: 5.0.0 unist-util-is: 6.0.0 unist-util-visit-parents: 6.0.1 - mdast-util-from-markdown@2.0.0: + mdast-util-from-markdown@2.0.2: dependencies: - '@types/mdast': 4.0.3 - '@types/unist': 3.0.2 + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 decode-named-character-reference: 1.0.2 devlop: 1.1.0 mdast-util-to-string: 4.0.0 - micromark: 4.0.0 - micromark-util-decode-numeric-character-reference: 2.0.1 - micromark-util-decode-string: 2.0.0 - micromark-util-normalize-identifier: 2.0.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 + micromark: 4.0.1 + micromark-util-decode-numeric-character-reference: 2.0.2 + micromark-util-decode-string: 2.0.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.1 unist-util-stringify-position: 4.0.0 transitivePeerDependencies: - supports-color - mdast-util-gfm-autolink-literal@2.0.0: + mdast-util-gfm-autolink-literal@2.0.1: dependencies: - '@types/mdast': 4.0.3 + '@types/mdast': 4.0.4 ccount: 2.0.1 devlop: 1.1.0 mdast-util-find-and-replace: 3.0.1 - micromark-util-character: 2.1.0 + micromark-util-character: 2.1.1 mdast-util-gfm-footnote@2.0.0: dependencies: - '@types/mdast': 4.0.3 + '@types/mdast': 4.0.4 devlop: 1.1.0 - mdast-util-from-markdown: 2.0.0 - mdast-util-to-markdown: 2.1.0 - micromark-util-normalize-identifier: 2.0.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + micromark-util-normalize-identifier: 2.0.1 transitivePeerDependencies: - supports-color mdast-util-gfm-strikethrough@2.0.0: dependencies: - '@types/mdast': 4.0.3 - mdast-util-from-markdown: 2.0.0 - mdast-util-to-markdown: 2.1.0 + '@types/mdast': 4.0.4 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 transitivePeerDependencies: - supports-color mdast-util-gfm-table@2.0.0: dependencies: - '@types/mdast': 4.0.3 + '@types/mdast': 4.0.4 devlop: 1.1.0 - markdown-table: 3.0.3 - mdast-util-from-markdown: 2.0.0 - mdast-util-to-markdown: 2.1.0 + markdown-table: 3.0.4 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 transitivePeerDependencies: - supports-color mdast-util-gfm-task-list-item@2.0.0: dependencies: - '@types/mdast': 4.0.3 + '@types/mdast': 4.0.4 devlop: 1.1.0 - mdast-util-from-markdown: 2.0.0 - mdast-util-to-markdown: 2.1.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 transitivePeerDependencies: - supports-color mdast-util-gfm@3.0.0: dependencies: - mdast-util-from-markdown: 2.0.0 - mdast-util-gfm-autolink-literal: 2.0.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-gfm-autolink-literal: 2.0.1 mdast-util-gfm-footnote: 2.0.0 mdast-util-gfm-strikethrough: 2.0.0 mdast-util-gfm-table: 2.0.0 mdast-util-gfm-task-list-item: 2.0.0 - mdast-util-to-markdown: 2.1.0 + mdast-util-to-markdown: 2.1.2 transitivePeerDependencies: - supports-color - mdast-util-mdx-expression@2.0.0: + mdast-util-mdx-expression@2.0.1: dependencies: '@types/estree-jsx': 1.0.5 '@types/hast': 3.0.4 - '@types/mdast': 4.0.3 + '@types/mdast': 4.0.4 devlop: 1.1.0 - mdast-util-from-markdown: 2.0.0 - mdast-util-to-markdown: 2.1.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 transitivePeerDependencies: - supports-color - mdast-util-mdx-jsx@3.1.2: + mdast-util-mdx-jsx@3.1.3: dependencies: '@types/estree-jsx': 1.0.5 '@types/hast': 3.0.4 - '@types/mdast': 4.0.3 - '@types/unist': 3.0.2 + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 ccount: 2.0.1 devlop: 1.1.0 - mdast-util-from-markdown: 2.0.0 - mdast-util-to-markdown: 2.1.0 - parse-entities: 4.0.1 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + parse-entities: 4.0.2 stringify-entities: 4.0.4 - unist-util-remove-position: 5.0.0 unist-util-stringify-position: 4.0.0 vfile-message: 4.0.2 transitivePeerDependencies: @@ -9385,11 +9611,11 @@ snapshots: mdast-util-mdx@3.0.0: dependencies: - mdast-util-from-markdown: 2.0.0 - mdast-util-mdx-expression: 2.0.0 - mdast-util-mdx-jsx: 3.1.2 + mdast-util-from-markdown: 2.0.2 + mdast-util-mdx-expression: 2.0.1 + mdast-util-mdx-jsx: 3.1.3 mdast-util-mdxjs-esm: 2.0.1 - mdast-util-to-markdown: 2.1.0 + mdast-util-to-markdown: 2.1.2 transitivePeerDependencies: - supports-color @@ -9397,44 +9623,45 @@ snapshots: dependencies: '@types/estree-jsx': 1.0.5 '@types/hast': 3.0.4 - '@types/mdast': 4.0.3 + '@types/mdast': 4.0.4 devlop: 1.1.0 - mdast-util-from-markdown: 2.0.0 - mdast-util-to-markdown: 2.1.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 transitivePeerDependencies: - supports-color mdast-util-phrasing@4.1.0: dependencies: - '@types/mdast': 4.0.3 + '@types/mdast': 4.0.4 unist-util-is: 6.0.0 - mdast-util-to-hast@13.1.0: + mdast-util-to-hast@13.2.0: dependencies: '@types/hast': 3.0.4 - '@types/mdast': 4.0.3 - '@ungap/structured-clone': 1.2.0 + '@types/mdast': 4.0.4 + '@ungap/structured-clone': 1.2.1 devlop: 1.1.0 - micromark-util-sanitize-uri: 2.0.0 + micromark-util-sanitize-uri: 2.0.1 trim-lines: 3.0.1 unist-util-position: 5.0.0 unist-util-visit: 5.0.0 vfile: 6.0.3 - mdast-util-to-markdown@2.1.0: + mdast-util-to-markdown@2.1.2: dependencies: - '@types/mdast': 4.0.3 - '@types/unist': 3.0.2 + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 longest-streak: 3.1.0 mdast-util-phrasing: 4.1.0 mdast-util-to-string: 4.0.0 - micromark-util-decode-string: 2.0.0 + micromark-util-classify-character: 2.0.1 + micromark-util-decode-string: 2.0.1 unist-util-visit: 5.0.0 zwitch: 2.0.4 mdast-util-to-string@4.0.0: dependencies: - '@types/mdast': 4.0.3 + '@types/mdast': 4.0.4 mdn-data@2.0.30: {} @@ -9446,120 +9673,121 @@ snapshots: merge2@1.4.1: {} - micromark-core-commonmark@2.0.0: + micromark-core-commonmark@2.0.2: dependencies: decode-named-character-reference: 1.0.2 devlop: 1.1.0 - micromark-factory-destination: 2.0.0 - micromark-factory-label: 2.0.0 - micromark-factory-space: 2.0.0 - micromark-factory-title: 2.0.0 - micromark-factory-whitespace: 2.0.0 - micromark-util-character: 2.1.0 - micromark-util-chunked: 2.0.0 - micromark-util-classify-character: 2.0.0 - micromark-util-html-tag-name: 2.0.0 - micromark-util-normalize-identifier: 2.0.0 - micromark-util-resolve-all: 2.0.0 - micromark-util-subtokenize: 2.0.1 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - - micromark-extension-gfm-autolink-literal@2.0.0: - dependencies: - micromark-util-character: 2.1.0 - micromark-util-sanitize-uri: 2.0.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - - micromark-extension-gfm-footnote@2.0.0: + micromark-factory-destination: 2.0.1 + micromark-factory-label: 2.0.1 + micromark-factory-space: 2.0.1 + micromark-factory-title: 2.0.1 + micromark-factory-whitespace: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-chunked: 2.0.1 + micromark-util-classify-character: 2.0.1 + micromark-util-html-tag-name: 2.0.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-resolve-all: 2.0.1 + micromark-util-subtokenize: 2.0.3 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.1 + + micromark-extension-gfm-autolink-literal@2.1.0: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-sanitize-uri: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.1 + + micromark-extension-gfm-footnote@2.1.0: dependencies: devlop: 1.1.0 - micromark-core-commonmark: 2.0.0 - micromark-factory-space: 2.0.0 - micromark-util-character: 2.1.0 - micromark-util-normalize-identifier: 2.0.0 - micromark-util-sanitize-uri: 2.0.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 + micromark-core-commonmark: 2.0.2 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-sanitize-uri: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.1 - micromark-extension-gfm-strikethrough@2.0.0: + micromark-extension-gfm-strikethrough@2.1.0: dependencies: devlop: 1.1.0 - micromark-util-chunked: 2.0.0 - micromark-util-classify-character: 2.0.0 - micromark-util-resolve-all: 2.0.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 + micromark-util-chunked: 2.0.1 + micromark-util-classify-character: 2.0.1 + micromark-util-resolve-all: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.1 - micromark-extension-gfm-table@2.0.0: + micromark-extension-gfm-table@2.1.0: dependencies: devlop: 1.1.0 - micromark-factory-space: 2.0.0 - micromark-util-character: 2.1.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.1 micromark-extension-gfm-tagfilter@2.0.0: dependencies: - micromark-util-types: 2.0.0 + micromark-util-types: 2.0.1 - micromark-extension-gfm-task-list-item@2.0.1: + micromark-extension-gfm-task-list-item@2.1.0: dependencies: devlop: 1.1.0 - micromark-factory-space: 2.0.0 - micromark-util-character: 2.1.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.1 micromark-extension-gfm@3.0.0: dependencies: - micromark-extension-gfm-autolink-literal: 2.0.0 - micromark-extension-gfm-footnote: 2.0.0 - micromark-extension-gfm-strikethrough: 2.0.0 - micromark-extension-gfm-table: 2.0.0 + micromark-extension-gfm-autolink-literal: 2.1.0 + micromark-extension-gfm-footnote: 2.1.0 + micromark-extension-gfm-strikethrough: 2.1.0 + micromark-extension-gfm-table: 2.1.0 micromark-extension-gfm-tagfilter: 2.0.0 - micromark-extension-gfm-task-list-item: 2.0.1 - micromark-util-combine-extensions: 2.0.0 - micromark-util-types: 2.0.0 + micromark-extension-gfm-task-list-item: 2.1.0 + micromark-util-combine-extensions: 2.0.1 + micromark-util-types: 2.0.1 micromark-extension-mdx-expression@3.0.0: dependencies: '@types/estree': 1.0.6 devlop: 1.1.0 - micromark-factory-mdx-expression: 2.0.1 - micromark-factory-space: 2.0.0 - micromark-util-character: 2.1.0 + micromark-factory-mdx-expression: 2.0.2 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 micromark-util-events-to-acorn: 2.0.2 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.1 - micromark-extension-mdx-jsx@3.0.0: + micromark-extension-mdx-jsx@3.0.1: dependencies: '@types/acorn': 4.0.6 '@types/estree': 1.0.6 devlop: 1.1.0 estree-util-is-identifier-name: 3.0.0 - micromark-factory-mdx-expression: 2.0.1 - micromark-factory-space: 2.0.0 - micromark-util-character: 2.1.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 + micromark-factory-mdx-expression: 2.0.2 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-events-to-acorn: 2.0.2 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.1 vfile-message: 4.0.2 micromark-extension-mdx-md@2.0.0: dependencies: - micromark-util-types: 2.0.0 + micromark-util-types: 2.0.1 micromark-extension-mdxjs-esm@3.0.0: dependencies: '@types/estree': 1.0.6 devlop: 1.1.0 - micromark-core-commonmark: 2.0.0 - micromark-util-character: 2.1.0 + micromark-core-commonmark: 2.0.2 + micromark-util-character: 2.1.1 micromark-util-events-to-acorn: 2.0.2 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.1 unist-util-position-from-estree: 2.0.0 vfile-message: 4.0.2 @@ -9568,153 +9796,149 @@ snapshots: acorn: 8.14.0 acorn-jsx: 5.3.2(acorn@8.14.0) micromark-extension-mdx-expression: 3.0.0 - micromark-extension-mdx-jsx: 3.0.0 + micromark-extension-mdx-jsx: 3.0.1 micromark-extension-mdx-md: 2.0.0 micromark-extension-mdxjs-esm: 3.0.0 - micromark-util-combine-extensions: 2.0.0 - micromark-util-types: 2.0.0 + micromark-util-combine-extensions: 2.0.1 + micromark-util-types: 2.0.1 - micromark-factory-destination@2.0.0: + micromark-factory-destination@2.0.1: dependencies: - micromark-util-character: 2.1.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.1 - micromark-factory-label@2.0.0: + micromark-factory-label@2.0.1: dependencies: devlop: 1.1.0 - micromark-util-character: 2.1.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.1 - micromark-factory-mdx-expression@2.0.1: + micromark-factory-mdx-expression@2.0.2: dependencies: '@types/estree': 1.0.6 devlop: 1.1.0 - micromark-util-character: 2.1.0 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 micromark-util-events-to-acorn: 2.0.2 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.1 unist-util-position-from-estree: 2.0.0 vfile-message: 4.0.2 - micromark-factory-space@2.0.0: + micromark-factory-space@2.0.1: dependencies: - micromark-util-character: 2.1.0 - micromark-util-types: 2.0.0 + micromark-util-character: 2.1.1 + micromark-util-types: 2.0.1 - micromark-factory-title@2.0.0: + micromark-factory-title@2.0.1: dependencies: - micromark-factory-space: 2.0.0 - micromark-util-character: 2.1.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.1 - micromark-factory-whitespace@2.0.0: + micromark-factory-whitespace@2.0.1: dependencies: - micromark-factory-space: 2.0.0 - micromark-util-character: 2.1.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.1 - micromark-util-character@2.1.0: + micromark-util-character@2.1.1: dependencies: - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.1 - micromark-util-chunked@2.0.0: + micromark-util-chunked@2.0.1: dependencies: - micromark-util-symbol: 2.0.0 + micromark-util-symbol: 2.0.1 - micromark-util-classify-character@2.0.0: + micromark-util-classify-character@2.0.1: dependencies: - micromark-util-character: 2.1.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.1 - micromark-util-combine-extensions@2.0.0: + micromark-util-combine-extensions@2.0.1: dependencies: - micromark-util-chunked: 2.0.0 - micromark-util-types: 2.0.0 + micromark-util-chunked: 2.0.1 + micromark-util-types: 2.0.1 - micromark-util-decode-numeric-character-reference@2.0.1: + micromark-util-decode-numeric-character-reference@2.0.2: dependencies: - micromark-util-symbol: 2.0.0 + micromark-util-symbol: 2.0.1 - micromark-util-decode-string@2.0.0: + micromark-util-decode-string@2.0.1: dependencies: decode-named-character-reference: 1.0.2 - micromark-util-character: 2.1.0 - micromark-util-decode-numeric-character-reference: 2.0.1 - micromark-util-symbol: 2.0.0 + micromark-util-character: 2.1.1 + micromark-util-decode-numeric-character-reference: 2.0.2 + micromark-util-symbol: 2.0.1 - micromark-util-encode@2.0.0: {} + micromark-util-encode@2.0.1: {} micromark-util-events-to-acorn@2.0.2: dependencies: '@types/acorn': 4.0.6 '@types/estree': 1.0.6 - '@types/unist': 3.0.2 + '@types/unist': 3.0.3 devlop: 1.1.0 estree-util-visit: 2.0.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.1 vfile-message: 4.0.2 - micromark-util-html-tag-name@2.0.0: {} + micromark-util-html-tag-name@2.0.1: {} - micromark-util-normalize-identifier@2.0.0: + micromark-util-normalize-identifier@2.0.1: dependencies: - micromark-util-symbol: 2.0.0 + micromark-util-symbol: 2.0.1 - micromark-util-resolve-all@2.0.0: + micromark-util-resolve-all@2.0.1: dependencies: - micromark-util-types: 2.0.0 + micromark-util-types: 2.0.1 - micromark-util-sanitize-uri@2.0.0: + micromark-util-sanitize-uri@2.0.1: dependencies: - micromark-util-character: 2.1.0 - micromark-util-encode: 2.0.0 - micromark-util-symbol: 2.0.0 + micromark-util-character: 2.1.1 + micromark-util-encode: 2.0.1 + micromark-util-symbol: 2.0.1 - micromark-util-subtokenize@2.0.1: + micromark-util-subtokenize@2.0.3: dependencies: devlop: 1.1.0 - micromark-util-chunked: 2.0.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 + micromark-util-chunked: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.1 - micromark-util-symbol@2.0.0: {} + micromark-util-symbol@2.0.1: {} - micromark-util-types@2.0.0: {} + micromark-util-types@2.0.1: {} - micromark@4.0.0: + micromark@4.0.1: dependencies: '@types/debug': 4.1.12 debug: 4.4.0 decode-named-character-reference: 1.0.2 devlop: 1.1.0 - micromark-core-commonmark: 2.0.0 - micromark-factory-space: 2.0.0 - micromark-util-character: 2.1.0 - micromark-util-chunked: 2.0.0 - micromark-util-combine-extensions: 2.0.0 - micromark-util-decode-numeric-character-reference: 2.0.1 - micromark-util-encode: 2.0.0 - micromark-util-normalize-identifier: 2.0.0 - micromark-util-resolve-all: 2.0.0 - micromark-util-sanitize-uri: 2.0.0 - micromark-util-subtokenize: 2.0.1 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 + micromark-core-commonmark: 2.0.2 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-chunked: 2.0.1 + micromark-util-combine-extensions: 2.0.1 + micromark-util-decode-numeric-character-reference: 2.0.2 + micromark-util-encode: 2.0.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-resolve-all: 2.0.1 + micromark-util-sanitize-uri: 2.0.1 + micromark-util-subtokenize: 2.0.3 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.1 transitivePeerDependencies: - supports-color - micromatch@4.0.5: - dependencies: - braces: 3.0.2 - picomatch: 2.3.1 - micromatch@4.0.8: dependencies: braces: 3.0.3 @@ -9726,6 +9950,8 @@ snapshots: dependencies: mime-db: 1.52.0 + mime@3.0.0: {} + mimic-fn@4.0.0: {} min-indent@1.0.1: {} @@ -9742,13 +9968,7 @@ snapshots: dependencies: brace-expansion: 2.0.1 - minimist@1.2.8: {} - - minipass@7.0.4: {} - - mkdirp@0.5.6: - dependencies: - minimist: 1.2.8 + minipass@7.1.2: {} mlly@1.7.3: dependencies: @@ -9759,8 +9979,6 @@ snapshots: mri@1.2.0: {} - mrmime@1.0.1: {} - mrmime@2.0.0: {} ms@2.1.3: {} @@ -9775,7 +9993,7 @@ snapshots: object-assign: 4.1.1 thenify-all: 1.6.0 - nanoid@3.3.7: {} + nanoid@3.3.8: {} neotraverse@0.6.18: {} @@ -9788,14 +10006,17 @@ snapshots: lower-case: 2.0.2 tslib: 2.8.1 - node-addon-api@7.1.1: - optional: true + node-addon-api@7.1.1: {} + + node-fetch-native@1.6.4: {} node-fetch@2.7.0: dependencies: whatwg-url: 5.0.0 - node-releases@2.0.18: {} + node-forge@1.3.1: {} + + node-releases@2.0.19: {} normalize-path@3.0.0: {} @@ -9809,22 +10030,32 @@ snapshots: object-assign@4.1.1: {} - object-inspect@1.13.1: {} + object-inspect@1.13.3: {} object-is@1.1.6: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 define-properties: 1.2.1 object-keys@1.1.1: {} - object.assign@4.1.5: + object.assign@4.1.7: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 + call-bound: 1.0.3 define-properties: 1.2.1 - has-symbols: 1.0.3 + es-object-atoms: 1.0.0 + has-symbols: 1.1.0 object-keys: 1.1.1 + ofetch@1.4.1: + dependencies: + destr: 2.0.3 + node-fetch-native: 1.6.4 + ufo: 1.5.4 + + ohash@1.1.4: {} + once@1.4.0: dependencies: wrappy: 1.0.2 @@ -9833,11 +10064,11 @@ snapshots: dependencies: mimic-fn: 4.0.0 - oniguruma-to-es@0.7.0: + oniguruma-to-es@0.8.0: dependencies: emoji-regex-xs: 1.0.0 regex: 5.0.2 - regex-recursion: 4.3.0 + regex-recursion: 5.0.0 open-props@1.7.8: {} @@ -9857,7 +10088,7 @@ snapshots: dependencies: yocto-queue: 1.1.1 - p-limit@6.1.0: + p-limit@6.2.0: dependencies: yocto-queue: 1.1.1 @@ -9870,18 +10101,19 @@ snapshots: p-queue@8.0.1: dependencies: eventemitter3: 5.0.1 - p-timeout: 6.1.2 + p-timeout: 6.1.3 - p-timeout@6.1.2: {} + p-timeout@6.1.3: {} p-try@2.2.0: {} - package-manager-detector@0.2.7: {} + package-json-from-dist@1.0.1: {} - parse-entities@4.0.1: + package-manager-detector@0.2.8: {} + + parse-entities@4.0.2: dependencies: - '@types/unist': 2.0.10 - character-entities: 2.0.2 + '@types/unist': 2.0.11 character-entities-legacy: 3.0.0 character-reference-invalid: 2.0.1 decode-named-character-reference: 1.0.2 @@ -9892,16 +10124,12 @@ snapshots: parse-latin@7.0.0: dependencies: '@types/nlcst': 2.0.3 - '@types/unist': 3.0.2 + '@types/unist': 3.0.3 nlcst-to-string: 4.0.0 unist-util-modify-children: 4.0.0 unist-util-visit-children: 3.0.0 vfile: 6.0.3 - parse5@7.1.2: - dependencies: - entities: 4.5.0 - parse5@7.2.1: dependencies: entities: 4.5.0 @@ -9923,10 +10151,10 @@ snapshots: path-parse@1.0.7: {} - path-scurry@1.10.2: + path-scurry@1.11.1: dependencies: - lru-cache: 10.2.0 - minipass: 7.0.4 + lru-cache: 10.4.3 + minipass: 7.1.2 path-type@4.0.0: {} @@ -9960,6 +10188,14 @@ snapshots: mlly: 1.7.3 pathe: 1.1.2 + playwright-core@1.49.1: {} + + playwright@1.49.1: + dependencies: + playwright-core: 1.49.1 + optionalDependencies: + fsevents: 2.3.2 + popmotion@11.0.5: dependencies: framesync: 6.1.2 @@ -9969,23 +10205,25 @@ snapshots: possible-typed-array-names@1.0.0: {} - postcss-jit-props@1.0.14(postcss@8.4.49): + postcss-jit-props@1.0.15(postcss@8.4.49): dependencies: postcss: 8.4.49 tiny-glob: 0.2.9 - postcss-load-config@6.0.1(postcss@8.4.49)(tsx@4.19.2): + postcss-load-config@6.0.1(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(yaml@2.6.1): dependencies: lilconfig: 3.1.3 optionalDependencies: + jiti: 2.4.2 postcss: 8.4.49 tsx: 4.19.2 + yaml: 2.6.1 postcss-value-parser@4.2.0: {} postcss@8.4.49: dependencies: - nanoid: 3.3.7 + nanoid: 3.3.8 picocolors: 1.1.1 source-map-js: 1.2.1 @@ -10001,10 +10239,13 @@ snapshots: prettier: 3.4.2 sass-formatter: 0.7.9 - prettier-plugin-svelte@3.3.2(prettier@3.4.2)(svelte@5.8.1): + prettier-plugin-svelte@3.3.2(prettier@3.4.2)(svelte@5.15.0): dependencies: prettier: 3.4.2 - svelte: 5.8.1 + svelte: 5.15.0 + + prettier@2.8.7: + optional: true prettier@2.8.8: {} @@ -10043,6 +10284,8 @@ snapshots: queue-microtask@1.2.3: {} + radix3@1.1.2: {} + randombytes@2.1.0: dependencies: safe-buffer: 5.2.1 @@ -10053,6 +10296,11 @@ snapshots: react: 18.3.1 scheduler: 0.23.2 + react-dom@19.0.0(react@19.0.0): + dependencies: + react: 19.0.0 + scheduler: 0.25.0 + react-is@17.0.2: {} react-is@18.3.1: {} @@ -10063,6 +10311,8 @@ snapshots: dependencies: loose-envify: 1.4.0 + react@19.0.0: {} + read-yaml-file@1.1.0: dependencies: graceful-fs: 4.2.11 @@ -10076,6 +10326,14 @@ snapshots: readdirp@4.0.2: {} + recast@0.23.9: + dependencies: + ast-types: 0.16.1 + esprima: 4.0.1 + source-map: 0.6.1 + tiny-invariant: 1.3.3 + tslib: 2.8.1 + recma-build-jsx@1.0.0: dependencies: '@types/estree': 1.0.6 @@ -10111,7 +10369,18 @@ snapshots: indent-string: 4.0.0 strip-indent: 3.0.0 - regenerate-unicode-properties@10.1.1: + reflect.getprototypeof@1.0.9: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + dunder-proto: 1.0.1 + es-abstract: 1.23.7 + es-errors: 1.3.0 + get-intrinsic: 1.2.6 + gopd: 1.2.0 + which-builtin-type: 1.2.1 + + regenerate-unicode-properties@10.2.0: dependencies: regenerate: 1.4.2 @@ -10123,7 +10392,7 @@ snapshots: dependencies: '@babel/runtime': 7.26.0 - regex-recursion@4.3.0: + regex-recursion@5.0.0: dependencies: regex-utilities: 2.3.0 @@ -10133,36 +10402,38 @@ snapshots: dependencies: regex-utilities: 2.3.0 - regexp.prototype.flags@1.5.2: + regexp.prototype.flags@1.5.3: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 define-properties: 1.2.1 es-errors: 1.3.0 set-function-name: 2.0.2 - regexpu-core@5.3.2: + regexpu-core@6.2.0: dependencies: - '@babel/regjsgen': 0.8.0 regenerate: 1.4.2 - regenerate-unicode-properties: 10.1.1 - regjsparser: 0.9.1 + regenerate-unicode-properties: 10.2.0 + regjsgen: 0.8.0 + regjsparser: 0.12.0 unicode-match-property-ecmascript: 2.0.0 - unicode-match-property-value-ecmascript: 2.1.0 + unicode-match-property-value-ecmascript: 2.2.0 - regjsparser@0.9.1: + regjsgen@0.8.0: {} + + regjsparser@0.12.0: dependencies: - jsesc: 0.5.0 + jsesc: 3.0.2 rehype-autolink-headings@7.1.0: dependencies: '@types/hast': 3.0.4 - '@ungap/structured-clone': 1.2.0 + '@ungap/structured-clone': 1.2.1 hast-util-heading-rank: 3.0.0 hast-util-is-element: 3.0.0 - unified: 11.0.4 + unified: 11.0.5 unist-util-visit: 5.0.0 - rehype-parse@9.0.0: + rehype-parse@9.0.1: dependencies: '@types/hast': 3.0.4 hast-util-from-html: 2.0.3 @@ -10171,7 +10442,7 @@ snapshots: rehype-raw@7.0.0: dependencies: '@types/hast': 3.0.4 - hast-util-raw: 9.0.2 + hast-util-raw: 9.1.0 vfile: 6.0.3 rehype-recma@1.0.0: @@ -10185,13 +10456,13 @@ snapshots: rehype-stringify@10.0.1: dependencies: '@types/hast': 3.0.4 - hast-util-to-html: 9.0.3 + hast-util-to-html: 9.0.4 unified: 11.0.5 rehype@13.0.2: dependencies: '@types/hast': 3.0.4 - rehype-parse: 9.0.0 + rehype-parse: 9.0.1 rehype-stringify: 10.0.1 unified: 11.0.5 @@ -10201,7 +10472,7 @@ snapshots: remark-gfm@4.0.0: dependencies: - '@types/mdast': 4.0.3 + '@types/mdast': 4.0.4 mdast-util-gfm: 3.0.0 micromark-extension-gfm: 3.0.0 remark-parse: 11.0.0 @@ -10210,7 +10481,7 @@ snapshots: transitivePeerDependencies: - supports-color - remark-mdx@3.0.1: + remark-mdx@3.1.0: dependencies: mdast-util-mdx: 3.0.0 micromark-extension-mdxjs: 3.0.0 @@ -10219,9 +10490,9 @@ snapshots: remark-parse@11.0.0: dependencies: - '@types/mdast': 4.0.3 - mdast-util-from-markdown: 2.0.0 - micromark-util-types: 2.0.0 + '@types/mdast': 4.0.4 + mdast-util-from-markdown: 2.0.2 + micromark-util-types: 2.0.1 unified: 11.0.5 transitivePeerDependencies: - supports-color @@ -10229,8 +10500,8 @@ snapshots: remark-rehype@11.1.1: dependencies: '@types/hast': 3.0.4 - '@types/mdast': 4.0.3 - mdast-util-to-hast: 13.1.0 + '@types/mdast': 4.0.4 + mdast-util-to-hast: 13.2.0 unified: 11.0.5 vfile: 6.0.3 @@ -10243,10 +10514,12 @@ snapshots: remark-stringify@11.0.0: dependencies: - '@types/mdast': 4.0.3 - mdast-util-to-markdown: 2.1.0 + '@types/mdast': 4.0.4 + mdast-util-to-markdown: 2.1.2 unified: 11.0.5 + request-light@0.5.8: {} + request-light@0.7.0: {} require-directory@2.1.1: {} @@ -10259,9 +10532,9 @@ snapshots: resolve-pkg-maps@1.0.0: {} - resolve@1.22.8: + resolve@1.22.10: dependencies: - is-core-module: 2.13.1 + is-core-module: 2.16.0 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 @@ -10292,45 +10565,41 @@ snapshots: reusify@1.0.4: {} - rimraf@2.7.1: - dependencies: - glob: 7.2.3 - - rollup-plugin-terser@7.0.2(rollup@2.79.1): + rollup-plugin-terser@7.0.2(rollup@2.79.2): dependencies: - '@babel/code-frame': 7.24.2 + '@babel/code-frame': 7.26.2 jest-worker: 26.6.2 - rollup: 2.79.1 + rollup: 2.79.2 serialize-javascript: 4.0.0 terser: 5.37.0 - rollup@2.79.1: + rollup@2.79.2: optionalDependencies: fsevents: 2.3.3 - rollup@4.28.1: + rollup@4.29.1: dependencies: '@types/estree': 1.0.6 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.28.1 - '@rollup/rollup-android-arm64': 4.28.1 - '@rollup/rollup-darwin-arm64': 4.28.1 - '@rollup/rollup-darwin-x64': 4.28.1 - '@rollup/rollup-freebsd-arm64': 4.28.1 - '@rollup/rollup-freebsd-x64': 4.28.1 - '@rollup/rollup-linux-arm-gnueabihf': 4.28.1 - '@rollup/rollup-linux-arm-musleabihf': 4.28.1 - '@rollup/rollup-linux-arm64-gnu': 4.28.1 - '@rollup/rollup-linux-arm64-musl': 4.28.1 - '@rollup/rollup-linux-loongarch64-gnu': 4.28.1 - '@rollup/rollup-linux-powerpc64le-gnu': 4.28.1 - '@rollup/rollup-linux-riscv64-gnu': 4.28.1 - '@rollup/rollup-linux-s390x-gnu': 4.28.1 - '@rollup/rollup-linux-x64-gnu': 4.28.1 - '@rollup/rollup-linux-x64-musl': 4.28.1 - '@rollup/rollup-win32-arm64-msvc': 4.28.1 - '@rollup/rollup-win32-ia32-msvc': 4.28.1 - '@rollup/rollup-win32-x64-msvc': 4.28.1 + '@rollup/rollup-android-arm-eabi': 4.29.1 + '@rollup/rollup-android-arm64': 4.29.1 + '@rollup/rollup-darwin-arm64': 4.29.1 + '@rollup/rollup-darwin-x64': 4.29.1 + '@rollup/rollup-freebsd-arm64': 4.29.1 + '@rollup/rollup-freebsd-x64': 4.29.1 + '@rollup/rollup-linux-arm-gnueabihf': 4.29.1 + '@rollup/rollup-linux-arm-musleabihf': 4.29.1 + '@rollup/rollup-linux-arm64-gnu': 4.29.1 + '@rollup/rollup-linux-arm64-musl': 4.29.1 + '@rollup/rollup-linux-loongarch64-gnu': 4.29.1 + '@rollup/rollup-linux-powerpc64le-gnu': 4.29.1 + '@rollup/rollup-linux-riscv64-gnu': 4.29.1 + '@rollup/rollup-linux-s390x-gnu': 4.29.1 + '@rollup/rollup-linux-x64-gnu': 4.29.1 + '@rollup/rollup-linux-x64-musl': 4.29.1 + '@rollup/rollup-win32-arm64-msvc': 4.29.1 + '@rollup/rollup-win32-ia32-msvc': 4.29.1 + '@rollup/rollup-win32-x64-msvc': 4.29.1 fsevents: 2.3.3 rrweb-cssom@0.7.1: {} @@ -10339,10 +10608,10 @@ snapshots: dependencies: queue-microtask: 1.2.3 - runed@0.18.0(svelte@5.8.1): + runed@0.18.0(svelte@5.15.0): dependencies: esm-env: 1.2.1 - svelte: 5.8.1 + svelte: 5.15.0 s.color@0.0.15: {} @@ -10350,43 +10619,37 @@ snapshots: dependencies: mri: 1.2.0 - safe-array-concat@1.1.2: + safe-array-concat@1.1.3: dependencies: - call-bind: 1.0.7 - get-intrinsic: 1.2.4 - has-symbols: 1.0.3 + call-bind: 1.0.8 + call-bound: 1.0.3 + get-intrinsic: 1.2.6 + has-symbols: 1.1.0 isarray: 2.0.5 safe-buffer@5.2.1: {} - safe-regex-test@1.0.3: + safe-regex-test@1.1.0: dependencies: - call-bind: 1.0.7 + call-bound: 1.0.3 es-errors: 1.3.0 - is-regex: 1.1.4 + is-regex: 1.2.1 safer-buffer@2.1.2: {} - sander@0.5.1: - dependencies: - es6-promise: 3.3.1 - graceful-fs: 4.2.11 - mkdirp: 0.5.6 - rimraf: 2.7.1 - sass-formatter@0.7.9: dependencies: suf-log: 2.5.3 - sass@1.82.0: + sass@1.83.0: dependencies: - chokidar: 4.0.1 + chokidar: 4.0.3 immutable: 5.0.3 - source-map-js: 1.2.0 + source-map-js: 1.2.1 optionalDependencies: '@parcel/watcher': 2.5.0 - sax@1.3.0: {} + sax@1.4.1: {} saxes@6.0.0: dependencies: @@ -10396,11 +10659,9 @@ snapshots: dependencies: loose-envify: 1.4.0 - semver@6.3.1: {} + scheduler@0.25.0: {} - semver@7.6.0: - dependencies: - lru-cache: 6.0.0 + semver@6.3.1: {} semver@7.6.3: {} @@ -10421,8 +10682,8 @@ snapshots: define-data-property: 1.1.4 es-errors: 1.3.0 function-bind: 1.1.2 - get-intrinsic: 1.2.4 - gopd: 1.0.1 + get-intrinsic: 1.2.6 + gopd: 1.2.0 has-property-descriptors: 1.0.2 set-function-name@2.0.2: @@ -10465,21 +10726,42 @@ snapshots: shebang-regex@3.0.0: {} - shiki@1.24.0: + shiki@1.24.3: dependencies: - '@shikijs/core': 1.24.0 - '@shikijs/engine-javascript': 1.24.0 - '@shikijs/engine-oniguruma': 1.24.0 - '@shikijs/types': 1.24.0 - '@shikijs/vscode-textmate': 9.3.0 + '@shikijs/core': 1.24.3 + '@shikijs/engine-javascript': 1.24.3 + '@shikijs/engine-oniguruma': 1.24.3 + '@shikijs/types': 1.24.3 + '@shikijs/vscode-textmate': 9.3.1 '@types/hast': 3.0.4 - side-channel@1.0.6: + side-channel-list@1.0.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.3 + + side-channel-map@1.0.1: + dependencies: + call-bound: 1.0.3 + es-errors: 1.3.0 + get-intrinsic: 1.2.6 + object-inspect: 1.13.3 + + side-channel-weakmap@1.0.2: + dependencies: + call-bound: 1.0.3 + es-errors: 1.3.0 + get-intrinsic: 1.2.6 + object-inspect: 1.13.3 + side-channel-map: 1.0.1 + + side-channel@1.1.0: dependencies: - call-bind: 1.0.7 es-errors: 1.3.0 - get-intrinsic: 1.2.4 - object-inspect: 1.13.1 + object-inspect: 1.13.3 + side-channel-list: 1.0.0 + side-channel-map: 1.0.1 + side-channel-weakmap: 1.0.2 siginfo@2.0.0: {} @@ -10490,7 +10772,7 @@ snapshots: is-arrayish: 0.3.2 optional: true - sirv@2.0.4: + sirv@3.0.0: dependencies: '@polka/url': 1.0.0-next.28 mrmime: 2.0.0 @@ -10503,7 +10785,7 @@ snapshots: '@types/node': 17.0.45 '@types/sax': 1.2.7 arg: 5.0.2 - sax: 1.3.0 + sax: 1.4.1 slash@3.0.0: {} @@ -10517,19 +10799,12 @@ snapshots: solid-refresh@0.6.3(solid-js@1.9.3): dependencies: - '@babel/generator': 7.24.4 - '@babel/helper-module-imports': 7.24.3 - '@babel/types': 7.24.0 + '@babel/generator': 7.26.3 + '@babel/helper-module-imports': 7.25.9 + '@babel/types': 7.26.3 solid-js: 1.9.3 - - sorcery@0.11.1: - dependencies: - '@jridgewell/sourcemap-codec': 1.5.0 - buffer-crc32: 1.0.0 - minimist: 1.2.8 - sander: 0.5.1 - - source-map-js@1.2.0: {} + transitivePeerDependencies: + - supports-color source-map-js@1.2.1: {} @@ -10561,9 +10836,10 @@ snapshots: std-env@3.8.0: {} - stop-iteration-iterator@1.0.0: + stop-iteration-iterator@1.1.0: dependencies: - internal-slot: 1.0.7 + es-errors: 1.3.0 + internal-slot: 1.1.0 stream-replace-string@2.0.0: {} @@ -10581,41 +10857,46 @@ snapshots: string-width@7.2.0: dependencies: - emoji-regex: 10.3.0 - get-east-asian-width: 1.2.0 + emoji-regex: 10.4.0 + get-east-asian-width: 1.3.0 strip-ansi: 7.1.0 - string.prototype.matchall@4.0.11: + string.prototype.matchall@4.0.12: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 + call-bound: 1.0.3 define-properties: 1.2.1 - es-abstract: 1.23.3 + es-abstract: 1.23.7 es-errors: 1.3.0 es-object-atoms: 1.0.0 - get-intrinsic: 1.2.4 - gopd: 1.0.1 - has-symbols: 1.0.3 - internal-slot: 1.0.7 - regexp.prototype.flags: 1.5.2 + get-intrinsic: 1.2.6 + gopd: 1.2.0 + has-symbols: 1.1.0 + internal-slot: 1.1.0 + regexp.prototype.flags: 1.5.3 set-function-name: 2.0.2 - side-channel: 1.0.6 + side-channel: 1.1.0 - string.prototype.trim@1.2.9: + string.prototype.trim@1.2.10: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 + call-bound: 1.0.3 + define-data-property: 1.1.4 define-properties: 1.2.1 - es-abstract: 1.23.3 + es-abstract: 1.23.7 es-object-atoms: 1.0.0 + has-property-descriptors: 1.0.2 - string.prototype.trimend@1.0.8: + string.prototype.trimend@1.0.9: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 + call-bound: 1.0.3 define-properties: 1.2.1 es-object-atoms: 1.0.0 string.prototype.trimstart@1.0.8: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 define-properties: 1.2.1 es-object-atoms: 1.0.0 @@ -10636,7 +10917,7 @@ snapshots: strip-ansi@7.1.0: dependencies: - ansi-regex: 6.0.1 + ansi-regex: 6.1.0 strip-bom@3.0.0: {} @@ -10656,9 +10937,9 @@ snapshots: dependencies: inline-style-parser: 0.1.1 - style-to-object@1.0.6: + style-to-object@1.0.8: dependencies: - inline-style-parser: 0.2.3 + inline-style-parser: 0.2.4 style-value-types@5.1.2: dependencies: @@ -10667,9 +10948,9 @@ snapshots: sucrase@3.35.0: dependencies: - '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/gen-mapping': 0.3.8 commander: 4.1.1 - glob: 10.3.12 + glob: 10.4.5 lines-and-columns: 1.2.4 mz: 2.7.0 pirates: 4.0.6 @@ -10679,53 +10960,43 @@ snapshots: dependencies: s.color: 0.0.15 - supports-color@5.5.0: - dependencies: - has-flag: 3.0.0 - supports-color@7.2.0: dependencies: has-flag: 4.0.0 supports-preserve-symlinks-flag@1.0.0: {} - svelte-body@2.0.0(svelte@5.8.1): + svelte-body@2.0.0(svelte@5.15.0): dependencies: clsx: 2.1.1 csstype: 3.1.3 - svelte: 5.8.1 + svelte: 5.15.0 - svelte-copy@2.0.0(svelte@5.8.1): + svelte-check@4.1.1(picomatch@4.0.2)(svelte@5.15.0)(typescript@5.7.2): dependencies: - svelte: 5.8.1 - - svelte-hmr@0.16.0(svelte@4.2.19): - dependencies: - svelte: 4.2.19 + '@jridgewell/trace-mapping': 0.3.25 + chokidar: 4.0.3 + fdir: 6.4.2(picomatch@4.0.2) + picocolors: 1.1.1 + sade: 1.8.1 + svelte: 5.15.0 + typescript: 5.7.2 + transitivePeerDependencies: + - picomatch - svelte-inview@4.0.4(svelte@5.8.1): + svelte-copy@2.0.0(svelte@5.15.0): dependencies: - svelte: 5.8.1 + svelte: 5.15.0 - svelte-preprocess@5.1.4(@babel/core@7.26.0)(postcss@8.4.49)(sass@1.82.0)(svelte@4.2.19)(typescript@5.7.2): + svelte-inview@4.0.4(svelte@5.15.0): dependencies: - '@types/pug': 2.0.10 - detect-indent: 6.1.0 - magic-string: 0.30.14 - sorcery: 0.11.1 - strip-indent: 3.0.0 - svelte: 4.2.19 - optionalDependencies: - '@babel/core': 7.26.0 - postcss: 8.4.49 - sass: 1.82.0 - typescript: 5.7.2 + svelte: 5.15.0 - svelte2tsx@0.7.30(svelte@5.8.1)(typescript@5.7.2): + svelte2tsx@0.7.31(svelte@5.15.0)(typescript@5.7.2): dependencies: dedent-js: 1.0.1 pascal-case: 3.1.2 - svelte: 5.8.1 + svelte: 5.15.0 typescript: 5.7.2 svelte@4.2.19: @@ -10742,10 +11013,10 @@ snapshots: estree-walker: 3.0.3 is-reference: 3.0.3 locate-character: 3.0.0 - magic-string: 0.30.14 + magic-string: 0.30.17 periscopic: 3.1.0 - svelte@5.8.1: + svelte@5.15.0: dependencies: '@ampproject/remapping': 2.3.0 '@jridgewell/sourcemap-codec': 1.5.0 @@ -10755,14 +11026,16 @@ snapshots: aria-query: 5.3.2 axobject-query: 4.1.0 esm-env: 1.2.1 - esrap: 1.2.3 + esrap: 1.3.2 is-reference: 3.0.3 locate-character: 3.0.0 - magic-string: 0.30.14 + magic-string: 0.30.17 zimmerframe: 1.1.2 symbol-tree@3.2.4: {} + system-architecture@0.1.0: {} + temp-dir@2.0.0: {} tempy@0.6.0: @@ -10777,7 +11050,7 @@ snapshots: terser@5.37.0: dependencies: '@jridgewell/source-map': 0.3.6 - acorn: 8.11.3 + acorn: 8.14.0 commander: 2.20.3 source-map-support: 0.5.21 @@ -10796,6 +11069,8 @@ snapshots: globalyzer: 0.1.0 globrex: 0.1.2 + tiny-invariant@1.3.3: {} + tinybench@2.9.0: {} tinyexec@0.3.1: {} @@ -10813,8 +11088,6 @@ snapshots: dependencies: os-tmpdir: 1.0.2 - to-fast-properties@2.0.0: {} - to-regex-range@5.0.1: dependencies: is-number: 7.0.0 @@ -10854,19 +11127,19 @@ snapshots: tslib@2.8.1: {} - tsup@8.3.5(postcss@8.4.49)(tsx@4.19.2)(typescript@5.7.2): + tsup@8.3.5(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.7.2)(yaml@2.6.1): dependencies: - bundle-require: 5.0.0(esbuild@0.24.0) + bundle-require: 5.0.0(esbuild@0.24.2) cac: 6.7.14 - chokidar: 4.0.1 - consola: 3.2.3 + chokidar: 4.0.3 + consola: 3.3.0 debug: 4.4.0 - esbuild: 0.24.0 + esbuild: 0.24.2 joycon: 3.1.1 picocolors: 1.1.1 - postcss-load-config: 6.0.1(postcss@8.4.49)(tsx@4.19.2) + postcss-load-config: 6.0.1(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(yaml@2.6.1) resolve-from: 5.0.0 - rollup: 4.28.1 + rollup: 4.29.1 source-map: 0.8.0-beta.0 sucrase: 3.35.0 tinyexec: 0.3.1 @@ -10888,47 +11161,75 @@ snapshots: optionalDependencies: fsevents: 2.3.3 + turbo-darwin-64@2.3.3: + optional: true + + turbo-darwin-arm64@2.3.3: + optional: true + + turbo-linux-64@2.3.3: + optional: true + + turbo-linux-arm64@2.3.3: + optional: true + + turbo-windows-64@2.3.3: + optional: true + + turbo-windows-arm64@2.3.3: + optional: true + + turbo@2.3.3: + optionalDependencies: + turbo-darwin-64: 2.3.3 + turbo-darwin-arm64: 2.3.3 + turbo-linux-64: 2.3.3 + turbo-linux-arm64: 2.3.3 + turbo-windows-64: 2.3.3 + turbo-windows-arm64: 2.3.3 + type-detect@4.1.0: {} type-fest@0.16.0: {} - type-fest@4.30.0: {} + type-fest@4.30.2: {} - typed-array-buffer@1.0.2: + typed-array-buffer@1.0.3: dependencies: - call-bind: 1.0.7 + call-bound: 1.0.3 es-errors: 1.3.0 - is-typed-array: 1.1.13 + is-typed-array: 1.1.15 - typed-array-byte-length@1.0.1: + typed-array-byte-length@1.0.3: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 for-each: 0.3.3 - gopd: 1.0.1 - has-proto: 1.0.3 - is-typed-array: 1.1.13 + gopd: 1.2.0 + has-proto: 1.2.0 + is-typed-array: 1.1.15 - typed-array-byte-offset@1.0.2: + typed-array-byte-offset@1.0.4: dependencies: available-typed-arrays: 1.0.7 - call-bind: 1.0.7 + call-bind: 1.0.8 for-each: 0.3.3 - gopd: 1.0.1 - has-proto: 1.0.3 - is-typed-array: 1.1.13 + gopd: 1.2.0 + has-proto: 1.2.0 + is-typed-array: 1.1.15 + reflect.getprototypeof: 1.0.9 - typed-array-length@1.0.6: + typed-array-length@1.0.7: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 for-each: 0.3.3 - gopd: 1.0.1 - has-proto: 1.0.3 - is-typed-array: 1.1.13 + gopd: 1.2.0 + is-typed-array: 1.1.15 possible-typed-array-names: 1.0.0 + reflect.getprototypeof: 1.0.9 typesafe-path@0.2.2: {} - typescript-auto-import-cache@0.3.2: + typescript-auto-import-cache@0.3.5: dependencies: semver: 7.6.3 @@ -10938,39 +11239,39 @@ snapshots: ultrahtml@1.5.3: {} - unbox-primitive@1.0.2: + unbox-primitive@1.1.0: dependencies: - call-bind: 1.0.7 - has-bigints: 1.0.2 - has-symbols: 1.0.3 - which-boxed-primitive: 1.0.2 + call-bound: 1.0.3 + has-bigints: 1.1.0 + has-symbols: 1.1.0 + which-boxed-primitive: 1.1.1 + + uncrypto@0.1.3: {} - undici-types@5.26.5: {} + undici-types@6.20.0: {} - unicode-canonical-property-names-ecmascript@2.0.0: {} + unenv@1.10.0: + dependencies: + consola: 3.3.0 + defu: 6.1.4 + mime: 3.0.0 + node-fetch-native: 1.6.4 + pathe: 1.1.2 + + unicode-canonical-property-names-ecmascript@2.0.1: {} unicode-match-property-ecmascript@2.0.0: dependencies: - unicode-canonical-property-names-ecmascript: 2.0.0 + unicode-canonical-property-names-ecmascript: 2.0.1 unicode-property-aliases-ecmascript: 2.1.0 - unicode-match-property-value-ecmascript@2.1.0: {} + unicode-match-property-value-ecmascript@2.2.0: {} unicode-property-aliases-ecmascript@2.1.0: {} - unified@11.0.4: - dependencies: - '@types/unist': 3.0.2 - bail: 2.0.2 - devlop: 1.1.0 - extend: 3.0.2 - is-plain-obj: 4.1.0 - trough: 2.2.0 - vfile: 6.0.3 - unified@11.0.5: dependencies: - '@types/unist': 3.0.2 + '@types/unist': 3.0.3 bail: 2.0.2 devlop: 1.1.0 extend: 3.0.2 @@ -10984,62 +11285,62 @@ snapshots: unist-util-find-after@5.0.0: dependencies: - '@types/unist': 3.0.2 + '@types/unist': 3.0.3 unist-util-is: 6.0.0 unist-util-is@5.2.1: dependencies: - '@types/unist': 2.0.10 + '@types/unist': 2.0.11 unist-util-is@6.0.0: dependencies: - '@types/unist': 3.0.2 + '@types/unist': 3.0.3 unist-util-modify-children@4.0.0: dependencies: - '@types/unist': 3.0.2 + '@types/unist': 3.0.3 array-iterate: 2.0.1 unist-util-position-from-estree@2.0.0: dependencies: - '@types/unist': 3.0.2 + '@types/unist': 3.0.3 unist-util-position@5.0.0: dependencies: - '@types/unist': 3.0.2 + '@types/unist': 3.0.3 unist-util-remove-position@5.0.0: dependencies: - '@types/unist': 3.0.2 + '@types/unist': 3.0.3 unist-util-visit: 5.0.0 unist-util-stringify-position@4.0.0: dependencies: - '@types/unist': 3.0.2 + '@types/unist': 3.0.3 unist-util-visit-children@3.0.0: dependencies: - '@types/unist': 3.0.2 + '@types/unist': 3.0.3 unist-util-visit-parents@5.1.3: dependencies: - '@types/unist': 2.0.10 + '@types/unist': 2.0.11 unist-util-is: 5.2.1 unist-util-visit-parents@6.0.1: dependencies: - '@types/unist': 3.0.2 + '@types/unist': 3.0.3 unist-util-is: 6.0.0 unist-util-visit@4.1.2: dependencies: - '@types/unist': 2.0.10 + '@types/unist': 2.0.11 unist-util-is: 5.2.1 unist-util-visit-parents: 5.1.3 unist-util-visit@5.0.0: dependencies: - '@types/unist': 3.0.2 + '@types/unist': 3.0.3 unist-util-is: 6.0.0 unist-util-visit-parents: 6.0.1 @@ -11049,18 +11350,18 @@ snapshots: universalify@2.0.1: {} - unplugin-icons@0.21.0(@vue/compiler-sfc@3.5.13)(svelte@5.8.1)(vue-template-compiler@2.7.16): + unplugin-icons@0.21.0(@vue/compiler-sfc@3.5.13)(svelte@5.15.0)(vue-template-compiler@2.7.16): dependencies: '@antfu/install-pkg': 0.5.0 '@antfu/utils': 0.7.10 - '@iconify/utils': 2.2.0 + '@iconify/utils': 2.2.1 debug: 4.4.0 kolorist: 1.8.0 local-pkg: 0.5.1 unplugin: 1.16.0 optionalDependencies: '@vue/compiler-sfc': 3.5.13 - svelte: 5.8.1 + svelte: 5.15.0 vue-template-compiler: 2.7.16 transitivePeerDependencies: - supports-color @@ -11070,17 +11371,34 @@ snapshots: acorn: 8.14.0 webpack-virtual-modules: 0.6.2 + unstorage@1.14.1: + dependencies: + anymatch: 3.1.3 + chokidar: 3.6.0 + citty: 0.1.6 + destr: 2.0.3 + h3: 1.13.0 + listhen: 1.9.0 + lru-cache: 10.4.3 + node-fetch-native: 1.6.4 + ofetch: 1.4.1 + ufo: 1.5.4 + + untun@0.1.3: + dependencies: + citty: 0.1.6 + consola: 3.3.0 + pathe: 1.1.2 + upath@1.2.0: {} - update-browserslist-db@1.1.1(browserslist@4.24.2): + update-browserslist-db@1.1.1(browserslist@4.24.3): dependencies: - browserslist: 4.24.2 + browserslist: 4.24.3 escalade: 3.2.0 picocolors: 1.1.1 - uri-js@4.4.1: - dependencies: - punycode: 2.3.1 + uqr@0.1.2: {} url-parse@1.5.10: dependencies: @@ -11089,30 +11407,31 @@ snapshots: validate-html-nesting@1.2.2: {} - vfile-location@5.0.2: + vfile-location@5.0.3: dependencies: - '@types/unist': 3.0.2 + '@types/unist': 3.0.3 vfile: 6.0.3 vfile-message@4.0.2: dependencies: - '@types/unist': 3.0.2 + '@types/unist': 3.0.3 unist-util-stringify-position: 4.0.0 vfile@6.0.3: dependencies: - '@types/unist': 3.0.2 + '@types/unist': 3.0.3 vfile-message: 4.0.2 - vite-node@1.6.0(@types/node@20.12.7)(sass@1.82.0)(terser@5.37.0): + vite-node@1.6.0(@types/node@22.10.2)(jiti@2.4.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1): dependencies: cac: 6.7.14 debug: 4.4.0 pathe: 1.1.2 picocolors: 1.1.1 - vite: 5.4.11(@types/node@20.12.7)(sass@1.82.0)(terser@5.37.0) + vite: 6.0.5(@types/node@22.10.2)(jiti@2.4.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1) transitivePeerDependencies: - '@types/node' + - jiti - less - lightningcss - sass @@ -11121,58 +11440,55 @@ snapshots: - sugarss - supports-color - terser + - tsx + - yaml - vite-plugin-solid@2.11.0(@testing-library/jest-dom@6.6.3)(solid-js@1.9.3)(vite@5.4.11(@types/node@20.12.7)(sass@1.82.0)(terser@5.37.0)): + vite-plugin-kit-routes@0.7.2(@sveltejs/kit@2.14.0(@sveltejs/vite-plugin-svelte@5.0.2(svelte@5.15.0)(vite@6.0.5(@types/node@22.10.2)(jiti@2.4.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1)))(svelte@5.15.0)(vite@6.0.5(@types/node@22.10.2)(jiti@2.4.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1))): dependencies: - '@babel/core': 7.24.4 + '@kitql/helpers': 0.8.10 + '@kitql/internals': 0.10.0 + '@sveltejs/kit': 2.14.0(@sveltejs/vite-plugin-svelte@5.0.2(svelte@5.15.0)(vite@6.0.5(@types/node@22.10.2)(jiti@2.4.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1)))(svelte@5.15.0)(vite@6.0.5(@types/node@22.10.2)(jiti@2.4.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1)) + vite-plugin-watch-and-run: 1.7.2 + + vite-plugin-solid@2.11.0(@testing-library/jest-dom@6.6.3)(solid-js@1.9.3)(vite@6.0.5(@types/node@22.10.2)(jiti@2.4.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1)): + dependencies: + '@babel/core': 7.26.0 '@types/babel__core': 7.20.5 - babel-preset-solid: 1.8.16(@babel/core@7.24.4) + babel-preset-solid: 1.9.3(@babel/core@7.26.0) merge-anything: 5.1.7 solid-js: 1.9.3 solid-refresh: 0.6.3(solid-js@1.9.3) - vite: 5.4.11(@types/node@20.12.7)(sass@1.82.0)(terser@5.37.0) - vitefu: 1.0.4(vite@5.4.11(@types/node@20.12.7)(sass@1.82.0)(terser@5.37.0)) + vite: 6.0.5(@types/node@22.10.2)(jiti@2.4.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1) + vitefu: 1.0.4(vite@6.0.5(@types/node@22.10.2)(jiti@2.4.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1)) optionalDependencies: '@testing-library/jest-dom': 6.6.3 transitivePeerDependencies: - supports-color - vite@5.4.11(@types/node@20.12.7)(sass@1.82.0)(terser@5.37.0): + vite-plugin-watch-and-run@1.7.2: dependencies: - esbuild: 0.21.5 - postcss: 8.4.49 - rollup: 4.28.1 - optionalDependencies: - '@types/node': 20.12.7 - fsevents: 2.3.3 - sass: 1.82.0 - terser: 5.37.0 + '@kitql/helpers': 0.8.10 + micromatch: 4.0.8 - vite@6.0.3(@types/node@20.12.7)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2): + vite@6.0.5(@types/node@22.10.2)(jiti@2.4.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1): dependencies: esbuild: 0.24.0 postcss: 8.4.49 - rollup: 4.28.1 + rollup: 4.29.1 optionalDependencies: - '@types/node': 20.12.7 + '@types/node': 22.10.2 fsevents: 2.3.3 - sass: 1.82.0 + jiti: 2.4.2 + sass: 1.83.0 terser: 5.37.0 tsx: 4.19.2 + yaml: 2.6.1 - vitefu@0.2.5(vite@5.4.11(@types/node@20.12.7)(sass@1.82.0)(terser@5.37.0)): - optionalDependencies: - vite: 5.4.11(@types/node@20.12.7)(sass@1.82.0)(terser@5.37.0) - - vitefu@1.0.4(vite@5.4.11(@types/node@20.12.7)(sass@1.82.0)(terser@5.37.0)): - optionalDependencies: - vite: 5.4.11(@types/node@20.12.7)(sass@1.82.0)(terser@5.37.0) - - vitefu@1.0.4(vite@6.0.3(@types/node@20.12.7)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2)): + vitefu@1.0.4(vite@6.0.5(@types/node@22.10.2)(jiti@2.4.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1)): optionalDependencies: - vite: 6.0.3(@types/node@20.12.7)(sass@1.82.0)(terser@5.37.0)(tsx@4.19.2) + vite: 6.0.5(@types/node@22.10.2)(jiti@2.4.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1) - vitest@1.6.0(@types/node@20.12.7)(jsdom@24.1.3)(sass@1.82.0)(terser@5.37.0): + vitest@1.6.0(@types/node@22.10.2)(jiti@2.4.2)(jsdom@24.1.3)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1): dependencies: '@vitest/expect': 1.6.0 '@vitest/runner': 1.6.0 @@ -11184,20 +11500,21 @@ snapshots: debug: 4.4.0 execa: 8.0.1 local-pkg: 0.5.1 - magic-string: 0.30.14 + magic-string: 0.30.17 pathe: 1.1.2 picocolors: 1.1.1 std-env: 3.8.0 strip-literal: 2.1.1 tinybench: 2.9.0 tinypool: 0.8.4 - vite: 5.4.11(@types/node@20.12.7)(sass@1.82.0)(terser@5.37.0) - vite-node: 1.6.0(@types/node@20.12.7)(sass@1.82.0)(terser@5.37.0) + vite: 6.0.5(@types/node@22.10.2)(jiti@2.4.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1) + vite-node: 1.6.0(@types/node@22.10.2)(jiti@2.4.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.6.1) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 20.12.7 + '@types/node': 22.10.2 jsdom: 24.1.3 transitivePeerDependencies: + - jiti - less - lightningcss - sass @@ -11206,84 +11523,117 @@ snapshots: - sugarss - supports-color - terser + - tsx + - yaml - volar-service-css@0.0.34(@volar/language-service@2.1.6): + volar-service-css@0.0.62(@volar/language-service@2.4.11): dependencies: - vscode-css-languageservice: 6.2.13 - vscode-languageserver-textdocument: 1.0.11 + vscode-css-languageservice: 6.3.2 + vscode-languageserver-textdocument: 1.0.12 vscode-uri: 3.0.8 optionalDependencies: - '@volar/language-service': 2.1.6 + '@volar/language-service': 2.4.11 - volar-service-emmet@0.0.34(@volar/language-service@2.1.6): + volar-service-emmet@0.0.62(@volar/language-service@2.4.11): dependencies: - '@vscode/emmet-helper': 2.9.3 - vscode-html-languageservice: 5.2.0 + '@emmetio/css-parser': 0.4.0 + '@emmetio/html-matcher': 1.3.0 + '@vscode/emmet-helper': 2.11.0 + vscode-uri: 3.0.8 optionalDependencies: - '@volar/language-service': 2.1.6 + '@volar/language-service': 2.4.11 - volar-service-html@0.0.34(@volar/language-service@2.1.6): + volar-service-html@0.0.62(@volar/language-service@2.4.11): dependencies: - vscode-html-languageservice: 5.2.0 - vscode-languageserver-textdocument: 1.0.11 + vscode-html-languageservice: 5.3.1 + vscode-languageserver-textdocument: 1.0.12 vscode-uri: 3.0.8 optionalDependencies: - '@volar/language-service': 2.1.6 + '@volar/language-service': 2.4.11 - volar-service-prettier@0.0.34(@volar/language-service@2.1.6)(prettier@3.4.2): + volar-service-prettier@0.0.62(@volar/language-service@2.4.11)(prettier@3.4.2): dependencies: vscode-uri: 3.0.8 optionalDependencies: - '@volar/language-service': 2.1.6 + '@volar/language-service': 2.4.11 prettier: 3.4.2 - volar-service-typescript-twoslash-queries@0.0.34(@volar/language-service@2.1.6): + volar-service-typescript-twoslash-queries@0.0.62(@volar/language-service@2.4.11): + dependencies: + vscode-uri: 3.0.8 optionalDependencies: - '@volar/language-service': 2.1.6 + '@volar/language-service': 2.4.11 - volar-service-typescript@0.0.34(@volar/language-service@2.1.6): + volar-service-typescript@0.0.62(@volar/language-service@2.4.11): dependencies: path-browserify: 1.0.1 semver: 7.6.3 - typescript-auto-import-cache: 0.3.2 - vscode-languageserver-textdocument: 1.0.11 + typescript-auto-import-cache: 0.3.5 + vscode-languageserver-textdocument: 1.0.12 vscode-nls: 5.2.0 + vscode-uri: 3.0.8 optionalDependencies: - '@volar/language-service': 2.1.6 + '@volar/language-service': 2.4.11 - vscode-css-languageservice@6.2.13: + volar-service-yaml@0.0.62(@volar/language-service@2.4.11): + dependencies: + vscode-uri: 3.0.8 + yaml-language-server: 1.15.0 + optionalDependencies: + '@volar/language-service': 2.4.11 + + vscode-css-languageservice@6.3.2: dependencies: '@vscode/l10n': 0.0.18 - vscode-languageserver-textdocument: 1.0.11 + vscode-languageserver-textdocument: 1.0.12 vscode-languageserver-types: 3.17.5 vscode-uri: 3.0.8 - vscode-html-languageservice@5.2.0: + vscode-html-languageservice@5.3.1: dependencies: '@vscode/l10n': 0.0.18 - vscode-languageserver-textdocument: 1.0.11 + vscode-languageserver-textdocument: 1.0.12 + vscode-languageserver-types: 3.17.5 + vscode-uri: 3.0.8 + + vscode-json-languageservice@4.1.8: + dependencies: + jsonc-parser: 3.3.1 + vscode-languageserver-textdocument: 1.0.12 vscode-languageserver-types: 3.17.5 + vscode-nls: 5.2.0 vscode-uri: 3.0.8 + vscode-jsonrpc@6.0.0: {} + vscode-jsonrpc@8.2.0: {} + vscode-languageserver-protocol@3.16.0: + dependencies: + vscode-jsonrpc: 6.0.0 + vscode-languageserver-types: 3.16.0 + vscode-languageserver-protocol@3.17.5: dependencies: vscode-jsonrpc: 8.2.0 vscode-languageserver-types: 3.17.5 - vscode-languageserver-textdocument@1.0.11: {} + vscode-languageserver-textdocument@1.0.12: {} + + vscode-languageserver-types@3.16.0: {} vscode-languageserver-types@3.17.5: {} + vscode-languageserver@7.0.0: + dependencies: + vscode-languageserver-protocol: 3.16.0 + vscode-languageserver@9.0.1: dependencies: vscode-languageserver-protocol: 3.17.5 vscode-nls@5.2.0: {} - vscode-uri@2.1.2: {} - vscode-uri@3.0.8: {} vue-template-compiler@2.7.16: @@ -11344,20 +11694,36 @@ snapshots: tr46: 1.0.1 webidl-conversions: 4.0.2 - which-boxed-primitive@1.0.2: + which-boxed-primitive@1.1.1: dependencies: - is-bigint: 1.0.4 - is-boolean-object: 1.1.2 - is-number-object: 1.0.7 - is-string: 1.0.7 - is-symbol: 1.0.4 + is-bigint: 1.1.0 + is-boolean-object: 1.2.1 + is-number-object: 1.1.1 + is-string: 1.1.1 + is-symbol: 1.1.1 + + which-builtin-type@1.2.1: + dependencies: + call-bound: 1.0.3 + function.prototype.name: 1.1.8 + has-tostringtag: 1.0.2 + is-async-function: 2.0.0 + is-date-object: 1.1.0 + is-finalizationregistry: 1.1.1 + is-generator-function: 1.0.10 + is-regex: 1.2.1 + is-weakref: 1.1.0 + isarray: 2.0.5 + which-boxed-primitive: 1.1.1 + which-collection: 1.0.2 + which-typed-array: 1.1.18 which-collection@1.0.2: dependencies: is-map: 2.0.3 is-set: 2.0.3 is-weakmap: 2.0.2 - is-weakset: 2.0.3 + is-weakset: 2.0.4 which-pm-runs@1.1.0: {} @@ -11365,12 +11731,13 @@ snapshots: dependencies: load-yaml-file: 0.2.0 - which-typed-array@1.1.15: + which-typed-array@1.1.18: dependencies: available-typed-arrays: 1.0.7 - call-bind: 1.0.7 + call-bind: 1.0.8 + call-bound: 1.0.3 for-each: 0.3.3 - gopd: 1.0.1 + gopd: 1.2.0 has-tostringtag: 1.0.2 which@2.0.2: @@ -11397,23 +11764,23 @@ snapshots: workbox-build@6.6.0(@types/babel__core@7.20.5): dependencies: - '@apideck/better-ajv-errors': 0.3.6(ajv@8.12.0) - '@babel/core': 7.24.4 - '@babel/preset-env': 7.24.4(@babel/core@7.24.4) - '@babel/runtime': 7.24.4 - '@rollup/plugin-babel': 5.3.1(@babel/core@7.24.4)(@types/babel__core@7.20.5)(rollup@2.79.1) - '@rollup/plugin-node-resolve': 11.2.1(rollup@2.79.1) - '@rollup/plugin-replace': 2.4.2(rollup@2.79.1) + '@apideck/better-ajv-errors': 0.3.6(ajv@8.17.1) + '@babel/core': 7.26.0 + '@babel/preset-env': 7.26.0(@babel/core@7.26.0) + '@babel/runtime': 7.26.0 + '@rollup/plugin-babel': 5.3.1(@babel/core@7.26.0)(@types/babel__core@7.20.5)(rollup@2.79.2) + '@rollup/plugin-node-resolve': 11.2.1(rollup@2.79.2) + '@rollup/plugin-replace': 2.4.2(rollup@2.79.2) '@surma/rollup-plugin-off-main-thread': 2.2.3 - ajv: 8.12.0 + ajv: 8.17.1 common-tags: 1.8.2 fast-json-stable-stringify: 2.1.0 fs-extra: 9.1.0 glob: 7.2.3 lodash: 4.17.21 pretty-bytes: 5.6.0 - rollup: 2.79.1 - rollup-plugin-terser: 7.0.2(rollup@2.79.1) + rollup: 2.79.2 + rollup-plugin-terser: 7.0.2(rollup@2.79.2) source-map: 0.8.0-beta.0 stringify-object: 3.3.0 strip-comments: 2.0.1 @@ -11531,14 +11898,31 @@ snapshots: yallist@3.1.1: {} - yallist@4.0.0: {} + yaml-language-server@1.15.0: + dependencies: + ajv: 8.17.1 + lodash: 4.17.21 + request-light: 0.5.8 + vscode-json-languageservice: 4.1.8 + vscode-languageserver: 7.0.0 + vscode-languageserver-textdocument: 1.0.12 + vscode-languageserver-types: 3.17.5 + vscode-nls: 5.2.0 + vscode-uri: 3.0.8 + yaml: 2.2.2 + optionalDependencies: + prettier: 2.8.7 + + yaml@2.2.2: {} + + yaml@2.6.1: {} yargs-parser@21.1.1: {} yargs@17.7.2: dependencies: cliui: 8.0.1 - escalade: 3.1.2 + escalade: 3.2.0 get-caller-file: 2.0.5 require-directory: 2.1.1 string-width: 4.2.3 @@ -11547,7 +11931,7 @@ snapshots: yocto-queue@1.1.1: {} - yocto-spinner@0.1.1: + yocto-spinner@0.1.2: dependencies: yoctocolors: 2.1.1 @@ -11555,15 +11939,15 @@ snapshots: zimmerframe@1.1.2: {} - zod-to-json-schema@3.23.5(zod@3.23.8): + zod-to-json-schema@3.24.1(zod@3.24.1): dependencies: - zod: 3.23.8 + zod: 3.24.1 - zod-to-ts@1.2.0(typescript@5.7.2)(zod@3.23.8): + zod-to-ts@1.2.0(typescript@5.7.2)(zod@3.24.1): dependencies: typescript: 5.7.2 - zod: 3.23.8 + zod: 3.24.1 - zod@3.23.8: {} + zod@3.24.1: {} zwitch@2.0.4: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index e77bdbde5..d2bb43e58 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,5 +1,7 @@ packages: - - packages/** + - packages/* + - packages/core/test-app + - playground/* - '!**/test/**' - docs - config diff --git a/turbo.json b/turbo.json new file mode 100644 index 000000000..0594042d4 --- /dev/null +++ b/turbo.json @@ -0,0 +1,26 @@ +{ + "$schema": "https://turbo.build/schema.json", + "tasks": { + "compile": { + "outputs": ["dist"], + "inputs": ["./src/**/*.ts", "tsup.config.ts"], + "dependsOn": ["^compile"] + }, + "docs#build": { + "outputs": ["dist"], + "dependsOn": ["^compile", "sizes"] + }, + "sizes": { + "outputs": ["dist"], + "dependsOn": ["^compile", "^sizes"] + }, + "dev": { + "outputs": ["dist"], + "dependsOn": ["^compile"], + "inputs": ["./src/**/*.ts", "tsup.config.ts"], + "cache": false, + "persistent": true + } + }, + "ui": "tui" +}