Merge remote-tracking branch 'origin' into adjust-boundary-error-message

pull/16762/head
S. Elliott Johnson 7 days ago
commit 5a4060181e

@ -1,5 +0,0 @@
---
'svelte': patch
---
fix: send `$effect.pending` count to the correct boundary

@ -27,7 +27,7 @@ jobs:
- name: Setup Node.js - name: Setup Node.js
uses: actions/setup-node@v4 uses: actions/setup-node@v4
with: with:
node-version: 18.x node-version: 24.x
cache: pnpm cache: pnpm
- name: Install - name: Install
@ -45,4 +45,3 @@ jobs:
env: env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
NPM_CONFIG_PROVENANCE: true NPM_CONFIG_PROVENANCE: true
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}

@ -1,5 +1,31 @@
# svelte # svelte
## 5.38.10
### Patch Changes
- fix: flush effects scheduled during boundary's pending phase ([#16738](https://github.com/sveltejs/svelte/pull/16738))
## 5.38.9
### Patch Changes
- chore: generate CSS hash using the filename ([#16740](https://github.com/sveltejs/svelte/pull/16740))
- fix: correctly analyze `<object.property>` components ([#16711](https://github.com/sveltejs/svelte/pull/16711))
- fix: clean up scheduling system ([#16741](https://github.com/sveltejs/svelte/pull/16741))
- fix: transform input defaults from spread ([#16481](https://github.com/sveltejs/svelte/pull/16481))
- fix: don't destroy contents of `svelte:boundary` unless the boundary is an error boundary ([#16746](https://github.com/sveltejs/svelte/pull/16746))
## 5.38.8
### Patch Changes
- fix: send `$effect.pending` count to the correct boundary ([#16732](https://github.com/sveltejs/svelte/pull/16732))
## 5.38.7 ## 5.38.7
### Patch Changes ### Patch Changes

@ -2,7 +2,7 @@
"name": "svelte", "name": "svelte",
"description": "Cybernetically enhanced web apps", "description": "Cybernetically enhanced web apps",
"license": "MIT", "license": "MIT",
"version": "5.38.7", "version": "5.38.10",
"type": "module", "type": "module",
"types": "./types/index.d.ts", "types": "./types/index.d.ts",
"engines": { "engines": {

@ -462,10 +462,19 @@ export function analyze_component(root, source, options) {
const is_custom_element = !!options.customElementOptions || options.customElement; const is_custom_element = !!options.customElementOptions || options.customElement;
const name = module.scope.generate(options.name ?? component_name);
state.adjust({
component_name: name,
dev: options.dev,
rootDir: options.rootDir,
runes
});
// TODO remove all the ?? stuff, we don't need it now that we're validating the config // TODO remove all the ?? stuff, we don't need it now that we're validating the config
/** @type {ComponentAnalysis} */ /** @type {ComponentAnalysis} */
const analysis = { const analysis = {
name: module.scope.generate(options.name ?? component_name), name,
root: scope_root, root: scope_root,
module, module,
instance, instance,
@ -526,7 +535,7 @@ export function analyze_component(root, source, options) {
hash: root.css hash: root.css
? options.cssHash({ ? options.cssHash({
css: root.css.content.styles, css: root.css.content.styles,
filename: options.filename, filename: state.filename,
name: component_name, name: component_name,
hash hash
}) })
@ -542,13 +551,6 @@ export function analyze_component(root, source, options) {
hoisted_promises: new Map() hoisted_promises: new Map()
}; };
state.adjust({
component_name: analysis.name,
dev: options.dev,
rootDir: options.rootDir,
runes
});
if (!runes) { if (!runes) {
// every exported `let` or `var` declaration becomes a prop, everything else becomes an export // every exported `let` or `var` declaration becomes a prop, everything else becomes an export
for (const node of instance.ast.body) { for (const node of instance.ast.body) {

@ -72,6 +72,7 @@ export function RegularElement(node, context) {
let has_spread = node.metadata.has_spread; let has_spread = node.metadata.has_spread;
let has_use = false; let has_use = false;
let should_remove_defaults = false;
for (const attribute of node.attributes) { for (const attribute of node.attributes) {
switch (attribute.type) { switch (attribute.type) {
@ -172,7 +173,12 @@ export function RegularElement(node, context) {
bindings.has('group') || bindings.has('group') ||
(!bindings.has('group') && has_value_attribute)) (!bindings.has('group') && has_value_attribute))
) { ) {
context.state.init.push(b.stmt(b.call('$.remove_input_defaults', context.state.node))); if (has_spread) {
// remove_input_defaults will be called inside set_attributes
should_remove_defaults = true;
} else {
context.state.init.push(b.stmt(b.call('$.remove_input_defaults', context.state.node)));
}
} }
} }
@ -202,7 +208,15 @@ export function RegularElement(node, context) {
bindings.has('checked'); bindings.has('checked');
if (has_spread) { if (has_spread) {
build_attribute_effect(attributes, class_directives, style_directives, context, node, node_id); build_attribute_effect(
attributes,
class_directives,
style_directives,
context,
node,
node_id,
should_remove_defaults
);
} else { } else {
for (const attribute of /** @type {AST.Attribute[]} */ (attributes)) { for (const attribute of /** @type {AST.Attribute[]} */ (attributes)) {
if (is_event_attribute(attribute)) { if (is_event_attribute(attribute)) {

@ -16,6 +16,7 @@ import { build_expression, build_template_chunk, Memoizer } from './utils.js';
* @param {ComponentContext} context * @param {ComponentContext} context
* @param {AST.RegularElement | AST.SvelteElement} element * @param {AST.RegularElement | AST.SvelteElement} element
* @param {Identifier} element_id * @param {Identifier} element_id
* @param {boolean} [should_remove_defaults]
*/ */
export function build_attribute_effect( export function build_attribute_effect(
attributes, attributes,
@ -23,7 +24,8 @@ export function build_attribute_effect(
style_directives, style_directives,
context, context,
element, element,
element_id element_id,
should_remove_defaults = false
) { ) {
/** @type {ObjectExpression['properties']} */ /** @type {ObjectExpression['properties']} */
const values = []; const values = [];
@ -91,6 +93,7 @@ export function build_attribute_effect(
element.metadata.scoped && element.metadata.scoped &&
context.state.analysis.css.hash !== '' && context.state.analysis.css.hash !== '' &&
b.literal(context.state.analysis.css.hash), b.literal(context.state.analysis.css.hash),
should_remove_defaults && b.true,
is_ignored(element, 'hydration_attribute_changed') && b.true is_ignored(element, 'hydration_attribute_changed') && b.true
) )
) )

@ -11,6 +11,7 @@ import {
import { regex_starts_with_newline } from '../../../../patterns.js'; import { regex_starts_with_newline } from '../../../../patterns.js';
import * as b from '#compiler/builders'; import * as b from '#compiler/builders';
import { import {
ELEMENT_IS_INPUT,
ELEMENT_IS_NAMESPACED, ELEMENT_IS_NAMESPACED,
ELEMENT_PRESERVE_ATTRIBUTE_CASE ELEMENT_PRESERVE_ATTRIBUTE_CASE
} from '../../../../../../constants.js'; } from '../../../../../../constants.js';
@ -401,6 +402,8 @@ function build_element_spread_attributes(
flags |= ELEMENT_IS_NAMESPACED | ELEMENT_PRESERVE_ATTRIBUTE_CASE; flags |= ELEMENT_IS_NAMESPACED | ELEMENT_PRESERVE_ATTRIBUTE_CASE;
} else if (is_custom_element_node(element)) { } else if (is_custom_element_node(element)) {
flags |= ELEMENT_PRESERVE_ATTRIBUTE_CASE; flags |= ELEMENT_PRESERVE_ATTRIBUTE_CASE;
} else if (element.type === 'RegularElement' && element.name === 'input') {
flags |= ELEMENT_IS_INPUT;
} }
const object = build_spread_object(element, attributes, context); const object = build_spread_object(element, attributes, context);

@ -1032,7 +1032,7 @@ export function create_scopes(ast, root, allow_reactive_declarations, parent) {
}, },
Component: (node, context) => { Component: (node, context) => {
context.state.scope.reference(b.id(node.name), context.path); context.state.scope.reference(b.id(node.name.split('.')[0]), context.path);
Component(node, context); Component(node, context);
}, },
SvelteSelf: Component, SvelteSelf: Component,

@ -105,7 +105,7 @@ export interface CompileOptions extends ModuleCompileOptions {
css?: 'injected' | 'external'; css?: 'injected' | 'external';
/** /**
* A function that takes a `{ hash, css, name, filename }` argument and returns the string that is used as a classname for scoped CSS. * A function that takes a `{ hash, css, name, filename }` argument and returns the string that is used as a classname for scoped CSS.
* It defaults to returning `svelte-${hash(css)}`. * It defaults to returning `svelte-${hash(filename ?? css)}`.
* *
* @default undefined * @default undefined
*/ */

@ -70,8 +70,8 @@ const component_options = {
return input; return input;
}), }),
cssHash: fun(({ css, hash }) => { cssHash: fun(({ css, filename, hash }) => {
return `svelte-${hash(css)}`; return `svelte-${hash(filename === '(unknown)' ? css : filename ?? css)}`;
}), }),
// TODO this is a sourcemap option, would be good to put under a sourcemap namespace // TODO this is a sourcemap option, would be good to put under a sourcemap namespace

@ -28,6 +28,7 @@ export const HYDRATION_ERROR = {};
export const ELEMENT_IS_NAMESPACED = 1; export const ELEMENT_IS_NAMESPACED = 1;
export const ELEMENT_PRESERVE_ATTRIBUTE_CASE = 1 << 1; export const ELEMENT_PRESERVE_ATTRIBUTE_CASE = 1 << 1;
export const ELEMENT_IS_INPUT = 1 << 2;
export const UNINITIALIZED = Symbol(); export const UNINITIALIZED = Symbol();

@ -29,7 +29,7 @@ import { queue_micro_task } from '../task.js';
import * as e from '../../errors.js'; import * as e from '../../errors.js';
import * as w from '../../warnings.js'; import * as w from '../../warnings.js';
import { DEV } from 'esm-env'; import { DEV } from 'esm-env';
import { Batch, effect_pending_updates } from '../../reactivity/batch.js'; import { Batch, current_batch, effect_pending_updates } from '../../reactivity/batch.js';
import { internal_set, source } from '../../reactivity/sources.js'; import { internal_set, source } from '../../reactivity/sources.js';
import { tag } from '../../dev/tracing.js'; import { tag } from '../../dev/tracing.js';
import { createSubscriber } from '../../../../reactivity/create-subscriber.js'; import { createSubscriber } from '../../../../reactivity/create-subscriber.js';

@ -268,10 +268,27 @@ export function set_custom_element_data(node, prop, value) {
* @param {Record<string | symbol, any> | undefined} prev * @param {Record<string | symbol, any> | undefined} prev
* @param {Record<string | symbol, any>} next New attributes - this function mutates this object * @param {Record<string | symbol, any>} next New attributes - this function mutates this object
* @param {string} [css_hash] * @param {string} [css_hash]
* @param {boolean} [should_remove_defaults]
* @param {boolean} [skip_warning] * @param {boolean} [skip_warning]
* @returns {Record<string, any>} * @returns {Record<string, any>}
*/ */
export function set_attributes(element, prev, next, css_hash, skip_warning = false) { function set_attributes(
element,
prev,
next,
css_hash,
should_remove_defaults = false,
skip_warning = false
) {
if (hydrating && should_remove_defaults && element.tagName === 'INPUT') {
var input = /** @type {HTMLInputElement} */ (element);
var attribute = input.type === 'checkbox' ? 'defaultChecked' : 'defaultValue';
if (!(attribute in next)) {
remove_input_defaults(input);
}
}
var attributes = get_attributes(element); var attributes = get_attributes(element);
var is_custom_element = attributes[IS_CUSTOM_ELEMENT]; var is_custom_element = attributes[IS_CUSTOM_ELEMENT];
@ -467,6 +484,7 @@ export function set_attributes(element, prev, next, css_hash, skip_warning = fal
* @param {Array<() => any>} sync * @param {Array<() => any>} sync
* @param {Array<() => Promise<any>>} async * @param {Array<() => Promise<any>>} async
* @param {string} [css_hash] * @param {string} [css_hash]
* @param {boolean} [should_remove_defaults]
* @param {boolean} [skip_warning] * @param {boolean} [skip_warning]
*/ */
export function attribute_effect( export function attribute_effect(
@ -475,6 +493,7 @@ export function attribute_effect(
sync = [], sync = [],
async = [], async = [],
css_hash, css_hash,
should_remove_defaults = false,
skip_warning = false skip_warning = false
) { ) {
flatten(sync, async, (values) => { flatten(sync, async, (values) => {
@ -490,7 +509,14 @@ export function attribute_effect(
block(() => { block(() => {
var next = fn(...values.map(get)); var next = fn(...values.map(get));
/** @type {Record<string | symbol, any>} */ /** @type {Record<string | symbol, any>} */
var current = set_attributes(element, prev, next, css_hash, skip_warning); var current = set_attributes(
element,
prev,
next,
css_hash,
should_remove_defaults,
skip_warning
);
if (inited && is_select && 'value' in next) { if (inited && is_select && 'value' in next) {
select_option(/** @type {HTMLSelectElement} */ (element), next.value); select_option(/** @type {HTMLSelectElement} */ (element), next.value);

@ -1,4 +1,5 @@
import { run_all } from '../../shared/utils.js'; import { run_all } from '../../shared/utils.js';
import { is_flushing_sync } from '../reactivity/batch.js';
// Fallback for when requestIdleCallback is not available // Fallback for when requestIdleCallback is not available
const request_idle_callback = const request_idle_callback =
@ -24,12 +25,27 @@ function run_idle_tasks() {
run_all(tasks); run_all(tasks);
} }
export function has_pending_tasks() {
return micro_tasks.length > 0 || idle_tasks.length > 0;
}
/** /**
* @param {() => void} fn * @param {() => void} fn
*/ */
export function queue_micro_task(fn) { export function queue_micro_task(fn) {
if (micro_tasks.length === 0) { if (micro_tasks.length === 0 && !is_flushing_sync) {
queueMicrotask(run_micro_tasks); var tasks = micro_tasks;
queueMicrotask(() => {
// If this is false, a flushSync happened in the meantime. Do _not_ run new scheduled microtasks in that case
// as the ordering of microtasks would be broken at that point - consider this case:
// - queue_micro_task schedules microtask A to flush task X
// - synchronously after, flushSync runs, processing task X
// - synchronously after, some other microtask B is scheduled, but not through queue_micro_task but for example a Promise.resolve() in user code
// - synchronously after, queue_micro_task schedules microtask C to flush task Y
// - one tick later, microtask A now resolves, flushing task Y before microtask B, which is incorrect
// This if check prevents that race condition (that realistically will only happen in tests)
if (tasks === micro_tasks) run_micro_tasks();
});
} }
micro_tasks.push(fn); micro_tasks.push(fn);

@ -28,7 +28,6 @@ export { attach } from './dom/elements/attachments.js';
export { export {
remove_input_defaults, remove_input_defaults,
set_attribute, set_attribute,
set_attributes,
attribute_effect, attribute_effect,
set_custom_element_data, set_custom_element_data,
set_xlink_attribute, set_xlink_attribute,
@ -104,7 +103,7 @@ export {
save, save,
track_reactivity_loss track_reactivity_loss
} from './reactivity/async.js'; } from './reactivity/async.js';
export { flushSync as flush, suspend } from './reactivity/batch.js'; export { flushSync as flush } from './reactivity/batch.js';
export { export {
async_derived, async_derived,
user_derived as derived, user_derived as derived,

@ -10,7 +10,7 @@ import {
set_active_effect, set_active_effect,
set_active_reaction set_active_reaction
} from '../runtime.js'; } from '../runtime.js';
import { current_batch, suspend } from './batch.js'; import { Batch, current_batch } from './batch.js';
import { import {
async_derived, async_derived,
current_async_effect, current_async_effect,
@ -176,7 +176,13 @@ export function unset_context() {
* @param {() => Promise<void>} fn * @param {() => Promise<void>} fn
*/ */
export async function async_body(fn) { export async function async_body(fn) {
var unsuspend = suspend(); var boundary = get_boundary();
var batch = /** @type {Batch} */ (current_batch);
var pending = boundary.is_pending();
boundary.update_pending_count(1);
if (!pending) batch.increment();
var active = /** @type {Effect} */ (active_effect); var active = /** @type {Effect} */ (active_effect);
try { try {
@ -186,6 +192,15 @@ export async function async_body(fn) {
invoke_error_boundary(error, active); invoke_error_boundary(error, active);
} }
} finally { } finally {
unsuspend(); boundary.update_pending_count(-1);
if (pending) {
batch.flush();
} else {
batch.activate();
batch.decrement();
}
unset_context();
} }
} }

@ -24,7 +24,7 @@ import {
update_effect update_effect
} from '../runtime.js'; } from '../runtime.js';
import * as e from '../errors.js'; import * as e from '../errors.js';
import { flush_tasks } from '../dom/task.js'; import { flush_tasks, has_pending_tasks, queue_micro_task } from '../dom/task.js';
import { DEV } from 'esm-env'; import { DEV } from 'esm-env';
import { invoke_error_boundary } from '../error-handling.js'; import { invoke_error_boundary } from '../error-handling.js';
import { old_values } from './sources.js'; import { old_values } from './sources.js';
@ -55,19 +55,6 @@ export let batch_deriveds = null;
/** @type {Set<() => void>} */ /** @type {Set<() => void>} */
export let effect_pending_updates = new Set(); export let effect_pending_updates = new Set();
/** @type {Array<() => void>} */
let tasks = [];
function dequeue() {
const task = /** @type {() => void} */ (tasks.shift());
if (tasks.length > 0) {
queueMicrotask(dequeue);
}
task();
}
/** @type {Effect[]} */ /** @type {Effect[]} */
let queued_root_effects = []; let queued_root_effects = [];
@ -75,7 +62,7 @@ let queued_root_effects = [];
let last_scheduled_effect = null; let last_scheduled_effect = null;
let is_flushing = false; let is_flushing = false;
let is_flushing_sync = false; export let is_flushing_sync = false;
export class Batch { export class Batch {
/** /**
@ -469,11 +456,7 @@ export class Batch {
/** @param {() => void} task */ /** @param {() => void} task */
static enqueue(task) { static enqueue(task) {
if (tasks.length === 0) { queue_micro_task(task);
queueMicrotask(dequeue);
}
tasks.unshift(task);
} }
} }
@ -504,7 +487,7 @@ export function flushSync(fn) {
while (true) { while (true) {
flush_tasks(); flush_tasks();
if (queued_root_effects.length === 0) { if (queued_root_effects.length === 0 && !has_pending_tasks()) {
current_batch?.flush(); current_batch?.flush();
// we need to check again, in case we just updated an `$effect.pending()` // we need to check again, in case we just updated an `$effect.pending()`
@ -669,28 +652,6 @@ export function schedule_effect(signal) {
queued_root_effects.push(effect); queued_root_effects.push(effect);
} }
export function suspend() {
var boundary = get_boundary();
var batch = /** @type {Batch} */ (current_batch);
var pending = boundary.is_pending();
boundary.update_pending_count(1);
if (!pending) batch.increment();
return function unsuspend() {
boundary.update_pending_count(-1);
if (!pending) {
batch.activate();
batch.decrement();
} else {
batch.deactivate();
}
unset_context();
};
}
/** /**
* Forcibly remove all current batches, to prevent cross-talk between tests * Forcibly remove all current batches, to prevent cross-talk between tests
*/ */

@ -8,7 +8,8 @@ import { subscribe_to_store } from '../../store/utils.js';
import { import {
UNINITIALIZED, UNINITIALIZED,
ELEMENT_PRESERVE_ATTRIBUTE_CASE, ELEMENT_PRESERVE_ATTRIBUTE_CASE,
ELEMENT_IS_NAMESPACED ELEMENT_IS_NAMESPACED,
ELEMENT_IS_INPUT
} from '../../constants.js'; } from '../../constants.js';
import { escape_html } from '../../escaping.js'; import { escape_html } from '../../escaping.js';
import { DEV } from 'esm-env'; import { DEV } from 'esm-env';
@ -262,6 +263,7 @@ export function spread_attributes(attrs, css_hash, classes, styles, flags = 0) {
const is_html = (flags & ELEMENT_IS_NAMESPACED) === 0; const is_html = (flags & ELEMENT_IS_NAMESPACED) === 0;
const lowercase = (flags & ELEMENT_PRESERVE_ATTRIBUTE_CASE) === 0; const lowercase = (flags & ELEMENT_PRESERVE_ATTRIBUTE_CASE) === 0;
const is_input = (flags & ELEMENT_IS_INPUT) !== 0;
for (name in attrs) { for (name in attrs) {
// omit functions, internal svelte properties and invalid attribute names // omit functions, internal svelte properties and invalid attribute names
@ -275,6 +277,13 @@ export function spread_attributes(attrs, css_hash, classes, styles, flags = 0) {
name = name.toLowerCase(); name = name.toLowerCase();
} }
if (is_input) {
if (name === 'defaultvalue' || name === 'defaultchecked') {
name = name === 'defaultvalue' ? 'value' : 'checked';
if (attrs[name]) continue;
}
}
attr_str += attr(name, value, is_html && is_boolean_attribute(name)); attr_str += attr(name, value, is_html && is_boolean_attribute(name));
} }

@ -4,5 +4,5 @@
* The current version, as set in package.json. * The current version, as set in package.json.
* @type {string} * @type {string}
*/ */
export const VERSION = '5.38.7'; export const VERSION = '5.38.10';
export const PUBLIC_VERSION = '5'; export const PUBLIC_VERSION = '5';

@ -32,7 +32,13 @@ function clean_children(node, opts) {
return; return;
} }
node.setAttribute(attr.name, attr.value); let value = attr.value;
if (attr.name === 'class') {
value = value.replace(/svelte-\w+/, 'svelte-xyz123');
}
node.setAttribute(attr.name, value);
}); });
for (let child of [...node.childNodes]) { for (let child of [...node.childNodes]) {

@ -74,6 +74,7 @@ function normalize_html(window, html) {
node.innerHTML = html node.innerHTML = html
.replace(/<!--.*?-->/g, '') .replace(/<!--.*?-->/g, '')
.replace(/>[\s\r\n]+</g, '><') .replace(/>[\s\r\n]+</g, '><')
.replace(/svelte-\w+/g, 'svelte-xyz123')
.trim(); .trim();
normalize_children(node); normalize_children(node);

@ -1,43 +1,43 @@
import { ok, test } from '../../test'; import { ok, test } from '../../test';
export default test({ export default test({
html: '<div class="svelte-x1o6ra"></div>', html: '<div class="svelte-70s021"></div>',
test({ assert, component, target }) { test({ assert, component, target }) {
const div = target.querySelector('div'); const div = target.querySelector('div');
ok(div); ok(div);
component.testName = null; component.testName = null;
assert.equal(div.className, 'svelte-x1o6ra'); assert.equal(div.className, 'svelte-70s021');
component.testName = undefined; component.testName = undefined;
assert.equal(div.className, 'svelte-x1o6ra'); assert.equal(div.className, 'svelte-70s021');
component.testName = undefined + ''; component.testName = undefined + '';
assert.equal(div.className, 'undefined svelte-x1o6ra'); assert.equal(div.className, 'undefined svelte-70s021');
component.testName = null + ''; component.testName = null + '';
assert.equal(div.className, 'null svelte-x1o6ra'); assert.equal(div.className, 'null svelte-70s021');
component.testName = 1; component.testName = 1;
assert.equal(div.className, '1 svelte-x1o6ra'); assert.equal(div.className, '1 svelte-70s021');
component.testName = 0; component.testName = 0;
assert.equal(div.className, '0 svelte-x1o6ra'); assert.equal(div.className, '0 svelte-70s021');
component.testName = false; component.testName = false;
assert.equal(div.className, 'false svelte-x1o6ra'); assert.equal(div.className, 'false svelte-70s021');
component.testName = true; component.testName = true;
assert.equal(div.className, 'true svelte-x1o6ra'); assert.equal(div.className, 'true svelte-70s021');
component.testName = {}; component.testName = {};
assert.equal(div.className, 'svelte-x1o6ra'); assert.equal(div.className, 'svelte-70s021');
component.testName = ''; component.testName = '';
assert.equal(div.className, 'svelte-x1o6ra'); assert.equal(div.className, 'svelte-70s021');
component.testName = 'testClassName'; component.testName = 'testClassName';
assert.equal(div.className, 'testClassName svelte-x1o6ra'); assert.equal(div.className, 'testClassName svelte-70s021');
} }
}); });

@ -10,43 +10,43 @@ export default test({
}; };
}, },
html: '<div class="test1test2 svelte-x1o6ra"></div>', html: '<div class="test1test2 svelte-70s021"></div>',
test({ assert, component, target }) { test({ assert, component, target }) {
const div = target.querySelector('div'); const div = target.querySelector('div');
ok(div); ok(div);
assert.equal(div.className, 'test1test2 svelte-x1o6ra'); assert.equal(div.className, 'test1test2 svelte-70s021');
component.testName1 = null; component.testName1 = null;
component.testName2 = null; component.testName2 = null;
assert.equal(div.className, '0 svelte-x1o6ra'); assert.equal(div.className, '0 svelte-70s021');
component.testName1 = null; component.testName1 = null;
component.testName2 = 'test'; component.testName2 = 'test';
assert.equal(div.className, 'nulltest svelte-x1o6ra'); assert.equal(div.className, 'nulltest svelte-70s021');
component.testName1 = undefined; component.testName1 = undefined;
component.testName2 = 'test'; component.testName2 = 'test';
assert.equal(div.className, 'undefinedtest svelte-x1o6ra'); assert.equal(div.className, 'undefinedtest svelte-70s021');
component.testName1 = undefined; component.testName1 = undefined;
component.testName2 = undefined; component.testName2 = undefined;
assert.equal(div.className, 'NaN svelte-x1o6ra'); assert.equal(div.className, 'NaN svelte-70s021');
component.testName1 = null; component.testName1 = null;
component.testName2 = 1; component.testName2 = 1;
assert.equal(div.className, '1 svelte-x1o6ra'); assert.equal(div.className, '1 svelte-70s021');
component.testName1 = undefined; component.testName1 = undefined;
component.testName2 = 1; component.testName2 = 1;
assert.equal(div.className, 'NaN svelte-x1o6ra'); assert.equal(div.className, 'NaN svelte-70s021');
component.testName1 = null; component.testName1 = null;
component.testName2 = 0; component.testName2 = 0;
assert.equal(div.className, '0 svelte-x1o6ra'); assert.equal(div.className, '0 svelte-70s021');
component.testName1 = undefined; component.testName1 = undefined;
component.testName2 = 0; component.testName2 = 0;
assert.equal(div.className, 'NaN svelte-x1o6ra'); assert.equal(div.className, 'NaN svelte-70s021');
} }
}); });

@ -8,41 +8,41 @@ export default test({
}; };
}, },
html: '<div class="testClassName svelte-x1o6ra"></div>', html: '<div class="testClassName svelte-70s021"></div>',
test({ assert, component, target }) { test({ assert, component, target }) {
const div = target.querySelector('div'); const div = target.querySelector('div');
ok(div); ok(div);
assert.equal(div.className, 'testClassName svelte-x1o6ra'); assert.equal(div.className, 'testClassName svelte-70s021');
component.testName = null; component.testName = null;
assert.equal(div.className, 'svelte-x1o6ra'); assert.equal(div.className, 'svelte-70s021');
component.testName = undefined; component.testName = undefined;
assert.equal(div.className, 'svelte-x1o6ra'); assert.equal(div.className, 'svelte-70s021');
component.testName = undefined + ''; component.testName = undefined + '';
assert.equal(div.className, 'undefined svelte-x1o6ra'); assert.equal(div.className, 'undefined svelte-70s021');
component.testName = null + ''; component.testName = null + '';
assert.equal(div.className, 'null svelte-x1o6ra'); assert.equal(div.className, 'null svelte-70s021');
component.testName = 1; component.testName = 1;
assert.equal(div.className, '1 svelte-x1o6ra'); assert.equal(div.className, '1 svelte-70s021');
component.testName = 0; component.testName = 0;
assert.equal(div.className, '0 svelte-x1o6ra'); assert.equal(div.className, '0 svelte-70s021');
component.testName = false; component.testName = false;
assert.equal(div.className, 'false svelte-x1o6ra'); assert.equal(div.className, 'false svelte-70s021');
component.testName = true; component.testName = true;
assert.equal(div.className, 'true svelte-x1o6ra'); assert.equal(div.className, 'true svelte-70s021');
component.testName = {}; component.testName = {};
assert.equal(div.className, 'svelte-x1o6ra'); assert.equal(div.className, 'svelte-70s021');
component.testName = ''; component.testName = '';
assert.equal(div.className, 'svelte-x1o6ra'); assert.equal(div.className, 'svelte-70s021');
} }
}); });

@ -10,43 +10,43 @@ export default test({
}; };
}, },
html: '<div class="test1test2 svelte-x1o6ra"></div>', html: '<div class="test1test2 svelte-70s021"></div>',
async test({ assert, component, target }) { async test({ assert, component, target }) {
const div = target.querySelector('div'); const div = target.querySelector('div');
ok(div); ok(div);
assert.equal(div.className, 'test1test2 svelte-x1o6ra'); assert.equal(div.className, 'test1test2 svelte-70s021');
component.testName1 = null; component.testName1 = null;
component.testName2 = null; component.testName2 = null;
assert.equal(div.className, '0 svelte-x1o6ra'); assert.equal(div.className, '0 svelte-70s021');
component.testName1 = null; component.testName1 = null;
component.testName2 = 'test'; component.testName2 = 'test';
assert.equal(div.className, 'nulltest svelte-x1o6ra'); assert.equal(div.className, 'nulltest svelte-70s021');
component.testName1 = undefined; component.testName1 = undefined;
component.testName2 = 'test'; component.testName2 = 'test';
assert.equal(div.className, 'undefinedtest svelte-x1o6ra'); assert.equal(div.className, 'undefinedtest svelte-70s021');
component.testName1 = undefined; component.testName1 = undefined;
component.testName2 = undefined; component.testName2 = undefined;
assert.equal(div.className, 'NaN svelte-x1o6ra'); assert.equal(div.className, 'NaN svelte-70s021');
component.testName1 = null; component.testName1 = null;
component.testName2 = 1; component.testName2 = 1;
assert.equal(div.className, '1 svelte-x1o6ra'); assert.equal(div.className, '1 svelte-70s021');
component.testName1 = undefined; component.testName1 = undefined;
component.testName2 = 1; component.testName2 = 1;
assert.equal(div.className, 'NaN svelte-x1o6ra'); assert.equal(div.className, 'NaN svelte-70s021');
component.testName1 = null; component.testName1 = null;
component.testName2 = 0; component.testName2 = 0;
assert.equal(div.className, '0 svelte-x1o6ra'); assert.equal(div.className, '0 svelte-70s021');
component.testName1 = undefined; component.testName1 = undefined;
component.testName2 = 0; component.testName2 = 0;
assert.equal(div.className, 'NaN svelte-x1o6ra'); assert.equal(div.className, 'NaN svelte-70s021');
} }
}); });

@ -0,0 +1,10 @@
<script>
function renderContent(node) {
node.textContent = 'foo';
}
const test = await Promise.resolve('foo');
</script>
<p>{test}</p>
<div {@attach renderContent}></div>

@ -0,0 +1,18 @@
import { tick } from 'svelte';
import { test } from '../../test';
export default test({
async test({ assert, target }) {
await tick();
assert.htmlEqual(target.innerHTML, '<button>toggle</button> <p>foo</p><div>foo</div>');
const [toggle] = target.querySelectorAll('button');
toggle.click();
await tick();
assert.htmlEqual(target.innerHTML, '<button>toggle</button>');
toggle.click();
await tick();
assert.htmlEqual(target.innerHTML, '<button>toggle</button> <p>foo</p><div>foo</div>');
}
});

@ -0,0 +1,16 @@
<script>
import Inner from './Inner.svelte';
let show = $state(true);
</script>
<svelte:boundary>
<button onclick={() => show = !show}>toggle</button>
{#if show}
<Inner />
{/if}
{#snippet pending()}
<p>pending</p>
{/snippet}
</svelte:boundary>

@ -0,0 +1,7 @@
<script>
await 1;
$effect(() => {
console.log('hello');
});
</script>

@ -0,0 +1,9 @@
import { tick } from 'svelte';
import { test } from '../../test';
export default test({
async test({ assert, logs }) {
await tick();
assert.deepEqual(logs, ['hello']);
}
});

@ -0,0 +1,9 @@
<script>
import Child from './Child.svelte';
</script>
<svelte:boundary>
<Child />
{#snippet pending()}{/snippet}
</svelte:boundary>

@ -3,6 +3,11 @@
export let route = $state({ current: 'home' }); export let route = $state({ current: 'home' });
</script> </script>
<script>
// reset from earlier tests
route.current = 'home'
</script>
<button onclick={() => route.reject()}>reject</button> <button onclick={() => route.reject()}>reject</button>
<svelte:boundary> <svelte:boundary>

@ -3,7 +3,7 @@ import { test } from '../../test';
export default test({ export default test({
async test({ assert, target, logs }) { async test({ assert, target, logs }) {
const [my_element, my_element_1] = target.querySelectorAll('my-element'); const [my_element, my_element_1] = target.querySelectorAll('my-element');
assert.equal(my_element.classList.contains('svelte-1koh33s'), true); assert.equal(my_element.classList.contains('svelte-70s021'), true);
assert.equal(my_element_1.classList.contains('svelte-1koh33s'), true); assert.equal(my_element_1.classList.contains('svelte-70s021'), true);
} }
}); });

@ -5,7 +5,8 @@ export default test({
async test({ assert, target, raf }) { async test({ assert, target, raf }) {
const btn = target.querySelector('button'); const btn = target.querySelector('button');
raf.tick(0); // one tick to not be at 0. Else the flushSync would revert the in-transition which hasn't started, and directly remove the button
raf.tick(1);
flushSync(() => { flushSync(() => {
btn?.click(); btn?.click();
@ -13,7 +14,7 @@ export default test({
assert.htmlEqual(target.innerHTML, `<h1>Outside</h1><button style="opacity: 0;">Hide</button>`); assert.htmlEqual(target.innerHTML, `<h1>Outside</h1><button style="opacity: 0;">Hide</button>`);
raf.tick(100); raf.tick(101);
assert.htmlEqual(target.innerHTML, `<h1>Outside</h1>`); assert.htmlEqual(target.innerHTML, `<h1>Outside</h1>`);
} }

@ -5,7 +5,8 @@ export default test({
async test({ assert, target, raf }) { async test({ assert, target, raf }) {
const btn = target.querySelector('button'); const btn = target.querySelector('button');
raf.tick(0); // one tick to not be at 0. Else the flushSync would revert the in-transition which hasn't started, and directly remove the button
raf.tick(1);
flushSync(() => { flushSync(() => {
btn?.click(); btn?.click();
@ -13,7 +14,7 @@ export default test({
assert.htmlEqual(target.innerHTML, `<h1>Outside</h1><button style="opacity: 0;">Hide</button>`); assert.htmlEqual(target.innerHTML, `<h1>Outside</h1><button style="opacity: 0;">Hide</button>`);
raf.tick(100); raf.tick(101);
assert.htmlEqual(target.innerHTML, `<h1>Outside</h1>`); assert.htmlEqual(target.innerHTML, `<h1>Outside</h1>`);
} }

@ -0,0 +1,10 @@
import { test } from '../../test';
export default test({
mode: ['server'],
html: `
<input value="a">
<input type="checkbox" checked>
<input value="b">
`
});

@ -0,0 +1,8 @@
<script>
let text = { defaultValue: "a" };
let checkbox = { defaultChecked: true }
</script>
<input {...text} />
<input type="checkbox" {...checkbox} />
<input value="b" {...text} />

@ -0,0 +1,20 @@
import { test } from '../../test';
import { flushSync } from 'svelte';
export default test({
test({ assert, target }) {
const [button] = target.querySelectorAll('button');
assert.throws(() => {
flushSync(() => button.click());
}, /oops/);
assert.htmlEqual(
target.innerHTML,
`
<button>throw</button>
<p>some content</p>
`
);
}
});

@ -0,0 +1,19 @@
<script lang="ts">
let should_throw = $state(false);
function throw_error() {
throw new Error('oops');
}
</script>
<button onclick={() => should_throw = true}>
throw
</button>
<svelte:boundary>
<p>some content</p>
{#if should_throw}
{throw_error()}
{/if}
</svelte:boundary>

@ -0,0 +1,5 @@
import { test } from '../../test';
export default test({
html: '<h1>Hello world!</h1>'
});

@ -0,0 +1,13 @@
<script>
import Component from './Component.svelte';
const object = {
property: Component
};
</script>
{#snippet not_hoisted()}
<object.property />
{/snippet}
{@render not_hoisted()}

@ -1,14 +1,14 @@
import { ok, test } from '../../test'; import { ok, test } from '../../test';
export default test({ export default test({
html: `<custom-element class="red svelte-p153w3"></custom-element><custom-element class="red svelte-p153w3"></custom-element>`, html: `<custom-element class="red svelte-70s021"></custom-element><custom-element class="red svelte-70s021"></custom-element>`,
async test({ assert, target }) { async test({ assert, target }) {
const [el, el2] = target.querySelectorAll('custom-element'); const [el, el2] = target.querySelectorAll('custom-element');
ok(el); ok(el);
ok(el2); ok(el2);
assert.deepEqual(el.className, 'red svelte-p153w3'); assert.deepEqual(el.className, 'red svelte-70s021');
assert.deepEqual(el2.className, 'red svelte-p153w3'); assert.deepEqual(el2.className, 'red svelte-70s021');
} }
}); });

@ -1 +1 @@
<!--[--><div class="foo svelte-gfnjhw">foo</div><!--]--> <!--[--><div class="foo svelte-1h3glmj">foo</div><!--]-->

@ -1 +1 @@
<style id="svelte-gfnjhw">.foo.svelte-gfnjhw {color:green;}.foo.svelte-gfnjhw {color:green;} .foo.svelte-gfnjhw {color:green;}.foo.svelte-gfnjhw, .foo.svelte-gfnjhw {color:green;}</style> <style id="svelte-1h3glmj">.foo.svelte-1h3glmj {color:green;}.foo.svelte-1h3glmj {color:green;} .foo.svelte-1h3glmj {color:green;}.foo.svelte-1h3glmj, .foo.svelte-1h3glmj {color:green;}</style>

@ -1,4 +1,4 @@
.foo.svelte-sg04hs { .foo.svelte-1nvcr6w {
color: red; color: red;
} }

@ -1 +1 @@
<!--[--><div class="bar svelte-ievf05">bar</div><!----> <div class="foo svelte-sg04hs">foo</div><!--]--> <!--[--><div class="bar svelte-1nvcr6w">bar</div><!----> <div class="foo svelte-sg04hs">foo</div><!--]-->

@ -1 +1 @@
<style id="svelte-ievf05">.bar.svelte-ievf05 {color:red;}</style> <style id="svelte-lr8eda">.bar.svelte-lr8eda {color:red;}</style>

@ -1,4 +1,4 @@
.foo.svelte-sg04hs { .foo.svelte-okauro {
color: red; color: red;
} }

@ -1 +1 @@
<div class="foo svelte-sg04hs">foo</div> <div class="foo svelte-okauro">foo</div>

@ -1 +1 @@
<style id="svelte-sg04hs">.foo.svelte-sg04hs {color:red;}</style> <style id="svelte-okauro">.foo.svelte-okauro {color:red;}</style>

@ -1,4 +1,4 @@
.foo.svelte-sg04hs { .foo.svelte-e9omc {
color: red; color: red;
} }

@ -1 +1 @@
<div class="foo svelte-sg04hs">foo</div> <div class="foo svelte-e9omc">foo</div>

@ -1 +1 @@
<style id="svelte-sg04hs">.foo.svelte-sg04hs {color:red;}</style> <style id="svelte-e9omc">.foo.svelte-e9omc {color:red;}</style>

@ -57,7 +57,7 @@ export default test({
{ str: 'replace_me_script', strGenerated: 'done_replace_script_2' }, { str: 'replace_me_script', strGenerated: 'done_replace_script_2' },
{ str: 'done_replace_script_2', idxGenerated: 1 } { str: 'done_replace_script_2', idxGenerated: 1 }
], ],
css: [{ str: '.replace_me_style', strGenerated: '.done_replace_style_2.svelte-o6vre' }], css: [{ str: '.replace_me_style', strGenerated: '.done_replace_style_2.svelte-1vsrjd4' }],
test({ assert, code_preprocessed, code_css }) { test({ assert, code_preprocessed, code_css }) {
assert.equal( assert.equal(
code_preprocessed.includes('\n/*# sourceMappingURL=data:application/json;base64,'), code_preprocessed.includes('\n/*# sourceMappingURL=data:application/json;base64,'),

@ -1,5 +1,5 @@
import { test } from '../../test'; import { test } from '../../test';
export default test({ export default test({
css: [{ str: '.foo', strGenerated: '.foo.svelte-sg04hs' }] css: [{ str: '.foo', strGenerated: '.foo.svelte-1eyw86p' }]
}); });

@ -998,7 +998,7 @@ declare module 'svelte/compiler' {
css?: 'injected' | 'external'; css?: 'injected' | 'external';
/** /**
* A function that takes a `{ hash, css, name, filename }` argument and returns the string that is used as a classname for scoped CSS. * A function that takes a `{ hash, css, name, filename }` argument and returns the string that is used as a classname for scoped CSS.
* It defaults to returning `svelte-${hash(css)}`. * It defaults to returning `svelte-${hash(filename ?? css)}`.
* *
* @default undefined * @default undefined
*/ */
@ -2960,7 +2960,7 @@ declare module 'svelte/types/compiler/interfaces' {
css?: 'injected' | 'external'; css?: 'injected' | 'external';
/** /**
* A function that takes a `{ hash, css, name, filename }` argument and returns the string that is used as a classname for scoped CSS. * A function that takes a `{ hash, css, name, filename }` argument and returns the string that is used as a classname for scoped CSS.
* It defaults to returning `svelte-${hash(css)}`. * It defaults to returning `svelte-${hash(filename ?? css)}`.
* *
* @default undefined * @default undefined
*/ */

@ -19,7 +19,7 @@
"polka": "^1.0.0-next.25", "polka": "^1.0.0-next.25",
"svelte": "workspace:*", "svelte": "workspace:*",
"tinyglobby": "^0.2.12", "tinyglobby": "^0.2.12",
"vite": "^5.4.19", "vite": "^5.4.20",
"vite-plugin-inspect": "^0.8.4" "vite-plugin-inspect": "^0.8.4"
} }
} }

@ -155,7 +155,7 @@ importers:
devDependencies: devDependencies:
'@sveltejs/vite-plugin-svelte': '@sveltejs/vite-plugin-svelte':
specifier: ^4.0.0-next.6 specifier: ^4.0.0-next.6
version: 4.0.0-next.6(svelte@packages+svelte)(vite@5.4.19(@types/node@20.12.7)(lightningcss@1.23.0)(sass@1.70.0)(terser@5.27.0)) version: 4.0.0-next.6(svelte@packages+svelte)(vite@5.4.20(@types/node@20.12.7)(lightningcss@1.23.0)(sass@1.70.0)(terser@5.27.0))
polka: polka:
specifier: ^1.0.0-next.25 specifier: ^1.0.0-next.25
version: 1.0.0-next.25 version: 1.0.0-next.25
@ -166,11 +166,11 @@ importers:
specifier: ^0.2.12 specifier: ^0.2.12
version: 0.2.12 version: 0.2.12
vite: vite:
specifier: ^5.4.19 specifier: ^5.4.20
version: 5.4.19(@types/node@20.12.7)(lightningcss@1.23.0)(sass@1.70.0)(terser@5.27.0) version: 5.4.20(@types/node@20.12.7)(lightningcss@1.23.0)(sass@1.70.0)(terser@5.27.0)
vite-plugin-inspect: vite-plugin-inspect:
specifier: ^0.8.4 specifier: ^0.8.4
version: 0.8.4(rollup@4.40.2)(vite@5.4.19(@types/node@20.12.7)(lightningcss@1.23.0)(sass@1.70.0)(terser@5.27.0)) version: 0.8.4(rollup@4.50.1)(vite@5.4.20(@types/node@20.12.7)(lightningcss@1.23.0)(sass@1.70.0)(terser@5.27.0))
packages: packages:
@ -417,6 +417,12 @@ packages:
peerDependencies: peerDependencies:
eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
'@eslint-community/eslint-utils@4.9.0':
resolution: {integrity: sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
'@eslint-community/regexpp@4.12.1': '@eslint-community/regexpp@4.12.1':
resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==}
engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
@ -557,8 +563,8 @@ packages:
cpu: [arm] cpu: [arm]
os: [android] os: [android]
'@rollup/rollup-android-arm-eabi@4.40.2': '@rollup/rollup-android-arm-eabi@4.50.1':
resolution: {integrity: sha512-JkdNEq+DFxZfUwxvB58tHMHBHVgX23ew41g1OQinthJ+ryhdRk67O31S7sYw8u2lTjHUPFxwar07BBt1KHp/hg==} resolution: {integrity: sha512-HJXwzoZN4eYTdD8bVV22DN8gsPCAj3V20NHKOs8ezfXanGpmVPR7kalUHd+Y31IJp9stdB87VKPFbsGY3H/2ag==}
cpu: [arm] cpu: [arm]
os: [android] os: [android]
@ -567,8 +573,8 @@ packages:
cpu: [arm64] cpu: [arm64]
os: [android] os: [android]
'@rollup/rollup-android-arm64@4.40.2': '@rollup/rollup-android-arm64@4.50.1':
resolution: {integrity: sha512-13unNoZ8NzUmnndhPTkWPWbX3vtHodYmy+I9kuLxN+F+l+x3LdVF7UCu8TWVMt1POHLh6oDHhnOA04n8oJZhBw==} resolution: {integrity: sha512-PZlsJVcjHfcH53mOImyt3bc97Ep3FJDXRpk9sMdGX0qgLmY0EIWxCag6EigerGhLVuL8lDVYNnSo8qnTElO4xw==}
cpu: [arm64] cpu: [arm64]
os: [android] os: [android]
@ -577,8 +583,8 @@ packages:
cpu: [arm64] cpu: [arm64]
os: [darwin] os: [darwin]
'@rollup/rollup-darwin-arm64@4.40.2': '@rollup/rollup-darwin-arm64@4.50.1':
resolution: {integrity: sha512-Gzf1Hn2Aoe8VZzevHostPX23U7N5+4D36WJNHK88NZHCJr7aVMG4fadqkIf72eqVPGjGc0HJHNuUaUcxiR+N/w==} resolution: {integrity: sha512-xc6i2AuWh++oGi4ylOFPmzJOEeAa2lJeGUGb4MudOtgfyyjr4UPNK+eEWTPLvmPJIY/pgw6ssFIox23SyrkkJw==}
cpu: [arm64] cpu: [arm64]
os: [darwin] os: [darwin]
@ -587,18 +593,18 @@ packages:
cpu: [x64] cpu: [x64]
os: [darwin] os: [darwin]
'@rollup/rollup-darwin-x64@4.40.2': '@rollup/rollup-darwin-x64@4.50.1':
resolution: {integrity: sha512-47N4hxa01a4x6XnJoskMKTS8XZ0CZMd8YTbINbi+w03A2w4j1RTlnGHOz/P0+Bg1LaVL6ufZyNprSg+fW5nYQQ==} resolution: {integrity: sha512-2ofU89lEpDYhdLAbRdeyz/kX3Y2lpYc6ShRnDjY35bZhd2ipuDMDi6ZTQ9NIag94K28nFMofdnKeHR7BT0CATw==}
cpu: [x64] cpu: [x64]
os: [darwin] os: [darwin]
'@rollup/rollup-freebsd-arm64@4.40.2': '@rollup/rollup-freebsd-arm64@4.50.1':
resolution: {integrity: sha512-8t6aL4MD+rXSHHZUR1z19+9OFJ2rl1wGKvckN47XFRVO+QL/dUSpKA2SLRo4vMg7ELA8pzGpC+W9OEd1Z/ZqoQ==} resolution: {integrity: sha512-wOsE6H2u6PxsHY/BeFHA4VGQN3KUJFZp7QJBmDYI983fgxq5Th8FDkVuERb2l9vDMs1D5XhOrhBrnqcEY6l8ZA==}
cpu: [arm64] cpu: [arm64]
os: [freebsd] os: [freebsd]
'@rollup/rollup-freebsd-x64@4.40.2': '@rollup/rollup-freebsd-x64@4.50.1':
resolution: {integrity: sha512-C+AyHBzfpsOEYRFjztcYUFsH4S7UsE9cDtHCtma5BK8+ydOZYgMmWg1d/4KBytQspJCld8ZIujFMAdKG1xyr4Q==} resolution: {integrity: sha512-A/xeqaHTlKbQggxCqispFAcNjycpUEHP52mwMQZUNqDUJFFYtPHCXS1VAG29uMlDzIVr+i00tSFWFLivMcoIBQ==}
cpu: [x64] cpu: [x64]
os: [freebsd] os: [freebsd]
@ -607,8 +613,8 @@ packages:
cpu: [arm] cpu: [arm]
os: [linux] os: [linux]
'@rollup/rollup-linux-arm-gnueabihf@4.40.2': '@rollup/rollup-linux-arm-gnueabihf@4.50.1':
resolution: {integrity: sha512-de6TFZYIvJwRNjmW3+gaXiZ2DaWL5D5yGmSYzkdzjBDS3W+B9JQ48oZEsmMvemqjtAFzE16DIBLqd6IQQRuG9Q==} resolution: {integrity: sha512-54v4okehwl5TaSIkpp97rAHGp7t3ghinRd/vyC1iXqXMfjYUTm7TfYmCzXDoHUPTTf36L8pr0E7YsD3CfB3ZDg==}
cpu: [arm] cpu: [arm]
os: [linux] os: [linux]
@ -617,8 +623,8 @@ packages:
cpu: [arm] cpu: [arm]
os: [linux] os: [linux]
'@rollup/rollup-linux-arm-musleabihf@4.40.2': '@rollup/rollup-linux-arm-musleabihf@4.50.1':
resolution: {integrity: sha512-urjaEZubdIkacKc930hUDOfQPysezKla/O9qV+O89enqsqUmQm8Xj8O/vh0gHg4LYfv7Y7UsE3QjzLQzDYN1qg==} resolution: {integrity: sha512-p/LaFyajPN/0PUHjv8TNyxLiA7RwmDoVY3flXHPSzqrGcIp/c2FjwPPP5++u87DGHtw+5kSH5bCJz0mvXngYxw==}
cpu: [arm] cpu: [arm]
os: [linux] os: [linux]
@ -627,8 +633,8 @@ packages:
cpu: [arm64] cpu: [arm64]
os: [linux] os: [linux]
'@rollup/rollup-linux-arm64-gnu@4.40.2': '@rollup/rollup-linux-arm64-gnu@4.50.1':
resolution: {integrity: sha512-KlE8IC0HFOC33taNt1zR8qNlBYHj31qGT1UqWqtvR/+NuCVhfufAq9fxO8BMFC22Wu0rxOwGVWxtCMvZVLmhQg==} resolution: {integrity: sha512-2AbMhFFkTo6Ptna1zO7kAXXDLi7H9fGTbVaIq2AAYO7yzcAsuTNWPHhb2aTA6GPiP+JXh85Y8CiS54iZoj4opw==}
cpu: [arm64] cpu: [arm64]
os: [linux] os: [linux]
@ -637,13 +643,13 @@ packages:
cpu: [arm64] cpu: [arm64]
os: [linux] os: [linux]
'@rollup/rollup-linux-arm64-musl@4.40.2': '@rollup/rollup-linux-arm64-musl@4.50.1':
resolution: {integrity: sha512-j8CgxvfM0kbnhu4XgjnCWJQyyBOeBI1Zq91Z850aUddUmPeQvuAy6OiMdPS46gNFgy8gN1xkYyLgwLYZG3rBOg==} resolution: {integrity: sha512-Cgef+5aZwuvesQNw9eX7g19FfKX5/pQRIyhoXLCiBOrWopjo7ycfB292TX9MDcDijiuIJlx1IzJz3IoCPfqs9w==}
cpu: [arm64] cpu: [arm64]
os: [linux] os: [linux]
'@rollup/rollup-linux-loongarch64-gnu@4.40.2': '@rollup/rollup-linux-loongarch64-gnu@4.50.1':
resolution: {integrity: sha512-Ybc/1qUampKuRF4tQXc7G7QY9YRyeVSykfK36Y5Qc5dmrIxwFhrOzqaVTNoZygqZ1ZieSWTibfFhQ5qK8jpWxw==} resolution: {integrity: sha512-RPhTwWMzpYYrHrJAS7CmpdtHNKtt2Ueo+BlLBjfZEhYBhK00OsEqM08/7f+eohiF6poe0YRDDd8nAvwtE/Y62Q==}
cpu: [loong64] cpu: [loong64]
os: [linux] os: [linux]
@ -652,8 +658,8 @@ packages:
cpu: [ppc64] cpu: [ppc64]
os: [linux] os: [linux]
'@rollup/rollup-linux-powerpc64le-gnu@4.40.2': '@rollup/rollup-linux-ppc64-gnu@4.50.1':
resolution: {integrity: sha512-3FCIrnrt03CCsZqSYAOW/k9n625pjpuMzVfeI+ZBUSDT3MVIFDSPfSUgIl9FqUftxcUXInvFah79hE1c9abD+Q==} resolution: {integrity: sha512-eSGMVQw9iekut62O7eBdbiccRguuDgiPMsw++BVUg+1K7WjZXHOg/YOT9SWMzPZA+w98G+Fa1VqJgHZOHHnY0Q==}
cpu: [ppc64] cpu: [ppc64]
os: [linux] os: [linux]
@ -662,13 +668,13 @@ packages:
cpu: [riscv64] cpu: [riscv64]
os: [linux] os: [linux]
'@rollup/rollup-linux-riscv64-gnu@4.40.2': '@rollup/rollup-linux-riscv64-gnu@4.50.1':
resolution: {integrity: sha512-QNU7BFHEvHMp2ESSY3SozIkBPaPBDTsfVNGx3Xhv+TdvWXFGOSH2NJvhD1zKAT6AyuuErJgbdvaJhYVhVqrWTg==} resolution: {integrity: sha512-S208ojx8a4ciIPrLgazF6AgdcNJzQE4+S9rsmOmDJkusvctii+ZvEuIC4v/xFqzbuP8yDjn73oBlNDgF6YGSXQ==}
cpu: [riscv64] cpu: [riscv64]
os: [linux] os: [linux]
'@rollup/rollup-linux-riscv64-musl@4.40.2': '@rollup/rollup-linux-riscv64-musl@4.50.1':
resolution: {integrity: sha512-5W6vNYkhgfh7URiXTO1E9a0cy4fSgfE4+Hl5agb/U1sa0kjOLMLC1wObxwKxecE17j0URxuTrYZZME4/VH57Hg==} resolution: {integrity: sha512-3Ag8Ls1ggqkGUvSZWYcdgFwriy2lWo+0QlYgEFra/5JGtAd6C5Hw59oojx1DeqcA2Wds2ayRgvJ4qxVTzCHgzg==}
cpu: [riscv64] cpu: [riscv64]
os: [linux] os: [linux]
@ -677,8 +683,8 @@ packages:
cpu: [s390x] cpu: [s390x]
os: [linux] os: [linux]
'@rollup/rollup-linux-s390x-gnu@4.40.2': '@rollup/rollup-linux-s390x-gnu@4.50.1':
resolution: {integrity: sha512-B7LKIz+0+p348JoAL4X/YxGx9zOx3sR+o6Hj15Y3aaApNfAshK8+mWZEf759DXfRLeL2vg5LYJBB7DdcleYCoQ==} resolution: {integrity: sha512-t9YrKfaxCYe7l7ldFERE1BRg/4TATxIg+YieHQ966jwvo7ddHJxPj9cNFWLAzhkVsbBvNA4qTbPVNsZKBO4NSg==}
cpu: [s390x] cpu: [s390x]
os: [linux] os: [linux]
@ -687,8 +693,8 @@ packages:
cpu: [x64] cpu: [x64]
os: [linux] os: [linux]
'@rollup/rollup-linux-x64-gnu@4.40.2': '@rollup/rollup-linux-x64-gnu@4.50.1':
resolution: {integrity: sha512-lG7Xa+BmBNwpjmVUbmyKxdQJ3Q6whHjMjzQplOs5Z+Gj7mxPtWakGHqzMqNER68G67kmCX9qX57aRsW5V0VOng==} resolution: {integrity: sha512-MCgtFB2+SVNuQmmjHf+wfI4CMxy3Tk8XjA5Z//A0AKD7QXUYFMQcns91K6dEHBvZPCnhJSyDWLApk40Iq/H3tA==}
cpu: [x64] cpu: [x64]
os: [linux] os: [linux]
@ -697,18 +703,23 @@ packages:
cpu: [x64] cpu: [x64]
os: [linux] os: [linux]
'@rollup/rollup-linux-x64-musl@4.40.2': '@rollup/rollup-linux-x64-musl@4.50.1':
resolution: {integrity: sha512-tD46wKHd+KJvsmije4bUskNuvWKFcTOIM9tZ/RrmIvcXnbi0YK/cKS9FzFtAm7Oxi2EhV5N2OpfFB348vSQRXA==} resolution: {integrity: sha512-nEvqG+0jeRmqaUMuwzlfMKwcIVffy/9KGbAGyoa26iu6eSngAYQ512bMXuqqPrlTyfqdlB9FVINs93j534UJrg==}
cpu: [x64] cpu: [x64]
os: [linux] os: [linux]
'@rollup/rollup-openharmony-arm64@4.50.1':
resolution: {integrity: sha512-RDsLm+phmT3MJd9SNxA9MNuEAO/J2fhW8GXk62G/B4G7sLVumNFbRwDL6v5NrESb48k+QMqdGbHgEtfU0LCpbA==}
cpu: [arm64]
os: [openharmony]
'@rollup/rollup-win32-arm64-msvc@4.22.4': '@rollup/rollup-win32-arm64-msvc@4.22.4':
resolution: {integrity: sha512-BjI+NVVEGAXjGWYHz/vv0pBqfGoUH0IGZ0cICTn7kB9PyjrATSkX+8WkguNjWoj2qSr1im/+tTGRaY+4/PdcQw==} resolution: {integrity: sha512-BjI+NVVEGAXjGWYHz/vv0pBqfGoUH0IGZ0cICTn7kB9PyjrATSkX+8WkguNjWoj2qSr1im/+tTGRaY+4/PdcQw==}
cpu: [arm64] cpu: [arm64]
os: [win32] os: [win32]
'@rollup/rollup-win32-arm64-msvc@4.40.2': '@rollup/rollup-win32-arm64-msvc@4.50.1':
resolution: {integrity: sha512-Bjv/HG8RRWLNkXwQQemdsWw4Mg+IJ29LK+bJPW2SCzPKOUaMmPEppQlu/Fqk1d7+DX3V7JbFdbkh/NMmurT6Pg==} resolution: {integrity: sha512-hpZB/TImk2FlAFAIsoElM3tLzq57uxnGYwplg6WDyAxbYczSi8O2eQ+H2Lx74504rwKtZ3N2g4bCUkiamzS6TQ==}
cpu: [arm64] cpu: [arm64]
os: [win32] os: [win32]
@ -717,8 +728,8 @@ packages:
cpu: [ia32] cpu: [ia32]
os: [win32] os: [win32]
'@rollup/rollup-win32-ia32-msvc@4.40.2': '@rollup/rollup-win32-ia32-msvc@4.50.1':
resolution: {integrity: sha512-dt1llVSGEsGKvzeIO76HToiYPNPYPkmjhMHhP00T9S4rDern8P2ZWvWAQUEJ+R1UdMWJ/42i/QqJ2WV765GZcA==} resolution: {integrity: sha512-SXjv8JlbzKM0fTJidX4eVsH+Wmnp0/WcD8gJxIZyR6Gay5Qcsmdbi9zVtnbkGPG8v2vMR1AD06lGWy5FLMcG7A==}
cpu: [ia32] cpu: [ia32]
os: [win32] os: [win32]
@ -727,8 +738,8 @@ packages:
cpu: [x64] cpu: [x64]
os: [win32] os: [win32]
'@rollup/rollup-win32-x64-msvc@4.40.2': '@rollup/rollup-win32-x64-msvc@4.50.1':
resolution: {integrity: sha512-bwspbWB04XJpeElvsp+DCylKfF4trJDa2Y9Go8O6A7YLX2LIKGcNK/CYImJN6ZP4DcuOHB4Utl3iCbnR62DudA==} resolution: {integrity: sha512-StxAO/8ts62KZVRAm4JZYq9+NqNsV7RvimNK+YM7ry//zebEH6meuugqW/P5OFUCjyQgui+9fUxT6d5NShvMvA==}
cpu: [x64] cpu: [x64]
os: [win32] os: [win32]
@ -785,8 +796,8 @@ packages:
'@types/estree@1.0.6': '@types/estree@1.0.6':
resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==}
'@types/estree@1.0.7': '@types/estree@1.0.8':
resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==} resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==}
'@types/json-schema@7.0.15': '@types/json-schema@7.0.15':
resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==}
@ -818,13 +829,25 @@ packages:
eslint: ^8.57.0 || ^9.0.0 eslint: ^8.57.0 || ^9.0.0
typescript: '>=4.8.4 <5.9.0' typescript: '>=4.8.4 <5.9.0'
'@typescript-eslint/project-service@8.43.0':
resolution: {integrity: sha512-htB/+D/BIGoNTQYffZw4uM4NzzuolCoaA/BusuSIcC8YjmBYQioew5VUZAYdAETPjeed0hqCaW7EHg+Robq8uw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
typescript: '>=4.8.4 <6.0.0'
'@typescript-eslint/scope-manager@8.26.0': '@typescript-eslint/scope-manager@8.26.0':
resolution: {integrity: sha512-E0ntLvsfPqnPwng8b8y4OGuzh/iIOm2z8U3S9zic2TeMLW61u5IH2Q1wu0oSTkfrSzwbDJIB/Lm8O3//8BWMPA==} resolution: {integrity: sha512-E0ntLvsfPqnPwng8b8y4OGuzh/iIOm2z8U3S9zic2TeMLW61u5IH2Q1wu0oSTkfrSzwbDJIB/Lm8O3//8BWMPA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@typescript-eslint/scope-manager@8.32.1': '@typescript-eslint/scope-manager@8.43.0':
resolution: {integrity: sha512-7IsIaIDeZn7kffk7qXC3o6Z4UblZJKV3UBpkvRNpr5NSyLji7tvTcvmnMNYuYLyh26mN8W723xpo3i4MlD33vA==} resolution: {integrity: sha512-daSWlQ87ZhsjrbMLvpuuMAt3y4ba57AuvadcR7f3nl8eS3BjRc8L9VLxFLk92RL5xdXOg6IQ+qKjjqNEimGuAg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@typescript-eslint/tsconfig-utils@8.43.0':
resolution: {integrity: sha512-ALC2prjZcj2YqqL5X/bwWQmHA2em6/94GcbB/KKu5SX3EBDOsqztmmX1kMkvAJHzxk7TazKzJfFiEIagNV3qEA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
typescript: '>=4.8.4 <6.0.0'
'@typescript-eslint/type-utils@8.26.0': '@typescript-eslint/type-utils@8.26.0':
resolution: {integrity: sha512-ruk0RNChLKz3zKGn2LwXuVoeBcUMh+jaqzN461uMMdxy5H9epZqIBtYj7UiPXRuOpaALXGbmRuZQhmwHhaS04Q==} resolution: {integrity: sha512-ruk0RNChLKz3zKGn2LwXuVoeBcUMh+jaqzN461uMMdxy5H9epZqIBtYj7UiPXRuOpaALXGbmRuZQhmwHhaS04Q==}
@ -837,8 +860,8 @@ packages:
resolution: {integrity: sha512-89B1eP3tnpr9A8L6PZlSjBvnJhWXtYfZhECqlBl1D9Lme9mHO6iWlsprBtVenQvY1HMhax1mWOjhtL3fh/u+pA==} resolution: {integrity: sha512-89B1eP3tnpr9A8L6PZlSjBvnJhWXtYfZhECqlBl1D9Lme9mHO6iWlsprBtVenQvY1HMhax1mWOjhtL3fh/u+pA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@typescript-eslint/types@8.32.1': '@typescript-eslint/types@8.43.0':
resolution: {integrity: sha512-YmybwXUJcgGqgAp6bEsgpPXEg6dcCyPyCSr0CAAueacR/CCBi25G3V8gGQ2kRzQRBNol7VQknxMs9HvVa9Rvfg==} resolution: {integrity: sha512-vQ2FZaxJpydjSZJKiSW/LJsabFFvV7KgLC5DiLhkBcykhQj8iK9BOaDmQt74nnKdLvceM5xmhaTF+pLekrxEkw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@typescript-eslint/typescript-estree@8.26.0': '@typescript-eslint/typescript-estree@8.26.0':
@ -847,11 +870,11 @@ packages:
peerDependencies: peerDependencies:
typescript: '>=4.8.4 <5.9.0' typescript: '>=4.8.4 <5.9.0'
'@typescript-eslint/typescript-estree@8.32.1': '@typescript-eslint/typescript-estree@8.43.0':
resolution: {integrity: sha512-Y3AP9EIfYwBb4kWGb+simvPaqQoT5oJuzzj9m0i6FCY6SPvlomY2Ei4UEMm7+FXtlNJbor80ximyslzaQF6xhg==} resolution: {integrity: sha512-7Vv6zlAhPb+cvEpP06WXXy/ZByph9iL6BQRBDj4kmBsW98AqEeQHlj/13X+sZOrKSo9/rNKH4Ul4f6EICREFdw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies: peerDependencies:
typescript: '>=4.8.4 <5.9.0' typescript: '>=4.8.4 <6.0.0'
'@typescript-eslint/utils@8.26.0': '@typescript-eslint/utils@8.26.0':
resolution: {integrity: sha512-2L2tU3FVwhvU14LndnQCA2frYC8JnPDVKyQtWFPf8IYFMt/ykEN1bPolNhNbCVgOmdzTlWdusCTKA/9nKrf8Ig==} resolution: {integrity: sha512-2L2tU3FVwhvU14LndnQCA2frYC8JnPDVKyQtWFPf8IYFMt/ykEN1bPolNhNbCVgOmdzTlWdusCTKA/9nKrf8Ig==}
@ -860,19 +883,19 @@ packages:
eslint: ^8.57.0 || ^9.0.0 eslint: ^8.57.0 || ^9.0.0
typescript: '>=4.8.4 <5.9.0' typescript: '>=4.8.4 <5.9.0'
'@typescript-eslint/utils@8.32.1': '@typescript-eslint/utils@8.43.0':
resolution: {integrity: sha512-DsSFNIgLSrc89gpq1LJB7Hm1YpuhK086DRDJSNrewcGvYloWW1vZLHBTIvarKZDcAORIy/uWNx8Gad+4oMpkSA==} resolution: {integrity: sha512-S1/tEmkUeeswxd0GGcnwuVQPFWo8NzZTOMxCvw8BX7OMxnNae+i8Tm7REQen/SwUIPoPqfKn7EaZ+YLpiB3k9g==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies: peerDependencies:
eslint: ^8.57.0 || ^9.0.0 eslint: ^8.57.0 || ^9.0.0
typescript: '>=4.8.4 <5.9.0' typescript: '>=4.8.4 <6.0.0'
'@typescript-eslint/visitor-keys@8.26.0': '@typescript-eslint/visitor-keys@8.26.0':
resolution: {integrity: sha512-2z8JQJWAzPdDd51dRQ/oqIJxe99/hoLIqmf8RMCAJQtYDc535W/Jt2+RTP4bP0aKeBG1F65yjIZuczOXCmbWwg==} resolution: {integrity: sha512-2z8JQJWAzPdDd51dRQ/oqIJxe99/hoLIqmf8RMCAJQtYDc535W/Jt2+RTP4bP0aKeBG1F65yjIZuczOXCmbWwg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@typescript-eslint/visitor-keys@8.32.1': '@typescript-eslint/visitor-keys@8.43.0':
resolution: {integrity: sha512-ar0tjQfObzhSaW3C3QNmTc5ofj0hDoNQ5XWrCy6zDyabdr0TWhCkClp+rywGNj/odAFBVzzJrK4tEq5M4Hmu4w==} resolution: {integrity: sha512-T+S1KqRD4sg/bHfLwrpF/K3gQLBM1n7Rp7OjjikjTEssI2YJzQpi5WXoynOaQ93ERIuq3O8RBTOUYDKszUCEHw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@vitest/coverage-v8@2.1.9': '@vitest/coverage-v8@2.1.9':
@ -923,8 +946,8 @@ packages:
engines: {node: '>=0.4.0'} engines: {node: '>=0.4.0'}
hasBin: true hasBin: true
acorn@8.14.1: acorn@8.15.0:
resolution: {integrity: sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==} resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==}
engines: {node: '>=0.4.0'} engines: {node: '>=0.4.0'}
hasBin: true hasBin: true
@ -1099,6 +1122,15 @@ packages:
supports-color: supports-color:
optional: true optional: true
debug@4.4.1:
resolution: {integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==}
engines: {node: '>=6.0'}
peerDependencies:
supports-color: '*'
peerDependenciesMeta:
supports-color:
optional: true
decimal.js@10.4.3: decimal.js@10.4.3:
resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==}
@ -1161,8 +1193,8 @@ packages:
emoji-regex@9.2.2: emoji-regex@9.2.2:
resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==}
enhanced-resolve@5.18.1: enhanced-resolve@5.18.3:
resolution: {integrity: sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==} resolution: {integrity: sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==}
engines: {node: '>=10.13.0'} engines: {node: '>=10.13.0'}
enquirer@2.4.1: enquirer@2.4.1:
@ -1241,6 +1273,10 @@ packages:
resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
eslint-visitor-keys@4.2.1:
resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
eslint@9.9.1: eslint@9.9.1:
resolution: {integrity: sha512-dHvhrbfr4xFQ9/dq+jcVneZMyRYLjggWjk6RVsIiHsP8Rz6yZ8LvZ//iU4TrZF+SXWG+JkNF2OyiZRvzgRDqMg==} resolution: {integrity: sha512-dHvhrbfr4xFQ9/dq+jcVneZMyRYLjggWjk6RVsIiHsP8Rz6yZ8LvZ//iU4TrZF+SXWG+JkNF2OyiZRvzgRDqMg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
@ -1387,8 +1423,8 @@ packages:
function-bind@1.1.2: function-bind@1.1.2:
resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
get-tsconfig@4.10.0: get-tsconfig@4.10.1:
resolution: {integrity: sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A==} resolution: {integrity: sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ==}
glob-parent@5.1.2: glob-parent@5.1.2:
resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
@ -1862,6 +1898,10 @@ packages:
resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==}
engines: {node: '>=12'} engines: {node: '>=12'}
picomatch@4.0.3:
resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==}
engines: {node: '>=12'}
pify@4.0.1: pify@4.0.1:
resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==}
engines: {node: '>=6'} engines: {node: '>=6'}
@ -1912,6 +1952,10 @@ packages:
resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==} resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==}
engines: {node: ^10 || ^12 || >=14} engines: {node: ^10 || ^12 || >=14}
postcss@8.5.6:
resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==}
engines: {node: ^10 || ^12 || >=14}
prelude-ls@1.2.1: prelude-ls@1.2.1:
resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
engines: {node: '>= 0.8.0'} engines: {node: '>= 0.8.0'}
@ -1984,8 +2028,8 @@ packages:
engines: {node: '>=18.0.0', npm: '>=8.0.0'} engines: {node: '>=18.0.0', npm: '>=8.0.0'}
hasBin: true hasBin: true
rollup@4.40.2: rollup@4.50.1:
resolution: {integrity: sha512-tfUOg6DTP4rhQ3VjOO6B4wyrJnGOX85requAXvqYTHsOgb2TFJdZ3aWpT8W2kPoypSGP7dZUyzxJ9ee4buM5Fg==} resolution: {integrity: sha512-78E9voJHwnXQMiQdiqswVLZwJIzdBKJ1GdI5Zx6XwoFKUIk09/sSrr+05QFzvYb8q6Y9pPV45zzDuYa3907TZA==}
engines: {node: '>=18.0.0', npm: '>=8.0.0'} engines: {node: '>=18.0.0', npm: '>=8.0.0'}
hasBin: true hasBin: true
@ -2139,8 +2183,8 @@ packages:
symbol-tree@3.2.4: symbol-tree@3.2.4:
resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==}
tapable@2.2.1: tapable@2.2.3:
resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} resolution: {integrity: sha512-ZL6DDuAlRlLGghwcfmSn9sK3Hr6ArtyudlSAiCqQ6IfE+b+HHbydbYDIG15IfS5do+7XQQBdBiubF/cV2dnDzg==}
engines: {node: '>=6'} engines: {node: '>=6'}
term-size@2.2.1: term-size@2.2.1:
@ -2325,8 +2369,8 @@ packages:
terser: terser:
optional: true optional: true
vite@5.4.19: vite@5.4.20:
resolution: {integrity: sha512-qO3aKv3HoQC8QKiNSTuUM1l9o/XX3+c+VTgLHbJWHZGeTPVAg2XwazI9UWzoxjIJCGCV2zU60uqMzjeLZuULqA==} resolution: {integrity: sha512-j3lYzGC3P+B5Yfy/pfKNgVEg4+UtcIJcVRt2cDjIOmhLourAqPqf8P7acgxeiSgUB7E3p2P8/3gNIgDLpwzs4g==}
engines: {node: ^18.0.0 || >=20.0.0} engines: {node: ^18.0.0 || >=20.0.0}
hasBin: true hasBin: true
peerDependencies: peerDependencies:
@ -2731,6 +2775,11 @@ snapshots:
eslint: 9.9.1 eslint: 9.9.1
eslint-visitor-keys: 3.4.3 eslint-visitor-keys: 3.4.3
'@eslint-community/eslint-utils@4.9.0(eslint@9.9.1)':
dependencies:
eslint: 9.9.1
eslint-visitor-keys: 3.4.3
'@eslint-community/regexpp@4.12.1': {} '@eslint-community/regexpp@4.12.1': {}
'@eslint/config-array@0.18.0': '@eslint/config-array@0.18.0':
@ -2880,126 +2929,129 @@ snapshots:
optionalDependencies: optionalDependencies:
rollup: 4.22.4 rollup: 4.22.4
'@rollup/pluginutils@5.1.0(rollup@4.40.2)': '@rollup/pluginutils@5.1.0(rollup@4.50.1)':
dependencies: dependencies:
'@types/estree': 1.0.6 '@types/estree': 1.0.6
estree-walker: 2.0.2 estree-walker: 2.0.2
picomatch: 2.3.1 picomatch: 2.3.1
optionalDependencies: optionalDependencies:
rollup: 4.40.2 rollup: 4.50.1
'@rollup/rollup-android-arm-eabi@4.22.4': '@rollup/rollup-android-arm-eabi@4.22.4':
optional: true optional: true
'@rollup/rollup-android-arm-eabi@4.40.2': '@rollup/rollup-android-arm-eabi@4.50.1':
optional: true optional: true
'@rollup/rollup-android-arm64@4.22.4': '@rollup/rollup-android-arm64@4.22.4':
optional: true optional: true
'@rollup/rollup-android-arm64@4.40.2': '@rollup/rollup-android-arm64@4.50.1':
optional: true optional: true
'@rollup/rollup-darwin-arm64@4.22.4': '@rollup/rollup-darwin-arm64@4.22.4':
optional: true optional: true
'@rollup/rollup-darwin-arm64@4.40.2': '@rollup/rollup-darwin-arm64@4.50.1':
optional: true optional: true
'@rollup/rollup-darwin-x64@4.22.4': '@rollup/rollup-darwin-x64@4.22.4':
optional: true optional: true
'@rollup/rollup-darwin-x64@4.40.2': '@rollup/rollup-darwin-x64@4.50.1':
optional: true optional: true
'@rollup/rollup-freebsd-arm64@4.40.2': '@rollup/rollup-freebsd-arm64@4.50.1':
optional: true optional: true
'@rollup/rollup-freebsd-x64@4.40.2': '@rollup/rollup-freebsd-x64@4.50.1':
optional: true optional: true
'@rollup/rollup-linux-arm-gnueabihf@4.22.4': '@rollup/rollup-linux-arm-gnueabihf@4.22.4':
optional: true optional: true
'@rollup/rollup-linux-arm-gnueabihf@4.40.2': '@rollup/rollup-linux-arm-gnueabihf@4.50.1':
optional: true optional: true
'@rollup/rollup-linux-arm-musleabihf@4.22.4': '@rollup/rollup-linux-arm-musleabihf@4.22.4':
optional: true optional: true
'@rollup/rollup-linux-arm-musleabihf@4.40.2': '@rollup/rollup-linux-arm-musleabihf@4.50.1':
optional: true optional: true
'@rollup/rollup-linux-arm64-gnu@4.22.4': '@rollup/rollup-linux-arm64-gnu@4.22.4':
optional: true optional: true
'@rollup/rollup-linux-arm64-gnu@4.40.2': '@rollup/rollup-linux-arm64-gnu@4.50.1':
optional: true optional: true
'@rollup/rollup-linux-arm64-musl@4.22.4': '@rollup/rollup-linux-arm64-musl@4.22.4':
optional: true optional: true
'@rollup/rollup-linux-arm64-musl@4.40.2': '@rollup/rollup-linux-arm64-musl@4.50.1':
optional: true optional: true
'@rollup/rollup-linux-loongarch64-gnu@4.40.2': '@rollup/rollup-linux-loongarch64-gnu@4.50.1':
optional: true optional: true
'@rollup/rollup-linux-powerpc64le-gnu@4.22.4': '@rollup/rollup-linux-powerpc64le-gnu@4.22.4':
optional: true optional: true
'@rollup/rollup-linux-powerpc64le-gnu@4.40.2': '@rollup/rollup-linux-ppc64-gnu@4.50.1':
optional: true optional: true
'@rollup/rollup-linux-riscv64-gnu@4.22.4': '@rollup/rollup-linux-riscv64-gnu@4.22.4':
optional: true optional: true
'@rollup/rollup-linux-riscv64-gnu@4.40.2': '@rollup/rollup-linux-riscv64-gnu@4.50.1':
optional: true optional: true
'@rollup/rollup-linux-riscv64-musl@4.40.2': '@rollup/rollup-linux-riscv64-musl@4.50.1':
optional: true optional: true
'@rollup/rollup-linux-s390x-gnu@4.22.4': '@rollup/rollup-linux-s390x-gnu@4.22.4':
optional: true optional: true
'@rollup/rollup-linux-s390x-gnu@4.40.2': '@rollup/rollup-linux-s390x-gnu@4.50.1':
optional: true optional: true
'@rollup/rollup-linux-x64-gnu@4.22.4': '@rollup/rollup-linux-x64-gnu@4.22.4':
optional: true optional: true
'@rollup/rollup-linux-x64-gnu@4.40.2': '@rollup/rollup-linux-x64-gnu@4.50.1':
optional: true optional: true
'@rollup/rollup-linux-x64-musl@4.22.4': '@rollup/rollup-linux-x64-musl@4.22.4':
optional: true optional: true
'@rollup/rollup-linux-x64-musl@4.40.2': '@rollup/rollup-linux-x64-musl@4.50.1':
optional: true
'@rollup/rollup-openharmony-arm64@4.50.1':
optional: true optional: true
'@rollup/rollup-win32-arm64-msvc@4.22.4': '@rollup/rollup-win32-arm64-msvc@4.22.4':
optional: true optional: true
'@rollup/rollup-win32-arm64-msvc@4.40.2': '@rollup/rollup-win32-arm64-msvc@4.50.1':
optional: true optional: true
'@rollup/rollup-win32-ia32-msvc@4.22.4': '@rollup/rollup-win32-ia32-msvc@4.22.4':
optional: true optional: true
'@rollup/rollup-win32-ia32-msvc@4.40.2': '@rollup/rollup-win32-ia32-msvc@4.50.1':
optional: true optional: true
'@rollup/rollup-win32-x64-msvc@4.22.4': '@rollup/rollup-win32-x64-msvc@4.22.4':
optional: true optional: true
'@rollup/rollup-win32-x64-msvc@4.40.2': '@rollup/rollup-win32-x64-msvc@4.50.1':
optional: true optional: true
'@stylistic/eslint-plugin-js@1.8.0(eslint@9.9.1)': '@stylistic/eslint-plugin-js@1.8.0(eslint@9.9.1)':
dependencies: dependencies:
'@types/eslint': 8.56.12 '@types/eslint': 8.56.12
acorn: 8.14.1 acorn: 8.15.0
escape-string-regexp: 4.0.0 escape-string-regexp: 4.0.0
eslint: 9.9.1 eslint: 9.9.1
eslint-visitor-keys: 3.4.3 eslint-visitor-keys: 3.4.3
@ -3020,25 +3072,25 @@ snapshots:
typescript: 5.5.4 typescript: 5.5.4
typescript-eslint: 8.26.0(eslint@9.9.1)(typescript@5.5.4) typescript-eslint: 8.26.0(eslint@9.9.1)(typescript@5.5.4)
'@sveltejs/vite-plugin-svelte-inspector@3.0.0-next.2(@sveltejs/vite-plugin-svelte@4.0.0-next.6(svelte@packages+svelte)(vite@5.4.19(@types/node@20.12.7)(lightningcss@1.23.0)(sass@1.70.0)(terser@5.27.0)))(svelte@packages+svelte)(vite@5.4.19(@types/node@20.12.7)(lightningcss@1.23.0)(sass@1.70.0)(terser@5.27.0))': '@sveltejs/vite-plugin-svelte-inspector@3.0.0-next.2(@sveltejs/vite-plugin-svelte@4.0.0-next.6(svelte@packages+svelte)(vite@5.4.20(@types/node@20.12.7)(lightningcss@1.23.0)(sass@1.70.0)(terser@5.27.0)))(svelte@packages+svelte)(vite@5.4.20(@types/node@20.12.7)(lightningcss@1.23.0)(sass@1.70.0)(terser@5.27.0))':
dependencies: dependencies:
'@sveltejs/vite-plugin-svelte': 4.0.0-next.6(svelte@packages+svelte)(vite@5.4.19(@types/node@20.12.7)(lightningcss@1.23.0)(sass@1.70.0)(terser@5.27.0)) '@sveltejs/vite-plugin-svelte': 4.0.0-next.6(svelte@packages+svelte)(vite@5.4.20(@types/node@20.12.7)(lightningcss@1.23.0)(sass@1.70.0)(terser@5.27.0))
debug: 4.4.0 debug: 4.4.0
svelte: link:packages/svelte svelte: link:packages/svelte
vite: 5.4.19(@types/node@20.12.7)(lightningcss@1.23.0)(sass@1.70.0)(terser@5.27.0) vite: 5.4.20(@types/node@20.12.7)(lightningcss@1.23.0)(sass@1.70.0)(terser@5.27.0)
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
'@sveltejs/vite-plugin-svelte@4.0.0-next.6(svelte@packages+svelte)(vite@5.4.19(@types/node@20.12.7)(lightningcss@1.23.0)(sass@1.70.0)(terser@5.27.0))': '@sveltejs/vite-plugin-svelte@4.0.0-next.6(svelte@packages+svelte)(vite@5.4.20(@types/node@20.12.7)(lightningcss@1.23.0)(sass@1.70.0)(terser@5.27.0))':
dependencies: dependencies:
'@sveltejs/vite-plugin-svelte-inspector': 3.0.0-next.2(@sveltejs/vite-plugin-svelte@4.0.0-next.6(svelte@packages+svelte)(vite@5.4.19(@types/node@20.12.7)(lightningcss@1.23.0)(sass@1.70.0)(terser@5.27.0)))(svelte@packages+svelte)(vite@5.4.19(@types/node@20.12.7)(lightningcss@1.23.0)(sass@1.70.0)(terser@5.27.0)) '@sveltejs/vite-plugin-svelte-inspector': 3.0.0-next.2(@sveltejs/vite-plugin-svelte@4.0.0-next.6(svelte@packages+svelte)(vite@5.4.20(@types/node@20.12.7)(lightningcss@1.23.0)(sass@1.70.0)(terser@5.27.0)))(svelte@packages+svelte)(vite@5.4.20(@types/node@20.12.7)(lightningcss@1.23.0)(sass@1.70.0)(terser@5.27.0))
debug: 4.4.0 debug: 4.4.0
deepmerge: 4.3.1 deepmerge: 4.3.1
kleur: 4.1.5 kleur: 4.1.5
magic-string: 0.30.17 magic-string: 0.30.17
svelte: link:packages/svelte svelte: link:packages/svelte
vite: 5.4.19(@types/node@20.12.7)(lightningcss@1.23.0)(sass@1.70.0)(terser@5.27.0) vite: 5.4.20(@types/node@20.12.7)(lightningcss@1.23.0)(sass@1.70.0)(terser@5.27.0)
vitefu: 0.2.5(vite@5.4.19(@types/node@20.12.7)(lightningcss@1.23.0)(sass@1.70.0)(terser@5.27.0)) vitefu: 0.2.5(vite@5.4.20(@types/node@20.12.7)(lightningcss@1.23.0)(sass@1.70.0)(terser@5.27.0))
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
@ -3053,14 +3105,14 @@ snapshots:
'@types/eslint@8.56.12': '@types/eslint@8.56.12':
dependencies: dependencies:
'@types/estree': 1.0.7 '@types/estree': 1.0.8
'@types/json-schema': 7.0.15 '@types/json-schema': 7.0.15
'@types/estree@1.0.5': {} '@types/estree@1.0.5': {}
'@types/estree@1.0.6': {} '@types/estree@1.0.6': {}
'@types/estree@1.0.7': {} '@types/estree@1.0.8': {}
'@types/json-schema@7.0.15': {} '@types/json-schema@7.0.15': {}
@ -3103,15 +3155,28 @@ snapshots:
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
'@typescript-eslint/project-service@8.43.0(typescript@5.5.4)':
dependencies:
'@typescript-eslint/tsconfig-utils': 8.43.0(typescript@5.5.4)
'@typescript-eslint/types': 8.43.0
debug: 4.4.1
typescript: 5.5.4
transitivePeerDependencies:
- supports-color
'@typescript-eslint/scope-manager@8.26.0': '@typescript-eslint/scope-manager@8.26.0':
dependencies: dependencies:
'@typescript-eslint/types': 8.26.0 '@typescript-eslint/types': 8.26.0
'@typescript-eslint/visitor-keys': 8.26.0 '@typescript-eslint/visitor-keys': 8.26.0
'@typescript-eslint/scope-manager@8.32.1': '@typescript-eslint/scope-manager@8.43.0':
dependencies: dependencies:
'@typescript-eslint/types': 8.32.1 '@typescript-eslint/types': 8.43.0
'@typescript-eslint/visitor-keys': 8.32.1 '@typescript-eslint/visitor-keys': 8.43.0
'@typescript-eslint/tsconfig-utils@8.43.0(typescript@5.5.4)':
dependencies:
typescript: 5.5.4
'@typescript-eslint/type-utils@8.26.0(eslint@9.9.1)(typescript@5.5.4)': '@typescript-eslint/type-utils@8.26.0(eslint@9.9.1)(typescript@5.5.4)':
dependencies: dependencies:
@ -3126,7 +3191,7 @@ snapshots:
'@typescript-eslint/types@8.26.0': {} '@typescript-eslint/types@8.26.0': {}
'@typescript-eslint/types@8.32.1': {} '@typescript-eslint/types@8.43.0': {}
'@typescript-eslint/typescript-estree@8.26.0(typescript@5.5.4)': '@typescript-eslint/typescript-estree@8.26.0(typescript@5.5.4)':
dependencies: dependencies:
@ -3142,11 +3207,13 @@ snapshots:
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
'@typescript-eslint/typescript-estree@8.32.1(typescript@5.5.4)': '@typescript-eslint/typescript-estree@8.43.0(typescript@5.5.4)':
dependencies: dependencies:
'@typescript-eslint/types': 8.32.1 '@typescript-eslint/project-service': 8.43.0(typescript@5.5.4)
'@typescript-eslint/visitor-keys': 8.32.1 '@typescript-eslint/tsconfig-utils': 8.43.0(typescript@5.5.4)
debug: 4.4.0 '@typescript-eslint/types': 8.43.0
'@typescript-eslint/visitor-keys': 8.43.0
debug: 4.4.1
fast-glob: 3.3.3 fast-glob: 3.3.3
is-glob: 4.0.3 is-glob: 4.0.3
minimatch: 9.0.5 minimatch: 9.0.5
@ -3167,12 +3234,12 @@ snapshots:
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
'@typescript-eslint/utils@8.32.1(eslint@9.9.1)(typescript@5.5.4)': '@typescript-eslint/utils@8.43.0(eslint@9.9.1)(typescript@5.5.4)':
dependencies: dependencies:
'@eslint-community/eslint-utils': 4.7.0(eslint@9.9.1) '@eslint-community/eslint-utils': 4.9.0(eslint@9.9.1)
'@typescript-eslint/scope-manager': 8.32.1 '@typescript-eslint/scope-manager': 8.43.0
'@typescript-eslint/types': 8.32.1 '@typescript-eslint/types': 8.43.0
'@typescript-eslint/typescript-estree': 8.32.1(typescript@5.5.4) '@typescript-eslint/typescript-estree': 8.43.0(typescript@5.5.4)
eslint: 9.9.1 eslint: 9.9.1
typescript: 5.5.4 typescript: 5.5.4
transitivePeerDependencies: transitivePeerDependencies:
@ -3183,10 +3250,10 @@ snapshots:
'@typescript-eslint/types': 8.26.0 '@typescript-eslint/types': 8.26.0
eslint-visitor-keys: 4.2.0 eslint-visitor-keys: 4.2.0
'@typescript-eslint/visitor-keys@8.32.1': '@typescript-eslint/visitor-keys@8.43.0':
dependencies: dependencies:
'@typescript-eslint/types': 8.32.1 '@typescript-eslint/types': 8.43.0
eslint-visitor-keys: 4.2.0 eslint-visitor-keys: 4.2.1
'@vitest/coverage-v8@2.1.9(vitest@2.1.9(@types/node@20.12.7)(jsdom@25.0.1)(lightningcss@1.23.0)(sass@1.70.0)(terser@5.27.0))': '@vitest/coverage-v8@2.1.9(vitest@2.1.9(@types/node@20.12.7)(jsdom@25.0.1)(lightningcss@1.23.0)(sass@1.70.0)(terser@5.27.0))':
dependencies: dependencies:
@ -3250,13 +3317,13 @@ snapshots:
dependencies: dependencies:
acorn: 8.14.0 acorn: 8.14.0
acorn-jsx@5.3.2(acorn@8.14.1): acorn-jsx@5.3.2(acorn@8.15.0):
dependencies: dependencies:
acorn: 8.14.1 acorn: 8.15.0
acorn@8.14.0: {} acorn@8.14.0: {}
acorn@8.14.1: {} acorn@8.15.0: {}
agent-base@7.1.1: agent-base@7.1.1:
dependencies: dependencies:
@ -3416,6 +3483,10 @@ snapshots:
dependencies: dependencies:
ms: 2.1.3 ms: 2.1.3
debug@4.4.1:
dependencies:
ms: 2.1.3
decimal.js@10.4.3: {} decimal.js@10.4.3: {}
deep-eql@5.0.2: {} deep-eql@5.0.2: {}
@ -3464,10 +3535,10 @@ snapshots:
emoji-regex@9.2.2: {} emoji-regex@9.2.2: {}
enhanced-resolve@5.18.1: enhanced-resolve@5.18.3:
dependencies: dependencies:
graceful-fs: 4.2.11 graceful-fs: 4.2.11
tapable: 2.2.1 tapable: 2.2.3
enquirer@2.4.1: enquirer@2.4.1:
dependencies: dependencies:
@ -3519,7 +3590,7 @@ snapshots:
eslint-plugin-es-x@7.8.0(eslint@9.9.1): eslint-plugin-es-x@7.8.0(eslint@9.9.1):
dependencies: dependencies:
'@eslint-community/eslint-utils': 4.7.0(eslint@9.9.1) '@eslint-community/eslint-utils': 4.9.0(eslint@9.9.1)
'@eslint-community/regexpp': 4.12.1 '@eslint-community/regexpp': 4.12.1
eslint: 9.9.1 eslint: 9.9.1
eslint-compat-utils: 0.5.1(eslint@9.9.1) eslint-compat-utils: 0.5.1(eslint@9.9.1)
@ -3528,12 +3599,12 @@ snapshots:
eslint-plugin-n@17.16.1(eslint@9.9.1)(typescript@5.5.4): eslint-plugin-n@17.16.1(eslint@9.9.1)(typescript@5.5.4):
dependencies: dependencies:
'@eslint-community/eslint-utils': 4.7.0(eslint@9.9.1) '@eslint-community/eslint-utils': 4.9.0(eslint@9.9.1)
'@typescript-eslint/utils': 8.32.1(eslint@9.9.1)(typescript@5.5.4) '@typescript-eslint/utils': 8.43.0(eslint@9.9.1)(typescript@5.5.4)
enhanced-resolve: 5.18.1 enhanced-resolve: 5.18.3
eslint: 9.9.1 eslint: 9.9.1
eslint-plugin-es-x: 7.8.0(eslint@9.9.1) eslint-plugin-es-x: 7.8.0(eslint@9.9.1)
get-tsconfig: 4.10.0 get-tsconfig: 4.10.1
globals: 15.15.0 globals: 15.15.0
ignore: 5.3.2 ignore: 5.3.2
minimatch: 9.0.5 minimatch: 9.0.5
@ -3575,6 +3646,8 @@ snapshots:
eslint-visitor-keys@4.2.0: {} eslint-visitor-keys@4.2.0: {}
eslint-visitor-keys@4.2.1: {}
eslint@9.9.1: eslint@9.9.1:
dependencies: dependencies:
'@eslint-community/eslint-utils': 4.4.1(eslint@9.9.1) '@eslint-community/eslint-utils': 4.4.1(eslint@9.9.1)
@ -3624,8 +3697,8 @@ snapshots:
espree@9.6.1: espree@9.6.1:
dependencies: dependencies:
acorn: 8.14.1 acorn: 8.15.0
acorn-jsx: 5.3.2(acorn@8.14.1) acorn-jsx: 5.3.2(acorn@8.15.0)
eslint-visitor-keys: 3.4.3 eslint-visitor-keys: 3.4.3
esprima@4.0.1: {} esprima@4.0.1: {}
@ -3754,7 +3827,7 @@ snapshots:
function-bind@1.1.2: {} function-bind@1.1.2: {}
get-tsconfig@4.10.0: get-tsconfig@4.10.1:
dependencies: dependencies:
resolve-pkg-maps: 1.0.0 resolve-pkg-maps: 1.0.0
@ -4195,6 +4268,8 @@ snapshots:
picomatch@4.0.2: {} picomatch@4.0.2: {}
picomatch@4.0.3: {}
pify@4.0.1: {} pify@4.0.1: {}
playwright-core@1.46.1: {} playwright-core@1.46.1: {}
@ -4221,9 +4296,9 @@ snapshots:
dependencies: dependencies:
postcss: 8.5.3 postcss: 8.5.3
postcss-scss@4.0.9(postcss@8.5.3): postcss-scss@4.0.9(postcss@8.5.6):
dependencies: dependencies:
postcss: 8.5.3 postcss: 8.5.6
postcss-selector-parser@7.1.0: postcss-selector-parser@7.1.0:
dependencies: dependencies:
@ -4236,6 +4311,12 @@ snapshots:
picocolors: 1.1.1 picocolors: 1.1.1
source-map-js: 1.2.1 source-map-js: 1.2.1
postcss@8.5.6:
dependencies:
nanoid: 3.3.11
picocolors: 1.1.1
source-map-js: 1.2.1
prelude-ls@1.2.1: {} prelude-ls@1.2.1: {}
prettier-plugin-svelte@3.4.0(prettier@3.2.4)(svelte@packages+svelte): prettier-plugin-svelte@3.4.0(prettier@3.2.4)(svelte@packages+svelte):
@ -4309,30 +4390,31 @@ snapshots:
'@rollup/rollup-win32-x64-msvc': 4.22.4 '@rollup/rollup-win32-x64-msvc': 4.22.4
fsevents: 2.3.3 fsevents: 2.3.3
rollup@4.40.2: rollup@4.50.1:
dependencies: dependencies:
'@types/estree': 1.0.7 '@types/estree': 1.0.8
optionalDependencies: optionalDependencies:
'@rollup/rollup-android-arm-eabi': 4.40.2 '@rollup/rollup-android-arm-eabi': 4.50.1
'@rollup/rollup-android-arm64': 4.40.2 '@rollup/rollup-android-arm64': 4.50.1
'@rollup/rollup-darwin-arm64': 4.40.2 '@rollup/rollup-darwin-arm64': 4.50.1
'@rollup/rollup-darwin-x64': 4.40.2 '@rollup/rollup-darwin-x64': 4.50.1
'@rollup/rollup-freebsd-arm64': 4.40.2 '@rollup/rollup-freebsd-arm64': 4.50.1
'@rollup/rollup-freebsd-x64': 4.40.2 '@rollup/rollup-freebsd-x64': 4.50.1
'@rollup/rollup-linux-arm-gnueabihf': 4.40.2 '@rollup/rollup-linux-arm-gnueabihf': 4.50.1
'@rollup/rollup-linux-arm-musleabihf': 4.40.2 '@rollup/rollup-linux-arm-musleabihf': 4.50.1
'@rollup/rollup-linux-arm64-gnu': 4.40.2 '@rollup/rollup-linux-arm64-gnu': 4.50.1
'@rollup/rollup-linux-arm64-musl': 4.40.2 '@rollup/rollup-linux-arm64-musl': 4.50.1
'@rollup/rollup-linux-loongarch64-gnu': 4.40.2 '@rollup/rollup-linux-loongarch64-gnu': 4.50.1
'@rollup/rollup-linux-powerpc64le-gnu': 4.40.2 '@rollup/rollup-linux-ppc64-gnu': 4.50.1
'@rollup/rollup-linux-riscv64-gnu': 4.40.2 '@rollup/rollup-linux-riscv64-gnu': 4.50.1
'@rollup/rollup-linux-riscv64-musl': 4.40.2 '@rollup/rollup-linux-riscv64-musl': 4.50.1
'@rollup/rollup-linux-s390x-gnu': 4.40.2 '@rollup/rollup-linux-s390x-gnu': 4.50.1
'@rollup/rollup-linux-x64-gnu': 4.40.2 '@rollup/rollup-linux-x64-gnu': 4.50.1
'@rollup/rollup-linux-x64-musl': 4.40.2 '@rollup/rollup-linux-x64-musl': 4.50.1
'@rollup/rollup-win32-arm64-msvc': 4.40.2 '@rollup/rollup-openharmony-arm64': 4.50.1
'@rollup/rollup-win32-ia32-msvc': 4.40.2 '@rollup/rollup-win32-arm64-msvc': 4.50.1
'@rollup/rollup-win32-x64-msvc': 4.40.2 '@rollup/rollup-win32-ia32-msvc': 4.50.1
'@rollup/rollup-win32-x64-msvc': 4.50.1
fsevents: 2.3.3 fsevents: 2.3.3
rrweb-cssom@0.7.1: {} rrweb-cssom@0.7.1: {}
@ -4455,15 +4537,15 @@ snapshots:
eslint-scope: 8.4.0 eslint-scope: 8.4.0
eslint-visitor-keys: 4.2.0 eslint-visitor-keys: 4.2.0
espree: 10.1.0 espree: 10.1.0
postcss: 8.5.3 postcss: 8.5.6
postcss-scss: 4.0.9(postcss@8.5.3) postcss-scss: 4.0.9(postcss@8.5.6)
postcss-selector-parser: 7.1.0 postcss-selector-parser: 7.1.0
optionalDependencies: optionalDependencies:
svelte: link:packages/svelte svelte: link:packages/svelte
symbol-tree@3.2.4: {} symbol-tree@3.2.4: {}
tapable@2.2.1: {} tapable@2.2.3: {}
term-size@2.2.1: {} term-size@2.2.1: {}
@ -4543,7 +4625,7 @@ snapshots:
ts-declaration-location@1.0.7(typescript@5.5.4): ts-declaration-location@1.0.7(typescript@5.5.4):
dependencies: dependencies:
picomatch: 4.0.2 picomatch: 4.0.3
typescript: 5.5.4 typescript: 5.5.4
type-check@0.4.0: type-check@0.4.0:
@ -4582,7 +4664,7 @@ snapshots:
debug: 4.4.0 debug: 4.4.0
es-module-lexer: 1.6.0 es-module-lexer: 1.6.0
pathe: 1.1.2 pathe: 1.1.2
vite: 5.4.19(@types/node@20.12.7)(lightningcss@1.23.0)(sass@1.70.0)(terser@5.27.0) vite: 5.4.20(@types/node@20.12.7)(lightningcss@1.23.0)(sass@1.70.0)(terser@5.27.0)
transitivePeerDependencies: transitivePeerDependencies:
- '@types/node' - '@types/node'
- less - less
@ -4594,10 +4676,10 @@ snapshots:
- supports-color - supports-color
- terser - terser
vite-plugin-inspect@0.8.4(rollup@4.40.2)(vite@5.4.19(@types/node@20.12.7)(lightningcss@1.23.0)(sass@1.70.0)(terser@5.27.0)): vite-plugin-inspect@0.8.4(rollup@4.50.1)(vite@5.4.20(@types/node@20.12.7)(lightningcss@1.23.0)(sass@1.70.0)(terser@5.27.0)):
dependencies: dependencies:
'@antfu/utils': 0.7.8 '@antfu/utils': 0.7.8
'@rollup/pluginutils': 5.1.0(rollup@4.40.2) '@rollup/pluginutils': 5.1.0(rollup@4.50.1)
debug: 4.4.0 debug: 4.4.0
error-stack-parser-es: 0.1.1 error-stack-parser-es: 0.1.1
fs-extra: 11.2.0 fs-extra: 11.2.0
@ -4605,7 +4687,7 @@ snapshots:
perfect-debounce: 1.0.0 perfect-debounce: 1.0.0
picocolors: 1.1.1 picocolors: 1.1.1
sirv: 2.0.4 sirv: 2.0.4
vite: 5.4.19(@types/node@20.12.7)(lightningcss@1.23.0)(sass@1.70.0)(terser@5.27.0) vite: 5.4.20(@types/node@20.12.7)(lightningcss@1.23.0)(sass@1.70.0)(terser@5.27.0)
transitivePeerDependencies: transitivePeerDependencies:
- rollup - rollup
- supports-color - supports-color
@ -4613,7 +4695,7 @@ snapshots:
vite@5.4.14(@types/node@20.12.7)(lightningcss@1.23.0)(sass@1.70.0)(terser@5.27.0): vite@5.4.14(@types/node@20.12.7)(lightningcss@1.23.0)(sass@1.70.0)(terser@5.27.0):
dependencies: dependencies:
esbuild: 0.21.5 esbuild: 0.21.5
postcss: 8.5.3 postcss: 8.5.6
rollup: 4.22.4 rollup: 4.22.4
optionalDependencies: optionalDependencies:
'@types/node': 20.12.7 '@types/node': 20.12.7
@ -4622,11 +4704,11 @@ snapshots:
sass: 1.70.0 sass: 1.70.0
terser: 5.27.0 terser: 5.27.0
vite@5.4.19(@types/node@20.12.7)(lightningcss@1.23.0)(sass@1.70.0)(terser@5.27.0): vite@5.4.20(@types/node@20.12.7)(lightningcss@1.23.0)(sass@1.70.0)(terser@5.27.0):
dependencies: dependencies:
esbuild: 0.21.5 esbuild: 0.21.5
postcss: 8.5.3 postcss: 8.5.6
rollup: 4.40.2 rollup: 4.50.1
optionalDependencies: optionalDependencies:
'@types/node': 20.12.7 '@types/node': 20.12.7
fsevents: 2.3.3 fsevents: 2.3.3
@ -4634,9 +4716,9 @@ snapshots:
sass: 1.70.0 sass: 1.70.0
terser: 5.27.0 terser: 5.27.0
vitefu@0.2.5(vite@5.4.19(@types/node@20.12.7)(lightningcss@1.23.0)(sass@1.70.0)(terser@5.27.0)): vitefu@0.2.5(vite@5.4.20(@types/node@20.12.7)(lightningcss@1.23.0)(sass@1.70.0)(terser@5.27.0)):
optionalDependencies: optionalDependencies:
vite: 5.4.19(@types/node@20.12.7)(lightningcss@1.23.0)(sass@1.70.0)(terser@5.27.0) vite: 5.4.20(@types/node@20.12.7)(lightningcss@1.23.0)(sass@1.70.0)(terser@5.27.0)
vitest@2.1.9(@types/node@20.12.7)(jsdom@25.0.1)(lightningcss@1.23.0)(sass@1.70.0)(terser@5.27.0): vitest@2.1.9(@types/node@20.12.7)(jsdom@25.0.1)(lightningcss@1.23.0)(sass@1.70.0)(terser@5.27.0):
dependencies: dependencies:

Loading…
Cancel
Save