diff --git a/apps/vhs/package.json b/apps/vhs/package.json index 21ee829..56555d5 100644 --- a/apps/vhs/package.json +++ b/apps/vhs/package.json @@ -11,7 +11,7 @@ "url": "git+https://github.com/robonen/tools.git", "directory": "./apps/vhs" }, - "packageManager": "pnpm@9.12.0", + "packageManager": "pnpm@9.12.2", "engines": { "bun": ">=1.1.27" }, @@ -21,6 +21,6 @@ }, "devDependencies": { "@robonen/tsconfig": "workspace:*", - "@types/bun": "^1.1.10" + "@types/bun": "^1.1.12" } } diff --git a/package.json b/package.json index e8f376f..38a405d 100644 --- a/package.json +++ b/package.json @@ -15,18 +15,18 @@ "type": "git", "url": "git+https://github.com/robonen/tools.git" }, - "packageManager": "pnpm@9.12.0", + "packageManager": "pnpm@9.12.2", "engines": { "node": ">=20.18.0" }, "type": "module", "devDependencies": { - "@types/node": "^20.16.10", + "@types/node": "^20.16.14", "citty": "^0.1.6", - "jiti": "^2.2.1", + "jiti": "^2.3.3", "pathe": "^1.1.2", "scule": "^1.3.0", - "vitepress": "^1.3.4" + "vitepress": "^1.4.1" }, "scripts": { "all:build": "pnpm -r build", diff --git a/packages/platform/build.config.ts b/packages/platform/build.config.ts new file mode 100644 index 0000000..9195cb6 --- /dev/null +++ b/packages/platform/build.config.ts @@ -0,0 +1,9 @@ +import { defineBuildConfig } from 'unbuild'; + +export default defineBuildConfig({ + rollup: { + esbuild: { + // minify: true, + }, + }, +}); \ No newline at end of file diff --git a/packages/platform/jsr.json b/packages/platform/jsr.json index 8e8f5bf..3a0d5e4 100644 --- a/packages/platform/jsr.json +++ b/packages/platform/jsr.json @@ -1,5 +1,7 @@ { + "$schema": "https://jsr.io/schema/config-file.v1.json", "name": "@robonen/platform", - "version": "0.0.0", + "license": "Apache-2.0", + "version": "0.0.2", "exports": "./src/index.ts" } \ No newline at end of file diff --git a/packages/platform/package.json b/packages/platform/package.json index 42eca78..d1e2454 100644 --- a/packages/platform/package.json +++ b/packages/platform/package.json @@ -1,17 +1,24 @@ { "name": "@robonen/platform", - "private": true, - "version": "0.0.0", - "license": "UNLICENSED", - "description": "", - "keywords": [], + "version": "0.0.2", + "license": "Apache-2.0", + "description": "Platform dependent utilities for javascript development", + "keywords": [ + "javascript", + "typescript", + "browser", + "platform", + "node", + "bun", + "deno" + ], "author": "Robonen Andrew ", "repository": { "type": "git", "url": "git+https://github.com/robonen/tools.git", - "directory": "./packages/platform" + "directory": "packages/platform" }, - "packageManager": "pnpm@9.12.0", + "packageManager": "pnpm@9.12.2", "engines": { "node": ">=20.18.0" }, @@ -19,18 +26,21 @@ "files": [ "dist" ], - "main": "./dist/index.umd.js", - "module": "./dist/index.js", + "main": "./dist/index.cjs", + "module": "./dist/index.mjs", "types": "./dist/index.d.ts", "exports": { ".": { - "import": "./dist/index.js", - "require": "./dist/index.umd.js", + "import": "./dist/index.mjs", + "require": "./dist/index.cjs", "types": "./dist/index.d.ts" } }, - "scripts": {}, + "scripts": { + "build": "unbuild" + }, "devDependencies": { - "@robonen/tsconfig": "workspace:*" + "@robonen/tsconfig": "workspace:*", + "unbuild": "catalog:" } } diff --git a/packages/platform/src/index.ts b/packages/platform/src/index.ts new file mode 100644 index 0000000..68b6bee --- /dev/null +++ b/packages/platform/src/index.ts @@ -0,0 +1 @@ +export * from './multi'; \ No newline at end of file diff --git a/packages/platform/src/multi/global/index.ts b/packages/platform/src/multi/global/index.ts index 6cad097..e337e88 100644 --- a/packages/platform/src/multi/global/index.ts +++ b/packages/platform/src/multi/global/index.ts @@ -5,7 +5,7 @@ * @category Multi * @description Global object that works in any environment * - * @since 0.0.2 + * @since 0.0.1 */ export const _global = typeof globalThis !== 'undefined' @@ -17,3 +17,12 @@ export const _global = : typeof self !== 'undefined' ? self : undefined; + +/** + * @name isClient + * @category Multi + * @description Check if the current environment is the client + * + * @since 0.0.1 + */ +export const isClient = typeof window !== 'undefined' && typeof document !== 'undefined'; \ No newline at end of file diff --git a/packages/platform/tsconfig.json b/packages/platform/tsconfig.json index d6d22e4..2d43941 100644 --- a/packages/platform/tsconfig.json +++ b/packages/platform/tsconfig.json @@ -1,3 +1,6 @@ { - "extends": "@robonen/tsconfig/tsconfig.json" + "extends": "@robonen/tsconfig/tsconfig.json", + "compilerOptions": { + "lib": ["DOM"] + } } \ No newline at end of file diff --git a/packages/renovate/package.json b/packages/renovate/package.json index 7e9e9bf..d91a1b1 100644 --- a/packages/renovate/package.json +++ b/packages/renovate/package.json @@ -16,7 +16,7 @@ "url": "git+https://github.com/robonen/tools.git", "directory": "packages/renovate" }, - "packageManager": "pnpm@9.12.0", + "packageManager": "pnpm@9.12.2", "engines": { "node": ">=20.18.0" }, @@ -27,6 +27,6 @@ "test": "renovate-config-validator ./default.json" }, "devDependencies": { - "renovate": "^38.110.1" + "renovate": "^38.130.0" } } diff --git a/packages/stdlib/jsr.json b/packages/stdlib/jsr.json index c80825d..088ac2d 100644 --- a/packages/stdlib/jsr.json +++ b/packages/stdlib/jsr.json @@ -1,6 +1,6 @@ { "$schema": "https://jsr.io/schema/config-file.v1.json", "name": "@robonen/stdlib", - "version": "0.0.1", + "version": "0.0.2", "exports": "./src/index.ts" } \ No newline at end of file diff --git a/packages/stdlib/package.json b/packages/stdlib/package.json index 795af2e..fa7fa26 100644 --- a/packages/stdlib/package.json +++ b/packages/stdlib/package.json @@ -1,7 +1,7 @@ { "name": "@robonen/stdlib", - "version": "0.0.1", - "license": "UNLICENSED", + "version": "0.0.2", + "license": "Apache-2.0", "description": "A collection of tools, utilities, and helpers for TypeScript", "keywords": [ "stdlib", @@ -18,7 +18,7 @@ "url": "git+https://github.com/robonen/tools.git", "directory": "packages/stdlib" }, - "packageManager": "pnpm@9.12.0", + "packageManager": "pnpm@9.12.2", "engines": { "node": ">=20.18.0" }, diff --git a/packages/stdlib/src/async/index.ts b/packages/stdlib/src/async/index.ts new file mode 100644 index 0000000..e69de29 diff --git a/packages/stdlib/src/async/pool/index.ts b/packages/stdlib/src/async/pool/index.ts new file mode 100644 index 0000000..4a6125c --- /dev/null +++ b/packages/stdlib/src/async/pool/index.ts @@ -0,0 +1,3 @@ +export type AsyncPoolOptions = { + concurrency?: number; +} \ No newline at end of file diff --git a/packages/stdlib/src/bits/flags/index.ts b/packages/stdlib/src/bits/flags/index.ts index 1e54fc7..36f5e86 100644 --- a/packages/stdlib/src/bits/flags/index.ts +++ b/packages/stdlib/src/bits/flags/index.ts @@ -1,5 +1,7 @@ /** - * Create a function that generates unique flags + * @name flagsGenerator + * @category Bits + * @description Create a function that generates unique flags * * @returns {Function} A function that generates unique flags * @throws {RangeError} If more than 31 flags are created @@ -20,7 +22,9 @@ export function flagsGenerator() { } /** - * Function to combine multiple flags using the AND operator + * @name and + * @category Bits + * @description Function to combine multiple flags using the AND operator * * @param {number[]} flags - The flags to combine * @returns {number} The combined flags @@ -32,7 +36,9 @@ export function and(...flags: number[]) { } /** - * Function to combine multiple flags using the OR operator + * @name or + * @category Bits + * @description Function to combine multiple flags using the OR operator * * @param {number[]} flags - The flags to combine * @returns {number} The combined flags @@ -44,7 +50,9 @@ export function or(...flags: number[]) { } /** - * Function to apply the NOT operator to a flag + * @name not + * @category Bits + * @description Function to combine multiple flags using the XOR operator * * @param {number} flag - The flag to apply the NOT operator to * @returns {number} The result of the NOT operator @@ -56,7 +64,9 @@ export function not(flag: number) { } /** - * Function to make sure a flag has a specific bit set + * @name has + * @category Bits + * @description Function to make sure a flag has a specific bit set * * @param {number} flag - The flag to check * @param {number} other - Flag to check @@ -69,7 +79,9 @@ export function has(flag: number, other: number) { } /** - * Function to check if a flag is set + * @name is + * @category Bits + * @description Function to check if a flag is set * * @param {number} flag - The flag to check * @returns {boolean} Whether the flag is set @@ -81,7 +93,9 @@ export function is(flag: number) { } /** - * Function to unset a flag + * @name unset + * @category Bits + * @description Function to unset a flag * * @param {number} flag - Source flag * @param {number} other - Flag to unset @@ -94,7 +108,9 @@ export function unset(flag: number, other: number) { } /** - * Function to toggle (xor) a flag + * @name toggle + * @category Bits + * @description Function to toggle (xor) a flag * * @param {number} flag - Source flag * @param {number} other - Flag to toggle diff --git a/packages/stdlib/src/index.ts b/packages/stdlib/src/index.ts index 58694d8..94b37ef 100644 --- a/packages/stdlib/src/index.ts +++ b/packages/stdlib/src/index.ts @@ -5,3 +5,4 @@ export * from './bits'; export * from './structs'; export * from './arrays'; export * from './types'; +export * from './utils' diff --git a/packages/stdlib/src/math/basic/clamp/index.test.ts b/packages/stdlib/src/math/basic/clamp/index.test.ts index 3d49e3d..e637d0a 100644 --- a/packages/stdlib/src/math/basic/clamp/index.test.ts +++ b/packages/stdlib/src/math/basic/clamp/index.test.ts @@ -43,4 +43,39 @@ describe('clamp', () => { // negative range and value expect(clamp(-10, -100, -5)).toBe(-10); }); + + it('handle NaN and Infinity', () => { + // value is NaN + expect(clamp(NaN, 0, 100)).toBe(NaN); + + // min is NaN + expect(clamp(50, NaN, 100)).toBe(NaN); + + // max is NaN + expect(clamp(50, 0, NaN)).toBe(NaN); + + // value is Infinity + expect(clamp(Infinity, 0, 100)).toBe(100); + + // min is Infinity + expect(clamp(50, Infinity, 100)).toBe(100); + + // max is Infinity + expect(clamp(50, 0, Infinity)).toBe(50); + + // min and max are Infinity + expect(clamp(50, Infinity, Infinity)).toBe(Infinity); + + // value is -Infinity + expect(clamp(-Infinity, 0, 100)).toBe(0); + + // min is -Infinity + expect(clamp(50, -Infinity, 100)).toBe(50); + + // max is -Infinity + expect(clamp(50, 0, -Infinity)).toBe(-Infinity); + + // min and max are -Infinity + expect(clamp(50, -Infinity, -Infinity)).toBe(-Infinity); + }); }); \ No newline at end of file diff --git a/packages/stdlib/src/math/basic/clamp/index.ts b/packages/stdlib/src/math/basic/clamp/index.ts index bd57a9c..898adc6 100644 --- a/packages/stdlib/src/math/basic/clamp/index.ts +++ b/packages/stdlib/src/math/basic/clamp/index.ts @@ -1,5 +1,7 @@ /** - * Clamps a number between a minimum and maximum value + * @name clamp + * @category Math + * @description Clamps a number between a minimum and maximum value * * @param {number} value The number to clamp * @param {number} min Minimum value diff --git a/packages/stdlib/src/math/basic/lerp/index.test.ts b/packages/stdlib/src/math/basic/lerp/index.test.ts index 0e0dd74..c0455cb 100644 --- a/packages/stdlib/src/math/basic/lerp/index.test.ts +++ b/packages/stdlib/src/math/basic/lerp/index.test.ts @@ -1,5 +1,5 @@ import {describe, it, expect} from 'vitest'; -import {inverseLerp, lerp} from './index'; +import {inverseLerp, lerp} from '.'; describe('lerp', () => { it('interpolates between two values', () => { diff --git a/packages/stdlib/src/math/basic/lerp/index.ts b/packages/stdlib/src/math/basic/lerp/index.ts index 42cf4e3..ca08764 100644 --- a/packages/stdlib/src/math/basic/lerp/index.ts +++ b/packages/stdlib/src/math/basic/lerp/index.ts @@ -1,5 +1,7 @@ /** - * Linearly interpolates between two values + * @name lerp + * @category Math + * @description Linearly interpolates between two values * * @param {number} start The start value * @param {number} end The end value @@ -13,7 +15,9 @@ export function lerp(start: number, end: number, t: number) { } /** - * Inverse linear interpolation between two values + * @name inverseLerp + * @category Math + * @description Inverse linear interpolation between two values * * @param {number} start The start value * @param {number} end The end value diff --git a/packages/stdlib/src/math/basic/remap/index.test.ts b/packages/stdlib/src/math/basic/remap/index.test.ts index 0597f80..778b249 100644 --- a/packages/stdlib/src/math/basic/remap/index.test.ts +++ b/packages/stdlib/src/math/basic/remap/index.test.ts @@ -1,5 +1,5 @@ import {describe, expect, it} from 'vitest'; -import {remap} from './index'; +import {remap} from '.'; describe('remap', () => { it('map values from one range to another', () => { diff --git a/packages/stdlib/src/math/basic/remap/index.ts b/packages/stdlib/src/math/basic/remap/index.ts index c2dbc83..ddf5a5e 100644 --- a/packages/stdlib/src/math/basic/remap/index.ts +++ b/packages/stdlib/src/math/basic/remap/index.ts @@ -2,7 +2,9 @@ import { clamp } from '../clamp'; import {inverseLerp, lerp} from '../lerp'; /** - * Map a value from one range to another + * @name remap + * @category Math + * @description Map a value from one range to another * * @param {number} value The value to map * @param {number} in_min The minimum value of the input range diff --git a/packages/stdlib/src/math/bigint/clampBigInt/index.test.ts b/packages/stdlib/src/math/bigint/clampBigInt/index.test.ts index 9a59501..0c9fabc 100644 --- a/packages/stdlib/src/math/bigint/clampBigInt/index.test.ts +++ b/packages/stdlib/src/math/bigint/clampBigInt/index.test.ts @@ -1,5 +1,5 @@ import {describe, it, expect} from 'vitest'; -import {clampBigInt} from './index'; +import {clampBigInt} from '.'; describe('clampBigInt', () => { it('clamp a value within the given range', () => { diff --git a/packages/stdlib/src/math/bigint/clampBigInt/index.ts b/packages/stdlib/src/math/bigint/clampBigInt/index.ts index 42a3fac..a9a3200 100644 --- a/packages/stdlib/src/math/bigint/clampBigInt/index.ts +++ b/packages/stdlib/src/math/bigint/clampBigInt/index.ts @@ -2,7 +2,9 @@ import {minBigInt} from '../minBigInt'; import {maxBigInt} from '../maxBigInt'; /** - * Clamps a bigint between a minimum and maximum value + * @name clampBigInt + * @category Math + * @description Clamps a bigint between a minimum and maximum value * * @param {bigint} value The number to clamp * @param {bigint} min Minimum value diff --git a/packages/stdlib/src/math/bigint/lerpBigInt/index.test.ts b/packages/stdlib/src/math/bigint/lerpBigInt/index.test.ts index 4d40c94..95e6f5d 100644 --- a/packages/stdlib/src/math/bigint/lerpBigInt/index.test.ts +++ b/packages/stdlib/src/math/bigint/lerpBigInt/index.test.ts @@ -1,5 +1,5 @@ import {describe, it, expect} from 'vitest'; -import {inverseLerpBigInt, lerpBigInt} from './index'; +import {inverseLerpBigInt, lerpBigInt} from '.'; const MAX_SAFE_INTEGER = BigInt(Number.MAX_SAFE_INTEGER); diff --git a/packages/stdlib/src/math/bigint/lerpBigInt/index.ts b/packages/stdlib/src/math/bigint/lerpBigInt/index.ts index 5006038..8772b27 100644 --- a/packages/stdlib/src/math/bigint/lerpBigInt/index.ts +++ b/packages/stdlib/src/math/bigint/lerpBigInt/index.ts @@ -1,5 +1,7 @@ /** - * Linearly interpolates between bigint values + * @name lerpBigInt + * @category Math + * @description Linearly interpolates between bigint values * * @param {bigint} start The start value * @param {bigint} end The end value @@ -13,7 +15,9 @@ export function lerpBigInt(start: bigint, end: bigint, t: number) { } /** - * Inverse linear interpolation between two bigint values + * @name inverseLerpBigInt + * @category Math + * @description Inverse linear interpolation between two bigint values * * @param {bigint} start The start value * @param {bigint} end The end value diff --git a/packages/stdlib/src/math/bigint/maxBigInt/index.test.ts b/packages/stdlib/src/math/bigint/maxBigInt/index.test.ts index 8f4dbe5..a88ef2b 100644 --- a/packages/stdlib/src/math/bigint/maxBigInt/index.test.ts +++ b/packages/stdlib/src/math/bigint/maxBigInt/index.test.ts @@ -1,5 +1,5 @@ import { describe, it, expect } from 'vitest'; -import { maxBigInt } from './index'; +import { maxBigInt } from '.'; describe('maxBigInt', () => { it('returns -Infinity when no values are provided', () => { diff --git a/packages/stdlib/src/math/bigint/maxBigInt/index.ts b/packages/stdlib/src/math/bigint/maxBigInt/index.ts index f47f015..fe386c9 100644 --- a/packages/stdlib/src/math/bigint/maxBigInt/index.ts +++ b/packages/stdlib/src/math/bigint/maxBigInt/index.ts @@ -1,5 +1,7 @@ /** - * Like `Math.max` but for BigInts + * @name maxBigInt + * @category Math + * @description Like `Math.max` but for BigInts * * @param {...bigint} values The values to compare * @returns {bigint} The largest value diff --git a/packages/stdlib/src/math/bigint/minBigInt/index.test.ts b/packages/stdlib/src/math/bigint/minBigInt/index.test.ts index fbfb73a..ca601ed 100644 --- a/packages/stdlib/src/math/bigint/minBigInt/index.test.ts +++ b/packages/stdlib/src/math/bigint/minBigInt/index.test.ts @@ -1,5 +1,5 @@ import {describe, it, expect} from 'vitest'; -import {minBigInt} from './index'; +import {minBigInt} from '.'; describe('minBigInt', () => { it('returns Infinity when no values are provided', () => { diff --git a/packages/stdlib/src/math/bigint/minBigInt/index.ts b/packages/stdlib/src/math/bigint/minBigInt/index.ts index 03af83e..bddbe19 100644 --- a/packages/stdlib/src/math/bigint/minBigInt/index.ts +++ b/packages/stdlib/src/math/bigint/minBigInt/index.ts @@ -1,5 +1,7 @@ /** - * Like `Math.min` but for BigInts + * @name minBigInt + * @category Math + * @description Like `Math.min` but for BigInts * * @param {...bigint} values The values to compare * @returns {bigint} The smallest value diff --git a/packages/stdlib/src/math/bigint/remapBigInt/index.test.ts b/packages/stdlib/src/math/bigint/remapBigInt/index.test.ts index c3cfc29..a934aaa 100644 --- a/packages/stdlib/src/math/bigint/remapBigInt/index.test.ts +++ b/packages/stdlib/src/math/bigint/remapBigInt/index.test.ts @@ -1,5 +1,5 @@ import {describe, expect, it} from 'vitest'; -import {remapBigInt} from './index'; +import {remapBigInt} from '.'; describe('remapBigInt', () => { it('map values from one range to another', () => { diff --git a/packages/stdlib/src/math/bigint/remapBigInt/index.ts b/packages/stdlib/src/math/bigint/remapBigInt/index.ts index 0530ed8..2de7a9d 100644 --- a/packages/stdlib/src/math/bigint/remapBigInt/index.ts +++ b/packages/stdlib/src/math/bigint/remapBigInt/index.ts @@ -2,7 +2,9 @@ import { clampBigInt } from '../clampBigInt'; import {inverseLerpBigInt, lerpBigInt} from '../lerpBigInt'; /** - * Map a bigint value from one range to another + * @name remapBigInt + * @category Math + * @description Map a bigint value from one range to another * * @param {bigint} value The value to map * @param {bigint} in_min The minimum value of the input range diff --git a/packages/stdlib/src/patterns/behavioral/pubsub/index.test.ts b/packages/stdlib/src/patterns/behavioral/pubsub/index.test.ts index 54ab8fa..c329d19 100644 --- a/packages/stdlib/src/patterns/behavioral/pubsub/index.test.ts +++ b/packages/stdlib/src/patterns/behavioral/pubsub/index.test.ts @@ -1,10 +1,13 @@ import { describe, it, expect, beforeEach, vi } from 'vitest'; -import { PubSub } from './index'; +import { PubSub } from '.'; describe('pubsub', () => { + const event3 = Symbol('event3'); + let eventBus: PubSub<{ event1: (arg: string) => void; - event2: () => void + event2: () => void; + [event3]: () => void; }>; beforeEach(() => { @@ -32,6 +35,15 @@ describe('pubsub', () => { expect(listener2).toHaveBeenCalledWith('Hello'); }); + it('emit symbol event', () => { + const listener = vi.fn(); + + eventBus.on(event3, listener); + eventBus.emit(event3); + + expect(listener).toHaveBeenCalled(); + }); + it('add a one-time listener and emit an event', () => { const listener = vi.fn(); diff --git a/packages/stdlib/src/patterns/behavioral/pubsub/index.ts b/packages/stdlib/src/patterns/behavioral/pubsub/index.ts index 8e31a3a..6017531 100644 --- a/packages/stdlib/src/patterns/behavioral/pubsub/index.ts +++ b/packages/stdlib/src/patterns/behavioral/pubsub/index.ts @@ -1,8 +1,10 @@ export type Subscriber = (...args: any[]) => void; -export type EventsRecord = Record; +export type EventsRecord = Record; /** - * Simple PubSub implementation + * @name PubSub + * @category Patterns + * @description Simple PubSub implementation * * @since 0.0.2 * diff --git a/packages/stdlib/src/structs/stack/index.test.ts b/packages/stdlib/src/structs/stack/index.test.ts index 748cabe..e67522a 100644 --- a/packages/stdlib/src/structs/stack/index.test.ts +++ b/packages/stdlib/src/structs/stack/index.test.ts @@ -1,5 +1,5 @@ import { describe, it, expect } from 'vitest'; -import { Stack } from './index'; +import { Stack } from '.'; describe('stack', () => { describe('constructor', () => { diff --git a/packages/stdlib/src/structs/stack/index.ts b/packages/stdlib/src/structs/stack/index.ts index 07a37f1..72cee96 100644 --- a/packages/stdlib/src/structs/stack/index.ts +++ b/packages/stdlib/src/structs/stack/index.ts @@ -3,7 +3,9 @@ export type StackOptions = { }; /** - * Represents a stack data structure + * @name Stack + * @category Data Structures + * @description Represents a stack data structure * * @since 0.0.2 * diff --git a/packages/stdlib/src/text/levenshtein-distance/index.ts b/packages/stdlib/src/text/levenshtein-distance/index.ts index 69bf150..8ddd0ec 100644 --- a/packages/stdlib/src/text/levenshtein-distance/index.ts +++ b/packages/stdlib/src/text/levenshtein-distance/index.ts @@ -1,5 +1,7 @@ /** - * Calculate the Levenshtein distance between two strings + * @name levenshteinDistance + * @category Text + * @description Calculate the Levenshtein distance between two strings * * @param {string} left First string * @param {string} right Second string diff --git a/packages/stdlib/src/text/template/index.test.ts b/packages/stdlib/src/text/template/index.test.ts index b896be1..2103056 100644 --- a/packages/stdlib/src/text/template/index.test.ts +++ b/packages/stdlib/src/text/template/index.test.ts @@ -1,5 +1,5 @@ import { describe, expect, it } from 'vitest'; -import { templateObject } from './index'; +import { templateObject } from '.'; describe('templateObject', () => { // it('replace template placeholders with corresponding values from args', () => { diff --git a/packages/stdlib/src/text/trigram-distance/index.ts b/packages/stdlib/src/text/trigram-distance/index.ts index 2c813f4..b1458dc 100644 --- a/packages/stdlib/src/text/trigram-distance/index.ts +++ b/packages/stdlib/src/text/trigram-distance/index.ts @@ -1,7 +1,9 @@ export type Trigrams = Map; /** - * Extracts trigrams from a text and returns a map of trigram to count + * @name trigramProfile + * @category Text + * @description Extracts trigrams from a text and returns a map of trigram to count * * @param {string} text The text to extract trigrams * @returns {Trigrams} A map of trigram to count @@ -23,7 +25,9 @@ export function trigramProfile(text: string): Trigrams { } /** - * Calculates the trigram distance between two strings + * @name trigramDistance + * @category Text + * @description Calculates the trigram distance between two strings * * @param {Trigrams} left First text trigram profile * @param {Trigrams} right Second text trigram profile diff --git a/packages/stdlib/src/types/js/casts.ts b/packages/stdlib/src/types/js/casts.ts index 6190d84..11664b3 100644 --- a/packages/stdlib/src/types/js/casts.ts +++ b/packages/stdlib/src/types/js/casts.ts @@ -1,7 +1,11 @@ /** - * To string any value. + * @name toString + * @category Types + * @description To string any value * * @param {any} value * @returns {string} + * + * @since 0.0.2 */ export const toString = (value: any): string => Object.prototype.toString.call(value); \ No newline at end of file diff --git a/packages/stdlib/src/types/js/complex.ts b/packages/stdlib/src/types/js/complex.ts index 94e4eb0..2915e0e 100644 --- a/packages/stdlib/src/types/js/complex.ts +++ b/packages/stdlib/src/types/js/complex.ts @@ -1,81 +1,121 @@ import { toString } from '.'; /** - * Check if a value is an array. + * @name isFunction + * @category Types + * @description Check if a value is an array * * @param {any} value * @returns {value is any[]} + * + * @since 0.0.2 */ export const isArray = (value: any): value is any[] => Array.isArray(value); /** - * Check if a value is an object. + * @name isObject + * @category Types + * @description Check if a value is an object * * @param {any} value * @returns {value is object} + * + * @since 0.0.2 */ export const isObject = (value: any): value is object => toString(value) === '[object Object]'; /** - * Check if a value is a regexp. + * @name isRegExp + * @category Types + * @description Check if a value is a regexp * * @param {any} value * @returns {value is RegExp} + * + * @since 0.0.2 */ export const isRegExp = (value: any): value is RegExp => toString(value) === '[object RegExp]'; /** - * Check if a value is a date. + * @name isDate + * @category Types + * @description Check if a value is a date * * @param {any} value * @returns {value is Date} + * + * @since 0.0.2 */ export const isDate = (value: any): value is Date => toString(value) === '[object Date]'; /** - * Check if a value is an error. + * @name isError + * @category Types + * @description Check if a value is an error * * @param {any} value * @returns {value is Error} + * + * @since 0.0.2 */ export const isError = (value: any): value is Error => toString(value) === '[object Error]'; /** - * Check if a value is a promise. + * @name isPromise + * @category Types + * @description Check if a value is a promise * * @param {any} value * @returns {value is Promise} + * + * @since 0.0.2 */ export const isPromise = (value: any): value is Promise => toString(value) === '[object Promise]'; /** - * Check if a value is a map. + * @name isMap + * @category Types + * @description Check if a value is a map * * @param {any} value * @returns {value is Map} + * + * @since 0.0.2 */ export const isMap = (value: any): value is Map => toString(value) === '[object Map]'; /** - * Check if a value is a set. + * @name isSet + * @category Types + * @description Check if a value is a set * * @param {any} value * @returns {value is Set} + * + * @since 0.0.2 */ export const isSet = (value: any): value is Set => toString(value) === '[object Set]'; /** - * Check if a value is a weakmap. + * @name isWeakMap + * @category Types + * @description Check if a value is a weakmap * * @param {any} value * @returns {value is WeakMap} + * + * @since 0.0.2 */ export const isWeakMap = (value: any): value is WeakMap => toString(value) === '[object WeakMap]'; /** - * Check if a value is a weakset. + * @name isWeakSet + * @category Types + * @description Check if a value is a weakset * * @param {any} value * @returns {value is WeakSet} + * + * @since 0.0.2 */ export const isWeakSet = (value: any): value is WeakSet => toString(value) === '[object WeakSet]'; diff --git a/packages/stdlib/src/types/js/primitives.ts b/packages/stdlib/src/types/js/primitives.ts index 25958f2..d91d1da 100644 --- a/packages/stdlib/src/types/js/primitives.ts +++ b/packages/stdlib/src/types/js/primitives.ts @@ -1,65 +1,97 @@ import { toString } from '.'; /** - * Check if a value is a boolean. + * @name isObject + * @category Types + * @description Check if a value is a boolean * * @param {any} value * @returns {value is boolean} + * + * @since 0.0.2 */ export const isBoolean = (value: any): value is boolean => typeof value === 'boolean'; /** - * Check if a value is a function. + * @name isFunction + * @category Types + * @description Check if a value is a function * * @param {any} value * @returns {value is Function} + * + * @since 0.0.2 */ export const isFunction = (value: any): value is T => typeof value === 'function'; /** - * Check if a value is a number. + * @name isNumber + * @category Types + * @description Check if a value is a number * * @param {any} value * @returns {value is number} + * + * @since 0.0.2 */ export const isNumber = (value: any): value is number => typeof value === 'number'; /** - * Check if a value is a bigint. + * @name isBigInt + * @category Types + * @description Check if a value is a bigint * * @param {any} value * @returns {value is bigint} + * + * @since 0.0.2 */ export const isBigInt = (value: any): value is bigint => typeof value === 'bigint'; /** - * Check if a value is a string. + * @name isString + * @category Types + * @description Check if a value is a string * * @param {any} value * @returns {value is string} + * + * @since 0.0.2 */ export const isString = (value: any): value is string => typeof value === 'string'; /** - * Check if a value is a symbol. + * @name isSymbol + * @category Types + * @description Check if a value is a symbol * * @param {any} value * @returns {value is symbol} + * + * @since 0.0.2 */ export const isSymbol = (value: any): value is symbol => typeof value === 'symbol'; /** - * Check if a value is a undefined. + * @name isUndefined + * @category Types + * @description Check if a value is a undefined * * @param {any} value * @returns {value is undefined} + * + * @since 0.0.2 */ export const isUndefined = (value: any): value is undefined => toString(value) === '[object Undefined]'; /** - * Check if a value is a null. + * @name isNull + * @category Types + * @description Check if a value is a null * * @param {any} value * @returns {value is null} + * + * @since 0.0.2 */ export const isNull = (value: any): value is null => toString(value) === '[object Null]'; diff --git a/packages/stdlib/src/types/ts/array.ts b/packages/stdlib/src/types/ts/array.ts new file mode 100644 index 0000000..37d698d --- /dev/null +++ b/packages/stdlib/src/types/ts/array.ts @@ -0,0 +1,4 @@ +/** + * A type that can be either a single value or an array of values + */ +export type Arrayable = T | T[]; \ No newline at end of file diff --git a/packages/stdlib/src/types/ts/function.ts b/packages/stdlib/src/types/ts/function.ts new file mode 100644 index 0000000..bb88f96 --- /dev/null +++ b/packages/stdlib/src/types/ts/function.ts @@ -0,0 +1,9 @@ +/** + * Any function + */ +export type AnyFunction = (...args: any[]) => any; + +/** + * Void function + */ +export type VoidFunction = () => void; \ No newline at end of file diff --git a/packages/stdlib/src/types/ts/index.ts b/packages/stdlib/src/types/ts/index.ts index 961e79e..c4cbedb 100644 --- a/packages/stdlib/src/types/ts/index.ts +++ b/packages/stdlib/src/types/ts/index.ts @@ -1 +1,3 @@ -export * from './string'; \ No newline at end of file +export * from './string'; +export * from './function'; +export * from './array'; \ No newline at end of file diff --git a/packages/stdlib/src/utils/index.ts b/packages/stdlib/src/utils/index.ts new file mode 100644 index 0000000..2befe22 --- /dev/null +++ b/packages/stdlib/src/utils/index.ts @@ -0,0 +1,21 @@ +/** + * @name timestamp + * @category Utils + * @description Returns the current timestamp + * + * @returns {number} The current timestamp + * + * @since 0.0.2 + */ +export const timestamp = () => Date.now(); + +/** + * @name noop + * @category Utils + * @description A function that does nothing + * + * @returns {void} Nothing + * + * @since 0.0.2 + */ +export const noop = () => {}; diff --git a/packages/tsconfig/package.json b/packages/tsconfig/package.json index ba9af00..c8dfa2f 100644 --- a/packages/tsconfig/package.json +++ b/packages/tsconfig/package.json @@ -16,7 +16,7 @@ "url": "git+https://github.com/robonen/tools.git", "directory": "packages/tsconfig" }, - "packageManager": "pnpm@9.12.0", + "packageManager": "pnpm@9.12.2", "engines": { "node": ">=20.18.0" }, diff --git a/packages/vue/build.config.ts b/packages/vue/build.config.ts new file mode 100644 index 0000000..447d3fb --- /dev/null +++ b/packages/vue/build.config.ts @@ -0,0 +1,10 @@ +import { defineBuildConfig } from 'unbuild'; + +export default defineBuildConfig({ + externals: ['vue'], + rollup: { + esbuild: { + // minify: true, + }, + }, +}); \ No newline at end of file diff --git a/packages/vue/jsr.json b/packages/vue/jsr.json index 5328dc1..91020c3 100644 --- a/packages/vue/jsr.json +++ b/packages/vue/jsr.json @@ -1,5 +1,7 @@ { + "$schema": "https://jsr.io/schema/config-file.v1.json", "name": "@robonen/vue", - "version": "0.0.0", + "license": "Apache-2.0", + "version": "0.0.1", "exports": "./src/index.ts" } \ No newline at end of file diff --git a/packages/vue/package.json b/packages/vue/package.json index d64aa2f..4808423 100644 --- a/packages/vue/package.json +++ b/packages/vue/package.json @@ -1,17 +1,22 @@ { "name": "@robonen/vue", - "private": true, - "version": "0.0.0", - "license": "UNLICENSED", - "description": "", - "keywords": [], + "version": "0.0.1", + "license": "Apache-2.0", + "description": "Collection of powerful tools for Vue", + "keywords": [ + "vue", + "tools", + "ui", + "utilities", + "composables" + ], "author": "Robonen Andrew ", "repository": { "type": "git", "url": "git+https://github.com/robonen/tools.git", "directory": "./packages/vue" }, - "packageManager": "pnpm@9.12.0", + "packageManager": "pnpm@9.12.2", "engines": { "node": ">=20.18.0" }, @@ -19,27 +24,30 @@ "files": [ "dist" ], - "main": "./dist/index.umd.js", - "module": "./dist/index.js", + "main": "./dist/index.cjs", + "module": "./dist/index.mjs", "types": "./dist/index.d.ts", "exports": { ".": { - "import": "./dist/index.js", - "require": "./dist/index.umd.js", + "import": "./dist/index.mjs", + "require": "./dist/index.cjs", "types": "./dist/index.d.ts" } }, "scripts": { "test": "vitest run", - "dev": "vitest dev" + "dev": "vitest dev", + "build": "unbuild" }, "devDependencies": { "@robonen/tsconfig": "workspace:*", "@vue/test-utils": "catalog:", "jsdom": "catalog:", + "unbuild": "catalog:", "vitest": "catalog:" }, "dependencies": { + "@robonen/platform": "workspace:*", "@robonen/stdlib": "workspace:*", "vue": "catalog:" } diff --git a/packages/vue/src/composables/index.ts b/packages/vue/src/composables/index.ts index 9177833..24bf3cf 100644 --- a/packages/vue/src/composables/index.ts +++ b/packages/vue/src/composables/index.ts @@ -1,5 +1,15 @@ +export * from './tryOnBeforeMount'; +export * from './tryOnMounted'; +export * from './tryOnScopeDispose'; +export * from './useAppSharedState'; export * from './useCached'; +export * from './useClamp'; +export * from './useContextFactory'; export * from './useCounter'; +export * from './useLastChanged'; +export * from './useMounted'; +export * from './useOffsetPagination'; export * from './useRenderCount'; +export * from './useRenderInfo'; +export * from './useSupported'; export * from './useSyncRefs'; -export * from './useToggle'; \ No newline at end of file diff --git a/packages/vue/src/composables/tryOnBeforeMount/index.ts b/packages/vue/src/composables/tryOnBeforeMount/index.ts new file mode 100644 index 0000000..fc63aa1 --- /dev/null +++ b/packages/vue/src/composables/tryOnBeforeMount/index.ts @@ -0,0 +1,45 @@ +import { onBeforeMount, nextTick, type ComponentInternalInstance } from 'vue'; +import { getLifeCycleTarger } from '../..'; +import type { VoidFunction } from '@robonen/stdlib'; + +// TODO: test + +export interface TryOnBeforeMountOptions { + sync?: boolean; + target?: ComponentInternalInstance; +} + +/** + * @name tryOnBeforeMount + * @category Components + * @description Call onBeforeMount if it's inside a component lifecycle hook, otherwise just calls it + * + * @param {VoidFunction} fn - The function to run on before mount. + * @param {TryOnBeforeMountOptions} options - The options for the function. + * @param {boolean} [options.sync=true] - If true, the function will run synchronously, otherwise it will run asynchronously. + * @param {ComponentInternalInstance} [options.target] - The target component instance to run the function on. + * @returns {void} + * + * @example + * tryOnBeforeMount(() => console.log('Before mount')); + * + * @example + * tryOnBeforeMount(() => console.log('Before mount async'), { sync: false }); + * + * @since 0.0.1 + */ +export function tryOnBeforeMount(fn: VoidFunction, options: TryOnBeforeMountOptions = {}) { + const { + sync = true, + target, + } = options; + + const instance = getLifeCycleTarger(target); + + if (instance) + onBeforeMount(fn, instance); + else if (sync) + fn(); + else + nextTick(fn); +} \ No newline at end of file diff --git a/packages/vue/src/composables/tryOnMounted/index.test.ts b/packages/vue/src/composables/tryOnMounted/index.test.ts new file mode 100644 index 0000000..dbbfedb --- /dev/null +++ b/packages/vue/src/composables/tryOnMounted/index.test.ts @@ -0,0 +1,57 @@ +import { describe, it, vi, expect } from 'vitest'; +import { defineComponent, nextTick, type PropType } from 'vue'; +import { tryOnMounted } from '.'; +import { mount } from '@vue/test-utils'; +import type { VoidFunction } from '@robonen/stdlib'; + +const ComponentStub = defineComponent({ + props: { + callback: { + type: Function as PropType, + }, + }, + setup(props) { + props.callback && tryOnMounted(props.callback); + }, + template: `
`, +}); + +describe('tryOnMounted', () => { + it('run the callback when mounted', () => { + const callback = vi.fn(); + + mount(ComponentStub, { + props: { callback }, + }); + + expect(callback).toHaveBeenCalled(); + }); + + it('run the callback outside of a component lifecycle', () => { + const callback = vi.fn(); + + tryOnMounted(callback); + + expect(callback).toHaveBeenCalled(); + }); + + it('run the callback asynchronously', async () => { + const callback = vi.fn(); + + tryOnMounted(callback, { sync: false }); + + expect(callback).not.toHaveBeenCalled(); + await nextTick(); + expect(callback).toHaveBeenCalled(); + }); + + it.skip('run the callback with a specific target', () => { + const callback = vi.fn(); + + const component = mount(ComponentStub); + + tryOnMounted(callback, { target: component.vm.$ }); + + expect(callback).toHaveBeenCalled(); + }); +}); \ No newline at end of file diff --git a/packages/vue/src/composables/tryOnMounted/index.ts b/packages/vue/src/composables/tryOnMounted/index.ts new file mode 100644 index 0000000..67232f1 --- /dev/null +++ b/packages/vue/src/composables/tryOnMounted/index.ts @@ -0,0 +1,45 @@ +import { onMounted, nextTick, type ComponentInternalInstance } from 'vue'; +import { getLifeCycleTarger } from '../..'; +import type { VoidFunction } from '@robonen/stdlib'; + +// TODO: tests + +export interface TryOnMountedOptions { + sync?: boolean; + target?: ComponentInternalInstance; +} + +/** + * @name tryOnMounted + * @category Components + * @description Call onMounted if it's inside a component lifecycle hook, otherwise just calls it + * + * @param {VoidFunction} fn The function to call + * @param {TryOnMountedOptions} options The options to use + * @param {boolean} [options.sync=true] If the function should be called synchronously + * @param {ComponentInternalInstance} [options.target] The target instance to use + * @returns {void} + * + * @example + * tryOnMounted(() => console.log('Mounted!')); + * + * @example + * tryOnMounted(() => console.log('Mounted!'), { sync: false }); + * + * @since 0.0.1 + */ +export function tryOnMounted(fn: VoidFunction, options: TryOnMountedOptions = {}) { + const { + sync = true, + target, + } = options; + + const instance = getLifeCycleTarger(target); + + if (instance) + onMounted(fn, instance); + else if (sync) + fn(); + else + nextTick(fn); +} \ No newline at end of file diff --git a/packages/vue/src/composables/tryOnScopeDispose/index.test.ts b/packages/vue/src/composables/tryOnScopeDispose/index.test.ts new file mode 100644 index 0000000..d386876 --- /dev/null +++ b/packages/vue/src/composables/tryOnScopeDispose/index.test.ts @@ -0,0 +1,58 @@ +import { describe, expect, it, vi } from 'vitest'; +import { defineComponent, effectScope, type PropType } from 'vue'; +import { tryOnScopeDispose } from '.'; +import { mount } from '@vue/test-utils'; +import type { VoidFunction } from '@robonen/stdlib'; + +const ComponentStub = defineComponent({ + props: { + callback: { + type: Function as PropType, + required: true + } + }, + setup(props) { + tryOnScopeDispose(props.callback); + }, + template: '
', +}); + +describe('tryOnScopeDispose', () => { + it('returns false when the scope is not active', () => { + const callback = vi.fn(); + const detectedScope = tryOnScopeDispose(callback); + + expect(detectedScope).toBe(false); + expect(callback).not.toHaveBeenCalled(); + }); + + it('run the callback when the scope is disposed', () => { + const callback = vi.fn(); + const scope = effectScope(); + let detectedScope: boolean | undefined; + + scope.run(() => { + detectedScope = tryOnScopeDispose(callback); + }); + + expect(detectedScope).toBe(true); + expect(callback).not.toHaveBeenCalled(); + + scope.stop(); + + expect(callback).toHaveBeenCalled(); + }); + + it('run callback when the component is unmounted', () => { + const callback = vi.fn(); + const component = mount(ComponentStub, { + props: { callback }, + }); + + expect(callback).not.toHaveBeenCalled(); + + component.unmount(); + + expect(callback).toHaveBeenCalled(); + }); +}); \ No newline at end of file diff --git a/packages/vue/src/composables/tryOnScopeDispose/index.ts b/packages/vue/src/composables/tryOnScopeDispose/index.ts new file mode 100644 index 0000000..f5189ef --- /dev/null +++ b/packages/vue/src/composables/tryOnScopeDispose/index.ts @@ -0,0 +1,24 @@ +import type { VoidFunction } from '@robonen/stdlib'; +import { getCurrentScope, onScopeDispose } from 'vue'; + +/** + * @name tryOnScopeDispose + * @category Components + * @description A composable that will run a callback when the scope is disposed or do nothing if the scope isn't available. + * + * @param {VoidFunction} callback - The callback to run when the scope is disposed. + * @returns {boolean} - Returns true if the callback was run, otherwise false. + * + * @example + * tryOnScopeDispose(() => console.log('Scope disposed')); + * + * @since 0.0.1 + */ +export function tryOnScopeDispose(callback: VoidFunction) { + if (getCurrentScope()) { + onScopeDispose(callback); + return true; + } + + return false; +} diff --git a/packages/vue/src/composables/useAppSharedState/index.test.ts b/packages/vue/src/composables/useAppSharedState/index.test.ts new file mode 100644 index 0000000..6d290ae --- /dev/null +++ b/packages/vue/src/composables/useAppSharedState/index.test.ts @@ -0,0 +1,40 @@ +import { describe, it, vi, expect } from 'vitest'; +import { ref, reactive } from 'vue'; +import { useAppSharedState } from '.'; + +describe('useAppSharedState', () => { + it('initialize state only once', () => { + const stateFactory = (initValue?: number) => { + const count = ref(initValue ?? 0); + return { count }; + }; + + const useSharedState = useAppSharedState(stateFactory); + + const state1 = useSharedState(1); + const state2 = useSharedState(2); + + expect(state1.count.value).toBe(1); + expect(state2.count.value).toBe(1); + expect(state1).toBe(state2); + }); + + it('return the same state object across different calls', () => { + const stateFactory = () => { + const state = reactive({ count: 0 }); + const increment = () => state.count++; + return { state, increment }; + }; + + const useSharedState = useAppSharedState(stateFactory); + + const sharedState1 = useSharedState(); + const sharedState2 = useSharedState(); + + expect(sharedState1.state.count).toBe(0); + sharedState1.increment(); + expect(sharedState1.state.count).toBe(1); + expect(sharedState2.state.count).toBe(1); + expect(sharedState1).toBe(sharedState2); + }); +}); \ No newline at end of file diff --git a/packages/vue/src/composables/useAppSharedState/index.ts b/packages/vue/src/composables/useAppSharedState/index.ts new file mode 100644 index 0000000..e03ba7a --- /dev/null +++ b/packages/vue/src/composables/useAppSharedState/index.ts @@ -0,0 +1,42 @@ +import type { AnyFunction } from '@robonen/stdlib'; +import { effectScope } from 'vue'; + +// TODO: maybe we should control subscriptions and dispose them when the child scope is disposed + +/** + * @name useAppSharedState + * @category State + * @description Provides a shared state object for use across Vue instances + * + * @param {Function} stateFactory A factory function that returns the shared state object + * @returns {Function} A function that returns the shared state object + * + * @example + * const useSharedState = useAppSharedState((initValue?: number) => { + * const count = ref(initValue ?? 0); + * return { count }; + * }); + * + * @example + * const useSharedState = useAppSharedState(() => { + * const state = reactive({ count: 0 }); + * const increment = () => state.count++; + * return { state, increment }; + * }); + * + * @since 0.0.1 + */ +export function useAppSharedState(stateFactory: Fn) { + let initialized = false; + let state: ReturnType; + const scope = effectScope(true); + + return ((...args: Parameters) => { + if (!initialized) { + state = scope.run(() => stateFactory(...args)); + initialized = true; + } + + return state; + }); +} diff --git a/packages/vue/src/composables/useCached/index.test.ts b/packages/vue/src/composables/useCached/index.test.ts index fdc342d..fccc1dc 100644 --- a/packages/vue/src/composables/useCached/index.test.ts +++ b/packages/vue/src/composables/useCached/index.test.ts @@ -1,5 +1,5 @@ import { describe, expect, it } from 'vitest'; -import { ref, nextTick } from 'vue'; +import { ref, nextTick, reactive } from 'vue'; import { useCached } from '.'; const arrayEquals = (a: number[], b: number[]) => a.length === b.length && a.every((v, i) => v === b[i]); @@ -14,10 +14,6 @@ describe('useCached', () => { externalValue.value = 1; await nextTick(); expect(cachedValue.value).toBe(1); - - externalValue.value = 10; - await nextTick(); - expect(cachedValue.value).toBe(10); }); it('custom array comparator', async () => { @@ -41,4 +37,15 @@ describe('useCached', () => { expect(cachedValue.value).not.toEqual(initialValue); expect(cachedValue.value).toEqual([2]); }); + + it('getter source', async () => { + const externalValue = reactive({ value: 0 }); + const cachedValue = useCached(() => externalValue.value); + + expect(cachedValue.value).toBe(0); + + externalValue.value = 1; + await nextTick(); + expect(cachedValue.value).toBe(1); + }); }); \ No newline at end of file diff --git a/packages/vue/src/composables/useCached/index.ts b/packages/vue/src/composables/useCached/index.ts index 7b9b1e1..9deb294 100644 --- a/packages/vue/src/composables/useCached/index.ts +++ b/packages/vue/src/composables/useCached/index.ts @@ -1,4 +1,4 @@ -import { ref, watch, type Ref, type WatchOptions } from 'vue'; +import { ref, watch, toValue, type MaybeRefOrGetter, type Ref, type WatchOptions } from 'vue'; export type Comparator = (a: Value, b: Value) => boolean; @@ -19,15 +19,17 @@ export type Comparator = (a: Value, b: Value) => boolean; * @example * const externalValue = ref(0); * const cachedValue = useCached(externalValue, (a, b) => a === b, { immediate: true }); + * + * @since 0.0.1 */ export function useCached( - externalValue: Ref, + externalValue: MaybeRefOrGetter, comparator: Comparator = (a, b) => a === b, watchOptions?: WatchOptions, ): Ref { - const cached = ref(externalValue.value) as Ref; + const cached = ref(toValue(externalValue)) as Ref; - watch(() => externalValue.value, (value) => { + watch(() => toValue(externalValue), (value) => { if (!comparator(value, cached.value)) cached.value = value; }, watchOptions); diff --git a/packages/vue/src/composables/useClamp/index.test.ts b/packages/vue/src/composables/useClamp/index.test.ts new file mode 100644 index 0000000..e7daca8 --- /dev/null +++ b/packages/vue/src/composables/useClamp/index.test.ts @@ -0,0 +1,60 @@ +import { ref, readonly, computed } from 'vue'; +import { describe, it, expect } from 'vitest'; +import { useClamp } from '.'; + +describe('useClamp', () => { + it('non-reactive values should be clamped', () => { + const clampedValue = useClamp(10, 0, 5); + + expect(clampedValue.value).toBe(5); + }); + + it('clamp the value within the given range', () => { + const value = ref(10); + const clampedValue = useClamp(value, 0, 5); + + expect(clampedValue.value).toBe(5); + }); + + it('clamp the value within the given range using functions', () => { + const value = ref(10); + const clampedValue = useClamp(value, () => 0, () => 5); + + expect(clampedValue.value).toBe(5); + }); + + it('clamp readonly values', () => { + const computedValue = computed(() => 10); + const readonlyValue = readonly(ref(10)); + const clampedValue1 = useClamp(computedValue, 0, 5); + const clampedValue2 = useClamp(readonlyValue, 0, 5); + + expect(clampedValue1.value).toBe(5); + expect(clampedValue2.value).toBe(5); + }); + + it('update the clamped value when the original value changes', () => { + const value = ref(10); + const clampedValue = useClamp(value, 0, 5); + value.value = 3; + + expect(clampedValue.value).toBe(3); + }); + + it('update the clamped value when the min or max changes', () => { + const value = ref(10); + const min = ref(0); + const max = ref(5); + const clampedValue = useClamp(value, min, max); + + expect(clampedValue.value).toBe(5); + + max.value = 15; + + expect(clampedValue.value).toBe(10); + + min.value = 11; + + expect(clampedValue.value).toBe(11); + }); +}); \ No newline at end of file diff --git a/packages/vue/src/composables/useClamp/index.ts b/packages/vue/src/composables/useClamp/index.ts new file mode 100644 index 0000000..3be6025 --- /dev/null +++ b/packages/vue/src/composables/useClamp/index.ts @@ -0,0 +1,39 @@ +import { clamp, isFunction } from '@robonen/stdlib'; +import { computed, isReadonly, ref, toValue, type ComputedRef, type MaybeRef, type MaybeRefOrGetter, type WritableComputedRef } from 'vue'; + +/** + * @name useClamp + * @category Math + * @description Clamps a value between a minimum and maximum value + * + * @param {MaybeRefOrGetter} value The value to clamp + * @param {MaybeRefOrGetter} min The minimum value + * @param {MaybeRefOrGetter} max The maximum value + * @returns {ComputedRef} The clamped value + * + * @example + * const value = ref(10); + * const clampedValue = useClamp(value, 0, 5); + * + * @example + * const value = ref(10); + * const clampedValue = useClamp(value, () => 0, () => 5); + * + * @since 0.0.1 + */ +export function useClamp(value: MaybeRef, min: MaybeRefOrGetter, max: MaybeRefOrGetter): WritableComputedRef; +export function useClamp(value: MaybeRefOrGetter, min: MaybeRefOrGetter, max: MaybeRefOrGetter): ComputedRef { + if (isFunction(value) || isReadonly(value)) + return computed(() => clamp(toValue(value), toValue(min), toValue(max))); + + const _value = ref(value); + + return computed({ + get() { + return clamp(_value.value, toValue(min), toValue(max)); + }, + set(newValue) { + _value.value = clamp(newValue, toValue(min), toValue(max)); + }, + }); +} diff --git a/packages/vue/src/composables/useContextFactory/index.test.ts b/packages/vue/src/composables/useContextFactory/index.test.ts new file mode 100644 index 0000000..b71a494 --- /dev/null +++ b/packages/vue/src/composables/useContextFactory/index.test.ts @@ -0,0 +1,69 @@ +import { describe, it, expect } from 'vitest'; +import { defineComponent } from 'vue'; +import { useContextFactory } from '.'; +import { mount } from '@vue/test-utils'; +import { VueToolsError } from '../../utils'; + +function testFactory( + data: Data, + options?: { contextName?: string, fallback?: Data }, +) { + const contextName = options?.contextName ?? 'TestContext'; + + const [inject, provide] = useContextFactory(contextName); + + const Child = defineComponent({ + setup() { + const value = inject(options?.fallback); + return { value }; + }, + template: `{{ value }}`, + }); + + const Parent = defineComponent({ + components: { Child }, + setup() { + provide(data); + }, + template: ``, + }); + + return { + Parent, + Child, + }; +} + +// TODO: maybe replace template with passing mock functions to setup + +describe('useContextFactory', () => { + it('provide and inject context correctly', () => { + const { Parent } = testFactory('test'); + + const component = mount(Parent); + + expect(component.text()).toBe('test'); + }); + + it('throw an error when context is not provided', () => { + const { Child } = testFactory('test'); + + expect(() => mount(Child)).toThrow(VueToolsError); + }); + + it('inject a fallback value when context is not provided', () => { + const { Child } = testFactory('test', { fallback: 'fallback' }); + + const component = mount(Child); + + expect(component.text()).toBe('fallback'); + }); + + it('correctly handle null values', () => { + const { Parent } = testFactory(null); + + const component = mount(Parent); + + expect(component.text()).toBe(''); + }); +}); \ No newline at end of file diff --git a/packages/vue/src/composables/useContextFactory/index.ts b/packages/vue/src/composables/useContextFactory/index.ts new file mode 100644 index 0000000..71d9120 --- /dev/null +++ b/packages/vue/src/composables/useContextFactory/index.ts @@ -0,0 +1,36 @@ +import { inject, provide, type InjectionKey } from 'vue'; +import { VueToolsError } from '../..'; + +/** + * @name useContextFactory + * @category Utilities + * @description A composable that provides a factory for creating context with unique key + * + * @param {string} name The name of the context + * @returns {readonly [injectContext, provideContext]} The context factory + * @throws {VueToolsError} when the context is not provided + * + * @example + * const [injectContext, provideContext] = useContextFactory('MyContext'); + * + * @since 0.0.1 + */ +export function useContextFactory(name: string) { + const injectionKey: InjectionKey = Symbol(name); + + const injectContext = (fallback?: Fallback) => { + const context = inject(injectionKey, fallback); + + if (context !== undefined) + return context; + + throw new VueToolsError(`useContextFactory: '${name}' context is not provided`); + }; + + const provideContext = (context: ContextValue) => { + provide(injectionKey, context); + return context; + }; + + return [injectContext, provideContext] as const; + } \ No newline at end of file diff --git a/packages/vue/src/composables/useCounter/index.test.ts b/packages/vue/src/composables/useCounter/index.test.ts index fba7e50..54a0c72 100644 --- a/packages/vue/src/composables/useCounter/index.test.ts +++ b/packages/vue/src/composables/useCounter/index.test.ts @@ -13,6 +13,11 @@ describe('useCounter', () => { expect(count.value).toBe(5); }); + it('initialize count with the provided initial value from a getter', () => { + const { count } = useCounter(() => 5); + expect(count.value).toBe(5); + }); + it('increment count by 1 by default', () => { const { count, increment } = useCounter(0); increment(); diff --git a/packages/vue/src/composables/useCounter/index.ts b/packages/vue/src/composables/useCounter/index.ts index 6b42ba4..41ef8e4 100644 --- a/packages/vue/src/composables/useCounter/index.ts +++ b/packages/vue/src/composables/useCounter/index.ts @@ -1,4 +1,4 @@ -import { ref, unref, type MaybeRef, type Ref } from 'vue'; +import { ref, toValue, type MaybeRefOrGetter, type Ref } from 'vue'; import { clamp } from '@robonen/stdlib'; export interface UseCounterOptions { @@ -31,13 +31,15 @@ export interface UseConterReturn { * * @example * const { count, increment, decrement, set, get, reset } = useCounter(0, { min: 0, max: 10 }); + * + * @since 0.0.1 */ export function useCounter( - initialValue: MaybeRef = 0, + initialValue: MaybeRefOrGetter = 0, options: UseCounterOptions = {}, ): UseConterReturn { - let _initialValue = unref(initialValue); - const count = ref(initialValue); + let _initialValue = toValue(initialValue); + const count = ref(_initialValue); const { min = Number.MIN_SAFE_INTEGER, diff --git a/packages/vue/src/composables/useEventListener/index.ts b/packages/vue/src/composables/useEventListener/index.ts new file mode 100644 index 0000000..62e779f --- /dev/null +++ b/packages/vue/src/composables/useEventListener/index.ts @@ -0,0 +1,136 @@ +import { isArray, isString, noop, type Arrayable, type VoidFunction } from '@robonen/stdlib'; +import type { MaybeRefOrGetter } from 'vue'; +import { defaultWindow } from '../..'; + +// TODO: wip + +interface InferEventTarget { + addEventListener: (event: Events, listener?: any, options?: any) => any; + removeEventListener: (event: Events, listener?: any, options?: any) => any; +} + +export interface GeneralEventListener { + (evt: E): void; +} + +export type WindowEventName = keyof WindowEventMap; +export type DocumentEventName = keyof DocumentEventMap; +export type ElementEventName = keyof HTMLElementEventMap; + +/** + * @name useEventListener + * @category Elements + * @description Registers an event listener using the `addEventListener` on mounted and removes it automatically on unmounted + * + * Overload 1: Omitted window target + */ +export function useEventListener( + event: Arrayable, + listener: Arrayable<(this: Window, ev: WindowEventMap[E]) => any>, + options?: MaybeRefOrGetter +): VoidFunction; + +/** + * @name useEventListener + * @category Elements + * @description Registers an event listener using the `addEventListener` on mounted and removes it automatically on unmounted + * + * Overload 2: Explicit window target + */ +export function useEventListener( + target: Window, + event: Arrayable, + listener: Arrayable<(this: Window, ev: WindowEventMap[E]) => any>, + options?: MaybeRefOrGetter +): VoidFunction; + +/** + * @name useEventListener + * @category Elements + * @description Registers an event listener using the `addEventListener` on mounted and removes it automatically on unmounted + * + * Overload 3: Explicit document target + */ +export function useEventListener( + target: Document, + event: Arrayable, + listener: Arrayable<(this: Document, ev: DocumentEventMap[E]) => any>, + options?: MaybeRefOrGetter +): VoidFunction; + +/** + * @name useEventListener + * @category Elements + * @description Registers an event listener using the `addEventListener` on mounted and removes it automatically on unmounted + * + * Overload 4: Explicit HTMLElement target + */ +export function useEventListener( + target: MaybeRefOrGetter, + event: Arrayable, + listener: Arrayable<(this: HTMLElement, ev: HTMLElementEventMap[E]) => any>, + options?: MaybeRefOrGetter +): VoidFunction; + +/** + * @name useEventListener + * @category Elements + * @description Registers an event listener using the `addEventListener` on mounted and removes it automatically on unmounted + * + * Overload 5: Custom target with inferred event type + */ +export function useEventListener( + target: MaybeRefOrGetter | null | undefined>, + event: Arrayable, + listener: Arrayable>, + options?: MaybeRefOrGetter +) + +/** + * @name useEventListener + * @category Elements + * @description Registers an event listener using the `addEventListener` on mounted and removes it automatically on unmounted + * + * Overload 6: Custom event target fallback + */ +export function useEventListener( + target: MaybeRefOrGetter, + event: Arrayable, + listener: Arrayable>, + options?: MaybeRefOrGetter +): VoidFunction; + +export function useEventListener(...args: any[]) { + let target: MaybeRefOrGetter | undefined; + let events: Arrayable; + let listeners: Arrayable; + let options: MaybeRefOrGetter | undefined; + + if (isString(args[0]) || isArray(args[0])) { + [events, listeners, options] = args; + target = defaultWindow; + } else { + [target, events, listeners, options] = args; + } + + if (!target) + return noop; + + if (!isArray(events)) + events = [events]; + + if (!isArray(listeners)) + listeners = [listeners]; + + const cleanups: Function[] = []; + + const cleanup = () => { + cleanups.forEach(fn => fn()); + cleanups.length = 0; + } + + const register = (el: any, event: string, listener: any, options: any) => { + el.addEventListener(event, listener, options); + return () => el.removeEventListener(event, listener, options); + } +} \ No newline at end of file diff --git a/packages/vue/src/composables/useLastChanged/index.test.ts b/packages/vue/src/composables/useLastChanged/index.test.ts new file mode 100644 index 0000000..7e1863b --- /dev/null +++ b/packages/vue/src/composables/useLastChanged/index.test.ts @@ -0,0 +1,50 @@ +import { ref, nextTick } from 'vue'; +import { describe, it, expect } from 'vitest'; +import { useLastChanged } from '.'; +import { timestamp } from '@robonen/stdlib'; + +describe('useLastChanged', () => { + it('initialize with null if no initialValue is provided', () => { + const source = ref(0); + const lastChanged = useLastChanged(source); + + expect(lastChanged.value).toBeNull(); + }); + + it('initialize with the provided initialValue', () => { + const source = ref(0); + const initialValue = 123456789; + const lastChanged = useLastChanged(source, { initialValue }); + + expect(lastChanged.value).toBe(initialValue); + }); + + it('update the timestamp when the source changes', async () => { + const source = ref(0); + const lastChanged = useLastChanged(source); + + const initialTimestamp = lastChanged.value; + source.value = 1; + await nextTick(); + + expect(lastChanged.value).not.toBe(initialTimestamp); + expect(lastChanged.value).toBeLessThanOrEqual(timestamp()); + }); + + it('update the timestamp immediately if immediate option is true', async () => { + const source = ref(0); + const lastChanged = useLastChanged(source, { immediate: true }); + + expect(lastChanged.value).toBeLessThanOrEqual(timestamp()); + }); + + it('not update the timestamp if the source does not change', async () => { + const source = ref(0); + const lastChanged = useLastChanged(source); + + const initialTimestamp = lastChanged.value; + await nextTick(); + + expect(lastChanged.value).toBe(initialTimestamp); + }); +}); \ No newline at end of file diff --git a/packages/vue/src/composables/useLastChanged/index.ts b/packages/vue/src/composables/useLastChanged/index.ts new file mode 100644 index 0000000..dea5e24 --- /dev/null +++ b/packages/vue/src/composables/useLastChanged/index.ts @@ -0,0 +1,38 @@ +import { timestamp } from '@robonen/stdlib'; +import { ref, watch, type WatchSource, type WatchOptions, type Ref } from 'vue'; + +export interface UseLastChangedOptions< + Immediate extends boolean, + InitialValue extends number | null | undefined = undefined, +> extends WatchOptions { + initialValue?: InitialValue; +} + +/** + * @name useLastChanged + * @category State + * @description Records the last time a value changed + * + * @param {WatchSource} source The value to track + * @param {UseLastChangedOptions} [options={}] The options for the last changed tracker + * @returns {Ref} The timestamp of the last change + * + * @example + * const value = ref(0); + * const lastChanged = useLastChanged(value); + * + * @example + * const value = ref(0); + * const lastChanged = useLastChanged(value, { immediate: true }); + * + * @since 0.0.1 + */ +export function useLastChanged(source: WatchSource, options?: UseLastChangedOptions): Ref; +export function useLastChanged(source: WatchSource, options: UseLastChangedOptions | UseLastChangedOptions): Ref +export function useLastChanged(source: WatchSource, options: UseLastChangedOptions = {}): Ref | Ref { + const lastChanged = ref(options.initialValue ?? null); + + watch(source, () => lastChanged.value = timestamp(), options); + + return lastChanged; +} diff --git a/packages/vue/src/composables/useMounted/index.test.ts b/packages/vue/src/composables/useMounted/index.test.ts new file mode 100644 index 0000000..da2adb0 --- /dev/null +++ b/packages/vue/src/composables/useMounted/index.test.ts @@ -0,0 +1,27 @@ +import { describe, expect, it } from 'vitest'; +import { defineComponent, nextTick, ref } from 'vue'; +import { mount } from '@vue/test-utils' +import { useMounted } from '.'; + +const ComponentStub = defineComponent({ + setup() { + const isMounted = useMounted(); + + return { isMounted }; + }, + template: `
{{ isMounted }}
`, +}); + +describe('useMounted', () => { + it('return the mounted state of the component', async () => { + const component = mount(ComponentStub); + + // Initial render + expect(component.text()).toBe('false'); + + await nextTick(); + + // Will trigger a render + expect(component.text()).toBe('true'); + }); +}); diff --git a/packages/vue/src/composables/useMounted/index.ts b/packages/vue/src/composables/useMounted/index.ts new file mode 100644 index 0000000..1b92e6e --- /dev/null +++ b/packages/vue/src/composables/useMounted/index.ts @@ -0,0 +1,27 @@ +import { onMounted, readonly, ref, type ComponentInternalInstance } from 'vue'; +import { getLifeCycleTarger } from '../..'; + +/** + * @name useMounted + * @category Components + * @description Returns a ref that tracks the mounted state of the component (doesn't track the unmounted state) + * + * @param {ComponentInternalInstance} [instance] The component instance to track the mounted state for + * @returns {Readonly>} The mounted state of the component + * + * @example + * const isMounted = useMounted(); + * + * @example + * const isMounted = useMounted(getCurrentInstance()); + * + * @since 0.0.1 + */ +export function useMounted(instance?: ComponentInternalInstance) { + const isMounted = ref(false); + const targetInstance = getLifeCycleTarger(instance); + + onMounted(() => isMounted.value = true, targetInstance); + + return readonly(isMounted); +} diff --git a/packages/vue/src/composables/useOffsetPagination/index.test.ts b/packages/vue/src/composables/useOffsetPagination/index.test.ts new file mode 100644 index 0000000..5c7a948 --- /dev/null +++ b/packages/vue/src/composables/useOffsetPagination/index.test.ts @@ -0,0 +1,147 @@ +import { describe, it, expect, vi } from 'vitest'; +import { nextTick, ref } from 'vue'; +import { useOffsetPagination } from '.'; + +describe('useOffsetPagination', () => { + it('initialize with default values without options', () => { + const { currentPage, currentPageSize, totalPages, isFirstPage } = useOffsetPagination({}); + + expect(currentPage.value).toBe(1); + expect(currentPageSize.value).toBe(10); + expect(totalPages.value).toBe(Infinity); + expect(isFirstPage.value).toBe(true); + }); + + it('calculate total pages correctly', () => { + const { totalPages } = useOffsetPagination({ total: 100, pageSize: 10 }); + + expect(totalPages.value).toBe(10); + }); + + it('update current page correctly', () => { + const { currentPage, next, previous, select } = useOffsetPagination({ total: 100, pageSize: 10 }); + + next(); + expect(currentPage.value).toBe(2); + + previous(); + expect(currentPage.value).toBe(1); + + select(5); + expect(currentPage.value).toBe(5); + }); + + it('handle out of bounds increments correctly', () => { + const { currentPage, next, previous } = useOffsetPagination({ total: 10, pageSize: 5 }); + + next(); + next(); + next(); + + expect(currentPage.value).toBe(2); + + previous(); + previous(); + previous(); + + expect(currentPage.value).toBe(1); + }); + + it('handle page boundaries correctly', () => { + const { currentPage, isFirstPage, isLastPage } = useOffsetPagination({ total: 20, pageSize: 10 }); + + expect(currentPage.value).toBe(1); + expect(isFirstPage.value).toBe(true); + expect(isLastPage.value).toBe(false); + + currentPage.value = 2; + + expect(currentPage.value).toBe(2); + expect(isFirstPage.value).toBe(false); + expect(isLastPage.value).toBe(true); + }); + + it('call onPageChange callback', async () => { + const onPageChange = vi.fn(); + const { currentPage, next } = useOffsetPagination({ total: 100, pageSize: 10, onPageChange }); + + next(); + await nextTick(); + + expect(onPageChange).toHaveBeenCalledTimes(1); + expect(onPageChange).toHaveBeenCalledWith(expect.objectContaining({ currentPage: currentPage.value })); + }); + + it('call onPageSizeChange callback', async () => { + const onPageSizeChange = vi.fn(); + const pageSize = ref(10); + const { currentPageSize } = useOffsetPagination({ total: 100, pageSize, onPageSizeChange }); + + pageSize.value = 20; + await nextTick(); + + expect(onPageSizeChange).toHaveBeenCalledTimes(1); + expect(onPageSizeChange).toHaveBeenCalledWith(expect.objectContaining({ currentPageSize: currentPageSize.value })); + }); + + it('call onPageCountChange callback', async () => { + const onTotalPagesChange = vi.fn(); + const total = ref(100); + const { totalPages } = useOffsetPagination({ total, pageSize: 10, onTotalPagesChange }); + + total.value = 200; + await nextTick(); + + expect(onTotalPagesChange).toHaveBeenCalledTimes(1); + expect(onTotalPagesChange).toHaveBeenCalledWith(expect.objectContaining({ totalPages: totalPages.value })); + }); + + it('handle complex reactive options', async () => { + const total = ref(100); + const pageSize = ref(10); + const page = ref(1); + + const onPageChange = vi.fn(); + const onPageSizeChange = vi.fn(); + const onTotalPagesChange = vi.fn(); + + const { currentPage, currentPageSize, totalPages } = useOffsetPagination({ + total, + pageSize, + page, + onPageChange, + onPageSizeChange, + onTotalPagesChange, + }); + + // Initial values + expect(currentPage.value).toBe(1); + expect(currentPageSize.value).toBe(10); + expect(totalPages.value).toBe(10); + expect(onPageChange).toHaveBeenCalledTimes(0); + expect(onPageSizeChange).toHaveBeenCalledTimes(0); + expect(onTotalPagesChange).toHaveBeenCalledTimes(0); + + total.value = 300; + pageSize.value = 15; + page.value = 2; + await nextTick(); + + // Valid values after changes + expect(currentPage.value).toBe(2); + expect(currentPageSize.value).toBe(15); + expect(totalPages.value).toBe(20); + expect(onPageChange).toHaveBeenCalledTimes(1); + expect(onPageSizeChange).toHaveBeenCalledTimes(1); + expect(onTotalPagesChange).toHaveBeenCalledTimes(1); + + page.value = 21; + await nextTick(); + + // Invalid values after changes + expect(currentPage.value).toBe(20); + expect(onPageChange).toHaveBeenCalledTimes(2); + expect(onPageSizeChange).toHaveBeenCalledTimes(1); + expect(onTotalPagesChange).toHaveBeenCalledTimes(1); + }); +}); \ No newline at end of file diff --git a/packages/vue/src/composables/useOffsetPagination/index.ts b/packages/vue/src/composables/useOffsetPagination/index.ts new file mode 100644 index 0000000..65bd7c0 --- /dev/null +++ b/packages/vue/src/composables/useOffsetPagination/index.ts @@ -0,0 +1,126 @@ +import type { VoidFunction } from '@robonen/stdlib'; +import { computed, reactive, toValue, watch, type ComputedRef, type MaybeRef, type MaybeRefOrGetter, type UnwrapNestedRefs, type WritableComputedRef } from 'vue'; +import { useClamp } from '../useClamp'; + +// TODO: sync returned refs with passed refs + +export interface UseOffsetPaginationOptions { + total?: MaybeRefOrGetter; + pageSize?: MaybeRef; + page?: MaybeRef; + onPageChange?: (returnValue: UnwrapNestedRefs) => unknown; + onPageSizeChange?: (returnValue: UnwrapNestedRefs) => unknown; + onTotalPagesChange?: (returnValue: UnwrapNestedRefs) => unknown; +} + +export interface UseOffsetPaginationReturn { + currentPage: WritableComputedRef; + currentPageSize: WritableComputedRef; + totalPages: ComputedRef; + isFirstPage: ComputedRef; + isLastPage: ComputedRef; + next: VoidFunction; + previous: VoidFunction; + select: (page: number) => void; +} + +export type UseOffsetPaginationInfinityReturn = Omit; + +/** + * @name useOffsetPagination + * @category Utilities + * @description A composable function that provides pagination functionality for offset based pagination + * + * @param {UseOffsetPaginationOptions} options The options for the pagination + * @param {MaybeRefOrGetter} options.total The total number of items + * @param {MaybeRef} options.pageSize The number of items per page + * @param {MaybeRef} options.page The current page + * @param {(returnValue: UnwrapNestedRefs) => unknown} options.onPageChange A callback that is called when the page changes + * @param {(returnValue: UnwrapNestedRefs) => unknown} options.onPageSizeChange A callback that is called when the page size changes + * @param {(returnValue: UnwrapNestedRefs) => unknown} options.onTotalPagesChange A callback that is called when the total number of pages changes + * @returns {UseOffsetPaginationReturn} The pagination object + * + * @example + * const { + * currentPage, + * currentPageSize, + * totalPages, + * isFirstPage, + * isLastPage, + * next, + * previous, + * select, + * } = useOffsetPagination({ total: 100, pageSize: 10, page: 1 }); + * + * @example + * const { + * currentPage, + * } = useOffsetPagination({ + * total: 100, + * pageSize: 10, + * page: 1, + * onPageChange: ({ currentPage }) => console.log(currentPage), + * onPageSizeChange: ({ currentPageSize }) => console.log(currentPageSize), + * onTotalPagesChange: ({ totalPages }) => console.log(totalPages), + * }); + * + * @since 0.0.1 + */ +export function useOffsetPagination(options: Omit): UseOffsetPaginationInfinityReturn; +export function useOffsetPagination(options: UseOffsetPaginationOptions): UseOffsetPaginationReturn; +export function useOffsetPagination(options: UseOffsetPaginationOptions): UseOffsetPaginationReturn { + const { + total = Number.POSITIVE_INFINITY, + pageSize = 10, + page = 1, + } = options; + + const currentPageSize = useClamp(pageSize, 1, Number.POSITIVE_INFINITY); + + const totalPages = computed(() => Math.max( + 1, + Math.ceil(toValue(total) / toValue(currentPageSize)) + )); + + const currentPage = useClamp(page, 1, totalPages); + + const isFirstPage = computed(() => currentPage.value === 1); + const isLastPage = computed(() => currentPage.value === totalPages.value); + + const next = () => currentPage.value++; + const previous = () => currentPage.value--; + const select = (page: number) => currentPage.value = page; + + const returnValue = { + currentPage, + currentPageSize, + totalPages, + isFirstPage, + isLastPage, + next, + previous, + select, + }; + + // NOTE: Don't forget to await nextTick() after calling next() or previous() to ensure the callback is called + + if (options.onPageChange) { + watch(currentPage, () => { + options.onPageChange!(reactive(returnValue)); + }); + } + + if (options.onPageSizeChange) { + watch(currentPageSize, () => { + options.onPageSizeChange!(reactive(returnValue)); + }); + } + + if (options.onTotalPagesChange) { + watch(totalPages, () => { + options.onTotalPagesChange!(reactive(returnValue)); + }); + } + + return returnValue; +} diff --git a/packages/vue/src/composables/useRenderCount/index.test.ts b/packages/vue/src/composables/useRenderCount/index.test.ts index 2af0860..8fe517f 100644 --- a/packages/vue/src/composables/useRenderCount/index.test.ts +++ b/packages/vue/src/composables/useRenderCount/index.test.ts @@ -19,20 +19,20 @@ describe('useRenderCount', () => { const component = mount(ComponentStub); // Initial render - expect(component.vm.count).toBe(0); + expect(component.vm.count).toBe(1); component.vm.hiddenCount = 1; await nextTick(); // Will not trigger a render - expect(component.vm.count).toBe(0); + expect(component.vm.count).toBe(1); expect(component.text()).toBe('0'); component.vm.visibleCount++; await nextTick(); // Will trigger a render - expect(component.vm.count).toBe(1); + expect(component.vm.count).toBe(2); expect(component.text()).toBe('1'); component.vm.visibleCount++; @@ -40,7 +40,7 @@ describe('useRenderCount', () => { await nextTick(); // Will trigger a single render for both updates - expect(component.vm.count).toBe(2); + expect(component.vm.count).toBe(3); expect(component.text()).toBe('3'); }); @@ -50,7 +50,7 @@ describe('useRenderCount', () => { const count = useRenderCount(instance); - // Initial render + // Initial render (should be zero because the component has already rendered on mount) expect(count.value).toBe(0); component.vm.hiddenCount = 1; diff --git a/packages/vue/src/composables/useRenderCount/index.ts b/packages/vue/src/composables/useRenderCount/index.ts index 0924dd9..d40737b 100644 --- a/packages/vue/src/composables/useRenderCount/index.ts +++ b/packages/vue/src/composables/useRenderCount/index.ts @@ -1,6 +1,6 @@ -import { onUpdated, readonly, type ComponentInternalInstance } from 'vue'; +import { onMounted, onUpdated, readonly, type ComponentInternalInstance } from 'vue'; import { useCounter } from '../useCounter'; -import { getLifeCycleTarger } from '../../utils'; +import { getLifeCycleTarger } from '../..'; /** * @name useRenderCount @@ -15,11 +15,15 @@ import { getLifeCycleTarger } from '../../utils'; * * @example * const count = useRenderCount(getCurrentInstance()); + * + * @since 0.0.1 */ export function useRenderCount(instance?: ComponentInternalInstance) { const { count, increment } = useCounter(0); + const target = getLifeCycleTarger(instance); - onUpdated(increment, getLifeCycleTarger(instance)); + onMounted(increment, target); + onUpdated(increment, target); return readonly(count); } \ No newline at end of file diff --git a/packages/vue/src/composables/useRenderInfo/index.test.ts b/packages/vue/src/composables/useRenderInfo/index.test.ts new file mode 100644 index 0000000..1a13191 --- /dev/null +++ b/packages/vue/src/composables/useRenderInfo/index.test.ts @@ -0,0 +1,100 @@ +import { describe, it, expect } from 'vitest'; +import { useRenderInfo } from '.'; +import { defineComponent, nextTick, ref } from 'vue'; +import { mount } from '@vue/test-utils'; + +const NamedComponentStub = defineComponent({ + name: 'ComponentStub', + setup() { + const info = useRenderInfo(); + const visibleCount = ref(0); + const hiddenCount = ref(0); + + return { info, visibleCount, hiddenCount }; + }, + template: `
{{ visibleCount }}
`, +}); + +const UnnamedComponentStub = defineComponent({ + setup() { + const info = useRenderInfo(); + const visibleCount = ref(0); + const hiddenCount = ref(0); + + return { info, visibleCount, hiddenCount }; + }, + template: `
{{ visibleCount }}
`, +}); + +describe('useRenderInfo', () => { + it('return uid if component name is not available', async () => { + const wrapper = mount(UnnamedComponentStub); + + expect(wrapper.vm.info.component).toBe(wrapper.vm.$.uid); + }); + + it('return render info for the given instance', async () => { + const wrapper = mount(NamedComponentStub); + + // Initial render + expect(wrapper.vm.info.component).toBe('ComponentStub'); + expect(wrapper.vm.info.count.value).toBe(1); + expect(wrapper.vm.info.duration.value).toBeGreaterThan(0); + expect(wrapper.vm.info.lastRendered).toBeGreaterThan(0); + + let lastRendered = wrapper.vm.info.lastRendered; + let duration = wrapper.vm.info.duration.value; + + // Will not trigger a render + wrapper.vm.hiddenCount++; + await nextTick(); + + expect(wrapper.vm.info.component).toBe('ComponentStub'); + expect(wrapper.vm.info.count.value).toBe(1); + expect(wrapper.vm.info.duration.value).toBe(duration); + expect(wrapper.vm.info.lastRendered).toBe(lastRendered); + + // Will trigger a render + wrapper.vm.visibleCount++; + await nextTick(); + + expect(wrapper.vm.info.component).toBe('ComponentStub'); + expect(wrapper.vm.info.count.value).toBe(2); + expect(wrapper.vm.info.duration.value).not.toBe(duration); + expect(wrapper.vm.info.lastRendered).toBeGreaterThan(0); + }); + + it('can be used with a specific component instance', async () => { + const wrapper = mount(NamedComponentStub); + const instance = wrapper.vm.$; + + const info = useRenderInfo(instance); + + // Initial render (should be zero because the component has already rendered on mount) + expect(info.component).toBe('ComponentStub'); + expect(info.count.value).toBe(0); + expect(info.duration.value).toBe(0); + expect(info.lastRendered).toBeGreaterThan(0); + + let lastRendered = info.lastRendered; + let duration = info.duration.value; + + // Will not trigger a render + wrapper.vm.hiddenCount++; + await nextTick(); + + expect(info.component).toBe('ComponentStub'); + expect(info.count.value).toBe(0); + expect(info.duration.value).toBe(duration); + expect(info.lastRendered).toBe(lastRendered); + + // Will trigger a render + wrapper.vm.visibleCount++; + await nextTick(); + + expect(info.component).toBe('ComponentStub'); + expect(info.count.value).toBe(1); + expect(info.duration.value).not.toBe(duration); + expect(info.lastRendered).toBeGreaterThan(0); + }); +}); \ No newline at end of file diff --git a/packages/vue/src/composables/useRenderInfo/index.ts b/packages/vue/src/composables/useRenderInfo/index.ts new file mode 100644 index 0000000..e7518c8 --- /dev/null +++ b/packages/vue/src/composables/useRenderInfo/index.ts @@ -0,0 +1,41 @@ +import { timestamp } from '@robonen/stdlib'; +import { onBeforeMount, onBeforeUpdate, onMounted, onUpdated, readonly, ref, type ComponentInternalInstance } from 'vue'; +import { useRenderCount } from '../useRenderCount'; +import { getLifeCycleTarger } from '../..'; + +/** + * @name useRenderInfo + * @category Components + * @description Returns information about the component's render count and the last time it was rendered + * + * @param {ComponentInternalInstance} [instance] The component instance to track the render count for + * + * + * @example + * const { component, count, duration, lastRendered } = useRenderInfo(); + * + * @example + * const { component, count, duration, lastRendered } = useRenderInfo(getCurrentInstance()); + * + * @since 0.0.1 + */ +export function useRenderInfo(instance?: ComponentInternalInstance) { + const target = getLifeCycleTarger(instance); + const duration = ref(0); + + const startMark = () => duration.value = performance.now(); + const endMark = () => duration.value = Math.max(performance.now() - duration.value, 0); + + onBeforeMount(startMark, target); + onMounted(endMark, target); + + onBeforeUpdate(startMark, target); + onUpdated(endMark, target); + + return { + component: target?.type.name ?? target?.uid, + count: useRenderCount(instance), + duration: readonly(duration), + lastRendered: timestamp(), + }; +} \ No newline at end of file diff --git a/packages/vue/src/composables/useSupported/index.test.ts b/packages/vue/src/composables/useSupported/index.test.ts new file mode 100644 index 0000000..889a414 --- /dev/null +++ b/packages/vue/src/composables/useSupported/index.test.ts @@ -0,0 +1,37 @@ +import { defineComponent } from 'vue'; +import { describe, it, expect } from 'vitest'; +import { useSupported } from '.'; +import { mount } from '@vue/test-utils'; + +const ComponentStub = defineComponent({ + props: { + location: { + type: String, + default: 'location', + }, + }, + setup(props) { + const isSupported = useSupported(() => props.location in window); + + return { isSupported }; + }, + template: `
{{ isSupported }}
`, +}); + +describe('useSupported', () => { + it('return whether the feature is supported', async () => { + const component = mount(ComponentStub); + + expect(component.text()).toBe('true'); + }); + + it('return whether the feature is not supported', async () => { + const component = mount(ComponentStub, { + props: { + location: 'unsupported', + }, + }); + + expect(component.text()).toBe('false'); + }); +}); \ No newline at end of file diff --git a/packages/vue/src/composables/useSupported/index.ts b/packages/vue/src/composables/useSupported/index.ts new file mode 100644 index 0000000..8a39902 --- /dev/null +++ b/packages/vue/src/composables/useSupported/index.ts @@ -0,0 +1,29 @@ +import { computed } from 'vue'; +import { useMounted } from '../useMounted'; + +/** + * @name useSupported + * @category Utilities + * @description SSR-friendly way to check if a feature is supported + * + * @param {Function} feature The feature to check for support + * @returns {ComputedRef} Whether the feature is supported + * + * @example + * const isSupported = useSupported(() => 'IntersectionObserver' in window); + * + * @example + * const isSupported = useSupported(() => 'ResizeObserver' in window); + * + * @since 0.0.1 + */ +export function useSupported(feature: () => unknown) { + const isMounted = useMounted(); + + return computed(() => { + // add reactive dependency on isMounted + isMounted.value; + + return Boolean(feature()); + }); +} \ No newline at end of file diff --git a/packages/vue/src/composables/useSyncRefs/index.ts b/packages/vue/src/composables/useSyncRefs/index.ts index 1023097..612bd7b 100644 --- a/packages/vue/src/composables/useSyncRefs/index.ts +++ b/packages/vue/src/composables/useSyncRefs/index.ts @@ -21,6 +21,8 @@ import { isArray } from '@robonen/stdlib'; * const source = ref(0); * const target1 = ref(0); * useSyncRefs(source, target1, { immediate: true }); + * + * @since 0.0.1 */ export function useSyncRefs( source: WatchSource, diff --git a/packages/vue/src/composables/useToggle/index.ts b/packages/vue/src/composables/useToggle/index.ts index 29d488b..a306dd5 100644 --- a/packages/vue/src/composables/useToggle/index.ts +++ b/packages/vue/src/composables/useToggle/index.ts @@ -1,5 +1,7 @@ import { isRef, ref, toValue, type MaybeRefOrGetter, type MaybeRef, type Ref } from 'vue'; +// TODO: wip + export interface UseToggleOptions { enabledValue?: MaybeRefOrGetter, disabledValue?: MaybeRefOrGetter, diff --git a/packages/vue/src/index.ts b/packages/vue/src/index.ts index 95eec68..13a9fc4 100644 --- a/packages/vue/src/index.ts +++ b/packages/vue/src/index.ts @@ -1,2 +1,3 @@ export * from './composables'; -export * from './utils'; \ No newline at end of file +export * from './utils'; +export * from './types'; \ No newline at end of file diff --git a/packages/vue/src/types/index.ts b/packages/vue/src/types/index.ts new file mode 100644 index 0000000..bb5135c --- /dev/null +++ b/packages/vue/src/types/index.ts @@ -0,0 +1,2 @@ +export * from './resumable'; +export * from './window'; \ No newline at end of file diff --git a/packages/vue/src/types/resumable.ts b/packages/vue/src/types/resumable.ts new file mode 100644 index 0000000..ad99dc8 --- /dev/null +++ b/packages/vue/src/types/resumable.ts @@ -0,0 +1,30 @@ +/** + * Often times, we want to pause and resume a process. This is a common pattern in + * reactive programming. This interface defines the options and actions for a resumable + * process. + */ + +/** + * The options for a resumable process. + * + * @typedef {Object} ResumableOptions + * @property {boolean} [immediate] Whether to immediately resume the process + * + */ +export interface ResumableOptions { + immediate?: boolean; +} + +/** + * The actions for a resumable process. + * + * @typedef {Object} ResumableActions + * @property {Function} resume Resumes the process + * @property {Function} pause Pauses the process + * @property {Function} toggle Toggles the process + */ +export interface ResumableActions { + resume: () => void; + pause: () => void; + toggle: () => void; +} \ No newline at end of file diff --git a/packages/vue/src/types/window.ts b/packages/vue/src/types/window.ts new file mode 100644 index 0000000..afa5061 --- /dev/null +++ b/packages/vue/src/types/window.ts @@ -0,0 +1,3 @@ +import { isClient } from '@robonen/platform'; + +export const defaultWindow = /* #__PURE__ */ isClient ? window : undefined \ No newline at end of file diff --git a/packages/vue/src/utils/components.ts b/packages/vue/src/utils/components.ts index 62eed3e..5765af6 100644 --- a/packages/vue/src/utils/components.ts +++ b/packages/vue/src/utils/components.ts @@ -1,5 +1,21 @@ import { getCurrentInstance, type ComponentInternalInstance } from 'vue'; +/** + * @name getLifeCycleTarger + * @category Utils + * @description Function to get the target instance of the lifecycle hook + * + * @param {ComponentInternalInstance} target The target instance of the lifecycle hook + * @returns {ComponentInternalInstance | null} Instance of the lifecycle hook or null + * + * @example + * const target = getLifeCycleTarger(); + * + * @example + * const target = getLifeCycleTarger(instance); + * + * @since 0.0.1 + */ export function getLifeCycleTarger(target?: ComponentInternalInstance) { return target || getCurrentInstance(); } \ No newline at end of file diff --git a/packages/vue/src/utils/error.ts b/packages/vue/src/utils/error.ts new file mode 100644 index 0000000..65fd163 --- /dev/null +++ b/packages/vue/src/utils/error.ts @@ -0,0 +1,13 @@ +/** + * @name VueToolsError + * @category Error + * @description VueToolsError is a custom error class that represents an error in Vue Tools + * + * @since 0.0.1 + */ +export class VueToolsError extends Error { + constructor(message: string) { + super(message); + this.name = 'VueToolsError'; + } +} \ No newline at end of file diff --git a/packages/vue/src/utils/index.ts b/packages/vue/src/utils/index.ts index 099b463..5aab4b8 100644 --- a/packages/vue/src/utils/index.ts +++ b/packages/vue/src/utils/index.ts @@ -1 +1,2 @@ -export * from './components'; \ No newline at end of file +export * from './components'; +export * from './error'; \ No newline at end of file diff --git a/packages/vue/tsconfig.json b/packages/vue/tsconfig.json index d6d22e4..2d43941 100644 --- a/packages/vue/tsconfig.json +++ b/packages/vue/tsconfig.json @@ -1,3 +1,6 @@ { - "extends": "@robonen/tsconfig/tsconfig.json" + "extends": "@robonen/tsconfig/tsconfig.json", + "compilerOptions": { + "lib": ["DOM"] + } } \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 48bf52f..e672af1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -7,8 +7,8 @@ settings: catalogs: default: '@vitest/coverage-v8': - specifier: ^2.1.2 - version: 2.1.2 + specifier: ^2.1.3 + version: 2.1.3 '@vue/test-utils': specifier: ^2.4.6 version: 2.4.6 @@ -19,28 +19,28 @@ catalogs: specifier: ^1.1.2 version: 1.1.2 unbuild: - specifier: 3.0.0-rc.8 - version: 3.0.0-rc.8 + specifier: 3.0.0-rc.11 + version: 3.0.0-rc.11 vitest: - specifier: ^2.1.2 - version: 2.1.2 + specifier: ^2.1.3 + version: 2.1.3 vue: - specifier: ^3.5.11 - version: 3.5.11 + specifier: ^3.5.12 + version: 3.5.12 importers: .: devDependencies: '@types/node': - specifier: ^20.16.10 - version: 20.16.10 + specifier: ^20.16.14 + version: 20.16.14 citty: specifier: ^0.1.6 version: 0.1.6 jiti: - specifier: ^2.2.1 - version: 2.2.1 + specifier: ^2.3.3 + version: 2.3.3 pathe: specifier: ^1.1.2 version: 1.1.2 @@ -48,8 +48,8 @@ importers: specifier: ^1.3.0 version: 1.3.0 vitepress: - specifier: ^1.3.4 - version: 1.3.4(@algolia/client-search@4.23.2)(@types/node@20.16.10)(postcss@8.4.47)(search-insights@2.13.0)(typescript@5.4.4) + specifier: ^1.4.1 + version: 1.4.1(@algolia/client-search@4.23.2)(@types/node@20.16.14)(postcss@8.4.47)(search-insights@2.13.0)(typescript@5.4.4) apps/vhs: devDependencies: @@ -57,20 +57,23 @@ importers: specifier: workspace:* version: link:../../packages/tsconfig '@types/bun': - specifier: ^1.1.10 - version: 1.1.10 + specifier: ^1.1.12 + version: 1.1.12 packages/platform: devDependencies: '@robonen/tsconfig': specifier: workspace:* version: link:../tsconfig + unbuild: + specifier: 'catalog:' + version: 3.0.0-rc.11(typescript@5.4.4) packages/renovate: devDependencies: renovate: - specifier: ^38.110.1 - version: 38.110.1(@aws-sdk/client-sso-oidc@3.658.1(@aws-sdk/client-sts@3.658.1))(encoding@0.1.13)(typanion@3.14.0) + specifier: ^38.130.0 + version: 38.130.0(@aws-sdk/client-sso-oidc@3.658.1(@aws-sdk/client-sts@3.658.1))(encoding@0.1.13)(typanion@3.14.0) packages/stdlib: devDependencies: @@ -79,27 +82,30 @@ importers: version: link:../tsconfig '@vitest/coverage-v8': specifier: 'catalog:' - version: 2.1.2(vitest@2.1.2(@types/node@20.16.10)(jsdom@25.0.1)) + version: 2.1.3(vitest@2.1.3(@types/node@20.16.14)(jsdom@25.0.1)) pathe: specifier: 'catalog:' version: 1.1.2 unbuild: specifier: 'catalog:' - version: 3.0.0-rc.8(typescript@5.4.4) + version: 3.0.0-rc.11(typescript@5.4.4) vitest: specifier: 'catalog:' - version: 2.1.2(@types/node@20.16.10)(jsdom@25.0.1) + version: 2.1.3(@types/node@20.16.14)(jsdom@25.0.1) packages/tsconfig: {} packages/vue: dependencies: + '@robonen/platform': + specifier: workspace:* + version: link:../platform '@robonen/stdlib': specifier: workspace:* version: link:../stdlib vue: specifier: 'catalog:' - version: 3.5.11(typescript@5.4.4) + version: 3.5.12(typescript@5.4.4) devDependencies: '@robonen/tsconfig': specifier: workspace:* @@ -110,9 +116,12 @@ importers: jsdom: specifier: 'catalog:' version: 25.0.1 + unbuild: + specifier: 'catalog:' + version: 3.0.0-rc.11(typescript@5.4.4) vitest: specifier: 'catalog:' - version: 2.1.2(@types/node@20.16.10)(jsdom@25.0.1) + version: 2.1.3(@types/node@20.16.14)(jsdom@25.0.1) packages: @@ -395,102 +404,106 @@ packages: resolution: {integrity: sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==} engines: {node: '>=6.9.0'} - '@babel/compat-data@7.24.4': - resolution: {integrity: sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ==} + '@babel/code-frame@7.25.9': + resolution: {integrity: sha512-z88xeGxnzehn2sqZ8UdGQEvYErF1odv2CftxInpSYJt6uHuPe9YjahKZITGs3l5LeI9d2ROG+obuDAoSlqbNfQ==} engines: {node: '>=6.9.0'} - '@babel/core@7.24.4': - resolution: {integrity: sha512-MBVlMXP+kkl5394RBLSxxk/iLTeVGuXTV3cIDXavPpMMqnSnt6apKgan/U8O3USWZCWZT/TbgfEpKa4uMgN4Dg==} + '@babel/compat-data@7.25.9': + resolution: {integrity: sha512-yD+hEuJ/+wAJ4Ox2/rpNv5HIuPG82x3ZlQvYVn8iYCprdxzE7P1udpGF1jyjQVBU4dgznN+k2h103vxZ7NdPyw==} engines: {node: '>=6.9.0'} - '@babel/generator@7.24.4': - resolution: {integrity: sha512-Xd6+v6SnjWVx/nus+y0l1sxMOTOMBkyL4+BIdbALyatQnAe/SRVjANeDPSCYaX+i1iJmuGSKf3Z+E+V/va1Hvw==} + '@babel/core@7.25.9': + resolution: {integrity: sha512-WYvQviPw+Qyib0v92AwNIrdLISTp7RfDkM7bPqBvpbnhY4wq8HvHBZREVdYDXk98C8BkOIVnHAY3yvj7AVISxQ==} engines: {node: '>=6.9.0'} - '@babel/helper-compilation-targets@7.23.6': - resolution: {integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==} + '@babel/generator@7.25.9': + resolution: {integrity: sha512-omlUGkr5EaoIJrhLf9CJ0TvjBRpd9+AXRG//0GEQ9THSo8wPiTlbpy1/Ow8ZTrbXpjd9FHXfbFQx32I04ht0FA==} engines: {node: '>=6.9.0'} - '@babel/helper-environment-visitor@7.22.20': - resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==} + '@babel/helper-compilation-targets@7.25.9': + resolution: {integrity: sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==} engines: {node: '>=6.9.0'} - '@babel/helper-function-name@7.23.0': - resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==} + '@babel/helper-module-imports@7.25.9': + resolution: {integrity: sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==} engines: {node: '>=6.9.0'} - '@babel/helper-hoist-variables@7.22.5': - resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} - 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-transforms@7.23.3': - resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} + '@babel/helper-module-transforms@7.25.9': + resolution: {integrity: sha512-TvLZY/F3+GvdRYFZFyxMvnsKi+4oJdgZzU3BoGN9Uc2d9C6zfNwJcKKhjqLAhK8i46mv93jsO74fDh3ih6rpHA==} 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-split-export-declaration@7.22.6': - resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} + '@babel/helper-simple-access@7.25.9': + resolution: {integrity: sha512-c6WHXuiaRsJTyHYLJV75t9IqsmTbItYfdj99PnzYGQZkYKvan5/2jKJ7gu31J3/BJ/A18grImSPModuyG/Eo0Q==} engines: {node: '>=6.9.0'} '@babel/helper-string-parser@7.24.8': resolution: {integrity: sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==} 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.24.7': resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==} engines: {node: '>=6.9.0'} - '@babel/helper-validator-option@7.23.5': - resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==} + '@babel/helper-validator-identifier@7.25.9': + resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} engines: {node: '>=6.9.0'} - '@babel/helpers@7.24.4': - resolution: {integrity: sha512-FewdlZbSiwaVGlgT1DPANDuCHaDMiOo+D/IDYRFYjHOuv66xMSJ7fQwwODwRNAPkADIO/z1EoF/l2BCWlWABDw==} + '@babel/helper-validator-option@7.25.9': + resolution: {integrity: sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==} + engines: {node: '>=6.9.0'} + + '@babel/helpers@7.25.9': + resolution: {integrity: sha512-oKWp3+usOJSzDZOucZUAMayhPz/xVjzymyDzUN8dk0Wd3RWMlGLXi07UCQ/CgQVb8LvXx3XBajJH4XGgkt7H7g==} 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.7': - resolution: {integrity: sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==} - engines: {node: '>=6.0.0'} - hasBin: true + '@babel/highlight@7.25.9': + resolution: {integrity: sha512-llL88JShoCsth8fF8R4SJnIn+WLvR6ccFxu1H3FlMhDontdcmZWf2HgIZ7AIqV3Xcck1idlohrN4EUBQz6klbw==} + engines: {node: '>=6.9.0'} '@babel/parser@7.25.6': resolution: {integrity: sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q==} engines: {node: '>=6.0.0'} hasBin: true + '@babel/parser@7.25.9': + resolution: {integrity: sha512-aI3jjAAO1fh7vY/pBGsn1i9LDbRP43+asrRlkPuTXW5yHXtd1NgTEMudbBoDDxrf1daEEfPJqR+JBMakzrR4Dg==} + engines: {node: '>=6.0.0'} + hasBin: true + '@babel/runtime-corejs3@7.24.4': resolution: {integrity: sha512-VOQOexSilscN24VEY810G/PqtpFvx/z6UqDIjIWbDe2368HhDLkYN5TYwaEz/+eRCUkhJ2WaNLLmQAlxzfWj4w==} engines: {node: '>=6.9.0'} - '@babel/standalone@7.24.4': - resolution: {integrity: sha512-V4uqWeedadiuiCx5P5OHYJZ1PehdMpcBccNCEptKFGPiZIY3FI5f2ClxUl4r5wZ5U+ohcQ+4KW6jX2K6xXzq4Q==} + '@babel/standalone@7.25.9': + resolution: {integrity: sha512-j37QF9mpPAneLBp9xX9FU8O9mWbuKvGbjDvjWtg4vu++08210X7FQNq+3df7MkeI1g56XFWsEqyN0byzuSe3dA==} engines: {node: '>=6.9.0'} - '@babel/template@7.24.0': - resolution: {integrity: sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==} + '@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==} + '@babel/traverse@7.25.9': + resolution: {integrity: sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw==} engines: {node: '>=6.9.0'} '@babel/types@7.25.6': resolution: {integrity: sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==} engines: {node: '>=6.9.0'} + '@babel/types@7.25.9': + resolution: {integrity: sha512-OwS2CM5KocvQ/k7dFJa8i5bNGJP0hXWfVCfDkqRFP1IreH1JDC7wG6eCYCi0+McbfT8OR/kNqsI0UU0xP9H6PQ==} + engines: {node: '>=6.9.0'} + '@bcoe/v8-coverage@0.2.3': resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} @@ -501,14 +514,14 @@ packages: '@cdktf/hcl2json@0.20.9': resolution: {integrity: sha512-HlYqFsvEANyQJiQx8L2j05xot+bKa6T6PInc11dUCyQh8SbpVehdbGVN39TVnv1lIjdG7E2WNuxOf1L/Y3oF5w==} - '@docsearch/css@3.6.1': - resolution: {integrity: sha512-VtVb5DS+0hRIprU2CO6ZQjK2Zg4QU5HrDM1+ix6rT0umsYvFvatMAnf97NHZlVWDaaLlx7GRfR/7FikANiM2Fg==} + '@docsearch/css@3.6.2': + resolution: {integrity: sha512-vKNZepO2j7MrYBTZIGXvlUOIR+v9KRf70FApRgovWrj3GTs1EITz/Xb0AOlm1xsQBp16clVZj1SY/qaOJbQtZw==} - '@docsearch/js@3.6.1': - resolution: {integrity: sha512-erI3RRZurDr1xES5hvYJ3Imp7jtrXj6f1xYIzDzxiS7nNBufYWPbJwrmMqWC5g9y165PmxEmN9pklGCdLi0Iqg==} + '@docsearch/js@3.6.2': + resolution: {integrity: sha512-pS4YZF+VzUogYrkblCucQ0Oy2m8Wggk8Kk7lECmZM60hTbaydSIhJTTiCrmoxtBqV8wxORnOqcqqOfbmkkQEcA==} - '@docsearch/react@3.6.1': - resolution: {integrity: sha512-qXZkEPvybVhSXj0K7U3bXc233tk5e8PfhoZ6MhPOiik/qUQxYC+Dn9DnoS7CxHQQhHfCvTiN0eY9M12oRghEXw==} + '@docsearch/react@3.6.2': + resolution: {integrity: sha512-rtZce46OOkVflCQH71IdbXSFK+S8iJZlUF56XBW5rIgx/eG5qoomC7Ag3anZson1bBac/JFQn7XOBfved/IMRA==} peerDependencies: '@types/react': '>= 16.8.0 < 19.0.0' react: '>= 16.8.0 < 19.0.0' @@ -530,12 +543,6 @@ packages: cpu: [ppc64] os: [aix] - '@esbuild/aix-ppc64@0.23.1': - resolution: {integrity: sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [aix] - '@esbuild/aix-ppc64@0.24.0': resolution: {integrity: sha512-WtKdFM7ls47zkKHFVzMz8opM7LkcsIp9amDUBIAWirg70RM71WRSjdILPsY5Uv1D42ZpUfaPILDlfactHgsRkw==} engines: {node: '>=18'} @@ -548,12 +555,6 @@ packages: cpu: [arm64] os: [android] - '@esbuild/android-arm64@0.23.1': - resolution: {integrity: sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==} - engines: {node: '>=18'} - cpu: [arm64] - os: [android] - '@esbuild/android-arm64@0.24.0': resolution: {integrity: sha512-Vsm497xFM7tTIPYK9bNTYJyF/lsP590Qc1WxJdlB6ljCbdZKU9SY8i7+Iin4kyhV/KV5J2rOKsBQbB77Ab7L/w==} engines: {node: '>=18'} @@ -566,12 +567,6 @@ packages: cpu: [arm] os: [android] - '@esbuild/android-arm@0.23.1': - resolution: {integrity: sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==} - engines: {node: '>=18'} - cpu: [arm] - os: [android] - '@esbuild/android-arm@0.24.0': resolution: {integrity: sha512-arAtTPo76fJ/ICkXWetLCc9EwEHKaeya4vMrReVlEIUCAUncH7M4bhMQ+M9Vf+FFOZJdTNMXNBrWwW+OXWpSew==} engines: {node: '>=18'} @@ -584,12 +579,6 @@ packages: cpu: [x64] os: [android] - '@esbuild/android-x64@0.23.1': - resolution: {integrity: sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==} - engines: {node: '>=18'} - cpu: [x64] - os: [android] - '@esbuild/android-x64@0.24.0': resolution: {integrity: sha512-t8GrvnFkiIY7pa7mMgJd7p8p8qqYIz1NYiAoKc75Zyv73L3DZW++oYMSHPRarcotTKuSs6m3hTOa5CKHaS02TQ==} engines: {node: '>=18'} @@ -602,12 +591,6 @@ packages: cpu: [arm64] os: [darwin] - '@esbuild/darwin-arm64@0.23.1': - resolution: {integrity: sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==} - engines: {node: '>=18'} - cpu: [arm64] - os: [darwin] - '@esbuild/darwin-arm64@0.24.0': resolution: {integrity: sha512-CKyDpRbK1hXwv79soeTJNHb5EiG6ct3efd/FTPdzOWdbZZfGhpbcqIpiD0+vwmpu0wTIL97ZRPZu8vUt46nBSw==} engines: {node: '>=18'} @@ -620,12 +603,6 @@ packages: cpu: [x64] os: [darwin] - '@esbuild/darwin-x64@0.23.1': - resolution: {integrity: sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==} - engines: {node: '>=18'} - cpu: [x64] - os: [darwin] - '@esbuild/darwin-x64@0.24.0': resolution: {integrity: sha512-rgtz6flkVkh58od4PwTRqxbKH9cOjaXCMZgWD905JOzjFKW+7EiUObfd/Kav+A6Gyud6WZk9w+xu6QLytdi2OA==} engines: {node: '>=18'} @@ -638,12 +615,6 @@ packages: cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-arm64@0.23.1': - resolution: {integrity: sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==} - engines: {node: '>=18'} - cpu: [arm64] - os: [freebsd] - '@esbuild/freebsd-arm64@0.24.0': resolution: {integrity: sha512-6Mtdq5nHggwfDNLAHkPlyLBpE5L6hwsuXZX8XNmHno9JuL2+bg2BX5tRkwjyfn6sKbxZTq68suOjgWqCicvPXA==} engines: {node: '>=18'} @@ -656,12 +627,6 @@ packages: cpu: [x64] os: [freebsd] - '@esbuild/freebsd-x64@0.23.1': - resolution: {integrity: sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==} - engines: {node: '>=18'} - cpu: [x64] - os: [freebsd] - '@esbuild/freebsd-x64@0.24.0': resolution: {integrity: sha512-D3H+xh3/zphoX8ck4S2RxKR6gHlHDXXzOf6f/9dbFt/NRBDIE33+cVa49Kil4WUjxMGW0ZIYBYtaGCa2+OsQwQ==} engines: {node: '>=18'} @@ -674,12 +639,6 @@ packages: cpu: [arm64] os: [linux] - '@esbuild/linux-arm64@0.23.1': - resolution: {integrity: sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==} - engines: {node: '>=18'} - cpu: [arm64] - os: [linux] - '@esbuild/linux-arm64@0.24.0': resolution: {integrity: sha512-TDijPXTOeE3eaMkRYpcy3LarIg13dS9wWHRdwYRnzlwlA370rNdZqbcp0WTyyV/k2zSxfko52+C7jU5F9Tfj1g==} engines: {node: '>=18'} @@ -692,12 +651,6 @@ packages: cpu: [arm] os: [linux] - '@esbuild/linux-arm@0.23.1': - resolution: {integrity: sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==} - engines: {node: '>=18'} - cpu: [arm] - os: [linux] - '@esbuild/linux-arm@0.24.0': resolution: {integrity: sha512-gJKIi2IjRo5G6Glxb8d3DzYXlxdEj2NlkixPsqePSZMhLudqPhtZ4BUrpIuTjJYXxvF9njql+vRjB2oaC9XpBw==} engines: {node: '>=18'} @@ -710,12 +663,6 @@ packages: cpu: [ia32] os: [linux] - '@esbuild/linux-ia32@0.23.1': - resolution: {integrity: sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==} - engines: {node: '>=18'} - cpu: [ia32] - os: [linux] - '@esbuild/linux-ia32@0.24.0': resolution: {integrity: sha512-K40ip1LAcA0byL05TbCQ4yJ4swvnbzHscRmUilrmP9Am7//0UjPreh4lpYzvThT2Quw66MhjG//20mrufm40mA==} engines: {node: '>=18'} @@ -728,12 +675,6 @@ packages: cpu: [loong64] os: [linux] - '@esbuild/linux-loong64@0.23.1': - resolution: {integrity: sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==} - engines: {node: '>=18'} - cpu: [loong64] - os: [linux] - '@esbuild/linux-loong64@0.24.0': resolution: {integrity: sha512-0mswrYP/9ai+CU0BzBfPMZ8RVm3RGAN/lmOMgW4aFUSOQBjA31UP8Mr6DDhWSuMwj7jaWOT0p0WoZ6jeHhrD7g==} engines: {node: '>=18'} @@ -746,12 +687,6 @@ packages: cpu: [mips64el] os: [linux] - '@esbuild/linux-mips64el@0.23.1': - resolution: {integrity: sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==} - engines: {node: '>=18'} - cpu: [mips64el] - os: [linux] - '@esbuild/linux-mips64el@0.24.0': resolution: {integrity: sha512-hIKvXm0/3w/5+RDtCJeXqMZGkI2s4oMUGj3/jM0QzhgIASWrGO5/RlzAzm5nNh/awHE0A19h/CvHQe6FaBNrRA==} engines: {node: '>=18'} @@ -764,12 +699,6 @@ packages: cpu: [ppc64] os: [linux] - '@esbuild/linux-ppc64@0.23.1': - resolution: {integrity: sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [linux] - '@esbuild/linux-ppc64@0.24.0': resolution: {integrity: sha512-HcZh5BNq0aC52UoocJxaKORfFODWXZxtBaaZNuN3PUX3MoDsChsZqopzi5UupRhPHSEHotoiptqikjN/B77mYQ==} engines: {node: '>=18'} @@ -782,12 +711,6 @@ packages: cpu: [riscv64] os: [linux] - '@esbuild/linux-riscv64@0.23.1': - resolution: {integrity: sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==} - engines: {node: '>=18'} - cpu: [riscv64] - os: [linux] - '@esbuild/linux-riscv64@0.24.0': resolution: {integrity: sha512-bEh7dMn/h3QxeR2KTy1DUszQjUrIHPZKyO6aN1X4BCnhfYhuQqedHaa5MxSQA/06j3GpiIlFGSsy1c7Gf9padw==} engines: {node: '>=18'} @@ -800,12 +723,6 @@ packages: cpu: [s390x] os: [linux] - '@esbuild/linux-s390x@0.23.1': - resolution: {integrity: sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==} - engines: {node: '>=18'} - cpu: [s390x] - os: [linux] - '@esbuild/linux-s390x@0.24.0': resolution: {integrity: sha512-ZcQ6+qRkw1UcZGPyrCiHHkmBaj9SiCD8Oqd556HldP+QlpUIe2Wgn3ehQGVoPOvZvtHm8HPx+bH20c9pvbkX3g==} engines: {node: '>=18'} @@ -818,12 +735,6 @@ packages: cpu: [x64] os: [linux] - '@esbuild/linux-x64@0.23.1': - resolution: {integrity: sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [linux] - '@esbuild/linux-x64@0.24.0': resolution: {integrity: sha512-vbutsFqQ+foy3wSSbmjBXXIJ6PL3scghJoM8zCL142cGaZKAdCZHyf+Bpu/MmX9zT9Q0zFBVKb36Ma5Fzfa8xA==} engines: {node: '>=18'} @@ -836,24 +747,12 @@ packages: cpu: [x64] os: [netbsd] - '@esbuild/netbsd-x64@0.23.1': - resolution: {integrity: sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==} - engines: {node: '>=18'} - cpu: [x64] - os: [netbsd] - '@esbuild/netbsd-x64@0.24.0': resolution: {integrity: sha512-hjQ0R/ulkO8fCYFsG0FZoH+pWgTTDreqpqY7UnQntnaKv95uP5iW3+dChxnx7C3trQQU40S+OgWhUVwCjVFLvg==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] - '@esbuild/openbsd-arm64@0.23.1': - resolution: {integrity: sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openbsd] - '@esbuild/openbsd-arm64@0.24.0': resolution: {integrity: sha512-MD9uzzkPQbYehwcN583yx3Tu5M8EIoTD+tUgKF982WYL9Pf5rKy9ltgD0eUgs8pvKnmizxjXZyLt0z6DC3rRXg==} engines: {node: '>=18'} @@ -866,12 +765,6 @@ packages: cpu: [x64] os: [openbsd] - '@esbuild/openbsd-x64@0.23.1': - resolution: {integrity: sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==} - engines: {node: '>=18'} - cpu: [x64] - os: [openbsd] - '@esbuild/openbsd-x64@0.24.0': resolution: {integrity: sha512-4ir0aY1NGUhIC1hdoCzr1+5b43mw99uNwVzhIq1OY3QcEwPDO3B7WNXBzaKY5Nsf1+N11i1eOfFcq+D/gOS15Q==} engines: {node: '>=18'} @@ -884,12 +777,6 @@ packages: cpu: [x64] os: [sunos] - '@esbuild/sunos-x64@0.23.1': - resolution: {integrity: sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==} - engines: {node: '>=18'} - cpu: [x64] - os: [sunos] - '@esbuild/sunos-x64@0.24.0': resolution: {integrity: sha512-jVzdzsbM5xrotH+W5f1s+JtUy1UWgjU0Cf4wMvffTB8m6wP5/kx0KiaLHlbJO+dMgtxKV8RQ/JvtlFcdZ1zCPA==} engines: {node: '>=18'} @@ -902,12 +789,6 @@ packages: cpu: [arm64] os: [win32] - '@esbuild/win32-arm64@0.23.1': - resolution: {integrity: sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==} - engines: {node: '>=18'} - cpu: [arm64] - os: [win32] - '@esbuild/win32-arm64@0.24.0': resolution: {integrity: sha512-iKc8GAslzRpBytO2/aN3d2yb2z8XTVfNV0PjGlCxKo5SgWmNXx82I/Q3aG1tFfS+A2igVCY97TJ8tnYwpUWLCA==} engines: {node: '>=18'} @@ -920,12 +801,6 @@ packages: cpu: [ia32] os: [win32] - '@esbuild/win32-ia32@0.23.1': - resolution: {integrity: sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==} - engines: {node: '>=18'} - cpu: [ia32] - os: [win32] - '@esbuild/win32-ia32@0.24.0': resolution: {integrity: sha512-vQW36KZolfIudCcTnaTpmLQ24Ha1RjygBo39/aLkM2kmjkWmZGEJ5Gn9l5/7tzXA42QGIoWbICfg6KLLkIw6yw==} engines: {node: '>=18'} @@ -938,12 +813,6 @@ packages: cpu: [x64] os: [win32] - '@esbuild/win32-x64@0.23.1': - resolution: {integrity: sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==} - engines: {node: '>=18'} - cpu: [x64] - os: [win32] - '@esbuild/win32-x64@0.24.0': resolution: {integrity: sha512-7IAFPrjSQIJrGsK6flwg7NFmwBoSTyF3rl7If0hNUFQU4ilTsEPL6GuMuU9BfIWVVGuRnuIidkSMC+c0Otu8IA==} engines: {node: '>=18'} @@ -1336,19 +1205,14 @@ packages: rollup: optional: true - '@rollup/rollup-android-arm-eabi@4.21.1': - resolution: {integrity: sha512-2thheikVEuU7ZxFXubPDOtspKn1x0yqaYQwvALVtEcvFhMifPADBrgRPyHV0TF3b+9BgvgjgagVyvA/UqPZHmg==} - cpu: [arm] - os: [android] - '@rollup/rollup-android-arm-eabi@4.22.5': resolution: {integrity: sha512-SU5cvamg0Eyu/F+kLeMXS7GoahL+OoizlclVFX3l5Ql6yNlywJJ0OuqTzUx0v+aHhPHEB/56CT06GQrRrGNYww==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.21.1': - resolution: {integrity: sha512-t1lLYn4V9WgnIFHXy1d2Di/7gyzBWS8G5pQSXdZqfrdCGTwi1VasRMSS81DTYb+avDs/Zz4A6dzERki5oRYz1g==} - cpu: [arm64] + '@rollup/rollup-android-arm-eabi@4.24.0': + resolution: {integrity: sha512-Q6HJd7Y6xdB48x8ZNVDOqsbh2uByBhgK8PiQgPhwkIw/HC/YX5Ghq2mQY5sRMZWHb3VsFkWooUVOZHKr7DmDIA==} + cpu: [arm] os: [android] '@rollup/rollup-android-arm64@4.22.5': @@ -1356,19 +1220,19 @@ packages: cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.21.1': - resolution: {integrity: sha512-AH/wNWSEEHvs6t4iJ3RANxW5ZCK3fUnmf0gyMxWCesY1AlUj8jY7GC+rQE4wd3gwmZ9XDOpL0kcFnCjtN7FXlA==} + '@rollup/rollup-android-arm64@4.24.0': + resolution: {integrity: sha512-ijLnS1qFId8xhKjT81uBHuuJp2lU4x2yxa4ctFPtG+MqEE6+C5f/+X/bStmxapgmwLwiL3ih122xv8kVARNAZA==} cpu: [arm64] - os: [darwin] + os: [android] '@rollup/rollup-darwin-arm64@4.22.5': resolution: {integrity: sha512-250ZGg4ipTL0TGvLlfACkIxS9+KLtIbn7BCZjsZj88zSg2Lvu3Xdw6dhAhfe/FjjXPVNCtcSp+WZjVsD3a/Zlw==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.21.1': - resolution: {integrity: sha512-dO0BIz/+5ZdkLZrVgQrDdW7m2RkrLwYTh2YMFG9IpBtlC1x1NPNSXkfczhZieOlOLEqgXOFH3wYHB7PmBtf+Bg==} - cpu: [x64] + '@rollup/rollup-darwin-arm64@4.24.0': + resolution: {integrity: sha512-bIv+X9xeSs1XCk6DVvkO+S/z8/2AMt/2lMqdQbMrmVpgFvXlmde9mLcbQpztXm1tajC3raFDqegsH18HQPMYtA==} + cpu: [arm64] os: [darwin] '@rollup/rollup-darwin-x64@4.22.5': @@ -1376,18 +1240,18 @@ packages: cpu: [x64] os: [darwin] - '@rollup/rollup-linux-arm-gnueabihf@4.21.1': - resolution: {integrity: sha512-sWWgdQ1fq+XKrlda8PsMCfut8caFwZBmhYeoehJ05FdI0YZXk6ZyUjWLrIgbR/VgiGycrFKMMgp7eJ69HOF2pQ==} - cpu: [arm] - os: [linux] + '@rollup/rollup-darwin-x64@4.24.0': + resolution: {integrity: sha512-X6/nOwoFN7RT2svEQWUsW/5C/fYMBe4fnLK9DQk4SX4mgVBiTA9h64kjUYPvGQ0F/9xwJ5U5UfTbl6BEjaQdBQ==} + cpu: [x64] + os: [darwin] '@rollup/rollup-linux-arm-gnueabihf@4.22.5': resolution: {integrity: sha512-PNqXYmdNFyWNg0ma5LdY8wP+eQfdvyaBAojAXgO7/gs0Q/6TQJVXAXe8gwW9URjbS0YAammur0fynYGiWsKlXw==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.21.1': - resolution: {integrity: sha512-9OIiSuj5EsYQlmwhmFRA0LRO0dRRjdCVZA3hnmZe1rEwRk11Jy3ECGGq3a7RrVEZ0/pCsYWx8jG3IvcrJ6RCew==} + '@rollup/rollup-linux-arm-gnueabihf@4.24.0': + resolution: {integrity: sha512-0KXvIJQMOImLCVCz9uvvdPgfyWo93aHHp8ui3FrtOP57svqrF/roSSR5pjqL2hcMp0ljeGlU4q9o/rQaAQ3AYA==} cpu: [arm] os: [linux] @@ -1396,9 +1260,9 @@ packages: cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.21.1': - resolution: {integrity: sha512-0kuAkRK4MeIUbzQYu63NrJmfoUVicajoRAL1bpwdYIYRcs57iyIV9NLcuyDyDXE2GiZCL4uhKSYAnyWpjZkWow==} - cpu: [arm64] + '@rollup/rollup-linux-arm-musleabihf@4.24.0': + resolution: {integrity: sha512-it2BW6kKFVh8xk/BnHfakEeoLPv8STIISekpoF+nBgWM4d55CZKc7T4Dx1pEbTnYm/xEKMgy1MNtYuoA8RFIWw==} + cpu: [arm] os: [linux] '@rollup/rollup-linux-arm64-gnu@4.22.5': @@ -1406,8 +1270,8 @@ packages: cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.21.1': - resolution: {integrity: sha512-/6dYC9fZtfEY0vozpc5bx1RP4VrtEOhNQGb0HwvYNwXD1BBbwQ5cKIbUVVU7G2d5WRE90NfB922elN8ASXAJEA==} + '@rollup/rollup-linux-arm64-gnu@4.24.0': + resolution: {integrity: sha512-i0xTLXjqap2eRfulFVlSnM5dEbTVque/3Pi4g2y7cxrs7+a9De42z4XxKLYJ7+OhE3IgxvfQM7vQc43bwTgPwA==} cpu: [arm64] os: [linux] @@ -1416,9 +1280,9 @@ packages: cpu: [arm64] os: [linux] - '@rollup/rollup-linux-powerpc64le-gnu@4.21.1': - resolution: {integrity: sha512-ltUWy+sHeAh3YZ91NUsV4Xg3uBXAlscQe8ZOXRCVAKLsivGuJsrkawYPUEyCV3DYa9urgJugMLn8Z3Z/6CeyRQ==} - cpu: [ppc64] + '@rollup/rollup-linux-arm64-musl@4.24.0': + resolution: {integrity: sha512-9E6MKUJhDuDh604Qco5yP/3qn3y7SLXYuiC0Rpr89aMScS2UAmK1wHP2b7KAa1nSjWJc/f/Lc0Wl1L47qjiyQw==} + cpu: [arm64] os: [linux] '@rollup/rollup-linux-powerpc64le-gnu@4.22.5': @@ -1426,9 +1290,9 @@ packages: cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.21.1': - resolution: {integrity: sha512-BggMndzI7Tlv4/abrgLwa/dxNEMn2gC61DCLrTzw8LkpSKel4o+O+gtjbnkevZ18SKkeN3ihRGPuBxjaetWzWg==} - cpu: [riscv64] + '@rollup/rollup-linux-powerpc64le-gnu@4.24.0': + resolution: {integrity: sha512-2XFFPJ2XMEiF5Zi2EBf4h73oR1V/lycirxZxHZNc93SqDN/IWhYYSYj8I9381ikUFXZrz2v7r2tOVk2NBwxrWw==} + cpu: [ppc64] os: [linux] '@rollup/rollup-linux-riscv64-gnu@4.22.5': @@ -1436,9 +1300,9 @@ packages: cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.21.1': - resolution: {integrity: sha512-z/9rtlGd/OMv+gb1mNSjElasMf9yXusAxnRDrBaYB+eS1shFm6/4/xDH1SAISO5729fFKUkJ88TkGPRUh8WSAA==} - cpu: [s390x] + '@rollup/rollup-linux-riscv64-gnu@4.24.0': + resolution: {integrity: sha512-M3Dg4hlwuntUCdzU7KjYqbbd+BLq3JMAOhCKdBE3TcMGMZbKkDdJ5ivNdehOssMCIokNHFOsv7DO4rlEOfyKpg==} + cpu: [riscv64] os: [linux] '@rollup/rollup-linux-s390x-gnu@4.22.5': @@ -1446,9 +1310,9 @@ packages: cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.21.1': - resolution: {integrity: sha512-kXQVcWqDcDKw0S2E0TmhlTLlUgAmMVqPrJZR+KpH/1ZaZhLSl23GZpQVmawBQGVhyP5WXIsIQ/zqbDBBYmxm5w==} - cpu: [x64] + '@rollup/rollup-linux-s390x-gnu@4.24.0': + resolution: {integrity: sha512-mjBaoo4ocxJppTorZVKWFpy1bfFj9FeCMJqzlMQGjpNPY9JwQi7OuS1axzNIk0nMX6jSgy6ZURDZ2w0QW6D56g==} + cpu: [s390x] os: [linux] '@rollup/rollup-linux-x64-gnu@4.22.5': @@ -1456,8 +1320,8 @@ packages: cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.21.1': - resolution: {integrity: sha512-CbFv/WMQsSdl+bpX6rVbzR4kAjSSBuDgCqb1l4J68UYsQNalz5wOqLGYj4ZI0thGpyX5kc+LLZ9CL+kpqDovZA==} + '@rollup/rollup-linux-x64-gnu@4.24.0': + resolution: {integrity: sha512-ZXFk7M72R0YYFN5q13niV0B7G8/5dcQ9JDp8keJSfr3GoZeXEoMHP/HlvqROA3OMbMdfr19IjCeNAnPUG93b6A==} cpu: [x64] os: [linux] @@ -1466,19 +1330,19 @@ packages: cpu: [x64] os: [linux] - '@rollup/rollup-win32-arm64-msvc@4.21.1': - resolution: {integrity: sha512-3Q3brDgA86gHXWHklrwdREKIrIbxC0ZgU8lwpj0eEKGBQH+31uPqr0P2v11pn0tSIxHvcdOWxa4j+YvLNx1i6g==} - cpu: [arm64] - os: [win32] + '@rollup/rollup-linux-x64-musl@4.24.0': + resolution: {integrity: sha512-w1i+L7kAXZNdYl+vFvzSZy8Y1arS7vMgIy8wusXJzRrPyof5LAb02KGr1PD2EkRcl73kHulIID0M501lN+vobQ==} + cpu: [x64] + os: [linux] '@rollup/rollup-win32-arm64-msvc@4.22.5': resolution: {integrity: sha512-RXT8S1HP8AFN/Kr3tg4fuYrNxZ/pZf1HemC5Tsddc6HzgGnJm0+Lh5rAHJkDuW3StI0ynNXukidROMXYl6ew8w==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.21.1': - resolution: {integrity: sha512-tNg+jJcKR3Uwe4L0/wY3Ro0H+u3nrb04+tcq1GSYzBEmKLeOQF2emk1whxlzNqb6MMrQ2JOcQEpuuiPLyRcSIw==} - cpu: [ia32] + '@rollup/rollup-win32-arm64-msvc@4.24.0': + resolution: {integrity: sha512-VXBrnPWgBpVDCVY6XF3LEW0pOU51KbaHhccHw6AS6vBWIC60eqsH19DAeeObl+g8nKAz04QFdl/Cefta0xQtUQ==} + cpu: [arm64] os: [win32] '@rollup/rollup-win32-ia32-msvc@4.22.5': @@ -1486,9 +1350,9 @@ packages: cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.21.1': - resolution: {integrity: sha512-xGiIH95H1zU7naUyTKEyOA/I0aexNMUdO9qRv0bLKN3qu25bBdrxZHqA3PTJ24YNN/GdMzG4xkDcd/GvjuhfLg==} - cpu: [x64] + '@rollup/rollup-win32-ia32-msvc@4.24.0': + resolution: {integrity: sha512-xrNcGDU0OxVcPTH/8n/ShH4UevZxKIO6HJFK0e15XItZP2UcaiLFd5kiX7hJnqCbSztUF8Qot+JWBC/QXRPYWQ==} + cpu: [ia32] os: [win32] '@rollup/rollup-win32-x64-msvc@4.22.5': @@ -1496,26 +1360,39 @@ packages: cpu: [x64] os: [win32] + '@rollup/rollup-win32-x64-msvc@4.24.0': + resolution: {integrity: sha512-fbMkAF7fufku0N2dE5TBXcNlg0pt0cJue4xBRE2Qc5Vqikxr4VCgKj/ht6SMdFcOacVA9rqF70APJ8RN/4vMJw==} + cpu: [x64] + os: [win32] + '@seald-io/binary-search-tree@1.0.3': resolution: {integrity: sha512-qv3jnwoakeax2razYaMsGI/luWdliBLHTdC6jU55hQt1hcFqzauH/HsBollQ7IR4ySTtYhT+xyHoijpA16C+tA==} '@seald-io/nedb@4.0.4': resolution: {integrity: sha512-CUNcMio7QUHTA+sIJ/DC5JzVNNsHe743TPmC4H5Gij9zDLMbmrCT2li3eVB72/gF63BPS8pWEZrjlAMRKA8FDw==} - '@shikijs/core@1.14.1': - resolution: {integrity: sha512-KyHIIpKNaT20FtFPFjCQB5WVSTpLR/n+jQXhWHWVUMm9MaOaG9BGOG0MSyt7yA4+Lm+4c9rTc03tt3nYzeYSfw==} + '@shikijs/core@1.22.0': + resolution: {integrity: sha512-S8sMe4q71TJAW+qG93s5VaiihujRK6rqDFqBnxqvga/3LvqHEnxqBIOPkt//IdXVtHkQWKu4nOQNk0uBGicU7Q==} - '@shikijs/transformers@1.14.1': - resolution: {integrity: sha512-JJqL8QBVCJh3L61jqqEXgFq1cTycwjcGj7aSmqOEsbxnETM9hRlaB74QuXvY/fVJNjbNt8nvWo0VwAXKvMSLRg==} + '@shikijs/engine-javascript@1.22.0': + resolution: {integrity: sha512-AeEtF4Gcck2dwBqCFUKYfsCq0s+eEbCEbkUuFou53NZ0sTGnJnJ/05KHQFZxpii5HMXbocV9URYVowOP2wH5kw==} + + '@shikijs/engine-oniguruma@1.22.0': + resolution: {integrity: sha512-5iBVjhu/DYs1HB0BKsRRFipRrD7rqjxlWTj4F2Pf+nQSPqc3kcyqFFeZXnBMzDf0HdqaFVvhDRAGiYNvyLP+Mw==} + + '@shikijs/transformers@1.22.0': + resolution: {integrity: sha512-k7iMOYuGQA62KwAuJOQBgH2IQb5vP8uiB3lMvAMGUgAMMurePOx3Z7oNqJdcpxqZP6I9cc7nc4DNqSKduCxmdg==} + + '@shikijs/types@1.22.0': + resolution: {integrity: sha512-Fw/Nr7FGFhlQqHfxzZY8Cwtwk5E9nKDUgeLjZgt3UuhcM3yJR9xj3ZGNravZZok8XmEZMiYkSMTPlPkULB8nww==} + + '@shikijs/vscode-textmate@9.3.0': + resolution: {integrity: sha512-jn7/7ky30idSkd/O5yDBfAnVt+JJpepofP/POZ1iMOxK59cOfqIgg/Dj0eFsjOTMw+4ycJN0uhZH/Eb0bs/EUA==} '@sindresorhus/is@4.6.0': resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} engines: {node: '>=10'} - '@smithy/abort-controller@3.1.4': - resolution: {integrity: sha512-VupaALAQlXViW3/enTf/f5l5JZYSAxoJL7f0nanhNNKnww6DGCg1oYIuNP78KDugnkwthBO6iEcym16HhWV8RQ==} - engines: {node: '>=16.0.0'} - '@smithy/abort-controller@3.1.5': resolution: {integrity: sha512-DhNPnqTqPoG8aZ5dWkFOgsuY+i0GQ3CI6hMmvCoduNsnU9gUZWZBwGfDQsTTB7NvFPkom1df7jMIJWU90kuXXg==} engines: {node: '>=16.0.0'} @@ -1645,10 +1522,6 @@ packages: resolution: {integrity: sha512-7IZi8J3Dr9n3tX+lcpmJ/5tCYIqoXdblFBaPuv0SEKZFRpCxE+TqIWL6I3t7jLlk9TWu3JSvEZAhtjB9yvB+zA==} engines: {node: '>=16.0.0'} - '@smithy/types@3.4.2': - resolution: {integrity: sha512-tHiFcfcVedVBHpmHUEUHOCCih8iZbIAYn9NvPsNzaPm/237I3imdDdZoOC8c87H5HBAVEa06tTgb+OcSWV9g5w==} - engines: {node: '>=16.0.0'} - '@smithy/types@3.5.0': resolution: {integrity: sha512-QN0twHNfe8mNJdH9unwsCK13GURU7oEAZqkBI+rsvpv1jrmserO+WnLE7jidR9W/1dxwZ0u/CB01mV2Gms/K2Q==} engines: {node: '>=16.0.0'} @@ -1758,8 +1631,8 @@ packages: resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} engines: {node: '>=10.13.0'} - '@types/bun@1.1.10': - resolution: {integrity: sha512-76KYVSwrHwr9zsnk6oLXOGs9KvyBg3U066GLO4rk6JZk1ypEPGCUDZ5yOiESyIHWs9cx9iC8r01utYN32XdmgA==} + '@types/bun@1.1.12': + resolution: {integrity: sha512-UkewJesRDP3+AW30Gc8hvxuIt+vHgYZXmVOKaXV8xnwAnMXTAs3XZDsa/jW+LSdAYhHslokSm72lq63FYYjZqA==} '@types/bunyan@1.8.9': resolution: {integrity: sha512-ZqS9JGpBxVOvsawzmVt30sP++gSQMTejCkIAQ3VdadOcRE8izTyW66hufvwLeH+YEGP6Js2AW7Gz+RMyvrEbmw==} @@ -1770,9 +1643,6 @@ packages: '@types/emscripten@1.39.10': resolution: {integrity: sha512-TB/6hBkYQJxsZHSqyeuO1Jt0AB/bW6G7rHt9g7lML7SOF6lbgcHvw/Lr+69iqN0qxgXLhWKScAon73JNnptuDw==} - '@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==} @@ -1794,6 +1664,9 @@ packages: '@types/mdast@3.0.15': resolution: {integrity: sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==} + '@types/mdast@4.0.4': + resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} + '@types/mdurl@2.0.0': resolution: {integrity: sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==} @@ -1806,8 +1679,8 @@ packages: '@types/node@20.12.14': resolution: {integrity: sha512-scnD59RpYD91xngrQQLGkE+6UrHUPzeKZWhhjBSa3HSkwjbQc38+q3RoIVEwxQGRw3M+j5hpNAM+lgV3cVormg==} - '@types/node@20.16.10': - resolution: {integrity: sha512-vQUKgWTjEIRFCvK6CyriPH3MZYiYlNy0fKiEYHWbcoWLEgs4opurGGKlebrTLqdSMIbXImH6XExNiIyNUv3WpA==} + '@types/node@20.16.14': + resolution: {integrity: sha512-vtgGzjxLF7QT88qRHtXMzCWpAAmwonE7fwgVjFtXosUva2oSpnIEc3gNO9P7uIfOxKnii2f79/xtOnfreYtDaA==} '@types/normalize-package-data@2.4.4': resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} @@ -1830,6 +1703,9 @@ packages: '@types/unist@2.0.10': resolution: {integrity: sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==} + '@types/unist@3.0.3': + resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} + '@types/web-bluetooth@0.0.20': resolution: {integrity: sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==} @@ -1839,29 +1715,32 @@ packages: '@types/yauzl@2.10.3': resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} - '@vitejs/plugin-vue@5.1.3': - resolution: {integrity: sha512-3xbWsKEKXYlmX82aOHufFQVnkbMC/v8fLpWwh6hWOUrK5fbbtBh9Q/WWse27BFgSy2/e2c0fz5Scgya9h2GLhw==} + '@ungap/structured-clone@1.2.0': + resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} + + '@vitejs/plugin-vue@5.1.4': + resolution: {integrity: sha512-N2XSI2n3sQqp5w7Y/AN/L2XDjBIRGqXko+eDp42sydYSBeJuSm5a1sLf8zakmo8u7tA8NmBgoDLA1HeOESjp9A==} engines: {node: ^18.0.0 || >=20.0.0} peerDependencies: vite: ^5.0.0 vue: ^3.2.25 - '@vitest/coverage-v8@2.1.2': - resolution: {integrity: sha512-b7kHrFrs2urS0cOk5N10lttI8UdJ/yP3nB4JYTREvR5o18cR99yPpK4gK8oQgI42BVv0ILWYUSYB7AXkAUDc0g==} + '@vitest/coverage-v8@2.1.3': + resolution: {integrity: sha512-2OJ3c7UPoFSmBZwqD2VEkUw6A/tzPF0LmW0ZZhhB8PFxuc+9IBG/FaSM+RLEenc7ljzFvGN+G0nGQoZnh7sy2A==} peerDependencies: - '@vitest/browser': 2.1.2 - vitest: 2.1.2 + '@vitest/browser': 2.1.3 + vitest: 2.1.3 peerDependenciesMeta: '@vitest/browser': optional: true - '@vitest/expect@2.1.2': - resolution: {integrity: sha512-FEgtlN8mIUSEAAnlvn7mP8vzaWhEaAEvhSXCqrsijM7K6QqjB11qoRZYEd4AKSCDz8p0/+yH5LzhZ47qt+EyPg==} + '@vitest/expect@2.1.3': + resolution: {integrity: sha512-SNBoPubeCJhZ48agjXruCI57DvxcsivVDdWz+SSsmjTT4QN/DfHk3zB/xKsJqMs26bLZ/pNRLnCf0j679i0uWQ==} - '@vitest/mocker@2.1.2': - resolution: {integrity: sha512-ExElkCGMS13JAJy+812fw1aCv2QO/LBK6CyO4WOPAzLTmve50gydOlWhgdBJPx2ztbADUq3JVI0C5U+bShaeEA==} + '@vitest/mocker@2.1.3': + resolution: {integrity: sha512-eSpdY/eJDuOvuTA3ASzCjdithHa+GIF1L4PqtEELl6Qa3XafdMLBpBlZCIUCX2J+Q6sNmjmxtosAG62fK4BlqQ==} peerDependencies: - '@vitest/spy': 2.1.2 + '@vitest/spy': 2.1.3 msw: ^2.3.5 vite: ^5.0.0 peerDependenciesMeta: @@ -1870,96 +1749,67 @@ packages: vite: optional: true - '@vitest/pretty-format@2.1.2': - resolution: {integrity: sha512-FIoglbHrSUlOJPDGIrh2bjX1sNars5HbxlcsFKCtKzu4+5lpsRhOCVcuzp0fEhAGHkPZRIXVNzPcpSlkoZ3LuA==} + '@vitest/pretty-format@2.1.3': + resolution: {integrity: sha512-XH1XdtoLZCpqV59KRbPrIhFCOO0hErxrQCMcvnQete3Vibb9UeIOX02uFPfVn3Z9ZXsq78etlfyhnkmIZSzIwQ==} - '@vitest/runner@2.1.2': - resolution: {integrity: sha512-UCsPtvluHO3u7jdoONGjOSil+uON5SSvU9buQh3lP7GgUXHp78guN1wRmZDX4wGK6J10f9NUtP6pO+SFquoMlw==} + '@vitest/runner@2.1.3': + resolution: {integrity: sha512-JGzpWqmFJ4fq5ZKHtVO3Xuy1iF2rHGV4d/pdzgkYHm1+gOzNZtqjvyiaDGJytRyMU54qkxpNzCx+PErzJ1/JqQ==} - '@vitest/snapshot@2.1.2': - resolution: {integrity: sha512-xtAeNsZ++aRIYIUsek7VHzry/9AcxeULlegBvsdLncLmNCR6tR8SRjn8BbDP4naxtccvzTqZ+L1ltZlRCfBZFA==} + '@vitest/snapshot@2.1.3': + resolution: {integrity: sha512-qWC2mWc7VAXmjAkEKxrScWHWFyCQx/cmiZtuGqMi+WwqQJ2iURsVY4ZfAK6dVo6K2smKRU6l3BPwqEBvhnpQGg==} - '@vitest/spy@2.1.2': - resolution: {integrity: sha512-GSUi5zoy+abNRJwmFhBDC0yRuVUn8WMlQscvnbbXdKLXX9dE59YbfwXxuJ/mth6eeqIzofU8BB5XDo/Ns/qK2A==} + '@vitest/spy@2.1.3': + resolution: {integrity: sha512-Nb2UzbcUswzeSP7JksMDaqsI43Sj5+Kry6ry6jQJT4b5gAK+NS9NED6mDb8FlMRCX8m5guaHCDZmqYMMWRy5nQ==} - '@vitest/utils@2.1.2': - resolution: {integrity: sha512-zMO2KdYy6mx56btx9JvAqAZ6EyS3g49krMPPrgOp1yxGZiA93HumGk+bZ5jIZtOg5/VBYl5eBmGRQHqq4FG6uQ==} + '@vitest/utils@2.1.3': + resolution: {integrity: sha512-xpiVfDSg1RrYT0tX6czgerkpcKFmFOF/gCr30+Mve5V2kewCy4Prn1/NDMSRwaSmT7PRaOF83wu+bEtsY1wrvA==} - '@vue/compiler-core@3.4.38': - resolution: {integrity: sha512-8IQOTCWnLFqfHzOGm9+P8OPSEDukgg3Huc92qSG49if/xI2SAwLHQO2qaPQbjCWPBcQoO1WYfXfTACUrWV3c5A==} + '@vue/compiler-core@3.5.12': + resolution: {integrity: sha512-ISyBTRMmMYagUxhcpyEH0hpXRd/KqDU4ymofPgl2XAkY9ZhQ+h0ovEZJIiPop13UmR/54oA2cgMDjgroRelaEw==} - '@vue/compiler-core@3.5.11': - resolution: {integrity: sha512-PwAdxs7/9Hc3ieBO12tXzmTD+Ln4qhT/56S+8DvrrZ4kLDn4Z/AMUr8tXJD0axiJBS0RKIoNaR0yMuQB9v9Udg==} + '@vue/compiler-dom@3.5.12': + resolution: {integrity: sha512-9G6PbJ03uwxLHKQ3P42cMTi85lDRvGLB2rSGOiQqtXELat6uI4n8cNz9yjfVHRPIu+MsK6TE418Giruvgptckg==} - '@vue/compiler-dom@3.4.38': - resolution: {integrity: sha512-Osc/c7ABsHXTsETLgykcOwIxFktHfGSUDkb05V61rocEfsFDcjDLH/IHJSNJP+/Sv9KeN2Lx1V6McZzlSb9EhQ==} + '@vue/compiler-sfc@3.5.12': + resolution: {integrity: sha512-2k973OGo2JuAa5+ZlekuQJtitI5CgLMOwgl94BzMCsKZCX/xiqzJYzapl4opFogKHqwJk34vfsaKpfEhd1k5nw==} - '@vue/compiler-dom@3.5.11': - resolution: {integrity: sha512-pyGf8zdbDDRkBrEzf8p7BQlMKNNF5Fk/Cf/fQ6PiUz9at4OaUfyXW0dGJTo2Vl1f5U9jSLCNf0EZJEogLXoeew==} + '@vue/compiler-ssr@3.5.12': + resolution: {integrity: sha512-eLwc7v6bfGBSM7wZOGPmRavSWzNFF6+PdRhE+VFJhNCgHiF8AM7ccoqcv5kBXA2eWUfigD7byekvf/JsOfKvPA==} - '@vue/compiler-sfc@3.4.38': - resolution: {integrity: sha512-s5QfZ+9PzPh3T5H4hsQDJtI8x7zdJaew/dCGgqZ2630XdzaZ3AD8xGZfBqpT8oaD/p2eedd+pL8tD5vvt5ZYJQ==} + '@vue/devtools-api@7.5.3': + resolution: {integrity: sha512-nwz45qBxHOUdZzaYP9V3E1aFOgPpoMmNlBcGn0dsUxizlws4wJ4V6P6849yt28p5NSQ/2E3V87JXFAuk3N9Inw==} - '@vue/compiler-sfc@3.5.11': - resolution: {integrity: sha512-gsbBtT4N9ANXXepprle+X9YLg2htQk1sqH/qGJ/EApl+dgpUBdTv3yP7YlR535uHZY3n6XaR0/bKo0BgwwDniw==} + '@vue/devtools-kit@7.5.3': + resolution: {integrity: sha512-XSTXCAHshYniK3gLQfhMRDuDLLj6vHFWKVl1tvtSgZ0iJy5AXoI4U/GKGlyS2uS1hwZCSoNSGdkKtbW/pn/Iuw==} - '@vue/compiler-ssr@3.4.38': - resolution: {integrity: sha512-YXznKFQ8dxYpAz9zLuVvfcXhc31FSPFDcqr0kyujbOwNhlmaNvL2QfIy+RZeJgSn5Fk54CWoEUeW+NVBAogGaw==} + '@vue/devtools-shared@7.5.3': + resolution: {integrity: sha512-i2tCUtAEQ0S8AmTuy6FSOmVKCB5ajmMaVrrw0ypX75koLSo1mssQ8zezds5IoUZHRiXBsgoGHbJGuGwyrSGhqQ==} - '@vue/compiler-ssr@3.5.11': - resolution: {integrity: sha512-P4+GPjOuC2aFTk1Z4WANvEhyOykcvEd5bIj2KVNGKGfM745LaXGr++5njpdBTzVz5pZifdlR1kpYSJJpIlSePA==} + '@vue/reactivity@3.5.12': + resolution: {integrity: sha512-UzaN3Da7xnJXdz4Okb/BGbAaomRHc3RdoWqTzlvd9+WBR5m3J39J1fGcHes7U3za0ruYn/iYy/a1euhMEHvTAg==} - '@vue/devtools-api@7.3.9': - resolution: {integrity: sha512-D+GTYtFg68bqSu66EugQUydsOqaDlPLNmYw5oYk8k81uBu9/bVTUrqlAJrAA9Am7MXhKz2gWdDkopY6sOBf/Bg==} + '@vue/runtime-core@3.5.12': + resolution: {integrity: sha512-hrMUYV6tpocr3TL3Ad8DqxOdpDe4zuQY4HPY3X/VRh+L2myQO8MFXPAMarIOSGNu0bFAjh1yBkMPXZBqCk62Uw==} - '@vue/devtools-kit@7.3.9': - resolution: {integrity: sha512-Gr17nA+DaQzqyhNx1DUJr1CJRzTRfbIuuC80ZgU8MD/qNO302tv9la+ROi+Uaw+ULVwU9T71GnwLy4n8m9Lspg==} + '@vue/runtime-dom@3.5.12': + resolution: {integrity: sha512-q8VFxR9A2MRfBr6/55Q3umyoN7ya836FzRXajPB6/Vvuv0zOPL+qltd9rIMzG/DbRLAIlREmnLsplEF/kotXKA==} - '@vue/devtools-shared@7.3.9': - resolution: {integrity: sha512-CdfMRZKXyI8vw+hqOcQIiLihB6Hbbi7WNZGp7LsuH1Qe4aYAFmTaKjSciRZ301oTnwmU/knC/s5OGuV6UNiNoA==} - - '@vue/reactivity@3.4.38': - resolution: {integrity: sha512-4vl4wMMVniLsSYYeldAKzbk72+D3hUnkw9z8lDeJacTxAkXeDAP1uE9xr2+aKIN0ipOL8EG2GPouVTH6yF7Gnw==} - - '@vue/reactivity@3.5.11': - resolution: {integrity: sha512-Nqo5VZEn8MJWlCce8XoyVqHZbd5P2NH+yuAaFzuNSR96I+y1cnuUiq7xfSG+kyvLSiWmaHTKP1r3OZY4mMD50w==} - - '@vue/runtime-core@3.4.38': - resolution: {integrity: sha512-21z3wA99EABtuf+O3IhdxP0iHgkBs1vuoCAsCKLVJPEjpVqvblwBnTj42vzHRlWDCyxu9ptDm7sI2ZMcWrQqlA==} - - '@vue/runtime-core@3.5.11': - resolution: {integrity: sha512-7PsxFGqwfDhfhh0OcDWBG1DaIQIVOLgkwA5q6MtkPiDFjp5gohVnJEahSktwSFLq7R5PtxDKy6WKURVN1UDbzA==} - - '@vue/runtime-dom@3.4.38': - resolution: {integrity: sha512-afZzmUreU7vKwKsV17H1NDThEEmdYI+GCAK/KY1U957Ig2NATPVjCROv61R19fjZNzMmiU03n79OMnXyJVN0UA==} - - '@vue/runtime-dom@3.5.11': - resolution: {integrity: sha512-GNghjecT6IrGf0UhuYmpgaOlN7kxzQBhxWEn08c/SQDxv1yy4IXI1bn81JgEpQ4IXjRxWtPyI8x0/7TF5rPfYQ==} - - '@vue/server-renderer@3.4.38': - resolution: {integrity: sha512-NggOTr82FbPEkkUvBm4fTGcwUY8UuTsnWC/L2YZBmvaQ4C4Jl/Ao4HHTB+l7WnFCt5M/dN3l0XLuyjzswGYVCA==} + '@vue/server-renderer@3.5.12': + resolution: {integrity: sha512-I3QoeDDeEPZm8yR28JtY+rk880Oqmj43hreIBVTicisFTx/Dl7JpG72g/X7YF8hnQD3IFhkky5i2bPonwrTVPg==} peerDependencies: - vue: 3.4.38 + vue: 3.5.12 - '@vue/server-renderer@3.5.11': - resolution: {integrity: sha512-cVOwYBxR7Wb1B1FoxYvtjJD8X/9E5nlH4VSkJy2uMA1MzYNdzAAB//l8nrmN9py/4aP+3NjWukf9PZ3TeWULaA==} - peerDependencies: - vue: 3.5.11 - - '@vue/shared@3.4.38': - resolution: {integrity: sha512-q0xCiLkuWWQLzVrecPb0RMsNWyxICOjPrcrwxTUEHb1fsnvni4dcuyG7RT/Ie7VPTvnjzIaWzRMUBsrqNj/hhw==} - - '@vue/shared@3.5.11': - resolution: {integrity: sha512-W8GgysJVnFo81FthhzurdRAWP/byq3q2qIw70e0JWblzVhjgOMiC2GyovXrZTFQJnFVryYaKGP3Tc9vYzYm6PQ==} + '@vue/shared@3.5.12': + resolution: {integrity: sha512-L2RPSAwUFbgZH20etwrXyVyCBu9OxRSi8T/38QsvnkJyvq2LufW2lDCOzm7t/U9C1mkhJGWYfCuFBCmIuNivrg==} '@vue/test-utils@2.4.6': resolution: {integrity: sha512-FMxEjOpYNYiFe0GkaHsnJPXFHxQ6m4t8vI/ElPGpMWxZKpmRvQ33OIrvRXemy6yha03RxhOlQuy+gZMC3CQSow==} - '@vueuse/core@11.0.3': - resolution: {integrity: sha512-RENlh64+SYA9XMExmmH1a3TPqeIuJBNNB/63GT35MZI+zpru3oMRUA6cEFr9HmGqEgUisurwGwnIieF6qu3aXw==} + '@vueuse/core@11.1.0': + resolution: {integrity: sha512-P6dk79QYA6sKQnghrUz/1tHi0n9mrb/iO1WTMk/ElLmTyNqgDeSZ3wcDf6fRBGzRJbeG1dxzEOvLENMjr+E3fg==} - '@vueuse/integrations@11.0.3': - resolution: {integrity: sha512-w6CDisaxs19S5Fd+NPPLFaA3GoX5gxuxrbTTBu0EYap7oH13w75L6C/+7e9mcoF9akhcR6GyYajwVMQEjdapJg==} + '@vueuse/integrations@11.1.0': + resolution: {integrity: sha512-O2ZgrAGPy0qAjpoI2YR3egNgyEqwG85fxfwmA9BshRIGjV4G6yu6CfOPpMHAOoCD+UfsIl7Vb1bXJ6ifrHYDDA==} peerDependencies: async-validator: ^4 axios: ^1 @@ -1999,11 +1849,11 @@ packages: universal-cookie: optional: true - '@vueuse/metadata@11.0.3': - resolution: {integrity: sha512-+FtbO4SD5WpsOcQTcC0hAhNlOid6QNLzqedtquTtQ+CRNBoAt9GuV07c6KNHK1wCmlq8DFPwgiLF2rXwgSHX5Q==} + '@vueuse/metadata@11.1.0': + resolution: {integrity: sha512-l9Q502TBTaPYGanl1G+hPgd3QX5s4CGnpXriVBR5fEZ/goI6fvDaVmIl3Td8oKFurOxTmbXvBPSsgrd6eu6HYg==} - '@vueuse/shared@11.0.3': - resolution: {integrity: sha512-0rY2m6HS5t27n/Vp5cTDsKTlNnimCqsbh/fmT2LgE+aaU42EMfXo8+bNX91W9I7DDmxfuACXMmrd7d79JxkqWA==} + '@vueuse/shared@11.1.0': + resolution: {integrity: sha512-YUtIpY122q7osj+zsNMFAfMTubGz0sn5QzE5gPzAIiCmtt2ha3uQUY1+JPyL4gRCTsLPX82Y9brNbo/aqlA91w==} '@yarnpkg/core@4.1.3': resolution: {integrity: sha512-s9CBcIgrqZOzWXt6m2Q8vuv0Wu+Oz8NFkvxoR5qLtH1Du/el8ZPtrh0Gw38iBe4hXav5/jmuZ9qg8jo6prezKg==} @@ -2153,8 +2003,8 @@ packages: bindings@1.5.0: resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} - birpc@0.2.17: - resolution: {integrity: sha512-+hkTxhot+dWsLpp3gia5AkVHIsKlZybNT5gIYiDlNzJrmYPcTM9k5/w2uaj3IPpd7LlEYpmCj4Jj1nC41VhDFg==} + birpc@0.2.19: + resolution: {integrity: sha512-5WeXXAvTmitV1RqJFppT5QtUiz2p1mRSYU000Jkft5ZUCLJIk4uQriYNO50HknxKwM6jd8utNc66K1qGIwwWBQ==} bl@4.1.0: resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} @@ -2170,6 +2020,7 @@ packages: boolean@3.2.0: resolution: {integrity: sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. bowser@2.11.0: resolution: {integrity: sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==} @@ -2184,11 +2035,6 @@ packages: resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} engines: {node: '>=8'} - browserslist@4.23.0: - resolution: {integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - browserslist@4.24.0: resolution: {integrity: sha512-Rmb62sR1Zpjql25eSanFGEhAxcFwfA1K0GuQcLoaJBAcENegrQut3hYdhXFF1obQfiDyqIW/cLM5HSJ/9k884A==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} @@ -2206,8 +2052,8 @@ packages: buffer@5.7.1: resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} - bun-types@1.1.29: - resolution: {integrity: sha512-En3/TzSPMPyl5UlUB1MHzHpcrZDakTm7mS203eLoX1fBoEa3PW+aSS8GAqVJ7Is/m34Z5ogL+ECniLY0uDaCPw==} + bun-types@1.1.32: + resolution: {integrity: sha512-Lxgux4InO/WRjSAEy3iyDscsnDXR8+3rgNDeZYjPAizFYjUraoNuMl9PuRd9XMgFZgdyQwaUX7/QHmOw5KGFQw==} bunyan@1.8.15: resolution: {integrity: sha512-0tECWShh6wUysgucJcBAoYegf3JJoZWibxdqhTm7OHPeT42qdjkZ29QCMcKwbgU1kiH+auSIasNRXMLWXafXig==} @@ -2248,12 +2094,12 @@ packages: caniuse-api@3.0.0: resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} - caniuse-lite@1.0.30001611: - resolution: {integrity: sha512-19NuN1/3PjA3QI8Eki55N8my4LzfkMCRLgCVfrl/slbSAchQfV0+GwjPrK3rq37As4UCLlM/DHajbKkAqbv92Q==} - caniuse-lite@1.0.30001664: resolution: {integrity: sha512-AmE7k4dXiNKQipgn7a2xg558IRqPN3jMQY/rOsbxDhrd0tyChwbITBfiwtnqz8bi2M5mIWbxAYBvk7W7QBUS2g==} + ccount@2.0.1: + resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} + chai@5.1.1: resolution: {integrity: sha512-pT1ZgP8rPNqUgieVaEY+ryQr6Q4HXNg8Ei9UnLUrjN4IA7dvQC5JB+/kxVcPNDHyBcc/26CXPkbNzq3qwrOEKA==} engines: {node: '>=12'} @@ -2273,9 +2119,15 @@ packages: changelog-filename-regex@2.0.1: resolution: {integrity: sha512-DZdyJpCprw8V3jp8V2x13nAA05Yy/IN+Prowj+0mrAHNENYkuMtNI4u5m449TTjPqShIslQSEuXee+Jtkn4m+g==} + character-entities-html4@2.1.0: + resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} + character-entities-legacy@1.1.4: resolution: {integrity: sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==} + character-entities-legacy@3.0.0: + resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} + character-entities@1.2.4: resolution: {integrity: sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==} @@ -2342,6 +2194,9 @@ packages: resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} engines: {node: '>= 0.8'} + comma-separated-tokens@2.0.3: + resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} + commander@10.0.1: resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} engines: {node: '>=14'} @@ -2547,6 +2402,9 @@ packages: detect-node@2.1.0: resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} + devlop@1.1.0: + resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} + diff@5.2.0: resolution: {integrity: sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==} engines: {node: '>=0.3.1'} @@ -2588,9 +2446,6 @@ packages: engines: {node: '>=16'} hasBin: true - electron-to-chromium@1.4.744: - resolution: {integrity: sha512-nAGcF0yeKKfrP13LMFr5U1eghfFSvFLg302VUFzWlcjPOnUYd52yU5x6PBYrujhNbc4jYmZFrGZFK+xasaEzVA==} - electron-to-chromium@1.5.29: resolution: {integrity: sha512-PF8n2AlIhCKXQ+gTpiJi0VhcHDb69kYX4MtCiivctc2QD3XuNZ/XIOlbGzt7WAjjEev0TtaH6Cu3arZExm5DOw==} @@ -2651,20 +2506,11 @@ packages: engines: {node: '>=12'} hasBin: true - esbuild@0.23.1: - resolution: {integrity: sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==} - engines: {node: '>=18'} - hasBin: true - esbuild@0.24.0: resolution: {integrity: sha512-FuLPevChGDshgSicjisSooU0cemp/sGXR841D5LHMB7mTVOmsEHcAxaH3irL53+8YDIeVNQEySh4DaYU/iuPqQ==} engines: {node: '>=18'} hasBin: true - escalade@3.1.2: - resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} - engines: {node: '>=6'} - escalade@3.2.0: resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} engines: {node: '>=6'} @@ -2735,6 +2581,14 @@ packages: picomatch: optional: true + fdir@6.4.2: + resolution: {integrity: sha512-KnhMXsKSPZlAhp7+IjUkRZKPb4fUyccpDrdFXbi4QL1qkmFh9kVY09Yox+n4MaOb3lHZ1Tv829C3oaaXoMYPDQ==} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + file-uri-to-path@1.0.0: resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} @@ -2754,8 +2608,8 @@ packages: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} - focus-trap@7.5.4: - resolution: {integrity: sha512-N7kHdlgsO/v+iD/dMoJKtsSqs5Dz/dXZVebRgJw23LDk+jMi/974zyiOYDziY2JPp8xivq9BmUGwIJMiuSBi7w==} + focus-trap@7.6.0: + resolution: {integrity: sha512-1td0l3pMkWJLFipobUcGaf+5DTY4PLDDrcqoSaKP8ediO/CoWCCYk/fT/Y2A4e6TNB+Sh6clRJCjOPPnKoNHnQ==} for-each@0.3.3: resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} @@ -2874,8 +2728,8 @@ packages: resolution: {integrity: sha512-QUcQZutczESpdo2w9BMG6VpLFoq9ix7ER5HLM1mAdZdri2F3eISkCb8ep84W6YOo0grYWJdyT/8JkYqGjQfSSQ==} engines: {node: '>=18.12.0', yarn: ^1.17.0} - google-auth-library@9.14.1: - resolution: {integrity: sha512-Rj+PMjoNFGFTmtItH7gHfbHpGVSb3vmnGK3nwNBqxQF9NoBpttSZI/rc0WiM63ma2uGDQtYEkMHkK9U6937NiA==} + google-auth-library@9.14.2: + resolution: {integrity: sha512-R+FRIfk1GBo3RdlRYWPdwk8nmtVUOn6+BkDomAC46KoU8kzXzE1HLmOasSCbWUByMMAGkknVF0G5kQ69Vj7dlA==} engines: {node: '>=14'} gopd@1.0.1: @@ -2937,6 +2791,12 @@ packages: resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} + hast-util-to-html@9.0.3: + resolution: {integrity: sha512-M17uBDzMJ9RPCqLMO92gNNUDuBSq10a25SDBI08iCCxmorf4Yy6sYHK57n9WAbRAAaU+DuR4W6GN9K4DFZesYg==} + + hast-util-whitespace@3.0.0: + resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} + he@1.2.0: resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} hasBin: true @@ -2958,6 +2818,9 @@ packages: html-escaper@2.0.2: resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + html-void-elements@3.0.0: + resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} + http-cache-semantics@4.1.1: resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} @@ -3226,12 +3089,8 @@ packages: resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==} hasBin: true - jiti@2.0.0: - resolution: {integrity: sha512-CJ7e7Abb779OTRv3lomfp7Mns/Sy1+U4pcAx5VbjxCZD5ZM/VJaXPpPjNKjtSvWQy/H86E49REXR34dl1JEz9w==} - hasBin: true - - jiti@2.2.1: - resolution: {integrity: sha512-weIl/Bv3G0J3UKamLxEA2G+FfQ33Z1ZkQJGPjKFV21zQdKWu2Pi6o4elpj2uEl5XdFJZ9xzn1fsanWTFSt45zw==} + jiti@2.3.3: + resolution: {integrity: sha512-EX4oNDwcXSivPrw2qKH2LB5PoFxEvgtv2JgwW0bU858HoLQ+kutSvjLMUqBd0PeJYEinLWhoI9Ol0eYMqj/wNQ==} hasBin: true js-beautify@1.15.1: @@ -3269,9 +3128,9 @@ packages: canvas: optional: true - jsesc@2.5.2: - resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} - engines: {node: '>=4'} + jsesc@3.0.2: + resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} + engines: {node: '>=6'} hasBin: true json-bigint@1.0.0: @@ -3436,6 +3295,9 @@ packages: mdast-util-from-markdown@0.8.5: resolution: {integrity: sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ==} + mdast-util-to-hast@13.2.0: + resolution: {integrity: sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==} + mdast-util-to-markdown@0.6.5: resolution: {integrity: sha512-XeV9sDE7ZlOQvs45C9UKMtfTcctcaj/pGwH8YLbMHoMOXNNCn2LsqVQOqrF1+/NU8lKDAqozme9SCXWyo9oAcQ==} @@ -3466,6 +3328,21 @@ packages: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} + micromark-util-character@2.1.0: + resolution: {integrity: sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==} + + micromark-util-encode@2.0.0: + resolution: {integrity: sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==} + + micromark-util-sanitize-uri@2.0.0: + resolution: {integrity: sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==} + + micromark-util-symbol@2.0.0: + resolution: {integrity: sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==} + + micromark-util-types@2.0.0: + resolution: {integrity: sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==} + micromark@2.11.4: resolution: {integrity: sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==} @@ -3576,8 +3453,8 @@ packages: engines: {node: '>=10'} hasBin: true - mkdist@1.5.9: - resolution: {integrity: sha512-PdJimzhcgDxaHpk1SUabw56gT3BU15vBHUTHkeeus8Kl7jUkpgG7+z0PiS/y23XXgO8TiU/dKP3L1oG55qrP1g==} + mkdist@1.6.0: + resolution: {integrity: sha512-nD7J/mx33Lwm4Q4qoPgRBVA9JQNKgyE7fLo5vdPWVDdjz96pXglGERp/fRnGPCTB37Kykfxs5bDdXa9BWOT9nw==} hasBin: true peerDependencies: sass: ^1.78.0 @@ -3664,9 +3541,6 @@ packages: node-html-parser@6.1.13: resolution: {integrity: sha512-qIsTMOY4C/dAa5Q5vsobRpOOvPfC4pB61UVW2uSwZNUp0QU/jCekTal1vMmbO0DgdHeLUJpv/ARmDqErVxA3Sg==} - node-releases@2.0.14: - resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} - node-releases@2.0.18: resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} @@ -3714,6 +3588,9 @@ packages: once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + oniguruma-to-js@0.4.3: + resolution: {integrity: sha512-X0jWUcAlxORhOqqBREgPMgnshB7ZGYszBNspP+tS9hPD3l13CdaXcHbgImoHUHlrvGx/7AvFEkTRhAGYh+jzjQ==} + openpgp@5.11.2: resolution: {integrity: sha512-f8dJFVLwdkvPvW3VPFs6q9Vs2+HNhdvwls7a/MIFcQUB+XiQzRe7alfa3RtwfGJU7oUDDMAWPZ0nYsHa23Az+A==} engines: {node: '>= 8.0.0'} @@ -4028,10 +3905,6 @@ packages: postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - postcss@8.4.41: - resolution: {integrity: sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ==} - engines: {node: ^10 || ^12 || >=14} - postcss@8.4.47: resolution: {integrity: sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==} engines: {node: ^10 || ^12 || >=14} @@ -4068,6 +3941,9 @@ packages: resolution: {integrity: sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==} engines: {node: '>=10'} + property-information@6.5.0: + resolution: {integrity: sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==} + proto-list@1.2.4: resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} @@ -4144,6 +4020,9 @@ packages: regenerator-runtime@0.14.1: resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} + regex@4.3.3: + resolution: {integrity: sha512-r/AadFO7owAq1QJVeZ/nq9jNS1vyZt+6t1p/E59B56Rn2GCya+gr1KSyOzNL/er+r+B7phv5jG2xU2Nz1YkmJg==} + regexp.prototype.flags@1.5.2: resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==} engines: {node: '>= 0.4'} @@ -4160,8 +4039,8 @@ packages: remark@13.0.0: resolution: {integrity: sha512-HDz1+IKGtOyWN+QgBiAT0kn+2s6ovOxHyPAFGKVE81VSzJ+mq7RwHFledEvB5F1p4iJvOah/LOKdFuzvRnNLCA==} - renovate@38.110.1: - resolution: {integrity: sha512-VFqs+rSF7f/bUa27d3AD/Ix0PM2iQvYjw7AzvuE7FuBWKG+vuD1uQ72SryifyslhaQ0zGfuXnjSs5DKvCEVMOw==} + renovate@38.130.0: + resolution: {integrity: sha512-a2HCjurq+pDrobpr33lOItPIhtRavUPuMsONYQ5loVfgo2ZeIZhK/RYTzh2Ml2ls+kMR0k7Uz3i5kG5r76N4vg==} engines: {node: ^20.15.1, pnpm: ^9.0.0} hasBin: true @@ -4210,13 +4089,13 @@ packages: rollup: ^3.29.4 || ^4 typescript: ^4.5 || ^5.0 - rollup@4.21.1: - resolution: {integrity: sha512-ZnYyKvscThhgd3M5+Qt3pmhO4jIRR5RGzaSovB6Q7rGNrK5cUncrtLmcTTJVSdcKXyZjW8X8MB0JMSuH9bcAJg==} + rollup@4.22.5: + resolution: {integrity: sha512-WoinX7GeQOFMGznEcWA1WrTQCd/tpEbMkc3nuMs9BT0CPjMdSjPMTVClwWd4pgSQwJdP65SK9mTCNvItlr5o7w==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true - rollup@4.22.5: - resolution: {integrity: sha512-WoinX7GeQOFMGznEcWA1WrTQCd/tpEbMkc3nuMs9BT0CPjMdSjPMTVClwWd4pgSQwJdP65SK9mTCNvItlr5o7w==} + rollup@4.24.0: + resolution: {integrity: sha512-DOmrlGSXNk1DM0ljiQA+i+o0rSLhtii1je5wgk60j49d1jHT5YYttBv1iWOnYSTG+fZZESUOSNiAl89SIet+Cg==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -4298,8 +4177,8 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - shiki@1.14.1: - resolution: {integrity: sha512-FujAN40NEejeXdzPt+3sZ3F2dx1U24BY2XTY01+MG8mbxCiA2XukXdcbyMyLAHJ/1AUUnQd1tZlvIjefWWEJeA==} + shiki@1.22.0: + resolution: {integrity: sha512-/t5LlhNs+UOKQCYBtl5ZsH/Vclz73GIqT2yQsCBygr8L/ppTdmpL4w3kPLoZJbMKVWtoG77Ue1feOjZfDxvMkw==} shimmer@1.2.1: resolution: {integrity: sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==} @@ -4350,10 +4229,6 @@ packages: resolution: {integrity: sha512-aUYIEU/UviqPgc8mHR6IW1EGxkAXpeRETYcrzg8cLAvUPZcpAlleSXHV2mY7G12GphSH6Gzv+4MMVSSkbdteHg==} engines: {node: '>=8'} - 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'} @@ -4365,6 +4240,9 @@ packages: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} + space-separated-tokens@2.0.2: + resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} + spdx-correct@3.2.0: resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} @@ -4418,6 +4296,9 @@ packages: string_decoder@1.3.0: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + stringify-entities@4.0.4: + resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} + strip-ansi@6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} @@ -4507,8 +4388,8 @@ packages: tinyexec@0.3.0: resolution: {integrity: sha512-tVGE0mVJPGb0chKhqmsoosjsS+qUnJVGJpZgsHYQcGoPlG3B51R3PouqTgEGH2Dc9jjFyOqOpix6ZHNMXp1FZg==} - tinyglobby@0.2.6: - resolution: {integrity: sha512-NbBoFBpqfcgd1tCiO8Lkfdk+xrA7mlLR9zgvZcZWQQwU63XAfUePyd6wZBaU93Hqw347lHnwFzttAkemHzzz4g==} + tinyglobby@0.2.9: + resolution: {integrity: sha512-8or1+BGEdk1Zkkw2ii16qSS7uVrQJPre5A9o/XkWPATkk23FZh/15BKFxPnlTy6vkljZxLqYCzzBMj30ZrSvjw==} engines: {node: '>=12.0.0'} tinylogic@2.0.0: @@ -4560,6 +4441,9 @@ packages: resolution: {integrity: sha512-1m4RA7xVAJrSGrrXGs0L3YTwyvBs2S8PbRHaLZAkFw7JR8oIFwYtysxlBZhYIa7xSyiYJKZ3iGrrk55cGA3i9A==} engines: {node: '>=0.6'} + trim-lines@3.0.1: + resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} + trim-newlines@3.0.1: resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} engines: {node: '>=8'} @@ -4570,8 +4454,8 @@ packages: trough@1.0.5: resolution: {integrity: sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==} - tslib@2.7.0: - resolution: {integrity: sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==} + tslib@2.8.0: + resolution: {integrity: sha512-jWVzBLplnCmoaTr13V9dYbiQ99wvZRd0vNWaDRg+aVYRcjDF3nDksxFDE/+fkXnKhpnUUkmx5pK/v8mCtLVqZA==} tunnel-agent@0.6.0: resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} @@ -4631,8 +4515,8 @@ packages: uint64be@1.0.1: resolution: {integrity: sha512-w+VZSp8hSZ/xWZfZNMppWNF6iqY+dcMYtG5CpwRDgxi94HIE6ematSdkzHGzVC4SDEaTsG65zrajN+oKoWG6ew==} - unbuild@3.0.0-rc.8: - resolution: {integrity: sha512-2BJjw+DXR7d1LVTdYC6QaO7yVP7JUgoGjEvHiAOE2iFMYJyTyZcZug4NX5bHyFiV7LiJj6hxvflP09uQ3a2wGQ==} + unbuild@3.0.0-rc.11: + resolution: {integrity: sha512-faBmtdo73jSSoghmf7CuscmAMOr34eri9j674pQP+KKjxvwTKaRol6f2DVhKhNCfceeHdfm2BfDwRxo2L/w0fg==} hasBin: true peerDependencies: typescript: ^5.6.2 @@ -4663,15 +4547,30 @@ packages: unist-util-is@4.1.0: resolution: {integrity: sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==} + unist-util-is@6.0.0: + resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} + + unist-util-position@5.0.0: + resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} + unist-util-stringify-position@2.0.3: resolution: {integrity: sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==} + unist-util-stringify-position@4.0.0: + resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} + unist-util-visit-parents@3.1.1: resolution: {integrity: sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==} + unist-util-visit-parents@6.0.1: + resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} + unist-util-visit@2.0.3: resolution: {integrity: sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==} + unist-util-visit@5.0.0: + resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} + universal-user-agent@6.0.1: resolution: {integrity: sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==} @@ -4679,20 +4578,14 @@ packages: resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} engines: {node: '>= 10.0.0'} - untyped@1.4.2: - resolution: {integrity: sha512-nC5q0DnPEPVURPhfPQLahhSTnemVtPzdx7ofiRxXpOB2SYnb3MfdU3DVGyJdS8Lx+tBWeAePO8BfU/3EgksM7Q==} + untyped@1.5.1: + resolution: {integrity: sha512-reBOnkJBFfBZ8pCKaeHgfZLcehXtM6UTxc+vqs1JvCps0c4amLNp3fhdGBZwYp+VLyoY9n3X5KOP7lCyWBUX9A==} hasBin: true upath@2.0.1: resolution: {integrity: sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w==} engines: {node: '>=4'} - update-browserslist-db@1.0.13: - resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' - update-browserslist-db@1.1.1: resolution: {integrity: sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==} hasBin: true @@ -4722,11 +4615,17 @@ packages: vfile-message@2.0.4: resolution: {integrity: sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==} + vfile-message@4.0.2: + resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==} + vfile@4.2.1: resolution: {integrity: sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==} - vite-node@2.1.2: - resolution: {integrity: sha512-HPcGNN5g/7I2OtPjLqgOtCRu/qhVvBxTUD3qzitmL0SrG1cWFzxzhMDWussxSbrRYWqnKf8P2jiNhPMSN+ymsQ==} + vfile@6.0.3: + resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} + + vite-node@2.1.3: + resolution: {integrity: sha512-I1JadzO+xYX887S39Do+paRePCKoiDrWRRjp9kkG5he0t7RXNvPAJPCQSJqbGN4uCrFFeS3Kj3sLqY8NMYBEdA==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true @@ -4761,8 +4660,39 @@ packages: terser: optional: true - vitepress@1.3.4: - resolution: {integrity: sha512-I1/F6OW1xl3kW4PaIMC6snxjWgf3qfziq2aqsDoFc/Gt41WbcRv++z8zjw8qGRIJ+I4bUW7ZcKFDHHN/jkH9DQ==} + vite@5.4.9: + resolution: {integrity: sha512-20OVpJHh0PAM0oSOELa5GaZNWeDjcAvQjGXy2Uyr+Tp+/D2/Hdz6NLgpJLsarPTA2QJ6v8mX2P1ZfbsSKvdMkg==} + 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 + + vitepress@1.4.1: + resolution: {integrity: sha512-C2rQ7PMlDVqgsaHOa0uJtgGGWaGv74QMaGL62lxKbtFkYtosJB5HAfZ8+pEbfzzvLemYaYwaiQdFLBlexK2sFw==} hasBin: true peerDependencies: markdown-it-mathjax3: ^4 @@ -4773,15 +4703,15 @@ packages: postcss: optional: true - vitest@2.1.2: - resolution: {integrity: sha512-veNjLizOMkRrJ6xxb+pvxN6/QAWg95mzcRjtmkepXdN87FNfxAss9RKe2far/G9cQpipfgP2taqg0KiWsquj8A==} + vitest@2.1.3: + resolution: {integrity: sha512-Zrxbg/WiIvUP2uEzelDNTXmEMJXuzJ1kCpbDvaKByFA9MNeO95V+7r/3ti0qzJzrxdyuUw5VduN7k+D3VmVOSA==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@types/node': ^18.0.0 || >=20.0.0 - '@vitest/browser': 2.1.2 - '@vitest/ui': 2.1.2 + '@vitest/browser': 2.1.3 + '@vitest/ui': 2.1.3 happy-dom: '*' jsdom: '*' peerDependenciesMeta: @@ -4812,16 +4742,8 @@ packages: '@vue/composition-api': optional: true - vue@3.4.38: - resolution: {integrity: sha512-f0ZgN+mZ5KFgVv9wz0f4OgVKukoXtS3nwET4c2vLBGQR50aI8G0cqbFtLlX9Yiyg3LFGBitruPHt2PxwTduJEw==} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - vue@3.5.11: - resolution: {integrity: sha512-/8Wurrd9J3lb72FTQS7gRMNQD4nztTtKPmuDuPuhqXmmpD6+skVjAeahNpVzsuky6Sy9gy7wn8UadqPtt9SQIg==} + vue@3.5.12: + resolution: {integrity: sha512-CLVZtXtn2ItBIi/zHZ0Sg1Xkb7+PU32bJJ8Bmy7ts3jxXTcbfsEfBivFYYWz1Hur+lalqGAh65Coin0r+HRUfg==} peerDependencies: typescript: '*' peerDependenciesMeta: @@ -4940,8 +4862,8 @@ packages: yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - yaml@2.5.1: - resolution: {integrity: sha512-bLQOjaX/ADgQ20isPJRvF0iRUHIxVhYvr53Of7wGcWlO2jvtUlH5m87DsmulFVxRpNLOnI4tB6p/oh8D7kpn9Q==} + yaml@2.6.0: + resolution: {integrity: sha512-a6ae//JvKDEra2kdi1qzCyrJW/WZCgFi8ydDV+eXExl95t+5R+ijnqHJbz9tmMh8FUjx3iv2fCQ4dclAQlO2UQ==} engines: {node: '>= 14'} hasBin: true @@ -4966,6 +4888,9 @@ packages: zwitch@1.0.5: resolution: {integrity: sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==} + zwitch@2.0.4: + resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} + snapshots: '@algolia/autocomplete-core@1.9.3(@algolia/client-search@4.23.2)(algoliasearch@4.23.2)(search-insights@2.13.0)': @@ -5085,13 +5010,13 @@ snapshots: dependencies: '@aws-crypto/util': 5.2.0 '@aws-sdk/types': 3.654.0 - tslib: 2.7.0 + tslib: 2.8.0 '@aws-crypto/crc32c@5.2.0': dependencies: '@aws-crypto/util': 5.2.0 '@aws-sdk/types': 3.654.0 - tslib: 2.7.0 + tslib: 2.8.0 '@aws-crypto/sha1-browser@5.2.0': dependencies: @@ -5100,7 +5025,7 @@ snapshots: '@aws-sdk/types': 3.654.0 '@aws-sdk/util-locate-window': 3.535.0 '@smithy/util-utf8': 2.3.0 - tslib: 2.7.0 + tslib: 2.8.0 '@aws-crypto/sha256-browser@5.2.0': dependencies: @@ -5110,23 +5035,23 @@ snapshots: '@aws-sdk/types': 3.654.0 '@aws-sdk/util-locate-window': 3.535.0 '@smithy/util-utf8': 2.3.0 - tslib: 2.7.0 + tslib: 2.8.0 '@aws-crypto/sha256-js@5.2.0': dependencies: '@aws-crypto/util': 5.2.0 '@aws-sdk/types': 3.654.0 - tslib: 2.7.0 + tslib: 2.8.0 '@aws-crypto/supports-web-crypto@5.2.0': dependencies: - tslib: 2.7.0 + tslib: 2.8.0 '@aws-crypto/util@5.2.0': dependencies: '@aws-sdk/types': 3.654.0 '@smithy/util-utf8': 2.3.0 - tslib: 2.7.0 + tslib: 2.8.0 '@aws-sdk/client-codecommit@3.658.1': dependencies: @@ -5159,7 +5084,7 @@ snapshots: '@smithy/node-http-handler': 3.2.3 '@smithy/protocol-http': 4.1.3 '@smithy/smithy-client': 3.3.5 - '@smithy/types': 3.4.2 + '@smithy/types': 3.5.0 '@smithy/url-parser': 3.0.6 '@smithy/util-base64': 3.0.0 '@smithy/util-body-length-browser': 3.0.0 @@ -5170,7 +5095,7 @@ snapshots: '@smithy/util-middleware': 3.0.6 '@smithy/util-retry': 3.0.6 '@smithy/util-utf8': 3.0.0 - tslib: 2.7.0 + tslib: 2.8.0 uuid: 9.0.1 transitivePeerDependencies: - aws-crt @@ -5206,7 +5131,7 @@ snapshots: '@smithy/node-http-handler': 3.2.3 '@smithy/protocol-http': 4.1.3 '@smithy/smithy-client': 3.3.5 - '@smithy/types': 3.4.2 + '@smithy/types': 3.5.0 '@smithy/url-parser': 3.0.6 '@smithy/util-base64': 3.0.0 '@smithy/util-body-length-browser': 3.0.0 @@ -5217,7 +5142,7 @@ snapshots: '@smithy/util-middleware': 3.0.6 '@smithy/util-retry': 3.0.6 '@smithy/util-utf8': 3.0.0 - tslib: 2.7.0 + tslib: 2.8.0 transitivePeerDependencies: - aws-crt @@ -5253,7 +5178,7 @@ snapshots: '@smithy/node-http-handler': 3.2.3 '@smithy/protocol-http': 4.1.3 '@smithy/smithy-client': 3.3.5 - '@smithy/types': 3.4.2 + '@smithy/types': 3.5.0 '@smithy/url-parser': 3.0.6 '@smithy/util-base64': 3.0.0 '@smithy/util-body-length-browser': 3.0.0 @@ -5265,7 +5190,7 @@ snapshots: '@smithy/util-retry': 3.0.6 '@smithy/util-utf8': 3.0.0 '@smithy/util-waiter': 3.1.6 - tslib: 2.7.0 + tslib: 2.8.0 uuid: 9.0.1 transitivePeerDependencies: - aws-crt @@ -5301,7 +5226,7 @@ snapshots: '@smithy/node-http-handler': 3.2.3 '@smithy/protocol-http': 4.1.3 '@smithy/smithy-client': 3.3.5 - '@smithy/types': 3.4.2 + '@smithy/types': 3.5.0 '@smithy/url-parser': 3.0.6 '@smithy/util-base64': 3.0.0 '@smithy/util-body-length-browser': 3.0.0 @@ -5313,7 +5238,7 @@ snapshots: '@smithy/util-retry': 3.0.6 '@smithy/util-utf8': 3.0.0 '@smithy/util-waiter': 3.1.6 - tslib: 2.7.0 + tslib: 2.8.0 transitivePeerDependencies: - aws-crt @@ -5349,7 +5274,7 @@ snapshots: '@smithy/node-http-handler': 3.2.3 '@smithy/protocol-http': 4.1.3 '@smithy/smithy-client': 3.3.5 - '@smithy/types': 3.4.2 + '@smithy/types': 3.5.0 '@smithy/url-parser': 3.0.6 '@smithy/util-base64': 3.0.0 '@smithy/util-body-length-browser': 3.0.0 @@ -5361,7 +5286,7 @@ snapshots: '@smithy/util-retry': 3.0.6 '@smithy/util-utf8': 3.0.0 '@smithy/util-waiter': 3.1.6 - tslib: 2.7.0 + tslib: 2.8.0 transitivePeerDependencies: - aws-crt @@ -5411,7 +5336,7 @@ snapshots: '@smithy/node-http-handler': 3.2.3 '@smithy/protocol-http': 4.1.3 '@smithy/smithy-client': 3.3.5 - '@smithy/types': 3.4.2 + '@smithy/types': 3.5.0 '@smithy/url-parser': 3.0.6 '@smithy/util-base64': 3.0.0 '@smithy/util-body-length-browser': 3.0.0 @@ -5424,7 +5349,7 @@ snapshots: '@smithy/util-stream': 3.1.8 '@smithy/util-utf8': 3.0.0 '@smithy/util-waiter': 3.1.6 - tslib: 2.7.0 + tslib: 2.8.0 transitivePeerDependencies: - aws-crt @@ -5458,7 +5383,7 @@ snapshots: '@smithy/node-http-handler': 3.2.3 '@smithy/protocol-http': 4.1.3 '@smithy/smithy-client': 3.3.5 - '@smithy/types': 3.4.2 + '@smithy/types': 3.5.0 '@smithy/url-parser': 3.0.6 '@smithy/util-base64': 3.0.0 '@smithy/util-body-length-browser': 3.0.0 @@ -5469,7 +5394,7 @@ snapshots: '@smithy/util-middleware': 3.0.6 '@smithy/util-retry': 3.0.6 '@smithy/util-utf8': 3.0.0 - tslib: 2.7.0 + tslib: 2.8.0 transitivePeerDependencies: - aws-crt @@ -5501,7 +5426,7 @@ snapshots: '@smithy/node-http-handler': 3.2.3 '@smithy/protocol-http': 4.1.3 '@smithy/smithy-client': 3.3.5 - '@smithy/types': 3.4.2 + '@smithy/types': 3.5.0 '@smithy/url-parser': 3.0.6 '@smithy/util-base64': 3.0.0 '@smithy/util-body-length-browser': 3.0.0 @@ -5512,7 +5437,7 @@ snapshots: '@smithy/util-middleware': 3.0.6 '@smithy/util-retry': 3.0.6 '@smithy/util-utf8': 3.0.0 - tslib: 2.7.0 + tslib: 2.8.0 transitivePeerDependencies: - aws-crt @@ -5546,7 +5471,7 @@ snapshots: '@smithy/node-http-handler': 3.2.3 '@smithy/protocol-http': 4.1.3 '@smithy/smithy-client': 3.3.5 - '@smithy/types': 3.4.2 + '@smithy/types': 3.5.0 '@smithy/url-parser': 3.0.6 '@smithy/util-base64': 3.0.0 '@smithy/util-body-length-browser': 3.0.0 @@ -5557,7 +5482,7 @@ snapshots: '@smithy/util-middleware': 3.0.6 '@smithy/util-retry': 3.0.6 '@smithy/util-utf8': 3.0.0 - tslib: 2.7.0 + tslib: 2.8.0 transitivePeerDependencies: - aws-crt @@ -5569,18 +5494,18 @@ snapshots: '@smithy/protocol-http': 4.1.3 '@smithy/signature-v4': 4.1.4 '@smithy/smithy-client': 3.3.5 - '@smithy/types': 3.4.2 + '@smithy/types': 3.5.0 '@smithy/util-middleware': 3.0.6 fast-xml-parser: 4.4.1 - tslib: 2.7.0 + tslib: 2.8.0 '@aws-sdk/credential-provider-cognito-identity@3.658.1': dependencies: '@aws-sdk/client-cognito-identity': 3.658.1 '@aws-sdk/types': 3.654.0 '@smithy/property-provider': 3.1.6 - '@smithy/types': 3.4.2 - tslib: 2.7.0 + '@smithy/types': 3.5.0 + tslib: 2.8.0 transitivePeerDependencies: - aws-crt @@ -5588,8 +5513,8 @@ snapshots: dependencies: '@aws-sdk/types': 3.654.0 '@smithy/property-provider': 3.1.6 - '@smithy/types': 3.4.2 - tslib: 2.7.0 + '@smithy/types': 3.5.0 + tslib: 2.8.0 '@aws-sdk/credential-provider-http@3.658.1': dependencies: @@ -5599,9 +5524,9 @@ snapshots: '@smithy/property-provider': 3.1.6 '@smithy/protocol-http': 4.1.3 '@smithy/smithy-client': 3.3.5 - '@smithy/types': 3.4.2 + '@smithy/types': 3.5.0 '@smithy/util-stream': 3.1.8 - tslib: 2.7.0 + tslib: 2.8.0 '@aws-sdk/credential-provider-ini@3.658.1(@aws-sdk/client-sso-oidc@3.658.1(@aws-sdk/client-sts@3.658.1))(@aws-sdk/client-sts@3.658.1)': dependencies: @@ -5615,8 +5540,8 @@ snapshots: '@smithy/credential-provider-imds': 3.2.3 '@smithy/property-provider': 3.1.6 '@smithy/shared-ini-file-loader': 3.1.7 - '@smithy/types': 3.4.2 - tslib: 2.7.0 + '@smithy/types': 3.5.0 + tslib: 2.8.0 transitivePeerDependencies: - '@aws-sdk/client-sso-oidc' - aws-crt @@ -5633,8 +5558,8 @@ snapshots: '@smithy/credential-provider-imds': 3.2.3 '@smithy/property-provider': 3.1.6 '@smithy/shared-ini-file-loader': 3.1.7 - '@smithy/types': 3.4.2 - tslib: 2.7.0 + '@smithy/types': 3.5.0 + tslib: 2.8.0 transitivePeerDependencies: - '@aws-sdk/client-sso-oidc' - '@aws-sdk/client-sts' @@ -5645,8 +5570,8 @@ snapshots: '@aws-sdk/types': 3.654.0 '@smithy/property-provider': 3.1.6 '@smithy/shared-ini-file-loader': 3.1.7 - '@smithy/types': 3.4.2 - tslib: 2.7.0 + '@smithy/types': 3.5.0 + tslib: 2.8.0 '@aws-sdk/credential-provider-sso@3.658.1(@aws-sdk/client-sso-oidc@3.658.1(@aws-sdk/client-sts@3.658.1))': dependencies: @@ -5655,8 +5580,8 @@ snapshots: '@aws-sdk/types': 3.654.0 '@smithy/property-provider': 3.1.6 '@smithy/shared-ini-file-loader': 3.1.7 - '@smithy/types': 3.4.2 - tslib: 2.7.0 + '@smithy/types': 3.5.0 + tslib: 2.8.0 transitivePeerDependencies: - '@aws-sdk/client-sso-oidc' - aws-crt @@ -5666,8 +5591,8 @@ snapshots: '@aws-sdk/client-sts': 3.658.1 '@aws-sdk/types': 3.654.0 '@smithy/property-provider': 3.1.6 - '@smithy/types': 3.4.2 - tslib: 2.7.0 + '@smithy/types': 3.5.0 + tslib: 2.8.0 '@aws-sdk/credential-providers@3.658.1(@aws-sdk/client-sso-oidc@3.658.1(@aws-sdk/client-sts@3.658.1))': dependencies: @@ -5685,8 +5610,8 @@ snapshots: '@aws-sdk/types': 3.654.0 '@smithy/credential-provider-imds': 3.2.3 '@smithy/property-provider': 3.1.6 - '@smithy/types': 3.4.2 - tslib: 2.7.0 + '@smithy/types': 3.5.0 + tslib: 2.8.0 transitivePeerDependencies: - '@aws-sdk/client-sso-oidc' - aws-crt @@ -5697,16 +5622,16 @@ snapshots: '@aws-sdk/util-arn-parser': 3.568.0 '@smithy/node-config-provider': 3.1.7 '@smithy/protocol-http': 4.1.3 - '@smithy/types': 3.4.2 + '@smithy/types': 3.5.0 '@smithy/util-config-provider': 3.0.0 - tslib: 2.7.0 + tslib: 2.8.0 '@aws-sdk/middleware-expect-continue@3.654.0': dependencies: '@aws-sdk/types': 3.654.0 '@smithy/protocol-http': 4.1.3 - '@smithy/types': 3.4.2 - tslib: 2.7.0 + '@smithy/types': 3.5.0 + tslib: 2.8.0 '@aws-sdk/middleware-flexible-checksums@3.658.1': dependencies: @@ -5716,36 +5641,36 @@ snapshots: '@smithy/is-array-buffer': 3.0.0 '@smithy/node-config-provider': 3.1.7 '@smithy/protocol-http': 4.1.3 - '@smithy/types': 3.4.2 + '@smithy/types': 3.5.0 '@smithy/util-middleware': 3.0.6 '@smithy/util-utf8': 3.0.0 - tslib: 2.7.0 + tslib: 2.8.0 '@aws-sdk/middleware-host-header@3.654.0': dependencies: '@aws-sdk/types': 3.654.0 '@smithy/protocol-http': 4.1.3 - '@smithy/types': 3.4.2 - tslib: 2.7.0 + '@smithy/types': 3.5.0 + tslib: 2.8.0 '@aws-sdk/middleware-location-constraint@3.654.0': dependencies: '@aws-sdk/types': 3.654.0 - '@smithy/types': 3.4.2 - tslib: 2.7.0 + '@smithy/types': 3.5.0 + tslib: 2.8.0 '@aws-sdk/middleware-logger@3.654.0': dependencies: '@aws-sdk/types': 3.654.0 - '@smithy/types': 3.4.2 - tslib: 2.7.0 + '@smithy/types': 3.5.0 + tslib: 2.8.0 '@aws-sdk/middleware-recursion-detection@3.654.0': dependencies: '@aws-sdk/types': 3.654.0 '@smithy/protocol-http': 4.1.3 - '@smithy/types': 3.4.2 - tslib: 2.7.0 + '@smithy/types': 3.5.0 + tslib: 2.8.0 '@aws-sdk/middleware-sdk-ec2@3.658.1': dependencies: @@ -5755,8 +5680,8 @@ snapshots: '@smithy/protocol-http': 4.1.3 '@smithy/signature-v4': 4.1.4 '@smithy/smithy-client': 3.3.5 - '@smithy/types': 3.4.2 - tslib: 2.7.0 + '@smithy/types': 3.5.0 + tslib: 2.8.0 '@aws-sdk/middleware-sdk-rds@3.658.1': dependencies: @@ -5765,8 +5690,8 @@ snapshots: '@smithy/middleware-endpoint': 3.1.3 '@smithy/protocol-http': 4.1.3 '@smithy/signature-v4': 4.1.4 - '@smithy/types': 3.4.2 - tslib: 2.7.0 + '@smithy/types': 3.5.0 + tslib: 2.8.0 '@aws-sdk/middleware-sdk-s3@3.658.1': dependencies: @@ -5778,35 +5703,35 @@ snapshots: '@smithy/protocol-http': 4.1.3 '@smithy/signature-v4': 4.1.4 '@smithy/smithy-client': 3.3.5 - '@smithy/types': 3.4.2 + '@smithy/types': 3.5.0 '@smithy/util-config-provider': 3.0.0 '@smithy/util-middleware': 3.0.6 '@smithy/util-stream': 3.1.8 '@smithy/util-utf8': 3.0.0 - tslib: 2.7.0 + tslib: 2.8.0 '@aws-sdk/middleware-ssec@3.654.0': dependencies: '@aws-sdk/types': 3.654.0 - '@smithy/types': 3.4.2 - tslib: 2.7.0 + '@smithy/types': 3.5.0 + tslib: 2.8.0 '@aws-sdk/middleware-user-agent@3.654.0': dependencies: '@aws-sdk/types': 3.654.0 '@aws-sdk/util-endpoints': 3.654.0 '@smithy/protocol-http': 4.1.3 - '@smithy/types': 3.4.2 - tslib: 2.7.0 + '@smithy/types': 3.5.0 + tslib: 2.8.0 '@aws-sdk/region-config-resolver@3.654.0': dependencies: '@aws-sdk/types': 3.654.0 '@smithy/node-config-provider': 3.1.7 - '@smithy/types': 3.4.2 + '@smithy/types': 3.5.0 '@smithy/util-config-provider': 3.0.0 '@smithy/util-middleware': 3.0.6 - tslib: 2.7.0 + tslib: 2.8.0 '@aws-sdk/signature-v4-multi-region@3.658.1': dependencies: @@ -5814,8 +5739,8 @@ snapshots: '@aws-sdk/types': 3.654.0 '@smithy/protocol-http': 4.1.3 '@smithy/signature-v4': 4.1.4 - '@smithy/types': 3.4.2 - tslib: 2.7.0 + '@smithy/types': 3.5.0 + tslib: 2.8.0 '@aws-sdk/token-providers@3.654.0(@aws-sdk/client-sso-oidc@3.658.1(@aws-sdk/client-sts@3.658.1))': dependencies: @@ -5823,74 +5748,79 @@ snapshots: '@aws-sdk/types': 3.654.0 '@smithy/property-provider': 3.1.6 '@smithy/shared-ini-file-loader': 3.1.7 - '@smithy/types': 3.4.2 - tslib: 2.7.0 + '@smithy/types': 3.5.0 + tslib: 2.8.0 '@aws-sdk/types@3.654.0': dependencies: - '@smithy/types': 3.4.2 - tslib: 2.7.0 + '@smithy/types': 3.5.0 + tslib: 2.8.0 '@aws-sdk/util-arn-parser@3.568.0': dependencies: - tslib: 2.7.0 + tslib: 2.8.0 '@aws-sdk/util-endpoints@3.654.0': dependencies: '@aws-sdk/types': 3.654.0 - '@smithy/types': 3.4.2 + '@smithy/types': 3.5.0 '@smithy/util-endpoints': 2.1.2 - tslib: 2.7.0 + tslib: 2.8.0 '@aws-sdk/util-format-url@3.654.0': dependencies: '@aws-sdk/types': 3.654.0 '@smithy/querystring-builder': 3.0.6 - '@smithy/types': 3.4.2 - tslib: 2.7.0 + '@smithy/types': 3.5.0 + tslib: 2.8.0 '@aws-sdk/util-locate-window@3.535.0': dependencies: - tslib: 2.7.0 + tslib: 2.8.0 '@aws-sdk/util-user-agent-browser@3.654.0': dependencies: '@aws-sdk/types': 3.654.0 - '@smithy/types': 3.4.2 + '@smithy/types': 3.5.0 bowser: 2.11.0 - tslib: 2.7.0 + tslib: 2.8.0 '@aws-sdk/util-user-agent-node@3.654.0': dependencies: '@aws-sdk/types': 3.654.0 '@smithy/node-config-provider': 3.1.7 - '@smithy/types': 3.4.2 - tslib: 2.7.0 + '@smithy/types': 3.5.0 + tslib: 2.8.0 '@aws-sdk/xml-builder@3.654.0': dependencies: - '@smithy/types': 3.4.2 - tslib: 2.7.0 + '@smithy/types': 3.5.0 + tslib: 2.8.0 '@babel/code-frame@7.24.2': dependencies: '@babel/highlight': 7.24.2 picocolors: 1.1.0 - '@babel/compat-data@7.24.4': {} + '@babel/code-frame@7.25.9': + dependencies: + '@babel/highlight': 7.25.9 + picocolors: 1.1.0 - '@babel/core@7.24.4': + '@babel/compat-data@7.25.9': {} + + '@babel/core@7.25.9': 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.25.6 - '@babel/template': 7.24.0 - '@babel/traverse': 7.24.1 - '@babel/types': 7.25.6 + '@babel/code-frame': 7.25.9 + '@babel/generator': 7.25.9 + '@babel/helper-compilation-targets': 7.25.9 + '@babel/helper-module-transforms': 7.25.9(@babel/core@7.25.9) + '@babel/helpers': 7.25.9 + '@babel/parser': 7.25.9 + '@babel/template': 7.25.9 + '@babel/traverse': 7.25.9 + '@babel/types': 7.25.9 convert-source-map: 2.0.0 debug: 4.3.7 gensync: 1.0.0-beta.2 @@ -5899,66 +5829,59 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/generator@7.24.4': + '@babel/generator@7.25.9': dependencies: - '@babel/types': 7.25.6 + '@babel/types': 7.25.9 '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 - jsesc: 2.5.2 + jsesc: 3.0.2 - '@babel/helper-compilation-targets@7.23.6': + '@babel/helper-compilation-targets@7.25.9': dependencies: - '@babel/compat-data': 7.24.4 - '@babel/helper-validator-option': 7.23.5 - browserslist: 4.23.0 + '@babel/compat-data': 7.25.9 + '@babel/helper-validator-option': 7.25.9 + browserslist: 4.24.0 lru-cache: 5.1.1 semver: 6.3.1 - '@babel/helper-environment-visitor@7.22.20': {} - - '@babel/helper-function-name@7.23.0': + '@babel/helper-module-imports@7.25.9': dependencies: - '@babel/template': 7.24.0 - '@babel/types': 7.25.6 + '@babel/traverse': 7.25.9 + '@babel/types': 7.25.9 + transitivePeerDependencies: + - supports-color - '@babel/helper-hoist-variables@7.22.5': + '@babel/helper-module-transforms@7.25.9(@babel/core@7.25.9)': dependencies: - '@babel/types': 7.25.6 + '@babel/core': 7.25.9 + '@babel/helper-module-imports': 7.25.9 + '@babel/helper-simple-access': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 + '@babel/traverse': 7.25.9 + transitivePeerDependencies: + - supports-color - '@babel/helper-module-imports@7.24.3': + '@babel/helper-simple-access@7.25.9': dependencies: - '@babel/types': 7.25.6 - - '@babel/helper-module-transforms@7.23.3(@babel/core@7.24.4)': - 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.24.7 - - '@babel/helper-simple-access@7.22.5': - dependencies: - '@babel/types': 7.25.6 - - '@babel/helper-split-export-declaration@7.22.6': - dependencies: - '@babel/types': 7.25.6 + '@babel/traverse': 7.25.9 + '@babel/types': 7.25.9 + transitivePeerDependencies: + - supports-color '@babel/helper-string-parser@7.24.8': {} + '@babel/helper-string-parser@7.25.9': {} + '@babel/helper-validator-identifier@7.24.7': {} - '@babel/helper-validator-option@7.23.5': {} + '@babel/helper-validator-identifier@7.25.9': {} - '@babel/helpers@7.24.4': + '@babel/helper-validator-option@7.25.9': {} + + '@babel/helpers@7.25.9': dependencies: - '@babel/template': 7.24.0 - '@babel/traverse': 7.24.1 - '@babel/types': 7.25.6 - transitivePeerDependencies: - - supports-color + '@babel/template': 7.25.9 + '@babel/types': 7.25.9 '@babel/highlight@7.24.2': dependencies: @@ -5967,37 +5890,41 @@ snapshots: js-tokens: 4.0.0 picocolors: 1.1.0 - '@babel/parser@7.24.7': + '@babel/highlight@7.25.9': dependencies: - '@babel/types': 7.25.6 + '@babel/helper-validator-identifier': 7.25.9 + chalk: 2.4.2 + js-tokens: 4.0.0 + picocolors: 1.1.0 '@babel/parser@7.25.6': dependencies: '@babel/types': 7.25.6 + '@babel/parser@7.25.9': + dependencies: + '@babel/types': 7.25.9 + '@babel/runtime-corejs3@7.24.4': dependencies: core-js-pure: 3.37.0 regenerator-runtime: 0.14.1 - '@babel/standalone@7.24.4': {} + '@babel/standalone@7.25.9': {} - '@babel/template@7.24.0': + '@babel/template@7.25.9': dependencies: - '@babel/code-frame': 7.24.2 - '@babel/parser': 7.25.6 - '@babel/types': 7.25.6 + '@babel/code-frame': 7.25.9 + '@babel/parser': 7.25.9 + '@babel/types': 7.25.9 - '@babel/traverse@7.24.1': + '@babel/traverse@7.25.9': dependencies: - '@babel/code-frame': 7.24.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.25.6 - '@babel/types': 7.25.6 + '@babel/code-frame': 7.25.9 + '@babel/generator': 7.25.9 + '@babel/parser': 7.25.9 + '@babel/template': 7.25.9 + '@babel/types': 7.25.9 debug: 4.3.7 globals: 11.12.0 transitivePeerDependencies: @@ -6009,6 +5936,11 @@ snapshots: '@babel/helper-validator-identifier': 7.24.7 to-fast-properties: 2.0.0 + '@babel/types@7.25.9': + dependencies: + '@babel/helper-string-parser': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 + '@bcoe/v8-coverage@0.2.3': {} '@breejs/later@4.2.0': {} @@ -6017,11 +5949,11 @@ snapshots: dependencies: fs-extra: 11.2.0 - '@docsearch/css@3.6.1': {} + '@docsearch/css@3.6.2': {} - '@docsearch/js@3.6.1(@algolia/client-search@4.23.2)(search-insights@2.13.0)': + '@docsearch/js@3.6.2(@algolia/client-search@4.23.2)(search-insights@2.13.0)': dependencies: - '@docsearch/react': 3.6.1(@algolia/client-search@4.23.2)(search-insights@2.13.0) + '@docsearch/react': 3.6.2(@algolia/client-search@4.23.2)(search-insights@2.13.0) preact: 10.20.2 transitivePeerDependencies: - '@algolia/client-search' @@ -6030,11 +5962,11 @@ snapshots: - react-dom - search-insights - '@docsearch/react@3.6.1(@algolia/client-search@4.23.2)(search-insights@2.13.0)': + '@docsearch/react@3.6.2(@algolia/client-search@4.23.2)(search-insights@2.13.0)': dependencies: '@algolia/autocomplete-core': 1.9.3(@algolia/client-search@4.23.2)(algoliasearch@4.23.2)(search-insights@2.13.0) '@algolia/autocomplete-preset-algolia': 1.9.3(@algolia/client-search@4.23.2)(algoliasearch@4.23.2) - '@docsearch/css': 3.6.1 + '@docsearch/css': 3.6.2 algoliasearch: 4.23.2 optionalDependencies: search-insights: 2.13.0 @@ -6044,213 +5976,141 @@ snapshots: '@esbuild/aix-ppc64@0.21.5': optional: true - '@esbuild/aix-ppc64@0.23.1': - optional: true - '@esbuild/aix-ppc64@0.24.0': optional: true '@esbuild/android-arm64@0.21.5': optional: true - '@esbuild/android-arm64@0.23.1': - optional: true - '@esbuild/android-arm64@0.24.0': optional: true '@esbuild/android-arm@0.21.5': optional: true - '@esbuild/android-arm@0.23.1': - optional: true - '@esbuild/android-arm@0.24.0': optional: true '@esbuild/android-x64@0.21.5': optional: true - '@esbuild/android-x64@0.23.1': - optional: true - '@esbuild/android-x64@0.24.0': optional: true '@esbuild/darwin-arm64@0.21.5': optional: true - '@esbuild/darwin-arm64@0.23.1': - optional: true - '@esbuild/darwin-arm64@0.24.0': optional: true '@esbuild/darwin-x64@0.21.5': optional: true - '@esbuild/darwin-x64@0.23.1': - optional: true - '@esbuild/darwin-x64@0.24.0': optional: true '@esbuild/freebsd-arm64@0.21.5': optional: true - '@esbuild/freebsd-arm64@0.23.1': - optional: true - '@esbuild/freebsd-arm64@0.24.0': optional: true '@esbuild/freebsd-x64@0.21.5': optional: true - '@esbuild/freebsd-x64@0.23.1': - optional: true - '@esbuild/freebsd-x64@0.24.0': optional: true '@esbuild/linux-arm64@0.21.5': optional: true - '@esbuild/linux-arm64@0.23.1': - optional: true - '@esbuild/linux-arm64@0.24.0': optional: true '@esbuild/linux-arm@0.21.5': optional: true - '@esbuild/linux-arm@0.23.1': - optional: true - '@esbuild/linux-arm@0.24.0': optional: true '@esbuild/linux-ia32@0.21.5': optional: true - '@esbuild/linux-ia32@0.23.1': - optional: true - '@esbuild/linux-ia32@0.24.0': optional: true '@esbuild/linux-loong64@0.21.5': optional: true - '@esbuild/linux-loong64@0.23.1': - optional: true - '@esbuild/linux-loong64@0.24.0': optional: true '@esbuild/linux-mips64el@0.21.5': optional: true - '@esbuild/linux-mips64el@0.23.1': - optional: true - '@esbuild/linux-mips64el@0.24.0': optional: true '@esbuild/linux-ppc64@0.21.5': optional: true - '@esbuild/linux-ppc64@0.23.1': - optional: true - '@esbuild/linux-ppc64@0.24.0': optional: true '@esbuild/linux-riscv64@0.21.5': optional: true - '@esbuild/linux-riscv64@0.23.1': - optional: true - '@esbuild/linux-riscv64@0.24.0': optional: true '@esbuild/linux-s390x@0.21.5': optional: true - '@esbuild/linux-s390x@0.23.1': - optional: true - '@esbuild/linux-s390x@0.24.0': optional: true '@esbuild/linux-x64@0.21.5': optional: true - '@esbuild/linux-x64@0.23.1': - optional: true - '@esbuild/linux-x64@0.24.0': optional: true '@esbuild/netbsd-x64@0.21.5': optional: true - '@esbuild/netbsd-x64@0.23.1': - optional: true - '@esbuild/netbsd-x64@0.24.0': optional: true - '@esbuild/openbsd-arm64@0.23.1': - optional: true - '@esbuild/openbsd-arm64@0.24.0': optional: true '@esbuild/openbsd-x64@0.21.5': optional: true - '@esbuild/openbsd-x64@0.23.1': - optional: true - '@esbuild/openbsd-x64@0.24.0': optional: true '@esbuild/sunos-x64@0.21.5': optional: true - '@esbuild/sunos-x64@0.23.1': - optional: true - '@esbuild/sunos-x64@0.24.0': optional: true '@esbuild/win32-arm64@0.21.5': optional: true - '@esbuild/win32-arm64@0.23.1': - optional: true - '@esbuild/win32-arm64@0.24.0': optional: true '@esbuild/win32-ia32@0.21.5': optional: true - '@esbuild/win32-ia32@0.23.1': - optional: true - '@esbuild/win32-ia32@0.24.0': optional: true '@esbuild/win32-x64@0.21.5': optional: true - '@esbuild/win32-x64@0.23.1': - optional: true - '@esbuild/win32-x64@0.24.0': optional: true @@ -6645,13 +6505,13 @@ snapshots: '@renovatebot/ruby-semver@3.0.23': {} - '@rollup/plugin-alias@5.1.1(rollup@4.22.5)': + '@rollup/plugin-alias@5.1.1(rollup@4.24.0)': optionalDependencies: - rollup: 4.22.5 + rollup: 4.24.0 - '@rollup/plugin-commonjs@28.0.0(rollup@4.22.5)': + '@rollup/plugin-commonjs@28.0.0(rollup@4.24.0)': dependencies: - '@rollup/pluginutils': 5.1.2(rollup@4.22.5) + '@rollup/pluginutils': 5.1.2(rollup@4.24.0) commondir: 1.0.1 estree-walker: 2.0.2 fdir: 6.3.0(picomatch@2.3.1) @@ -6659,135 +6519,135 @@ snapshots: magic-string: 0.30.11 picomatch: 2.3.1 optionalDependencies: - rollup: 4.22.5 + rollup: 4.24.0 - '@rollup/plugin-json@6.1.0(rollup@4.22.5)': + '@rollup/plugin-json@6.1.0(rollup@4.24.0)': dependencies: - '@rollup/pluginutils': 5.1.2(rollup@4.22.5) + '@rollup/pluginutils': 5.1.2(rollup@4.24.0) optionalDependencies: - rollup: 4.22.5 + rollup: 4.24.0 - '@rollup/plugin-node-resolve@15.3.0(rollup@4.22.5)': + '@rollup/plugin-node-resolve@15.3.0(rollup@4.24.0)': dependencies: - '@rollup/pluginutils': 5.1.2(rollup@4.22.5) + '@rollup/pluginutils': 5.1.2(rollup@4.24.0) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-module: 1.0.0 resolve: 1.22.8 optionalDependencies: - rollup: 4.22.5 + rollup: 4.24.0 - '@rollup/plugin-replace@6.0.1(rollup@4.22.5)': + '@rollup/plugin-replace@6.0.1(rollup@4.24.0)': dependencies: - '@rollup/pluginutils': 5.1.2(rollup@4.22.5) + '@rollup/pluginutils': 5.1.2(rollup@4.24.0) magic-string: 0.30.11 optionalDependencies: - rollup: 4.22.5 + rollup: 4.24.0 - '@rollup/pluginutils@5.1.2(rollup@4.22.5)': + '@rollup/pluginutils@5.1.2(rollup@4.24.0)': dependencies: '@types/estree': 1.0.6 estree-walker: 2.0.2 picomatch: 2.3.1 optionalDependencies: - rollup: 4.22.5 - - '@rollup/rollup-android-arm-eabi@4.21.1': - optional: true + rollup: 4.24.0 '@rollup/rollup-android-arm-eabi@4.22.5': optional: true - '@rollup/rollup-android-arm64@4.21.1': + '@rollup/rollup-android-arm-eabi@4.24.0': optional: true '@rollup/rollup-android-arm64@4.22.5': optional: true - '@rollup/rollup-darwin-arm64@4.21.1': + '@rollup/rollup-android-arm64@4.24.0': optional: true '@rollup/rollup-darwin-arm64@4.22.5': optional: true - '@rollup/rollup-darwin-x64@4.21.1': + '@rollup/rollup-darwin-arm64@4.24.0': optional: true '@rollup/rollup-darwin-x64@4.22.5': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.21.1': + '@rollup/rollup-darwin-x64@4.24.0': optional: true '@rollup/rollup-linux-arm-gnueabihf@4.22.5': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.21.1': + '@rollup/rollup-linux-arm-gnueabihf@4.24.0': optional: true '@rollup/rollup-linux-arm-musleabihf@4.22.5': optional: true - '@rollup/rollup-linux-arm64-gnu@4.21.1': + '@rollup/rollup-linux-arm-musleabihf@4.24.0': optional: true '@rollup/rollup-linux-arm64-gnu@4.22.5': optional: true - '@rollup/rollup-linux-arm64-musl@4.21.1': + '@rollup/rollup-linux-arm64-gnu@4.24.0': optional: true '@rollup/rollup-linux-arm64-musl@4.22.5': optional: true - '@rollup/rollup-linux-powerpc64le-gnu@4.21.1': + '@rollup/rollup-linux-arm64-musl@4.24.0': optional: true '@rollup/rollup-linux-powerpc64le-gnu@4.22.5': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.21.1': + '@rollup/rollup-linux-powerpc64le-gnu@4.24.0': optional: true '@rollup/rollup-linux-riscv64-gnu@4.22.5': optional: true - '@rollup/rollup-linux-s390x-gnu@4.21.1': + '@rollup/rollup-linux-riscv64-gnu@4.24.0': optional: true '@rollup/rollup-linux-s390x-gnu@4.22.5': optional: true - '@rollup/rollup-linux-x64-gnu@4.21.1': + '@rollup/rollup-linux-s390x-gnu@4.24.0': optional: true '@rollup/rollup-linux-x64-gnu@4.22.5': optional: true - '@rollup/rollup-linux-x64-musl@4.21.1': + '@rollup/rollup-linux-x64-gnu@4.24.0': optional: true '@rollup/rollup-linux-x64-musl@4.22.5': optional: true - '@rollup/rollup-win32-arm64-msvc@4.21.1': + '@rollup/rollup-linux-x64-musl@4.24.0': optional: true '@rollup/rollup-win32-arm64-msvc@4.22.5': optional: true - '@rollup/rollup-win32-ia32-msvc@4.21.1': + '@rollup/rollup-win32-arm64-msvc@4.24.0': optional: true '@rollup/rollup-win32-ia32-msvc@4.22.5': optional: true - '@rollup/rollup-win32-x64-msvc@4.21.1': + '@rollup/rollup-win32-ia32-msvc@4.24.0': optional: true '@rollup/rollup-win32-x64-msvc@4.22.5': optional: true + '@rollup/rollup-win32-x64-msvc@4.24.0': + optional: true + '@seald-io/binary-search-tree@1.0.3': {} '@seald-io/nedb@4.0.4': @@ -6796,42 +6656,60 @@ snapshots: localforage: 1.10.0 util: 0.12.5 - '@shikijs/core@1.14.1': + '@shikijs/core@1.22.0': dependencies: + '@shikijs/engine-javascript': 1.22.0 + '@shikijs/engine-oniguruma': 1.22.0 + '@shikijs/types': 1.22.0 + '@shikijs/vscode-textmate': 9.3.0 + '@types/hast': 3.0.4 + hast-util-to-html: 9.0.3 + + '@shikijs/engine-javascript@1.22.0': + dependencies: + '@shikijs/types': 1.22.0 + '@shikijs/vscode-textmate': 9.3.0 + oniguruma-to-js: 0.4.3 + + '@shikijs/engine-oniguruma@1.22.0': + dependencies: + '@shikijs/types': 1.22.0 + '@shikijs/vscode-textmate': 9.3.0 + + '@shikijs/transformers@1.22.0': + dependencies: + shiki: 1.22.0 + + '@shikijs/types@1.22.0': + dependencies: + '@shikijs/vscode-textmate': 9.3.0 '@types/hast': 3.0.4 - '@shikijs/transformers@1.14.1': - dependencies: - shiki: 1.14.1 + '@shikijs/vscode-textmate@9.3.0': {} '@sindresorhus/is@4.6.0': {} - '@smithy/abort-controller@3.1.4': - dependencies: - '@smithy/types': 3.4.2 - tslib: 2.7.0 - '@smithy/abort-controller@3.1.5': dependencies: '@smithy/types': 3.5.0 - tslib: 2.7.0 + tslib: 2.8.0 '@smithy/chunked-blob-reader-native@3.0.0': dependencies: '@smithy/util-base64': 3.0.0 - tslib: 2.7.0 + tslib: 2.8.0 '@smithy/chunked-blob-reader@3.0.0': dependencies: - tslib: 2.7.0 + tslib: 2.8.0 '@smithy/config-resolver@3.0.8': dependencies: '@smithy/node-config-provider': 3.1.7 - '@smithy/types': 3.4.2 + '@smithy/types': 3.5.0 '@smithy/util-config-provider': 3.0.0 '@smithy/util-middleware': 3.0.6 - tslib: 2.7.0 + tslib: 2.8.0 '@smithy/core@2.4.6': dependencies: @@ -6840,112 +6718,112 @@ snapshots: '@smithy/middleware-serde': 3.0.6 '@smithy/protocol-http': 4.1.3 '@smithy/smithy-client': 3.3.5 - '@smithy/types': 3.4.2 + '@smithy/types': 3.5.0 '@smithy/util-body-length-browser': 3.0.0 '@smithy/util-middleware': 3.0.6 '@smithy/util-utf8': 3.0.0 - tslib: 2.7.0 + tslib: 2.8.0 '@smithy/credential-provider-imds@3.2.3': dependencies: '@smithy/node-config-provider': 3.1.7 '@smithy/property-provider': 3.1.6 - '@smithy/types': 3.4.2 + '@smithy/types': 3.5.0 '@smithy/url-parser': 3.0.6 - tslib: 2.7.0 + tslib: 2.8.0 '@smithy/eventstream-codec@3.1.5': dependencies: '@aws-crypto/crc32': 5.2.0 - '@smithy/types': 3.4.2 + '@smithy/types': 3.5.0 '@smithy/util-hex-encoding': 3.0.0 - tslib: 2.7.0 + tslib: 2.8.0 '@smithy/eventstream-serde-browser@3.0.9': dependencies: '@smithy/eventstream-serde-universal': 3.0.8 - '@smithy/types': 3.4.2 - tslib: 2.7.0 + '@smithy/types': 3.5.0 + tslib: 2.8.0 '@smithy/eventstream-serde-config-resolver@3.0.7': dependencies: '@smithy/types': 3.5.0 - tslib: 2.7.0 + tslib: 2.8.0 '@smithy/eventstream-serde-node@3.0.8': dependencies: '@smithy/eventstream-serde-universal': 3.0.8 - '@smithy/types': 3.4.2 - tslib: 2.7.0 + '@smithy/types': 3.5.0 + tslib: 2.8.0 '@smithy/eventstream-serde-universal@3.0.8': dependencies: '@smithy/eventstream-codec': 3.1.5 - '@smithy/types': 3.4.2 - tslib: 2.7.0 + '@smithy/types': 3.5.0 + tslib: 2.8.0 '@smithy/fetch-http-handler@3.2.8': dependencies: '@smithy/protocol-http': 4.1.3 '@smithy/querystring-builder': 3.0.6 - '@smithy/types': 3.4.2 + '@smithy/types': 3.5.0 '@smithy/util-base64': 3.0.0 - tslib: 2.7.0 + tslib: 2.8.0 '@smithy/hash-blob-browser@3.1.6': dependencies: '@smithy/chunked-blob-reader': 3.0.0 '@smithy/chunked-blob-reader-native': 3.0.0 '@smithy/types': 3.5.0 - tslib: 2.7.0 + tslib: 2.8.0 '@smithy/hash-node@3.0.7': dependencies: '@smithy/types': 3.5.0 '@smithy/util-buffer-from': 3.0.0 '@smithy/util-utf8': 3.0.0 - tslib: 2.7.0 + tslib: 2.8.0 '@smithy/hash-stream-node@3.1.6': dependencies: '@smithy/types': 3.5.0 '@smithy/util-utf8': 3.0.0 - tslib: 2.7.0 + tslib: 2.8.0 '@smithy/invalid-dependency@3.0.7': dependencies: '@smithy/types': 3.5.0 - tslib: 2.7.0 + tslib: 2.8.0 '@smithy/is-array-buffer@2.2.0': dependencies: - tslib: 2.7.0 + tslib: 2.8.0 '@smithy/is-array-buffer@3.0.0': dependencies: - tslib: 2.7.0 + tslib: 2.8.0 '@smithy/md5-js@3.0.7': dependencies: '@smithy/types': 3.5.0 '@smithy/util-utf8': 3.0.0 - tslib: 2.7.0 + tslib: 2.8.0 '@smithy/middleware-content-length@3.0.8': dependencies: '@smithy/protocol-http': 4.1.3 - '@smithy/types': 3.4.2 - tslib: 2.7.0 + '@smithy/types': 3.5.0 + tslib: 2.8.0 '@smithy/middleware-endpoint@3.1.3': dependencies: '@smithy/middleware-serde': 3.0.6 '@smithy/node-config-provider': 3.1.7 '@smithy/shared-ini-file-loader': 3.1.7 - '@smithy/types': 3.4.2 + '@smithy/types': 3.5.0 '@smithy/url-parser': 3.0.6 '@smithy/util-middleware': 3.0.6 - tslib: 2.7.0 + tslib: 2.8.0 '@smithy/middleware-retry@3.0.21': dependencies: @@ -6953,136 +6831,132 @@ snapshots: '@smithy/protocol-http': 4.1.3 '@smithy/service-error-classification': 3.0.6 '@smithy/smithy-client': 3.3.5 - '@smithy/types': 3.4.2 + '@smithy/types': 3.5.0 '@smithy/util-middleware': 3.0.6 '@smithy/util-retry': 3.0.6 - tslib: 2.7.0 + tslib: 2.8.0 uuid: 9.0.1 '@smithy/middleware-serde@3.0.6': dependencies: - '@smithy/types': 3.4.2 - tslib: 2.7.0 + '@smithy/types': 3.5.0 + tslib: 2.8.0 '@smithy/middleware-stack@3.0.6': dependencies: - '@smithy/types': 3.4.2 - tslib: 2.7.0 + '@smithy/types': 3.5.0 + tslib: 2.8.0 '@smithy/node-config-provider@3.1.7': dependencies: '@smithy/property-provider': 3.1.6 '@smithy/shared-ini-file-loader': 3.1.7 - '@smithy/types': 3.4.2 - tslib: 2.7.0 + '@smithy/types': 3.5.0 + tslib: 2.8.0 '@smithy/node-http-handler@3.2.3': dependencies: - '@smithy/abort-controller': 3.1.4 + '@smithy/abort-controller': 3.1.5 '@smithy/protocol-http': 4.1.3 '@smithy/querystring-builder': 3.0.6 - '@smithy/types': 3.4.2 - tslib: 2.7.0 + '@smithy/types': 3.5.0 + tslib: 2.8.0 '@smithy/property-provider@3.1.6': dependencies: - '@smithy/types': 3.4.2 - tslib: 2.7.0 + '@smithy/types': 3.5.0 + tslib: 2.8.0 '@smithy/protocol-http@4.1.3': dependencies: - '@smithy/types': 3.4.2 - tslib: 2.7.0 + '@smithy/types': 3.5.0 + tslib: 2.8.0 '@smithy/querystring-builder@3.0.6': dependencies: - '@smithy/types': 3.4.2 + '@smithy/types': 3.5.0 '@smithy/util-uri-escape': 3.0.0 - tslib: 2.7.0 + tslib: 2.8.0 '@smithy/querystring-parser@3.0.6': dependencies: - '@smithy/types': 3.4.2 - tslib: 2.7.0 + '@smithy/types': 3.5.0 + tslib: 2.8.0 '@smithy/service-error-classification@3.0.6': dependencies: - '@smithy/types': 3.4.2 + '@smithy/types': 3.5.0 '@smithy/shared-ini-file-loader@3.1.7': dependencies: - '@smithy/types': 3.4.2 - tslib: 2.7.0 + '@smithy/types': 3.5.0 + tslib: 2.8.0 '@smithy/signature-v4@4.1.4': dependencies: '@smithy/is-array-buffer': 3.0.0 '@smithy/protocol-http': 4.1.3 - '@smithy/types': 3.4.2 + '@smithy/types': 3.5.0 '@smithy/util-hex-encoding': 3.0.0 '@smithy/util-middleware': 3.0.6 '@smithy/util-uri-escape': 3.0.0 '@smithy/util-utf8': 3.0.0 - tslib: 2.7.0 + tslib: 2.8.0 '@smithy/smithy-client@3.3.5': dependencies: '@smithy/middleware-endpoint': 3.1.3 '@smithy/middleware-stack': 3.0.6 '@smithy/protocol-http': 4.1.3 - '@smithy/types': 3.4.2 + '@smithy/types': 3.5.0 '@smithy/util-stream': 3.1.8 - tslib: 2.7.0 - - '@smithy/types@3.4.2': - dependencies: - tslib: 2.7.0 + tslib: 2.8.0 '@smithy/types@3.5.0': dependencies: - tslib: 2.7.0 + tslib: 2.8.0 '@smithy/url-parser@3.0.6': dependencies: '@smithy/querystring-parser': 3.0.6 - '@smithy/types': 3.4.2 - tslib: 2.7.0 + '@smithy/types': 3.5.0 + tslib: 2.8.0 '@smithy/util-base64@3.0.0': dependencies: '@smithy/util-buffer-from': 3.0.0 '@smithy/util-utf8': 3.0.0 - tslib: 2.7.0 + tslib: 2.8.0 '@smithy/util-body-length-browser@3.0.0': dependencies: - tslib: 2.7.0 + tslib: 2.8.0 '@smithy/util-body-length-node@3.0.0': dependencies: - tslib: 2.7.0 + tslib: 2.8.0 '@smithy/util-buffer-from@2.2.0': dependencies: '@smithy/is-array-buffer': 2.2.0 - tslib: 2.7.0 + tslib: 2.8.0 '@smithy/util-buffer-from@3.0.0': dependencies: '@smithy/is-array-buffer': 3.0.0 - tslib: 2.7.0 + tslib: 2.8.0 '@smithy/util-config-provider@3.0.0': dependencies: - tslib: 2.7.0 + tslib: 2.8.0 '@smithy/util-defaults-mode-browser@3.0.21': dependencies: '@smithy/property-provider': 3.1.6 '@smithy/smithy-client': 3.3.5 - '@smithy/types': 3.4.2 + '@smithy/types': 3.5.0 bowser: 2.11.0 - tslib: 2.7.0 + tslib: 2.8.0 '@smithy/util-defaults-mode-node@3.0.21': dependencies: @@ -7091,60 +6965,60 @@ snapshots: '@smithy/node-config-provider': 3.1.7 '@smithy/property-provider': 3.1.6 '@smithy/smithy-client': 3.3.5 - '@smithy/types': 3.4.2 - tslib: 2.7.0 + '@smithy/types': 3.5.0 + tslib: 2.8.0 '@smithy/util-endpoints@2.1.2': dependencies: '@smithy/node-config-provider': 3.1.7 - '@smithy/types': 3.4.2 - tslib: 2.7.0 + '@smithy/types': 3.5.0 + tslib: 2.8.0 '@smithy/util-hex-encoding@3.0.0': dependencies: - tslib: 2.7.0 + tslib: 2.8.0 '@smithy/util-middleware@3.0.6': dependencies: - '@smithy/types': 3.4.2 - tslib: 2.7.0 + '@smithy/types': 3.5.0 + tslib: 2.8.0 '@smithy/util-retry@3.0.6': dependencies: '@smithy/service-error-classification': 3.0.6 - '@smithy/types': 3.4.2 - tslib: 2.7.0 + '@smithy/types': 3.5.0 + tslib: 2.8.0 '@smithy/util-stream@3.1.8': dependencies: '@smithy/fetch-http-handler': 3.2.8 '@smithy/node-http-handler': 3.2.3 - '@smithy/types': 3.4.2 + '@smithy/types': 3.5.0 '@smithy/util-base64': 3.0.0 '@smithy/util-buffer-from': 3.0.0 '@smithy/util-hex-encoding': 3.0.0 '@smithy/util-utf8': 3.0.0 - tslib: 2.7.0 + tslib: 2.8.0 '@smithy/util-uri-escape@3.0.0': dependencies: - tslib: 2.7.0 + tslib: 2.8.0 '@smithy/util-utf8@2.3.0': dependencies: '@smithy/util-buffer-from': 2.2.0 - tslib: 2.7.0 + tslib: 2.8.0 '@smithy/util-utf8@3.0.0': dependencies: '@smithy/util-buffer-from': 3.0.0 - tslib: 2.7.0 + tslib: 2.8.0 '@smithy/util-waiter@3.1.6': dependencies: '@smithy/abort-controller': 3.1.5 '@smithy/types': 3.5.0 - tslib: 2.7.0 + tslib: 2.8.0 '@szmarczak/http-timer@4.0.6': dependencies: @@ -7163,7 +7037,7 @@ snapshots: '@thi.ng/checks@2.9.11': dependencies: - tslib: 2.7.0 + tslib: 2.8.0 '@thi.ng/compare@1.3.34': dependencies: @@ -7189,25 +7063,23 @@ snapshots: '@trysound/sax@0.2.0': {} - '@types/bun@1.1.10': + '@types/bun@1.1.12': dependencies: - bun-types: 1.1.29 + bun-types: 1.1.32 '@types/bunyan@1.8.9': dependencies: - '@types/node': 20.16.10 + '@types/node': 20.16.14 '@types/cacheable-request@6.0.3': dependencies: '@types/http-cache-semantics': 4.0.4 '@types/keyv': 3.1.4 - '@types/node': 20.16.10 + '@types/node': 20.16.14 '@types/responselike': 1.0.3 '@types/emscripten@1.39.10': {} - '@types/estree@1.0.5': {} - '@types/estree@1.0.6': {} '@types/hast@3.0.4': @@ -7218,7 +7090,7 @@ snapshots: '@types/keyv@3.1.4': dependencies: - '@types/node': 20.16.10 + '@types/node': 20.16.14 '@types/linkify-it@5.0.0': {} @@ -7231,6 +7103,10 @@ snapshots: dependencies: '@types/unist': 2.0.10 + '@types/mdast@4.0.4': + dependencies: + '@types/unist': 3.0.3 + '@types/mdurl@2.0.0': {} '@types/minimist@1.2.5': {} @@ -7241,7 +7117,7 @@ snapshots: dependencies: undici-types: 5.26.5 - '@types/node@20.16.10': + '@types/node@20.16.14': dependencies: undici-types: 6.19.8 @@ -7251,7 +7127,7 @@ snapshots: '@types/responselike@1.0.3': dependencies: - '@types/node': 20.16.10 + '@types/node': 20.16.14 '@types/semver@7.5.8': {} @@ -7261,23 +7137,27 @@ snapshots: '@types/unist@2.0.10': {} + '@types/unist@3.0.3': {} + '@types/web-bluetooth@0.0.20': {} '@types/ws@8.5.12': dependencies: - '@types/node': 20.16.10 + '@types/node': 20.16.14 '@types/yauzl@2.10.3': dependencies: - '@types/node': 20.16.10 + '@types/node': 20.16.14 optional: true - '@vitejs/plugin-vue@5.1.3(vite@5.4.2(@types/node@20.16.10))(vue@3.4.38(typescript@5.4.4))': - dependencies: - vite: 5.4.2(@types/node@20.16.10) - vue: 3.4.38(typescript@5.4.4) + '@ungap/structured-clone@1.2.0': {} - '@vitest/coverage-v8@2.1.2(vitest@2.1.2(@types/node@20.16.10)(jsdom@25.0.1))': + '@vitejs/plugin-vue@5.1.4(vite@5.4.9(@types/node@20.16.14))(vue@3.5.12(typescript@5.4.4))': + dependencies: + vite: 5.4.9(@types/node@20.16.14) + vue: 3.5.12(typescript@5.4.4) + + '@vitest/coverage-v8@2.1.3(vitest@2.1.3(@types/node@20.16.14)(jsdom@25.0.1))': dependencies: '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 0.2.3 @@ -7291,207 +7171,153 @@ snapshots: std-env: 3.7.0 test-exclude: 7.0.1 tinyrainbow: 1.2.0 - vitest: 2.1.2(@types/node@20.16.10)(jsdom@25.0.1) + vitest: 2.1.3(@types/node@20.16.14)(jsdom@25.0.1) transitivePeerDependencies: - supports-color - '@vitest/expect@2.1.2': + '@vitest/expect@2.1.3': dependencies: - '@vitest/spy': 2.1.2 - '@vitest/utils': 2.1.2 + '@vitest/spy': 2.1.3 + '@vitest/utils': 2.1.3 chai: 5.1.1 tinyrainbow: 1.2.0 - '@vitest/mocker@2.1.2(@vitest/spy@2.1.2)(vite@5.4.2(@types/node@20.16.10))': + '@vitest/mocker@2.1.3(@vitest/spy@2.1.3)(vite@5.4.2(@types/node@20.16.14))': dependencies: - '@vitest/spy': 2.1.2 + '@vitest/spy': 2.1.3 estree-walker: 3.0.3 magic-string: 0.30.11 optionalDependencies: - vite: 5.4.2(@types/node@20.16.10) + vite: 5.4.2(@types/node@20.16.14) - '@vitest/pretty-format@2.1.2': + '@vitest/pretty-format@2.1.3': dependencies: tinyrainbow: 1.2.0 - '@vitest/runner@2.1.2': + '@vitest/runner@2.1.3': dependencies: - '@vitest/utils': 2.1.2 + '@vitest/utils': 2.1.3 pathe: 1.1.2 - '@vitest/snapshot@2.1.2': + '@vitest/snapshot@2.1.3': dependencies: - '@vitest/pretty-format': 2.1.2 + '@vitest/pretty-format': 2.1.3 magic-string: 0.30.11 pathe: 1.1.2 - '@vitest/spy@2.1.2': + '@vitest/spy@2.1.3': dependencies: tinyspy: 3.0.0 - '@vitest/utils@2.1.2': + '@vitest/utils@2.1.3': dependencies: - '@vitest/pretty-format': 2.1.2 + '@vitest/pretty-format': 2.1.3 loupe: 3.1.1 tinyrainbow: 1.2.0 - '@vue/compiler-core@3.4.38': - dependencies: - '@babel/parser': 7.24.7 - '@vue/shared': 3.4.38 - entities: 4.5.0 - estree-walker: 2.0.2 - source-map-js: 1.2.0 - - '@vue/compiler-core@3.5.11': + '@vue/compiler-core@3.5.12': dependencies: '@babel/parser': 7.25.6 - '@vue/shared': 3.5.11 + '@vue/shared': 3.5.12 entities: 4.5.0 estree-walker: 2.0.2 source-map-js: 1.2.1 - '@vue/compiler-dom@3.4.38': + '@vue/compiler-dom@3.5.12': dependencies: - '@vue/compiler-core': 3.4.38 - '@vue/shared': 3.4.38 + '@vue/compiler-core': 3.5.12 + '@vue/shared': 3.5.12 - '@vue/compiler-dom@3.5.11': - dependencies: - '@vue/compiler-core': 3.5.11 - '@vue/shared': 3.5.11 - - '@vue/compiler-sfc@3.4.38': - dependencies: - '@babel/parser': 7.24.7 - '@vue/compiler-core': 3.4.38 - '@vue/compiler-dom': 3.4.38 - '@vue/compiler-ssr': 3.4.38 - '@vue/shared': 3.4.38 - estree-walker: 2.0.2 - magic-string: 0.30.11 - postcss: 8.4.41 - source-map-js: 1.2.0 - - '@vue/compiler-sfc@3.5.11': + '@vue/compiler-sfc@3.5.12': dependencies: '@babel/parser': 7.25.6 - '@vue/compiler-core': 3.5.11 - '@vue/compiler-dom': 3.5.11 - '@vue/compiler-ssr': 3.5.11 - '@vue/shared': 3.5.11 + '@vue/compiler-core': 3.5.12 + '@vue/compiler-dom': 3.5.12 + '@vue/compiler-ssr': 3.5.12 + '@vue/shared': 3.5.12 estree-walker: 2.0.2 magic-string: 0.30.11 postcss: 8.4.47 source-map-js: 1.2.1 - '@vue/compiler-ssr@3.4.38': + '@vue/compiler-ssr@3.5.12': dependencies: - '@vue/compiler-dom': 3.4.38 - '@vue/shared': 3.4.38 + '@vue/compiler-dom': 3.5.12 + '@vue/shared': 3.5.12 - '@vue/compiler-ssr@3.5.11': + '@vue/devtools-api@7.5.3': dependencies: - '@vue/compiler-dom': 3.5.11 - '@vue/shared': 3.5.11 + '@vue/devtools-kit': 7.5.3 - '@vue/devtools-api@7.3.9': + '@vue/devtools-kit@7.5.3': dependencies: - '@vue/devtools-kit': 7.3.9 - - '@vue/devtools-kit@7.3.9': - dependencies: - '@vue/devtools-shared': 7.3.9 - birpc: 0.2.17 + '@vue/devtools-shared': 7.5.3 + birpc: 0.2.19 hookable: 5.5.3 mitt: 3.0.1 perfect-debounce: 1.0.0 speakingurl: 14.0.1 superjson: 2.2.1 - '@vue/devtools-shared@7.3.9': + '@vue/devtools-shared@7.5.3': dependencies: rfdc: 1.4.1 - '@vue/reactivity@3.4.38': + '@vue/reactivity@3.5.12': dependencies: - '@vue/shared': 3.4.38 + '@vue/shared': 3.5.12 - '@vue/reactivity@3.5.11': + '@vue/runtime-core@3.5.12': dependencies: - '@vue/shared': 3.5.11 + '@vue/reactivity': 3.5.12 + '@vue/shared': 3.5.12 - '@vue/runtime-core@3.4.38': + '@vue/runtime-dom@3.5.12': dependencies: - '@vue/reactivity': 3.4.38 - '@vue/shared': 3.4.38 - - '@vue/runtime-core@3.5.11': - dependencies: - '@vue/reactivity': 3.5.11 - '@vue/shared': 3.5.11 - - '@vue/runtime-dom@3.4.38': - dependencies: - '@vue/reactivity': 3.4.38 - '@vue/runtime-core': 3.4.38 - '@vue/shared': 3.4.38 + '@vue/reactivity': 3.5.12 + '@vue/runtime-core': 3.5.12 + '@vue/shared': 3.5.12 csstype: 3.1.3 - '@vue/runtime-dom@3.5.11': + '@vue/server-renderer@3.5.12(vue@3.5.12(typescript@5.4.4))': dependencies: - '@vue/reactivity': 3.5.11 - '@vue/runtime-core': 3.5.11 - '@vue/shared': 3.5.11 - csstype: 3.1.3 + '@vue/compiler-ssr': 3.5.12 + '@vue/shared': 3.5.12 + vue: 3.5.12(typescript@5.4.4) - '@vue/server-renderer@3.4.38(vue@3.4.38(typescript@5.4.4))': - dependencies: - '@vue/compiler-ssr': 3.4.38 - '@vue/shared': 3.4.38 - vue: 3.4.38(typescript@5.4.4) - - '@vue/server-renderer@3.5.11(vue@3.5.11(typescript@5.4.4))': - dependencies: - '@vue/compiler-ssr': 3.5.11 - '@vue/shared': 3.5.11 - vue: 3.5.11(typescript@5.4.4) - - '@vue/shared@3.4.38': {} - - '@vue/shared@3.5.11': {} + '@vue/shared@3.5.12': {} '@vue/test-utils@2.4.6': dependencies: js-beautify: 1.15.1 vue-component-type-helpers: 2.1.6 - '@vueuse/core@11.0.3(vue@3.4.38(typescript@5.4.4))': + '@vueuse/core@11.1.0(vue@3.5.12(typescript@5.4.4))': dependencies: '@types/web-bluetooth': 0.0.20 - '@vueuse/metadata': 11.0.3 - '@vueuse/shared': 11.0.3(vue@3.4.38(typescript@5.4.4)) - vue-demi: 0.14.10(vue@3.4.38(typescript@5.4.4)) + '@vueuse/metadata': 11.1.0 + '@vueuse/shared': 11.1.0(vue@3.5.12(typescript@5.4.4)) + vue-demi: 0.14.10(vue@3.5.12(typescript@5.4.4)) transitivePeerDependencies: - '@vue/composition-api' - vue - '@vueuse/integrations@11.0.3(focus-trap@7.5.4)(vue@3.4.38(typescript@5.4.4))': + '@vueuse/integrations@11.1.0(focus-trap@7.6.0)(vue@3.5.12(typescript@5.4.4))': dependencies: - '@vueuse/core': 11.0.3(vue@3.4.38(typescript@5.4.4)) - '@vueuse/shared': 11.0.3(vue@3.4.38(typescript@5.4.4)) - vue-demi: 0.14.10(vue@3.4.38(typescript@5.4.4)) + '@vueuse/core': 11.1.0(vue@3.5.12(typescript@5.4.4)) + '@vueuse/shared': 11.1.0(vue@3.5.12(typescript@5.4.4)) + vue-demi: 0.14.10(vue@3.5.12(typescript@5.4.4)) optionalDependencies: - focus-trap: 7.5.4 + focus-trap: 7.6.0 transitivePeerDependencies: - '@vue/composition-api' - vue - '@vueuse/metadata@11.0.3': {} + '@vueuse/metadata@11.1.0': {} - '@vueuse/shared@11.0.3(vue@3.4.38(typescript@5.4.4))': + '@vueuse/shared@11.1.0(vue@3.5.12(typescript@5.4.4))': dependencies: - vue-demi: 0.14.10(vue@3.4.38(typescript@5.4.4)) + vue-demi: 0.14.10(vue@3.5.12(typescript@5.4.4)) transitivePeerDependencies: - '@vue/composition-api' - vue @@ -7522,25 +7348,25 @@ snapshots: tar: 6.2.1 tinylogic: 2.0.0 treeify: 1.1.0 - tslib: 2.7.0 + tslib: 2.8.0 tunnel: 0.0.6 transitivePeerDependencies: - typanion '@yarnpkg/fslib@3.1.0': dependencies: - tslib: 2.7.0 + tslib: 2.8.0 '@yarnpkg/libzip@3.1.0(@yarnpkg/fslib@3.1.0)': dependencies: '@types/emscripten': 1.39.10 '@yarnpkg/fslib': 3.1.0 - tslib: 2.7.0 + tslib: 2.8.0 '@yarnpkg/parsers@3.0.2': dependencies: js-yaml: 3.14.1 - tslib: 2.7.0 + tslib: 2.8.0 '@yarnpkg/shell@4.1.0(typanion@3.14.0)': dependencies: @@ -7551,7 +7377,7 @@ snapshots: cross-spawn: 7.0.3 fast-glob: 3.3.2 micromatch: 4.0.5 - tslib: 2.7.0 + tslib: 2.8.0 transitivePeerDependencies: - typanion @@ -7637,7 +7463,7 @@ snapshots: async-mutex@0.5.0: dependencies: - tslib: 2.7.0 + tslib: 2.8.0 asynckit@0.4.0: {} @@ -7687,7 +7513,7 @@ snapshots: file-uri-to-path: 1.0.0 optional: true - birpc@0.2.17: {} + birpc@0.2.19: {} bl@4.1.0: dependencies: @@ -7721,13 +7547,6 @@ snapshots: dependencies: fill-range: 7.0.1 - browserslist@4.23.0: - dependencies: - caniuse-lite: 1.0.30001611 - electron-to-chromium: 1.4.744 - node-releases: 2.0.14 - update-browserslist-db: 1.0.13(browserslist@4.23.0) - browserslist@4.24.0: dependencies: caniuse-lite: 1.0.30001664 @@ -7747,7 +7566,7 @@ snapshots: ieee754: 1.2.1 optional: true - bun-types@1.1.29: + bun-types@1.1.32: dependencies: '@types/node': 20.12.14 '@types/ws': 8.5.12 @@ -7809,14 +7628,14 @@ snapshots: caniuse-api@3.0.0: dependencies: browserslist: 4.24.0 - caniuse-lite: 1.0.30001611 + caniuse-lite: 1.0.30001664 lodash.memoize: 4.1.2 lodash.uniq: 4.5.0 - caniuse-lite@1.0.30001611: {} - caniuse-lite@1.0.30001664: {} + ccount@2.0.1: {} + chai@5.1.1: dependencies: assertion-error: 2.0.1 @@ -7843,8 +7662,12 @@ snapshots: changelog-filename-regex@2.0.1: {} + character-entities-html4@2.1.0: {} + character-entities-legacy@1.1.4: {} + character-entities-legacy@3.0.0: {} + character-entities@1.2.4: {} character-reference-invalid@1.1.4: {} @@ -7896,6 +7719,8 @@ snapshots: dependencies: delayed-stream: 1.0.0 + comma-separated-tokens@2.0.3: {} + commander@10.0.1: {} commander@11.1.0: {} @@ -8113,6 +7938,10 @@ snapshots: detect-node@2.1.0: {} + devlop@1.1.0: + dependencies: + dequal: 2.0.3 + diff@5.2.0: {} dom-serializer@2.0.0: @@ -8160,8 +7989,6 @@ snapshots: minimatch: 9.0.2 semver: 7.6.3 - electron-to-chromium@1.4.744: {} - electron-to-chromium@1.5.29: {} email-addresses@5.0.0: {} @@ -8243,33 +8070,6 @@ snapshots: '@esbuild/win32-ia32': 0.21.5 '@esbuild/win32-x64': 0.21.5 - esbuild@0.23.1: - optionalDependencies: - '@esbuild/aix-ppc64': 0.23.1 - '@esbuild/android-arm': 0.23.1 - '@esbuild/android-arm64': 0.23.1 - '@esbuild/android-x64': 0.23.1 - '@esbuild/darwin-arm64': 0.23.1 - '@esbuild/darwin-x64': 0.23.1 - '@esbuild/freebsd-arm64': 0.23.1 - '@esbuild/freebsd-x64': 0.23.1 - '@esbuild/linux-arm': 0.23.1 - '@esbuild/linux-arm64': 0.23.1 - '@esbuild/linux-ia32': 0.23.1 - '@esbuild/linux-loong64': 0.23.1 - '@esbuild/linux-mips64el': 0.23.1 - '@esbuild/linux-ppc64': 0.23.1 - '@esbuild/linux-riscv64': 0.23.1 - '@esbuild/linux-s390x': 0.23.1 - '@esbuild/linux-x64': 0.23.1 - '@esbuild/netbsd-x64': 0.23.1 - '@esbuild/openbsd-arm64': 0.23.1 - '@esbuild/openbsd-x64': 0.23.1 - '@esbuild/sunos-x64': 0.23.1 - '@esbuild/win32-arm64': 0.23.1 - '@esbuild/win32-ia32': 0.23.1 - '@esbuild/win32-x64': 0.23.1 - esbuild@0.24.0: optionalDependencies: '@esbuild/aix-ppc64': 0.24.0 @@ -8297,8 +8097,6 @@ snapshots: '@esbuild/win32-ia32': 0.24.0 '@esbuild/win32-x64': 0.24.0 - escalade@3.1.2: {} - escalade@3.2.0: {} escape-string-regexp@1.0.5: {} @@ -8361,7 +8159,7 @@ snapshots: optionalDependencies: picomatch: 2.3.1 - fdir@6.3.0(picomatch@4.0.2): + fdir@6.4.2(picomatch@4.0.2): optionalDependencies: picomatch: 4.0.2 @@ -8390,7 +8188,7 @@ snapshots: locate-path: 6.0.0 path-exists: 4.0.0 - focus-trap@7.5.4: + focus-trap@7.6.0: dependencies: tabbable: 6.2.0 @@ -8547,7 +8345,7 @@ snapshots: klona: 2.0.6 moo: 0.5.2 - google-auth-library@9.14.1(encoding@0.1.13): + google-auth-library@9.14.2(encoding@0.1.13): dependencies: base64-js: 1.5.1 ecdsa-sig-formatter: 1.0.11 @@ -8624,6 +8422,24 @@ snapshots: dependencies: function-bind: 1.1.2 + hast-util-to-html@9.0.3: + dependencies: + '@types/hast': 3.0.4 + '@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.2.0 + property-information: 6.5.0 + space-separated-tokens: 2.0.2 + stringify-entities: 4.0.4 + zwitch: 2.0.4 + + hast-util-whitespace@3.0.0: + dependencies: + '@types/hast': 3.0.4 + he@1.2.0: {} hookable@5.5.3: {} @@ -8640,6 +8456,8 @@ snapshots: html-escaper@2.0.2: {} + html-void-elements@3.0.0: {} + http-cache-semantics@4.1.1: {} http-proxy-agent@7.0.2: @@ -8891,9 +8709,7 @@ snapshots: jiti@1.21.6: {} - jiti@2.0.0: {} - - jiti@2.2.1: {} + jiti@2.3.3: {} js-beautify@1.15.1: dependencies: @@ -8949,7 +8765,7 @@ snapshots: - supports-color - utf-8-validate - jsesc@2.5.2: {} + jsesc@3.0.2: {} json-bigint@1.0.0: dependencies: @@ -9132,6 +8948,18 @@ snapshots: transitivePeerDependencies: - supports-color + mdast-util-to-hast@13.2.0: + dependencies: + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + '@ungap/structured-clone': 1.2.0 + devlop: 1.1.0 + micromark-util-sanitize-uri: 2.0.0 + 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@0.6.5: dependencies: '@types/unist': 2.0.10 @@ -9181,6 +9009,23 @@ snapshots: merge2@1.4.1: {} + micromark-util-character@2.1.0: + dependencies: + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-util-encode@2.0.0: {} + + micromark-util-sanitize-uri@2.0.0: + dependencies: + micromark-util-character: 2.1.0 + micromark-util-encode: 2.0.0 + micromark-util-symbol: 2.0.0 + + micromark-util-symbol@2.0.0: {} + + micromark-util-types@2.0.0: {} + micromark@2.11.4: dependencies: debug: 4.3.7 @@ -9289,14 +9134,13 @@ snapshots: mkdirp@1.0.4: {} - mkdist@1.5.9(typescript@5.4.4): + mkdist@1.6.0(typescript@5.4.4): dependencies: autoprefixer: 10.4.20(postcss@8.4.47) citty: 0.1.6 cssnano: 7.0.6(postcss@8.4.47) defu: 6.1.4 - esbuild: 0.23.1 - fast-glob: 3.3.2 + esbuild: 0.24.0 jiti: 1.21.6 mlly: 1.7.1 pathe: 1.1.2 @@ -9304,6 +9148,7 @@ snapshots: postcss: 8.4.47 postcss-nested: 6.2.0(postcss@8.4.47) semver: 7.6.3 + tinyglobby: 0.2.9 optionalDependencies: typescript: 5.4.4 @@ -9386,8 +9231,6 @@ snapshots: css-select: 5.1.0 he: 1.2.0 - node-releases@2.0.14: {} - node-releases@2.0.18: {} nopt@7.2.0: @@ -9438,6 +9281,10 @@ snapshots: dependencies: wrappy: 1.0.2 + oniguruma-to-js@0.4.3: + dependencies: + regex: 4.3.3 + openpgp@5.11.2: dependencies: asn1.js: 5.4.1 @@ -9731,12 +9578,6 @@ snapshots: postcss-value-parser@4.2.0: {} - postcss@8.4.41: - dependencies: - nanoid: 3.3.7 - picocolors: 1.1.0 - source-map-js: 1.2.1 - postcss@8.4.47: dependencies: nanoid: 3.3.7 @@ -9778,6 +9619,8 @@ snapshots: retry: 0.12.0 optional: true + property-information@6.5.0: {} + proto-list@1.2.4: {} protobufjs@7.3.2: @@ -9792,7 +9635,7 @@ snapshots: '@protobufjs/path': 1.1.2 '@protobufjs/pool': 1.1.0 '@protobufjs/utf8': 1.1.0 - '@types/node': 20.16.10 + '@types/node': 20.16.14 long: 5.2.3 protocols@2.0.1: {} @@ -9885,6 +9728,8 @@ snapshots: regenerator-runtime@0.14.1: {} + regex@4.3.3: {} + regexp.prototype.flags@1.5.2: dependencies: call-bind: 1.0.7 @@ -9916,7 +9761,7 @@ snapshots: transitivePeerDependencies: - supports-color - renovate@38.110.1(@aws-sdk/client-sso-oidc@3.658.1(@aws-sdk/client-sts@3.658.1))(encoding@0.1.13)(typanion@3.14.0): + renovate@38.130.0(@aws-sdk/client-sso-oidc@3.658.1(@aws-sdk/client-sts@3.658.1))(encoding@0.1.13)(typanion@3.14.0): dependencies: '@aws-sdk/client-codecommit': 3.658.1 '@aws-sdk/client-ec2': 3.658.1 @@ -9978,7 +9823,7 @@ snapshots: glob: 11.0.0 global-agent: 3.0.0 good-enough-parser: 1.1.23 - google-auth-library: 9.14.1(encoding@0.1.13) + google-auth-library: 9.14.2(encoding@0.1.13) got: 11.8.6 graph-data-structure: 3.5.0 handlebars: 4.7.8 @@ -10017,13 +9862,13 @@ snapshots: slugify: 1.6.6 source-map-support: 0.5.21 toml-eslint-parser: 0.10.0 - tslib: 2.7.0 + tslib: 2.8.0 upath: 2.0.1 url-join: 4.0.1 validate-npm-package-name: 5.0.1 vuln-vects: 1.1.0 xmldoc: 1.3.0 - yaml: 2.5.1 + yaml: 2.6.0 zod: 3.23.8 optionalDependencies: better-sqlite3: 11.3.0 @@ -10079,36 +9924,14 @@ snapshots: semver-compare: 1.0.0 sprintf-js: 1.1.3 - rollup-plugin-dts@6.1.1(rollup@4.22.5)(typescript@5.4.4): + rollup-plugin-dts@6.1.1(rollup@4.24.0)(typescript@5.4.4): dependencies: magic-string: 0.30.11 - rollup: 4.22.5 + rollup: 4.24.0 typescript: 5.4.4 optionalDependencies: '@babel/code-frame': 7.24.2 - rollup@4.21.1: - dependencies: - '@types/estree': 1.0.5 - optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.21.1 - '@rollup/rollup-android-arm64': 4.21.1 - '@rollup/rollup-darwin-arm64': 4.21.1 - '@rollup/rollup-darwin-x64': 4.21.1 - '@rollup/rollup-linux-arm-gnueabihf': 4.21.1 - '@rollup/rollup-linux-arm-musleabihf': 4.21.1 - '@rollup/rollup-linux-arm64-gnu': 4.21.1 - '@rollup/rollup-linux-arm64-musl': 4.21.1 - '@rollup/rollup-linux-powerpc64le-gnu': 4.21.1 - '@rollup/rollup-linux-riscv64-gnu': 4.21.1 - '@rollup/rollup-linux-s390x-gnu': 4.21.1 - '@rollup/rollup-linux-x64-gnu': 4.21.1 - '@rollup/rollup-linux-x64-musl': 4.21.1 - '@rollup/rollup-win32-arm64-msvc': 4.21.1 - '@rollup/rollup-win32-ia32-msvc': 4.21.1 - '@rollup/rollup-win32-x64-msvc': 4.21.1 - fsevents: 2.3.3 - rollup@4.22.5: dependencies: '@types/estree': 1.0.6 @@ -10131,6 +9954,28 @@ snapshots: '@rollup/rollup-win32-x64-msvc': 4.22.5 fsevents: 2.3.3 + rollup@4.24.0: + dependencies: + '@types/estree': 1.0.6 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.24.0 + '@rollup/rollup-android-arm64': 4.24.0 + '@rollup/rollup-darwin-arm64': 4.24.0 + '@rollup/rollup-darwin-x64': 4.24.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.24.0 + '@rollup/rollup-linux-arm-musleabihf': 4.24.0 + '@rollup/rollup-linux-arm64-gnu': 4.24.0 + '@rollup/rollup-linux-arm64-musl': 4.24.0 + '@rollup/rollup-linux-powerpc64le-gnu': 4.24.0 + '@rollup/rollup-linux-riscv64-gnu': 4.24.0 + '@rollup/rollup-linux-s390x-gnu': 4.24.0 + '@rollup/rollup-linux-x64-gnu': 4.24.0 + '@rollup/rollup-linux-x64-musl': 4.24.0 + '@rollup/rollup-win32-arm64-msvc': 4.24.0 + '@rollup/rollup-win32-ia32-msvc': 4.24.0 + '@rollup/rollup-win32-x64-msvc': 4.24.0 + fsevents: 2.3.3 + rrweb-cssom@0.7.1: {} run-parallel@1.2.0: @@ -10198,9 +10043,13 @@ snapshots: shebang-regex@3.0.0: {} - shiki@1.14.1: + shiki@1.22.0: dependencies: - '@shikijs/core': 1.14.1 + '@shikijs/core': 1.22.0 + '@shikijs/engine-javascript': 1.22.0 + '@shikijs/engine-oniguruma': 1.22.0 + '@shikijs/types': 1.22.0 + '@shikijs/vscode-textmate': 9.3.0 '@types/hast': 3.0.4 shimmer@1.2.1: {} @@ -10262,8 +10111,6 @@ snapshots: dependencies: is-plain-obj: 2.1.0 - source-map-js@1.2.0: {} - source-map-js@1.2.1: {} source-map-support@0.5.21: @@ -10273,6 +10120,8 @@ snapshots: source-map@0.6.1: {} + space-separated-tokens@2.0.2: {} + spdx-correct@3.2.0: dependencies: spdx-expression-parse: 3.0.1 @@ -10329,6 +10178,11 @@ snapshots: dependencies: safe-buffer: 5.2.1 + stringify-entities@4.0.4: + dependencies: + character-entities-html4: 2.1.0 + character-entities-legacy: 3.0.0 + strip-ansi@6.0.1: dependencies: ansi-regex: 5.0.1 @@ -10433,9 +10287,9 @@ snapshots: tinyexec@0.3.0: {} - tinyglobby@0.2.6: + tinyglobby@0.2.9: dependencies: - fdir: 6.3.0(picomatch@4.0.2) + fdir: 6.4.2(picomatch@4.0.2) picomatch: 4.0.2 tinylogic@2.0.0: {} @@ -10474,6 +10328,8 @@ snapshots: treeify@1.1.0: {} + trim-lines@3.0.1: {} + trim-newlines@3.0.1: {} triplesec@4.0.3: @@ -10487,7 +10343,7 @@ snapshots: trough@1.0.5: {} - tslib@2.7.0: {} + tslib@2.8.0: {} tunnel-agent@0.6.0: dependencies: @@ -10532,33 +10388,32 @@ snapshots: uint64be@1.0.1: {} - unbuild@3.0.0-rc.8(typescript@5.4.4): + unbuild@3.0.0-rc.11(typescript@5.4.4): dependencies: - '@rollup/plugin-alias': 5.1.1(rollup@4.22.5) - '@rollup/plugin-commonjs': 28.0.0(rollup@4.22.5) - '@rollup/plugin-json': 6.1.0(rollup@4.22.5) - '@rollup/plugin-node-resolve': 15.3.0(rollup@4.22.5) - '@rollup/plugin-replace': 6.0.1(rollup@4.22.5) - '@rollup/pluginutils': 5.1.2(rollup@4.22.5) + '@rollup/plugin-alias': 5.1.1(rollup@4.24.0) + '@rollup/plugin-commonjs': 28.0.0(rollup@4.24.0) + '@rollup/plugin-json': 6.1.0(rollup@4.24.0) + '@rollup/plugin-node-resolve': 15.3.0(rollup@4.24.0) + '@rollup/plugin-replace': 6.0.1(rollup@4.24.0) + '@rollup/pluginutils': 5.1.2(rollup@4.24.0) citty: 0.1.6 consola: 3.2.3 defu: 6.1.4 esbuild: 0.24.0 - fast-glob: 3.3.2 hookable: 5.5.3 - jiti: 2.0.0 + jiti: 2.3.3 magic-string: 0.30.11 - mkdist: 1.5.9(typescript@5.4.4) + mkdist: 1.6.0(typescript@5.4.4) mlly: 1.7.1 pathe: 1.1.2 pkg-types: 1.2.0 pretty-bytes: 6.1.1 - rollup: 4.22.5 - rollup-plugin-dts: 6.1.1(rollup@4.22.5)(typescript@5.4.4) + rollup: 4.24.0 + rollup-plugin-dts: 6.1.1(rollup@4.24.0)(typescript@5.4.4) scule: 1.3.0 - tinyglobby: 0.2.6 + tinyglobby: 0.2.9 ufo: 1.5.4 - untyped: 1.4.2 + untyped: 1.5.1 optionalDependencies: typescript: 5.4.4 transitivePeerDependencies: @@ -10592,32 +10447,55 @@ snapshots: unist-util-is@4.1.0: {} + unist-util-is@6.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-position@5.0.0: + dependencies: + '@types/unist': 3.0.3 + unist-util-stringify-position@2.0.3: dependencies: '@types/unist': 2.0.10 + unist-util-stringify-position@4.0.0: + dependencies: + '@types/unist': 3.0.3 + unist-util-visit-parents@3.1.1: dependencies: '@types/unist': 2.0.10 unist-util-is: 4.1.0 + unist-util-visit-parents@6.0.1: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.0 + unist-util-visit@2.0.3: dependencies: '@types/unist': 2.0.10 unist-util-is: 4.1.0 unist-util-visit-parents: 3.1.1 + unist-util-visit@5.0.0: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.0 + unist-util-visit-parents: 6.0.1 + universal-user-agent@6.0.1: {} universalify@2.0.1: {} - untyped@1.4.2: + untyped@1.5.1: dependencies: - '@babel/core': 7.24.4 - '@babel/standalone': 7.24.4 - '@babel/types': 7.25.6 + '@babel/core': 7.25.9 + '@babel/standalone': 7.25.9 + '@babel/types': 7.25.9 defu: 6.1.4 - jiti: 1.21.6 + jiti: 2.3.3 mri: 1.2.0 scule: 1.3.0 transitivePeerDependencies: @@ -10625,12 +10503,6 @@ snapshots: upath@2.0.1: {} - update-browserslist-db@1.0.13(browserslist@4.23.0): - dependencies: - browserslist: 4.23.0 - escalade: 3.1.2 - picocolors: 1.1.0 - update-browserslist-db@1.1.1(browserslist@4.24.0): dependencies: browserslist: 4.24.0 @@ -10663,6 +10535,11 @@ snapshots: '@types/unist': 2.0.10 unist-util-stringify-position: 2.0.3 + vfile-message@4.0.2: + dependencies: + '@types/unist': 3.0.3 + unist-util-stringify-position: 4.0.0 + vfile@4.2.1: dependencies: '@types/unist': 2.0.10 @@ -10670,12 +10547,17 @@ snapshots: unist-util-stringify-position: 2.0.3 vfile-message: 2.0.4 - vite-node@2.1.2(@types/node@20.16.10): + vfile@6.0.3: + dependencies: + '@types/unist': 3.0.3 + vfile-message: 4.0.2 + + vite-node@2.1.3(@types/node@20.16.14): dependencies: cac: 6.7.14 debug: 4.3.7 pathe: 1.1.2 - vite: 5.4.2(@types/node@20.16.10) + vite: 5.4.2(@types/node@20.16.14) transitivePeerDependencies: - '@types/node' - less @@ -10687,33 +10569,43 @@ snapshots: - supports-color - terser - vite@5.4.2(@types/node@20.16.10): + vite@5.4.2(@types/node@20.16.14): dependencies: esbuild: 0.21.5 - postcss: 8.4.41 - rollup: 4.21.1 + postcss: 8.4.47 + rollup: 4.22.5 optionalDependencies: - '@types/node': 20.16.10 + '@types/node': 20.16.14 fsevents: 2.3.3 - vitepress@1.3.4(@algolia/client-search@4.23.2)(@types/node@20.16.10)(postcss@8.4.47)(search-insights@2.13.0)(typescript@5.4.4): + vite@5.4.9(@types/node@20.16.14): dependencies: - '@docsearch/css': 3.6.1 - '@docsearch/js': 3.6.1(@algolia/client-search@4.23.2)(search-insights@2.13.0) - '@shikijs/core': 1.14.1 - '@shikijs/transformers': 1.14.1 + esbuild: 0.21.5 + postcss: 8.4.47 + rollup: 4.22.5 + optionalDependencies: + '@types/node': 20.16.14 + fsevents: 2.3.3 + + vitepress@1.4.1(@algolia/client-search@4.23.2)(@types/node@20.16.14)(postcss@8.4.47)(search-insights@2.13.0)(typescript@5.4.4): + dependencies: + '@docsearch/css': 3.6.2 + '@docsearch/js': 3.6.2(@algolia/client-search@4.23.2)(search-insights@2.13.0) + '@shikijs/core': 1.22.0 + '@shikijs/transformers': 1.22.0 + '@shikijs/types': 1.22.0 '@types/markdown-it': 14.1.2 - '@vitejs/plugin-vue': 5.1.3(vite@5.4.2(@types/node@20.16.10))(vue@3.4.38(typescript@5.4.4)) - '@vue/devtools-api': 7.3.9 - '@vue/shared': 3.4.38 - '@vueuse/core': 11.0.3(vue@3.4.38(typescript@5.4.4)) - '@vueuse/integrations': 11.0.3(focus-trap@7.5.4)(vue@3.4.38(typescript@5.4.4)) - focus-trap: 7.5.4 + '@vitejs/plugin-vue': 5.1.4(vite@5.4.9(@types/node@20.16.14))(vue@3.5.12(typescript@5.4.4)) + '@vue/devtools-api': 7.5.3 + '@vue/shared': 3.5.12 + '@vueuse/core': 11.1.0(vue@3.5.12(typescript@5.4.4)) + '@vueuse/integrations': 11.1.0(focus-trap@7.6.0)(vue@3.5.12(typescript@5.4.4)) + focus-trap: 7.6.0 mark.js: 8.11.1 minisearch: 7.1.0 - shiki: 1.14.1 - vite: 5.4.2(@types/node@20.16.10) - vue: 3.4.38(typescript@5.4.4) + shiki: 1.22.0 + vite: 5.4.9(@types/node@20.16.14) + vue: 3.5.12(typescript@5.4.4) optionalDependencies: postcss: 8.4.47 transitivePeerDependencies: @@ -10744,15 +10636,15 @@ snapshots: - typescript - universal-cookie - vitest@2.1.2(@types/node@20.16.10)(jsdom@25.0.1): + vitest@2.1.3(@types/node@20.16.14)(jsdom@25.0.1): dependencies: - '@vitest/expect': 2.1.2 - '@vitest/mocker': 2.1.2(@vitest/spy@2.1.2)(vite@5.4.2(@types/node@20.16.10)) - '@vitest/pretty-format': 2.1.2 - '@vitest/runner': 2.1.2 - '@vitest/snapshot': 2.1.2 - '@vitest/spy': 2.1.2 - '@vitest/utils': 2.1.2 + '@vitest/expect': 2.1.3 + '@vitest/mocker': 2.1.3(@vitest/spy@2.1.3)(vite@5.4.2(@types/node@20.16.14)) + '@vitest/pretty-format': 2.1.3 + '@vitest/runner': 2.1.3 + '@vitest/snapshot': 2.1.3 + '@vitest/spy': 2.1.3 + '@vitest/utils': 2.1.3 chai: 5.1.1 debug: 4.3.7 magic-string: 0.30.11 @@ -10762,11 +10654,11 @@ snapshots: tinyexec: 0.3.0 tinypool: 1.0.0 tinyrainbow: 1.2.0 - vite: 5.4.2(@types/node@20.16.10) - vite-node: 2.1.2(@types/node@20.16.10) + vite: 5.4.2(@types/node@20.16.14) + vite-node: 2.1.3(@types/node@20.16.14) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 20.16.10 + '@types/node': 20.16.14 jsdom: 25.0.1 transitivePeerDependencies: - less @@ -10781,27 +10673,17 @@ snapshots: vue-component-type-helpers@2.1.6: {} - vue-demi@0.14.10(vue@3.4.38(typescript@5.4.4)): + vue-demi@0.14.10(vue@3.5.12(typescript@5.4.4)): dependencies: - vue: 3.4.38(typescript@5.4.4) + vue: 3.5.12(typescript@5.4.4) - vue@3.4.38(typescript@5.4.4): + vue@3.5.12(typescript@5.4.4): dependencies: - '@vue/compiler-dom': 3.4.38 - '@vue/compiler-sfc': 3.4.38 - '@vue/runtime-dom': 3.4.38 - '@vue/server-renderer': 3.4.38(vue@3.4.38(typescript@5.4.4)) - '@vue/shared': 3.4.38 - optionalDependencies: - typescript: 5.4.4 - - vue@3.5.11(typescript@5.4.4): - dependencies: - '@vue/compiler-dom': 3.5.11 - '@vue/compiler-sfc': 3.5.11 - '@vue/runtime-dom': 3.5.11 - '@vue/server-renderer': 3.5.11(vue@3.5.11(typescript@5.4.4)) - '@vue/shared': 3.5.11 + '@vue/compiler-dom': 3.5.12 + '@vue/compiler-sfc': 3.5.12 + '@vue/runtime-dom': 3.5.12 + '@vue/server-renderer': 3.5.12(vue@3.5.12(typescript@5.4.4)) + '@vue/shared': 3.5.12 optionalDependencies: typescript: 5.4.4 @@ -10917,7 +10799,7 @@ snapshots: yallist@4.0.0: {} - yaml@2.5.1: {} + yaml@2.6.0: {} yargs-parser@18.1.3: dependencies: @@ -10936,3 +10818,5 @@ snapshots: zod@3.23.8: {} zwitch@1.0.5: {} + + zwitch@2.0.4: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index bdd098e..abf302a 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -2,10 +2,10 @@ packages: - apps/* - packages/* catalog: - '@vitest/coverage-v8': ^2.1.2 + '@vitest/coverage-v8': ^2.1.3 '@vue/test-utils': ^2.4.6 jsdom: ^25.0.1 pathe: ^1.1.2 - unbuild: 3.0.0-rc.8 - vitest: ^2.1.2 - vue: ^3.5.11 + unbuild: 3.0.0-rc.11 + vitest: ^2.1.3 + vue: ^3.5.12