= Record<
type ParamsType = P extends any[] ? any[] : any
-function keyIsStringOrNumber(value: unknown): value is string | number {
- return typeof value === 'string' || typeof value === 'number'
-}
-
function useFetchs(
service: UseRequestService>,
options: UseRequestOptions, any> & {
@@ -52,51 +35,47 @@ function useFetchs(
newFetchs.value = fetchs_
}
- const fetchRun = (...args: TParams extends any[] ? any[] : any) => {
- const newstFetchKey = ref()
- const cacheKey = fetchKeyPersist.value?.(...args) ?? DEFAULT_KEY
- newstFetchKey.value = cacheKey
-
- renderHook(() => {
- const { data, run, params, loading } = useRequest(service, {
- ...options,
- cacheKey,
- manual: true,
- })
+ const { run } = useRequest(service, {
+ ...options,
+ manual: true,
+ concurrent: true,
+ onSuccess: (data, params) => {
+ const cacheKey = fetchKeyPersist.value?.(...params) ?? DEFAULT_KEY
+ fetchs.value[cacheKey] = {
+ key: cacheKey,
+ data: data as Readonly,
+ params: params as TParams,
+ loading: false,
+ }
+ setFetchs(fetchs.value)
+ options.onSuccess?.(data, params)
+ },
+ onError: (error, params) => {
+ const cacheKey = fetchKeyPersist.value?.(...params) ?? DEFAULT_KEY
+ fetchs.value[cacheKey] = {
+ key: cacheKey,
+ data: undefined,
+ params: params as TParams,
+ loading: false,
+ }
+ setFetchs(fetchs.value)
+ options.onError?.(error, params)
+ },
+ onBefore: (params) => {
+ const cacheKey = fetchKeyPersist.value?.(...params) ?? DEFAULT_KEY
+ fetchs.value[cacheKey] = {
+ key: cacheKey,
+ data: undefined,
+ params: params as TParams,
+ loading: true,
+ }
+ setFetchs(fetchs.value)
+ options.onBefore?.(params)
+ },
+ })
- watchEffect(() => {
- fetchs.value[cacheKey as string] = {
- key: cacheKey,
- data: data?.value,
- // @ts-ignore
- params: params.value,
- loading: loading.value as UnwrapRef,
- }
- setFetchs(fetchs.value as Fetchs)
- })
-
- run(...args)
-
- watch([data, params, loading, newstFetchKey], curr => {
- const [
- newData = undefined,
- newParams = undefined,
- newLoading = false,
- key = DEFAULT_KEY,
- ] = curr;
-
- const fetchKey = keyIsStringOrNumber(key) ? key : DEFAULT_KEY;
-
- fetchs.value[fetchKey] = {
- key: fetchKey,
- data: newData,
- // @ts-ignore
- params: newParams,
- loading: newLoading,
- };
- setFetchs(fetchs.value);
- })
- })
+ const fetchRun = (...args: TParams extends any[] ? any[] : any) => {
+ run(...args)
}
return {
diff --git a/packages/hooks/src/useRequest/Fetch.ts b/packages/hooks/src/useRequest/Fetch.ts
index 85223e21..cecd28de 100644
--- a/packages/hooks/src/useRequest/Fetch.ts
+++ b/packages/hooks/src/useRequest/Fetch.ts
@@ -159,8 +159,8 @@ export default class Fetch {
let { servicePromise } = this.runPluginHandler('onRequest', this.serviceRef.value, params)
const requestReturnResponse = (res: any) => {
- // The request has been cancelled, and the count will be inconsistent with the currentCount
- if (currentCount !== this.count) {
+ // 如果不允许并发请求,则检查是否需要取消当前请求
+ if (!this.options.concurrent && currentCount !== this.count) {
return new Promise(() => { })
}
// Format data
@@ -183,7 +183,7 @@ export default class Fetch {
// Execute whether the request is successful or unsuccessful
this.options.onFinally?.(params, formattedResult, undefined)
- if (currentCount === this.count) {
+ if (this.options.concurrent || currentCount === this.count) {
this.runPluginHandler('onFinally', params, formattedResult, undefined)
}
@@ -196,7 +196,8 @@ export default class Fetch {
const servicePromiseResult = await servicePromise
return requestReturnResponse(servicePromiseResult)
} catch (error) {
- if (currentCount !== this.count) {
+ // 如果不允许并发请求,则检查是否需要取消当前请求
+ if (!this.options.concurrent && currentCount !== this.count) {
return new Promise(() => { })
}
@@ -221,7 +222,7 @@ export default class Fetch {
// Execute whether the request is successful or unsuccessful
this.options.onFinally?.(params, undefined, error as Error)
- if (currentCount === this.count) {
+ if (this.options.concurrent || currentCount === this.count) {
this.runPluginHandler('onFinally', params, undefined, error)
}
diff --git a/packages/hooks/src/useRequest/devtools/devtools.ts b/packages/hooks/src/useRequest/devtools/devtools.ts
index 27d0d4a4..4f34caae 100644
--- a/packages/hooks/src/useRequest/devtools/devtools.ts
+++ b/packages/hooks/src/useRequest/devtools/devtools.ts
@@ -8,7 +8,7 @@ import { unref } from 'vue'
const pluginId = 'vue-hooks-plus'
const pluginName = 'Vue Hooks Plus 🍭'
const pluginLogo =
- 'https://raw.githubusercontent.com/InhiblabCore/vue-hooks-plus/c3b984112610ef3fb21140a0beb27b4a228fe0b3/packages/hooks/docs/public/logo.svg'
+ 'https://inhiblabcore.github.io/vue-hooks-plus/logo.svg'
let currentStateId: string
diff --git a/packages/hooks/src/useRequest/types.ts b/packages/hooks/src/useRequest/types.ts
index 8cec7cc6..88e1b1e4 100644
--- a/packages/hooks/src/useRequest/types.ts
+++ b/packages/hooks/src/useRequest/types.ts
@@ -152,6 +152,14 @@ export type UseRequestBasicOptions = {
*/
pollingInterval?: Ref | number
+ /**
+ * Whether to allow concurrent requests.
+ * When set to true, multiple requests can be executed concurrently.
+ * When set to false, new requests will cancel previous ones.
+ * Default is false.
+ */
+ concurrent?: boolean
+
/**
* Whether to continue polling when the page is hidden. If set to false, polling will be temporarily paused when the page is hidden, and resume when the page is visible again.
*/
@@ -190,7 +198,7 @@ export type UseRequestBasicOptions = {
debounceTrailing?: Ref | boolean
/**
- * The maximum time request is allowed to be delayed before it’s executed.
+ * The maximum time request is allowed to be delayed before it's executed.
*/
debounceMaxWait?: Ref | number
From 265728b9009c08b743391836f706a9c2f7a32ce9 Mon Sep 17 00:00:00 2001
From: YongGit <1013588891@qq.com>
Date: Thu, 15 May 2025 14:19:28 +0800
Subject: [PATCH 06/29] test: add useBoolean
---
.../src/useBoolean/__tests__/index.spec.ts | 78 ++++++++++++++++++-
1 file changed, 76 insertions(+), 2 deletions(-)
diff --git a/packages/hooks/src/useBoolean/__tests__/index.spec.ts b/packages/hooks/src/useBoolean/__tests__/index.spec.ts
index 3f27f52c..bccf73b6 100644
--- a/packages/hooks/src/useBoolean/__tests__/index.spec.ts
+++ b/packages/hooks/src/useBoolean/__tests__/index.spec.ts
@@ -1,29 +1,103 @@
import useBoolean from '..'
describe('useBoolean', () => {
+ // 基础功能测试
it('should be defined', () => {
expect(useBoolean).toBeDefined()
})
- it('should default to be false', async () => {
+ // 默认值测试
+ it('should default to be false', () => {
const [state] = useBoolean()
expect(state.value).toBeFalsy()
})
- it('should work', async () => {
+ // 自定义默认值测试
+ it('should accept custom default value', () => {
+ const [state] = useBoolean(true)
+ expect(state.value).toBeTruthy()
+ })
+
+ // 完整功能测试
+ it('should work with all actions', () => {
const [state, { set, setFalse, setTrue, toggle }] = useBoolean(true)
+
+ // 初始值测试
expect(state.value).toBeTruthy()
+ // toggle 功能测试
toggle()
expect(state.value).toBeFalsy()
+ toggle()
+ expect(state.value).toBeTruthy()
+ // set 功能测试
+ set(false)
+ expect(state.value).toBeFalsy()
set(true)
expect(state.value).toBeTruthy()
+ // setTrue 功能测试
+ setFalse()
+ expect(state.value).toBeFalsy()
setTrue()
expect(state.value).toBeTruthy()
+ // setFalse 功能测试
+ setTrue()
+ expect(state.value).toBeTruthy()
setFalse()
expect(state.value).toBeFalsy()
})
+ // 响应式测试
+ it('should be reactive', () => {
+ const [state, { set }] = useBoolean(false)
+
+ // 测试响应式更新
+ set(true)
+ expect(state.value).toBeTruthy()
+
+ // 测试多次更新
+ set(false)
+ set(true)
+ set(false)
+ expect(state.value).toBeFalsy()
+ })
+
+ // 边界情况测试
+ it('should handle edge cases', () => {
+ const [state, { set }] = useBoolean(false)
+
+ // 测试 null
+ set(null as any)
+ expect(state.value).toBeFalsy()
+
+ // 测试 undefined
+ set(undefined as any)
+ expect(state.value).toBeFalsy()
+
+ // 测试 NaN
+ set(NaN as any)
+ expect(state.value).toBeFalsy()
+
+ // 测试对象
+ set({} as any)
+ expect(state.value).toBeTruthy()
+
+ // 测试数组
+ set([] as any)
+ expect(state.value).toBeTruthy()
+ })
+
+ // 性能测试
+ it('should handle rapid toggles', () => {
+ const [state, { toggle }] = useBoolean(false)
+
+ // 快速切换测试
+ for (let i = 0; i < 100; i++) {
+ toggle()
+ }
+
+ expect(state.value).toBeFalsy() // 偶数次切换应该回到初始值
+ })
})
From 2bd2553a3cdb86475e29f74e8cb232ef4ba96118 Mon Sep 17 00:00:00 2001
From: YongGit <1013588891@qq.com>
Date: Thu, 15 May 2025 14:21:05 +0800
Subject: [PATCH 07/29] version: 2.4.0-alpha.4
---
packages/hooks/package.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/packages/hooks/package.json b/packages/hooks/package.json
index 6d88610f..54e4c7cf 100644
--- a/packages/hooks/package.json
+++ b/packages/hooks/package.json
@@ -1,6 +1,6 @@
{
"name": "vue-hooks-plus",
- "version": "2.4.0-alpha.3",
+ "version": "2.4.0-alpha.4",
"description": "Vue hooks library",
"files": [
"dist",
From 08c2452b70c6689a4503e85814892b3936387257 Mon Sep 17 00:00:00 2001
From: YongGit <1013588891@qq.com>
Date: Mon, 26 May 2025 14:30:27 +0800
Subject: [PATCH 08/29] =?UTF-8?q?feat:=20=E6=9B=B4=E6=96=B0=E6=96=87?=
=?UTF-8?q?=E6=A1=A3=E5=92=8C=E7=BB=84=E4=BB=B6=EF=BC=8C=E6=B7=BB=E5=8A=A0?=
=?UTF-8?q?=E7=BB=84=E4=BB=B6=20Hook=20=E6=8C=87=E5=8D=97=E5=8F=8A=20useRe?=
=?UTF-8?q?quest=20=E7=BB=84=E4=BB=B6=E7=A4=BA=E4=BE=8B?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
docs/.vitepress/config/en.ts | 28 +++-
docs/.vitepress/config/zh.ts | 27 +++-
docs/en/components/guide.md | 154 ++++++++++++++++++++
docs/en/components/useRequest.md | 106 ++++++++++++++
docs/en/guide/{index.md => introduction.md} | 0
docs/zh/components/guide.md | 154 ++++++++++++++++++++
docs/zh/components/useRequest.md | 96 ++++++++++++
docs/zh/guide/{index.md => introduction.md} | 0
8 files changed, 558 insertions(+), 7 deletions(-)
create mode 100644 docs/en/components/guide.md
create mode 100644 docs/en/components/useRequest.md
rename docs/en/guide/{index.md => introduction.md} (100%)
create mode 100644 docs/zh/components/guide.md
create mode 100644 docs/zh/components/useRequest.md
rename docs/zh/guide/{index.md => introduction.md} (100%)
diff --git a/docs/.vitepress/config/en.ts b/docs/.vitepress/config/en.ts
index 87af33f5..dbcf45ee 100644
--- a/docs/.vitepress/config/en.ts
+++ b/docs/.vitepress/config/en.ts
@@ -114,7 +114,7 @@ function sidebarGuide(): DefaultTheme.SidebarItem[] {
{
text: 'Guide',
items: [
- { text: 'Introduction', link: "/guide" },
+ { text: 'Introduction', link: "/guide/introduction" },
{ text: 'Getting Started', link: '/guide/getting-started' },
{ text: '🫶 Migrate to v2 version', link: '/guide/migrate' }
],
@@ -137,6 +137,7 @@ export const en = defineConfig({
...sidebarHooks(),
]
},
+ '/components/': sidebarComponents(),
},
editLink: {
@@ -155,9 +156,9 @@ function nav(): DefaultTheme.NavItem[] {
return [
{
text: 'Guide',
- activeMatch: '/guide/',
+ activeMatch: '^/guide/',
items: [
- { text: 'Introduction', link: '/guide' },
+ { text: 'Introduction', link: '/guide/introduction' },
{ text: 'Getting Started', link: '/guide/getting-started' },
{ text: '🫶 Migrate to v2 version', link: '/guide/migrate' }
]
@@ -167,6 +168,11 @@ function nav(): DefaultTheme.NavItem[] {
link: '/hooks/useRequest/quick-start',
activeMatch: '/hooks'
},
+ {
+ text: "Components",
+ link: '/components/guide',
+ activeMatch: '/components/'
+ },
{
text: '🤺 Playground',
link: 'https://inhiblabcore.github.io/vue-hooks-plus-playground/play',
@@ -286,3 +292,19 @@ export function sidebarHooks(): DefaultTheme.SidebarItem[] {
})
}
+
+
+export function sidebarComponents(): DefaultTheme.SidebarItem[] {
+ return [
+ {
+ text: 'Components',
+ items: [
+ {
+ text: 'Guide',
+ link: '/components/guide',
+ },
+ { text: 'useRequest', link: '/components/useRequest' },
+ ],
+ }
+ ]
+}
\ No newline at end of file
diff --git a/docs/.vitepress/config/zh.ts b/docs/.vitepress/config/zh.ts
index 5642a3f3..a1cde012 100644
--- a/docs/.vitepress/config/zh.ts
+++ b/docs/.vitepress/config/zh.ts
@@ -123,6 +123,19 @@ function sidebarGuide(): DefaultTheme.SidebarItem[] {
}
]
}
+
+function sidebarComponents(): DefaultTheme.SidebarItem[] {
+ return [
+ {
+ text: 'Components',
+ items: [
+ { text: 'Guide', link: '/zh/components/guide' },
+ { text: 'useRequest', link: '/zh/components/useRequest' },
+ ],
+ }
+ ]
+}
+
export const zh = defineConfig({
lang: 'zh-Hans',
description: '高性能的 Vue 组合式函数库',
@@ -138,7 +151,8 @@ export const zh = defineConfig({
...siderbarUseRequestPlugin(),
...sidebarHooks()
]
- }
+ },
+ '/zh/components/': sidebarComponents(),
},
editLink: {
@@ -182,18 +196,23 @@ function nav(): DefaultTheme.NavItem[] {
return [
{
text: '指南',
- activeMatch: '/zh/guide/',
+ activeMatch: '^/zh/guide/',
items: [
- { text: '介绍', link: '/zh/guide' },
+ { text: '介绍', link: '/zh/guide/introduction' },
{ text: '开始使用', link: '/zh/guide/getting-started' },
{ text: '🫶 迁移到 v2 版本', link: '/zh/guide/migrate' }
]
},
{
- text: 'Hooks',
+ text: 'Hooks 函数',
link: '/zh/hooks/useRequest/quick-start',
activeMatch: '/zh/hooks'
},
+ {
+ text: '函数组件',
+ link: '/zh/components/guide',
+ activeMatch: '/zh/components/'
+ },
{
text: '🤺 演武场',
link: 'https://inhiblabcore.github.io/vue-hooks-plus-playground/play',
diff --git a/docs/en/components/guide.md b/docs/en/components/guide.md
new file mode 100644
index 00000000..e33e9f70
--- /dev/null
+++ b/docs/en/components/guide.md
@@ -0,0 +1,154 @@
+# Component Hook Guide
+
+Component hooks are advanced custom hooks that encapsulate both logic and UI, making it easy to reuse complex behaviors and layouts in Vue. In vue-hooks-plus, you can use `createUseRequestComponent` to quickly generate a componentized hook for data fetching and more.
+
+## What is a Component Hook?
+
+A component hook is a function or factory that returns a Vue component, which internally uses a hook (like `useRequest`) to manage logic and state. This allows you to reuse not only the logic, but also the UI and slots, across your application.
+
+## Example: useRequest Component
+
+Suppose you want to fetch data and display loading, error, and data states in a reusable way. You can use `createUseRequestComponent` to generate a component hook.
+
+### Step 1: Create the Component Hook
+
+```ts
+import { createUseRequestComponent } from 'vue-hooks-plus'
+
+const UseRequestUserName = createUseRequestComponent()
+```
+
+### Step 2: Use the Component Hook in Your Template
+
+```vue
+
+
+ name: {{ data }}
+ refresh
+
+
+ loading
+
+
+ error
+
+
+```
+
+### Step 3: Provide the Service Function
+
+```ts
+function getUsername(params: { desc: string }): Promise {
+ return new Promise(resolve => {
+ setTimeout(() => {
+ resolve(`vue-hooks-plus ${params.desc}`)
+ }, 1000)
+ })
+}
+```
+
+### Step 4: Use in Your Script
+
+```ts
+import { ref } from 'vue'
+
+const desc = ref('good')
+```
+
+## How It Works
+
+- The component hook (`UseRequestUserName`) manages the request logic internally.
+- You pass a `service` prop (a function returning a Promise) and any dependencies.
+- You can use slots (`default`, `loading`, `error`) to customize the UI for each state.
+- The slot props provide `data`, `refresh`, and `loading` for full control.
+
+## Benefits
+
+- **Separation of concerns**: Logic and UI are encapsulated and reusable.
+- **Customizable UI**: Use slots to define how each state is rendered.
+- **Type safety**: TypeScript support for data and slot props.
+
+## Best Practices
+
+- Always document the expected props and slot props for your component hook.
+- Use meaningful names for your component hooks (e.g., `UseRequestUserName`).
+- Leverage TypeScript generics for better type inference.
+
+## Conclusion
+
+Component hooks are a powerful pattern for building reusable, maintainable, and scalable Vue applications. With `createUseRequestComponent`, you can quickly create data-driven components with customizable UI and shared logic.
+
+## Advanced Usage
+
+### Customizing Slot Props
+
+You can define and document the slot props your component hook provides. For example, you might want to expose more control methods or state:
+
+```ts
+const UseRequestUserName = createUseRequestComponent()
+```
+
+In your slot, you can access all exposed properties:
+
+```vue
+
+
+
+```
+
+### Passing Additional Props
+
+Component hooks can accept and forward additional props to the internal logic or UI. For example, you can add pagination, filters, or other options:
+
+```vue
+
+
+
+```
+
+### Composing Multiple Hooks
+
+You can compose multiple hooks inside a component hook to encapsulate more complex logic:
+
+```ts
+function useComplexFeature() {
+ const { data, loading } = useRequest(...)
+ const { state, toggle } = useToggle()
+ // Combine and return as needed
+ return { data, loading, state, toggle }
+}
+```
+
+## Common Scenarios
+
+- **Data fetching with loading/error states**
+- **Reusable modals, dialogs, or popovers**
+- **Form logic encapsulation**
+- **Feature toggles or permission checks**
+- **Infinite scroll or pagination**
+
+## Tips & Caveats
+
+- **Naming**: Use clear, descriptive names for your component hooks and their slots.
+- **Type Safety**: Always use TypeScript generics for better type inference and IDE support.
+- **Performance**: Avoid unnecessary re-renders by managing dependencies carefully.
+- **Documentation**: Document the expected props, slot props, and usage examples for each component hook.
+
+## FAQ
+
+**Q: Can I use component hooks in Options API?**
+A: Component hooks are designed for the Composition API and `
diff --git a/docs/demo/useEventEmitter/DemoA.vue b/docs/demo/useEventEmitter/DemoA.vue
index 60b7e748..cdc7aa81 100644
--- a/docs/demo/useEventEmitter/DemoA.vue
+++ b/docs/demo/useEventEmitter/DemoA.vue
@@ -6,21 +6,30 @@
diff --git a/docs/demo/useEventEmitter/GlobalDemo.vue b/docs/demo/useEventEmitter/GlobalDemo.vue
index 8b480036..4ad8b82e 100644
--- a/docs/demo/useEventEmitter/GlobalDemo.vue
+++ b/docs/demo/useEventEmitter/GlobalDemo.vue
@@ -10,7 +10,8 @@
const event = useEventEmitter({ global: true })
const globalCount = ref(0)
- event.useSubscription('change', () => {
+ event.subscribe('change', () => {
+ console.log('global', event)
globalCount.value += 1
})
diff --git a/docs/demo/useEventEmitter/demo.vue b/docs/demo/useEventEmitter/demo.vue
index 8edf95cb..802ff756 100644
--- a/docs/demo/useEventEmitter/demo.vue
+++ b/docs/demo/useEventEmitter/demo.vue
@@ -27,7 +27,6 @@
}
const changeA = () => {
- // globalCount.value += 1
eventA.emit('change')
}
diff --git a/docs/en/hooks/useEventEmitter.md b/docs/en/hooks/useEventEmitter.md
index 294be357..4f1b3d06 100644
--- a/docs/en/hooks/useEventEmitter.md
+++ b/docs/en/hooks/useEventEmitter.md
@@ -16,7 +16,7 @@ To get an instance of `EventEmitter`, you can call `useEventEmitter` in React co
## Code demonstration
-
diff --git a/packages/hooks/src/useEventEmitter/event.ts b/packages/hooks/src/useEventEmitter/event.ts
index 4a99b723..ec1657e6 100644
--- a/packages/hooks/src/useEventEmitter/event.ts
+++ b/packages/hooks/src/useEventEmitter/event.ts
@@ -1,89 +1,172 @@
import cloneDeep from 'lodash-es/cloneDeep'
import { ref, watchEffect } from 'vue'
-type SubscriptionParams = {
+// 事件名类型,支持 string | number 或自定义字面量类型
+type EventKey = string | number
+
+// 事件参数类型
+type EventParams = any
+
+// 订阅回调类型
+type Subscription = (params: { params: T; event: K }) => void
+
+// 订阅参数类型
+type SubscriptionParams = {
params: T
- event: string | number
+ event: K
}
-type Subscription = ({ params, event }: SubscriptionParams) => void
+interface EventEmitterOptions {
+ global?: boolean
+}
-class EventEmitter {
- private subscriptions = new Map[]>()
- private emitEffectCache = new Map>()
+class EventEmitter<
+ T = EventParams,
+ K extends EventKey = string
+> {
+ // 事件订阅表
+ private subscriptions = new Map>>()
+ // 事件缓存表(仅非全局实例)
+ private emitEffectCache = new Map>()
+ // 是否全局实例
+ private readonly isGlobal: boolean
+ // 全局单例
+ private static instance: EventEmitter | null = null
- constructor() {
+ constructor(options?: EventEmitterOptions) {
+ this.isGlobal = !!options?.global
this.clear()
}
/**
- * Subscribe to the event
- * @param event string
- * @param listener Subscription
+ * 获取全局单例
*/
- useSubscription = (event: string, listener?: Subscription) => {
- const callbackRef = ref>()
- watchEffect(onInvalidate => {
- callbackRef.value = listener
- function subscription(val: SubscriptionParams) {
- if (callbackRef.value) {
- callbackRef.value(val)
- }
- }
-
- const subscriptions = this.subscriptions?.get(event) ?? []
- subscriptions.push(subscription)
- this.subscriptions.set(event, subscriptions)
+ static getInstance() {
+ if (!EventEmitter.instance) {
+ EventEmitter.instance = new EventEmitter({ global: true })
+ }
+ return EventEmitter.instance as EventEmitter
+ }
+ /**
+ * 订阅事件
+ * @param event 事件名
+ * @param listener 订阅回调
+ * @returns 取消订阅函数
+ */
+ subscribe(event: E, listener: Subscription): () => void {
+ if (!this.subscriptions.has(event)) {
+ this.subscriptions.set(event, new Set())
+ }
+ const listeners = this.subscriptions.get(event)!
+ listeners.add(listener as Subscription)
+ // 非全局实例回放缓存
+ if (!this.isGlobal) {
this.emitEffect(event)
- onInvalidate(() => {
+ }
+ // 返回取消订阅函数
+ return () => {
+ listeners.delete(listener as Subscription)
+ if (listeners.size === 0) {
this.subscriptions.delete(event)
- })
- })
+ }
+ }
}
/**
- * Send an event notification
- * @param event string | number
- * @param args T extends any[] ? any[] : any
+ * 发送事件通知
+ * @param event 事件名
+ * @param args 事件参数
*/
- emit = (event: string | number, ...args: T extends any[] ? any[] : any) => {
+ emit(event: E, ...args: T extends any[] ? T : [T]): void {
if (typeof event === 'string' || typeof event === 'number') {
- const subscriptionValuesCallback = this.subscriptions.get(event)
- subscriptionValuesCallback?.forEach(callback => {
+ const listeners = this.subscriptions.get(event)
+ listeners?.forEach(callback => {
callback?.({
- params: cloneDeep(args) as any,
+ params: cloneDeep(args.length === 1 ? args[0] : args) as T,
event,
})
})
-
- this.emitEffectCache.set(event, {
- params: cloneDeep(args) as any,
- event,
- })
- } else throw new TypeError('event must be string or number !')
+ // 非全局实例缓存事件
+ if (!this.isGlobal) {
+ this.emitEffectCache.set(event, {
+ params: cloneDeep(args.length === 1 ? args[0] : args) as T,
+ event,
+ })
+ }
+ } else {
+ throw new TypeError('event must be string or number!')
+ }
}
- emitEffect = (event: string | number) => {
+ /**
+ * 回放缓存事件(仅非全局实例)
+ */
+ emitEffect(event: E) {
+ if (this.isGlobal) return
const emitEffectCache = this.emitEffectCache.get(event)
const listeners = this.subscriptions.get(event)
- if (emitEffectCache)
+ if (emitEffectCache) {
listeners?.forEach(listener => {
- listener?.({
- ...emitEffectCache,
- })
+ listener?.({ ...emitEffectCache })
})
+ }
}
- removeListener = (event: string) => {
- this.subscriptions.delete(event)
+ /**
+ * 移除监听
+ */
+ removeListener(event: E, listener?: Subscription) {
+ if (!listener) {
+ this.subscriptions.delete(event)
+ } else {
+ const listeners = this.subscriptions.get(event)
+ listeners?.delete(listener as Subscription)
+ if (listeners && listeners.size === 0) {
+ this.subscriptions.delete(event)
+ }
+ }
}
- clear = () => {
+ /**
+ * 清空所有事件
+ */
+ clear() {
this.subscriptions.clear()
+ this.emitEffectCache.clear()
}
}
-const eventEmitterOverall = new EventEmitter()
+/**
+ * Vue hook: 订阅事件,自动解绑
+ */
+function useEventEmitterSubscription<
+ T = EventParams,
+ K extends EventKey = string,
+ E extends K = K
+>(event: E, listener: Subscription, emitter?: EventEmitter) {
+ const _emitter = emitter || EventEmitter.getInstance()
+ const callbackRef = ref(listener)
+ let unsubscribe: (() => void) | null = null
+
+ watchEffect((onInvalidate) => {
+ if (unsubscribe) unsubscribe()
+ unsubscribe = _emitter.subscribe(event, (params) => {
+ callbackRef.value(params)
+ })
+ onInvalidate(() => {
+ if (unsubscribe) unsubscribe()
+ })
+ })
+}
+
+// 默认全局实例
+const eventEmitterOverall = EventEmitter.getInstance()
-export { EventEmitter, eventEmitterOverall }
+export {
+ EventEmitter,
+ eventEmitterOverall,
+ useEventEmitterSubscription,
+}
+// 类型导出
+export type { EventKey, EventParams, Subscription, SubscriptionParams }
diff --git a/packages/hooks/src/useEventEmitter/index.ts b/packages/hooks/src/useEventEmitter/index.ts
index 80c3df77..3a7c8984 100644
--- a/packages/hooks/src/useEventEmitter/index.ts
+++ b/packages/hooks/src/useEventEmitter/index.ts
@@ -1,27 +1,28 @@
-import { watchEffect, computed, ref } from 'vue'
-import { EventEmitter, eventEmitterOverall } from './event'
+import { onScopeDispose } from 'vue'
+import { EventEmitter, eventEmitterOverall, useEventEmitterSubscription } from './event'
export type UseEventEmitterType = EventEmitter | typeof eventEmitterOverall
+
+export {
+ useEventEmitterSubscription
+}
+
export default function useEventEmitter(options?: {
/**
- * Is it global
+ * 是否为全局实例
*/
global?: boolean
-}) {
- const eventRef = ref>()
-
- const eventEmitterOptions = computed(() => options ?? { global: false })
-
- if (!eventRef.value) {
- eventRef.value = eventEmitterOptions.value.global
- ? (eventRef.value = eventEmitterOverall)
- : (eventRef.value = new EventEmitter())
+}): EventEmitter {
+ const isGlobal = options?.global ?? false
+ // 全局实例直接返回单例
+ if (isGlobal) {
+ return eventEmitterOverall as EventEmitter
}
-
- watchEffect(onInvalidate => {
- onInvalidate(() => eventRef.value?.clear())
+ // 局部实例
+ const localEmitter = new EventEmitter()
+ onScopeDispose(() => {
+ localEmitter.clear()
})
-
- return eventRef.value
+ return localEmitter
}
From a98d2f12df6a26c352b7818470836485e9097a71 Mon Sep 17 00:00:00 2001
From: YongGit <1013588891@qq.com>
Date: Sat, 31 May 2025 11:24:41 +0800
Subject: [PATCH 11/29] version: bump to 2.4.0-alpha.5
---
packages/hooks/package.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/packages/hooks/package.json b/packages/hooks/package.json
index 54e4c7cf..084fe8e5 100644
--- a/packages/hooks/package.json
+++ b/packages/hooks/package.json
@@ -1,6 +1,6 @@
{
"name": "vue-hooks-plus",
- "version": "2.4.0-alpha.4",
+ "version": "2.4.0-alpha.5",
"description": "Vue hooks library",
"files": [
"dist",
From 6aed6da34d70c5aaf34fa722d0f6374c75c21242 Mon Sep 17 00:00:00 2001
From: YongGit <1013588891@qq.com>
Date: Sat, 31 May 2025 11:28:29 +0800
Subject: [PATCH 12/29] test: enhance useEventEmitter tests with subscription,
unsubscription, and event replay scenarios
---
.../useEventEmitter/__tests__/index.spec.ts | 143 ++++++++++++++----
1 file changed, 116 insertions(+), 27 deletions(-)
diff --git a/packages/hooks/src/useEventEmitter/__tests__/index.spec.ts b/packages/hooks/src/useEventEmitter/__tests__/index.spec.ts
index abf8e19f..5bf20fb1 100644
--- a/packages/hooks/src/useEventEmitter/__tests__/index.spec.ts
+++ b/packages/hooks/src/useEventEmitter/__tests__/index.spec.ts
@@ -1,43 +1,132 @@
import renderHook from 'test-utils/renderHook'
-import { ref } from 'vue'
+import { ref, nextTick } from 'vue'
import useEventEmitter from '..'
+import { EventEmitter } from '../event'
-describe('useEventEmitter', () => {
- const eventMsgA = ref('')
- const eventMsgB = ref('')
- it('should event work ', () => {
- const [event] = renderHook(() => useEventEmitter())
- event.emit('eventMsgA')
- event.useSubscription('eventMsgA', () => {
- eventMsgA.value = 'eventMsgAA'
+describe('EventEmitter (local instance)', () => {
+ it('should subscribe and emit events', async () => {
+ const [emitter] = renderHook(() => useEventEmitter())
+ const count = ref(0)
+ emitter.subscribe('inc', ({ params }) => {
+ count.value += params
})
+ emitter.emit('inc', 2)
+ await nextTick()
+ expect(count.value).toBe(2)
+ emitter.emit('inc', 3)
+ await nextTick()
+ expect(count.value).toBe(5)
+ })
- expect(eventMsgA.value).toBe('eventMsgAA')
-
- event.emit('eventMsgA+', 'eventMsgA+')
- event.emit('eventMsgA+', 'eventMsgA-')
+ it('should unsubscribe correctly', async () => {
+ const [emitter] = renderHook(() => useEventEmitter())
+ const count = ref(0)
+ const unsub = emitter.subscribe('inc', ({ params }) => {
+ count.value += params
+ })
+ emitter.emit('inc', 1)
+ await nextTick()
+ expect(count.value).toBe(1)
+ unsub()
+ emitter.emit('inc', 1)
+ await nextTick()
+ expect(count.value).toBe(1)
+ })
- event.useSubscription('eventMsgA+', (args: any) => {
- eventMsgA.value = args.params?.[0]
+ it('should clear all listeners', async () => {
+ const [emitter] = renderHook(() => useEventEmitter())
+ const count = ref(0)
+ emitter.subscribe('inc', ({ params }) => {
+ count.value += params
})
- expect(eventMsgA.value).toBe('eventMsgA-')
+ emitter.clear()
+ emitter.emit('inc', 5)
+ await nextTick()
+ expect(count.value).toBe(0)
+ })
+
+ it('should support multiple subscribers', async () => {
+ const [emitter] = renderHook(() => useEventEmitter())
+ const a = ref(0)
+ const b = ref(0)
+ emitter.subscribe('inc', ({ params }) => { a.value += params })
+ emitter.subscribe('inc', ({ params }) => { b.value += params })
+ emitter.emit('inc', 2)
+ await nextTick()
+ expect(a.value).toBe(2)
+ expect(b.value).toBe(2)
+ })
+
+ it('should remove specific listener', async () => {
+ const [emitter] = renderHook(() => useEventEmitter())
+ const a = ref(0)
+ const b = ref(0)
+ const fnA = ({ params }: any) => { a.value += params }
+ const fnB = ({ params }: any) => { b.value += params }
+ emitter.subscribe('inc', fnA)
+ emitter.subscribe('inc', fnB)
+ emitter.removeListener('inc', fnA)
+ emitter.emit('inc', 1)
+ await nextTick()
+ expect(a.value).toBe(0)
+ expect(b.value).toBe(1)
})
- it('should event global work ', () => {
- const event = useEventEmitter({ global: true })
- event.emit('eventMsgB')
- event.useSubscription('eventMsgB', () => {
- eventMsgB.value = 'eventMsgBB'
+ it('should replay last event for new subscriber (non-global)', async () => {
+ const [emitter] = renderHook(() => new EventEmitter())
+ emitter.emit('inc', 7)
+ const count = ref(0)
+ emitter.subscribe('inc', ({ params }) => {
+ count.value += params
})
+ await nextTick()
+ expect(count.value).toBe(7)
+ })
+})
- expect(eventMsgB.value).toBe('eventMsgBB')
+describe('EventEmitter (global instance)', () => {
+ it('should not replay last event for new subscriber', async () => {
+ const emitter = useEventEmitter({ global: true })
+ emitter.emit('inc', 5)
+ const count = ref(0)
+ emitter.subscribe('inc', ({ params }) => {
+ count.value += params
+ })
+ await nextTick()
+ expect(count.value).toBe(0)
+ emitter.emit('inc', 2)
+ await nextTick()
+ expect(count.value).toBe(2)
+ })
- event.emit('eventMsgB+', 'eventMsgB+')
- event.emit('eventMsgB+', 'eventMsgB-')
+ it('should clear all listeners (global)', async () => {
+ const emitter = useEventEmitter({ global: true })
+ const count = ref(0)
+ emitter.subscribe('inc', ({ params }) => {
+ count.value += params
+ })
+ emitter.clear()
+ emitter.emit('inc', 5)
+ await nextTick()
+ expect(count.value).toBe(0)
+ })
- event.useSubscription('eventMsgB+', (args: any) => {
- eventMsgB.value = args.params?.[0]
+ it('should support string and number event keys', async () => {
+ const emitter = useEventEmitter({ global: true })
+ const a = ref('')
+ const b = ref(0)
+ emitter.subscribe('str', ({ params }) => {
+ if (typeof params === 'string') a.value = params
+ })
+ // @ts-ignore
+ emitter.subscribe(123, ({ params }) => {
+ if (typeof params === 'number') b.value = params
})
- expect(eventMsgB.value).toBe('eventMsgB-')
+ emitter.emit('str', 'hello')
+ // @ts-ignore
+ emitter.emit(123, 42)
+ await nextTick()
+ expect(a.value).toBe('hello')
+ expect(b.value).toBe(42)
})
})
From ad21c6bcdfd915a1a599ba1cad4c5ba02aaae897 Mon Sep 17 00:00:00 2001
From: YongGit <1013588891@qq.com>
Date: Sat, 31 May 2025 11:38:39 +0800
Subject: [PATCH 13/29] test: add unit tests for useControlledState to validate
controlled and uncontrolled behavior
---
.../__tests__/index.spec.ts | 79 +++++++++++++++++++
.../useCookieState/__tests__/index.spec.ts | 2 +-
2 files changed, 80 insertions(+), 1 deletion(-)
create mode 100644 packages/hooks/src/useControlledState/__tests__/index.spec.ts
diff --git a/packages/hooks/src/useControlledState/__tests__/index.spec.ts b/packages/hooks/src/useControlledState/__tests__/index.spec.ts
new file mode 100644
index 00000000..91510dc2
--- /dev/null
+++ b/packages/hooks/src/useControlledState/__tests__/index.spec.ts
@@ -0,0 +1,79 @@
+import { ref, nextTick } from 'vue';
+import { useControlledState } from '../index';
+// NOTE: These tests are for Vitest. Ensure 'vi' is available globally.
+
+describe('useControlledState', () => {
+ it('should use defaultValue when uncontrolled', () => {
+ const value = ref(undefined);
+ const [state, setValue] = useControlledState(value, 1);
+ expect(state.value).toBe(1);
+ setValue(2);
+ expect(state.value).toBe(2);
+ });
+
+ it('should use value when controlled', () => {
+ const value = ref(5);
+ const [state, setValue] = useControlledState(value, 1);
+ expect(state.value).toBe(5);
+ setValue(10);
+ // Should not update state, still controlled by value
+ expect(state.value).toBe(5);
+ value.value = 8;
+ expect(state.value).toBe(8);
+ });
+
+ it('should call onChange when value changes (uncontrolled)', () => {
+ const value = ref(undefined);
+ const onChange = vi.fn();
+ const setValue = useControlledState(value, 1, onChange)[1];
+ setValue(3);
+ expect(onChange).toHaveBeenCalledWith(3);
+ setValue(3);
+ // Should not call onChange again for same value
+ expect(onChange).toHaveBeenCalledTimes(1);
+ setValue(4);
+ expect(onChange).toHaveBeenCalledWith(4);
+ expect(onChange).toHaveBeenCalledTimes(2);
+ });
+
+ it('should call onChange when value changes (controlled)', () => {
+ const value = ref(2);
+ const onChange = vi.fn();
+ useControlledState(value, 1, onChange)[1](5);
+ expect(onChange).toHaveBeenCalledWith(5);
+ expect(value.value).toBe(2);
+ value.value = 6;
+ expect(value.value).toBe(6);
+ });
+
+ it('should warn and call onChange for function callback', () => {
+ const value = ref(undefined);
+ const onChange = vi.fn();
+ const [state, setValue] = useControlledState(value, 1, onChange);
+ const warnSpy = vi.spyOn(console, 'warn').mockImplementation(() => { });
+ setValue((prev: number) => prev + 1);
+ expect(warnSpy).toHaveBeenCalledWith(
+ 'Function callbacks are not supported. See: https://github.com/adobe/react-spectrum/issues/2320'
+ );
+ expect(state.value).toBe(2);
+ expect(onChange).toHaveBeenCalledWith(2);
+ warnSpy.mockRestore();
+ });
+
+ it('should warn when switching between controlled and uncontrolled', async () => {
+ const value = ref(undefined);
+ const warnSpy = vi.spyOn(console, 'warn').mockImplementation(() => { });
+ useControlledState(value, 1);
+ value.value = 10;
+ await nextTick();
+ expect(warnSpy).toHaveBeenCalledWith(
+ expect.stringContaining('WARN: Component changed from uncontrolled to controlled')
+ );
+ value.value = undefined;
+ await nextTick();
+ expect(warnSpy).toHaveBeenCalledWith(
+ expect.stringContaining('WARN: Component changed from controlled to uncontrolled')
+ );
+ warnSpy.mockRestore();
+ });
+});
diff --git a/packages/hooks/src/useCookieState/__tests__/index.spec.ts b/packages/hooks/src/useCookieState/__tests__/index.spec.ts
index 4b8ce9e0..a34f4642 100644
--- a/packages/hooks/src/useCookieState/__tests__/index.spec.ts
+++ b/packages/hooks/src/useCookieState/__tests__/index.spec.ts
@@ -20,7 +20,7 @@ describe('useCookieState', () => {
const [message, setMessage] = useCookieState('test', {
defaultValue: undefined,
})
- expect(message.value).toBeUndefined
+ expect(message.value).toBeUndefined()
setMessage('false')
expect(message.value).toEqual('false')
From 2b47e9a0aeffa0840f5898eab1fa92d03a59b2cd Mon Sep 17 00:00:00 2001
From: YongGit <1013588891@qq.com>
Date: Sun, 1 Jun 2025 22:48:41 +0800
Subject: [PATCH 14/29] =?UTF-8?q?test:=20=F0=9F=94=A7=20add=20test?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../src/useBoolean/__tests__/index.spec.ts | 181 +++++++++---------
.../useCookieState/__tests__/index.spec.ts | 48 +++++
.../src/useDebounce/__tests__/index.spec.ts | 70 +++++++
3 files changed, 209 insertions(+), 90 deletions(-)
diff --git a/packages/hooks/src/useBoolean/__tests__/index.spec.ts b/packages/hooks/src/useBoolean/__tests__/index.spec.ts
index bccf73b6..4ba5da1d 100644
--- a/packages/hooks/src/useBoolean/__tests__/index.spec.ts
+++ b/packages/hooks/src/useBoolean/__tests__/index.spec.ts
@@ -1,103 +1,104 @@
import useBoolean from '..'
describe('useBoolean', () => {
- // 基础功能测试
- it('should be defined', () => {
- expect(useBoolean).toBeDefined()
+ describe('Basic functionality', () => {
+ it('should be defined', () => {
+ expect(useBoolean).toBeDefined()
+ })
+
+ it('default value should be false', () => {
+ const [state] = useBoolean()
+ expect(state.value).toBe(false)
+ })
+
+ it('should accept custom default value', () => {
+ const [state] = useBoolean(true)
+ expect(state.value).toBe(true)
+ })
})
- // 默认值测试
- it('should default to be false', () => {
- const [state] = useBoolean()
- expect(state.value).toBeFalsy()
+ describe('Operations', () => {
+ let state: ReturnType[0]
+ let actions: ReturnType[1]
+ beforeEach(() => {
+ ;[state, actions] = useBoolean(true)
+ })
+
+ it('toggle should switch state', () => {
+ actions.toggle()
+ expect(state.value).toBe(false)
+ actions.toggle()
+ expect(state.value).toBe(true)
+ })
+
+ it('set should set specified value', () => {
+ actions.set(false)
+ expect(state.value).toBe(false)
+ actions.set(true)
+ expect(state.value).toBe(true)
+ })
+
+ it('setTrue/setFalse should set to true/false respectively', () => {
+ actions.setFalse()
+ expect(state.value).toBe(false)
+ actions.setTrue()
+ expect(state.value).toBe(true)
+ })
})
- // 自定义默认值测试
- it('should accept custom default value', () => {
- const [state] = useBoolean(true)
- expect(state.value).toBeTruthy()
+ describe('Reactivity', () => {
+ let state: ReturnType[0]
+ let set: ReturnType[1]['set']
+ beforeEach(() => {
+ ;[state, { set }] = useBoolean(false)
+ })
+
+ it('set should update state multiple times', () => {
+ set(true)
+ expect(state.value).toBe(true)
+ set(false)
+ set(true)
+ set(false)
+ expect(state.value).toBe(false)
+ })
})
- // 完整功能测试
- it('should work with all actions', () => {
- const [state, { set, setFalse, setTrue, toggle }] = useBoolean(true)
-
- // 初始值测试
- expect(state.value).toBeTruthy()
-
- // toggle 功能测试
- toggle()
- expect(state.value).toBeFalsy()
- toggle()
- expect(state.value).toBeTruthy()
-
- // set 功能测试
- set(false)
- expect(state.value).toBeFalsy()
- set(true)
- expect(state.value).toBeTruthy()
-
- // setTrue 功能测试
- setFalse()
- expect(state.value).toBeFalsy()
- setTrue()
- expect(state.value).toBeTruthy()
-
- // setFalse 功能测试
- setTrue()
- expect(state.value).toBeTruthy()
- setFalse()
- expect(state.value).toBeFalsy()
+ describe('Edge cases', () => {
+ let state: ReturnType[0]
+ let set: ReturnType[1]['set']
+ beforeEach(() => {
+ ;[state, { set }] = useBoolean(false)
+ })
+
+ it('set(null) should be false', () => {
+ set(null as any)
+ expect(state.value).toBe(false)
+ })
+ it('set(undefined) should be false', () => {
+ set(undefined as any)
+ expect(state.value).toBe(false)
+ })
+ it('set(NaN) should be false', () => {
+ set(NaN as any)
+ expect(state.value).toBe(false)
+ })
+ it('set({}) should be true', () => {
+ set({} as any)
+ expect(state.value).toBe(true)
+ })
+ it('set([]) should be true', () => {
+ set([] as any)
+ expect(state.value).toBe(true)
+ })
})
- // 响应式测试
- it('should be reactive', () => {
- const [state, { set }] = useBoolean(false)
-
- // 测试响应式更新
- set(true)
- expect(state.value).toBeTruthy()
-
- // 测试多次更新
- set(false)
- set(true)
- set(false)
- expect(state.value).toBeFalsy()
- })
-
- // 边界情况测试
- it('should handle edge cases', () => {
- const [state, { set }] = useBoolean(false)
-
- // 测试 null
- set(null as any)
- expect(state.value).toBeFalsy()
-
- // 测试 undefined
- set(undefined as any)
- expect(state.value).toBeFalsy()
-
- // 测试 NaN
- set(NaN as any)
- expect(state.value).toBeFalsy()
-
- // 测试对象
- set({} as any)
- expect(state.value).toBeTruthy()
-
- // 测试数组
- set([] as any)
- expect(state.value).toBeTruthy()
- })
-
- // 性能测试
- it('should handle rapid toggles', () => {
- const [state, { toggle }] = useBoolean(false)
-
- // 快速切换测试
- for (let i = 0; i < 100; i++) {
- toggle()
- }
- expect(state.value).toBeFalsy() // 偶数次切换应该回到初始值
+ describe('Performance', () => {
+ it('should return to initial value after toggling 100 times quickly', () => {
+ const [state, { toggle }] = useBoolean(false)
+ for (let i = 0; i < 100; i++) {
+ toggle()
+ }
+ expect(state.value).toBe(false)
+ })
})
})
diff --git a/packages/hooks/src/useCookieState/__tests__/index.spec.ts b/packages/hooks/src/useCookieState/__tests__/index.spec.ts
index a34f4642..be65789f 100644
--- a/packages/hooks/src/useCookieState/__tests__/index.spec.ts
+++ b/packages/hooks/src/useCookieState/__tests__/index.spec.ts
@@ -40,4 +40,52 @@ describe('useCookieState', () => {
})
expect(message.value).toEqual('hello')
})
+
+ it('should remove cookie when set to undefined', () => {
+ const COOKIE_KEY = 'test-remove-cookie'
+ const [message, setMessage] = useCookieState(COOKIE_KEY, { defaultValue: 'to-be-removed' })
+ expect(message.value).toBe('to-be-removed')
+ setMessage(undefined)
+ expect(message.value).toBeUndefined()
+ // Should not find the cookie in document.cookie
+ expect(document.cookie.includes(COOKIE_KEY)).toBe(false)
+ })
+
+ it('should persist value across multiple hook calls', () => {
+ const COOKIE_KEY = 'test-persist'
+ const [, setMessage1] = useCookieState(COOKIE_KEY, { defaultValue: 'first' })
+ setMessage1('persisted')
+ // Simulate re-mount
+ const [message2] = useCookieState(COOKIE_KEY, { defaultValue: 'should-not-use' })
+ expect(message2.value).toBe('persisted')
+ })
+
+ it('should support different data types (number, boolean, object, array)', () => {
+ const COOKIE_KEY = 'test-types'
+ const [message, setMessage] = useCookieState(COOKIE_KEY, { defaultValue: '0' })
+ setMessage('123')
+ expect(message.value).toBe('123')
+ setMessage('true')
+ expect(message.value).toBe('true')
+ setMessage(JSON.stringify({ a: 1 }))
+ expect(message.value).toBe('{"a":1}')
+ setMessage(JSON.stringify([1, 2, 3]))
+ expect(message.value).toBe('[1,2,3]')
+ })
+
+ it('should support cookie options (expires, path)', () => {
+ const COOKIE_KEY = 'test-options'
+ const [message, setMessage] = useCookieState(COOKIE_KEY, { defaultValue: 'opt', expires: 7, path: '/' })
+ setMessage('with-options', { expires: 1, path: '/' })
+ expect(message.value).toBe('with-options')
+ // We cannot easily check cookie attributes in jsdom, but this ensures no error
+ })
+
+ it('should read value from cookie if it exists, ignoring defaultValue', () => {
+ const COOKIE_KEY = 'test-existing-cookie'
+ // Set cookie manually
+ document.cookie = `${COOKIE_KEY}=existing-value`
+ const [message] = useCookieState(COOKIE_KEY, { defaultValue: 'should-not-use' })
+ expect(message.value).toBe('existing-value')
+ })
})
diff --git a/packages/hooks/src/useDebounce/__tests__/index.spec.ts b/packages/hooks/src/useDebounce/__tests__/index.spec.ts
index 0168747a..54f2c381 100644
--- a/packages/hooks/src/useDebounce/__tests__/index.spec.ts
+++ b/packages/hooks/src/useDebounce/__tests__/index.spec.ts
@@ -20,4 +20,74 @@ describe('useDebounce', () => {
await sleep(300)
expect(debouncedCount.value).toEqual(5)
})
+ it('should debounce string ref', async () => {
+ const text = ref('hello')
+ const [debouncedText] = renderHook(() => useDebounce(text, { wait: 100 }))
+ text.value = 'world'
+ text.value = 'vue'
+ expect(debouncedText.value).toBe('hello')
+ await sleep(150)
+ expect(debouncedText.value).toBe('vue')
+ })
+ it('should debounce object ref', async () => {
+ const obj = ref({ a: 1 })
+ const [debouncedObj] = renderHook(() => useDebounce(obj, { wait: 100 }))
+ obj.value = { a: 2 }
+ obj.value = { a: 3 }
+ expect(debouncedObj.value).toEqual({ a: 1 })
+ await sleep(150)
+ expect(debouncedObj.value).toEqual({ a: 3 })
+ })
+ it('should support leading option', async () => {
+ const count = ref(0)
+ const [debouncedCount] = renderHook(() => useDebounce(count, { wait: 100, leading: true, trailing: false }))
+ count.value = 1
+ count.value = 2
+ count.value = 3
+ // Should not update immediately
+ expect(debouncedCount.value).toBe(0)
+ await sleep(150)
+ // According to lodash debounce, with leading: true and trailing: false,
+ // only the last change within the debounce window is taken.
+ expect(debouncedCount.value).toBe(3)
+ })
+ it('should support trailing option', async () => {
+ const count = ref(0)
+ const [debouncedCount] = renderHook(() => useDebounce(count, { wait: 100, leading: false, trailing: true }))
+ count.value = 1
+ count.value = 2
+ count.value = 3
+ expect(debouncedCount.value).toBe(0)
+ await sleep(150)
+ expect(debouncedCount.value).toBe(3)
+ })
+ it('should support maxWait option', async () => {
+ const count = ref(0)
+ const [debouncedCount] = renderHook(() => useDebounce(count, { wait: 100, maxWait: 200 }))
+ count.value = 1
+ await sleep(90)
+ count.value = 2
+ await sleep(90)
+ count.value = 3
+ expect(debouncedCount.value).toBe(0)
+ await sleep(50)
+ expect(debouncedCount.value).toBe(3)
+ })
+ it('should debounce with wait = 0', async () => {
+ const count = ref(0)
+ const [debouncedCount] = renderHook(() => useDebounce(count, { wait: 0 }))
+ count.value = 1
+ count.value = 2
+ await sleep(10)
+ expect(debouncedCount.value).toBe(2)
+ })
+ it('should cancel debounce on unmount', async () => {
+ const count = ref(0)
+ const [debouncedCount, app] = renderHook(() => useDebounce(count, { wait: 100 }))
+ count.value = 1
+ app.unmount()
+ await sleep(150)
+ // Should not update after unmount
+ expect(debouncedCount.value).toBe(0)
+ })
})
From 65711fe07603b844a35d15f9c46b7340de0c016a Mon Sep 17 00:00:00 2001
From: YongGit <1013588891@qq.com>
Date: Sun, 1 Jun 2025 23:09:04 +0800
Subject: [PATCH 15/29] =?UTF-8?q?test:=20=F0=9F=94=A7=20add=20test?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../src/useDebounceFn/__tests__/index.spec.ts | 50 ++++++++
packages/hooks/src/useDrop/index.ts | 1 +
.../__tests__/index.spec.ts | 108 +++++++++++++++++-
.../hooks/src/useElementBounding/index.ts | 3 +-
.../useEventListener/__tests__/index.spec.ts | 80 ++++++++++++-
.../src/useFetchs/__tests__/index.spec.ts | 12 +-
.../useFocusWithin/__tests__/index.spec.ts | 61 ++++++++++
7 files changed, 303 insertions(+), 12 deletions(-)
create mode 100644 packages/hooks/src/useFocusWithin/__tests__/index.spec.ts
diff --git a/packages/hooks/src/useDebounceFn/__tests__/index.spec.ts b/packages/hooks/src/useDebounceFn/__tests__/index.spec.ts
index 5f5c9dfe..f4e57af9 100644
--- a/packages/hooks/src/useDebounceFn/__tests__/index.spec.ts
+++ b/packages/hooks/src/useDebounceFn/__tests__/index.spec.ts
@@ -35,4 +35,54 @@ describe('useDebounceFn', () => {
await sleep(300)
expect(count).toBe(7)
})
+
+ it('should support leading option', async () => {
+ let value = 0
+ const fn = (v: number) => { value += v }
+ const { run } = useDebounceFn(fn, { wait: 100, leading: true, trailing: false })
+ run(1)
+ expect(value).toBe(1)
+ run(1)
+ run(1)
+ expect(value).toBe(1)
+ await sleep(150)
+ run(2)
+ expect(value).toBe(3)
+ })
+
+ it('should support trailing option', async () => {
+ let value = 0
+ const fn = (v: number) => { value += v }
+ const { run } = useDebounceFn(fn, { wait: 100, leading: false, trailing: true })
+ run(1)
+ run(2)
+ run(3)
+ expect(value).toBe(0)
+ await sleep(150)
+ expect(value).toBe(3)
+ })
+
+ it('should support maxWait option', async () => {
+ let value = 0
+ const fn = (v: number) => { value += v }
+ const { run } = useDebounceFn(fn, { wait: 100, maxWait: 200 })
+ run(1)
+ setTimeout(() => run(2), 50)
+ setTimeout(() => run(3), 120)
+ await sleep(250)
+ expect(value).toBe(3)
+ })
+
+ it('should update options dynamically', async () => {
+ let value = 0
+ const fn = (v: number) => { value += v }
+ const { run, updateOptions } = useDebounceFn(fn, { wait: 200 })
+ run(1)
+ await sleep(100)
+ updateOptions({ wait: 50 })
+ await sleep(0)
+ run(2)
+ await sleep(60)
+ expect(value).toBe(2)
+ })
})
diff --git a/packages/hooks/src/useDrop/index.ts b/packages/hooks/src/useDrop/index.ts
index ffeb4e7c..4e4a5bc7 100644
--- a/packages/hooks/src/useDrop/index.ts
+++ b/packages/hooks/src/useDrop/index.ts
@@ -93,6 +93,7 @@ const useDrop = (target: BasicTarget, options: UseDropOptions = {}) => {
let data = dom
try {
data = JSON.parse(dom)
+ // eslint-disable-next-line no-unused-vars, @typescript-eslint/no-unused-vars
} catch (e) {
data = dom
}
diff --git a/packages/hooks/src/useElementBounding/__tests__/index.spec.ts b/packages/hooks/src/useElementBounding/__tests__/index.spec.ts
index cdc3b5c6..0ed204a8 100644
--- a/packages/hooks/src/useElementBounding/__tests__/index.spec.ts
+++ b/packages/hooks/src/useElementBounding/__tests__/index.spec.ts
@@ -1,13 +1,115 @@
import renderHook from 'test-utils/renderHook'
import useElementBounding from '..'
-import { ref } from 'vue'
+import { ref, nextTick } from 'vue'
import { UseElementBoundingReturnType } from '../index'
+// mock getBoundingClientRect for predictable values
+function mockRect(left: number, top: number, width: number, height: number) {
+ return {
+ width,
+ height,
+ top,
+ left,
+ bottom: top + height,
+ right: left + width,
+ x: left,
+ y: top,
+ toJSON: () => ({ left, top, width, height, bottom: top + height, right: left + width, x: left, y: top }),
+ }
+}
+
describe('useElementBounding', () => {
- it('callback element info', () => {
+ beforeEach(() => {
+ window.HTMLElement.prototype.getBoundingClientRect = function () {
+ return mockRect(20, 10, 100, 50)
+ }
+ })
+
+ it('should return all zeros when element is not mounted', () => {
const el = ref()
- const [callbackOptions] = renderHook(() => useElementBounding(el))
+ const [bounding] = renderHook(() => useElementBounding(el))
+ expect(bounding.width.value).toBe(0)
+ expect(bounding.height.value).toBe(0)
+ expect(bounding.top.value).toBe(0)
+ expect(bounding.left.value).toBe(0)
+ expect(bounding.bottom.value).toBe(0)
+ expect(bounding.right.value).toBe(0)
+ })
+ it('should return correct bounding values after element is mounted', async () => {
+ const el = ref()
+ const [bounding] = renderHook(() => useElementBounding(el))
+ const div = document.createElement('div')
+ el.value = div
+ await nextTick()
+ expect(bounding.width.value).toBe(100)
+ expect(bounding.height.value).toBe(50)
+ expect(bounding.top.value).toBe(10)
+ expect(bounding.left.value).toBe(20)
+ expect(bounding.bottom.value).toBe(60)
+ expect(bounding.right.value).toBe(120)
+ })
+
+ it('should update values when element size or position changes', async () => {
+ let rect = mockRect(20, 10, 100, 50)
+ window.HTMLElement.prototype.getBoundingClientRect = function () {
+ return rect
+ }
+ const el = ref()
+ const [bounding] = renderHook(() => useElementBounding(el))
+ const div = document.createElement('div')
+ el.value = div
+ await nextTick()
+ expect(bounding.width.value).toBe(100)
+ rect = mockRect(15, 5, 200, 80)
+ window.dispatchEvent(new Event('resize'))
+ await nextTick()
+ expect(bounding.width.value).toBe(200)
+ expect(bounding.height.value).toBe(80)
+ expect(bounding.top.value).toBe(5)
+ expect(bounding.left.value).toBe(15)
+ expect(bounding.bottom.value).toBe(85)
+ expect(bounding.right.value).toBe(215)
+ })
+
+ it('should not reset values to zero if reset option is false', async () => {
+ // 保证 mockRect 是 100
+ window.HTMLElement.prototype.getBoundingClientRect = function () {
+ return mockRect(20, 10, 100, 50)
+ }
+ const el = ref()
+ const [bounding] = renderHook(() => useElementBounding(el, { reset: false }))
+ const div = document.createElement('div')
+ el.value = div
+ await nextTick()
+ expect(bounding.width.value).toBe(100)
+ el.value = undefined
+ await nextTick()
+ expect(bounding.width.value).toBe(100)
+ })
+
+ it('should not update on window resize/scroll if corresponding option is false', async () => {
+ let rect = mockRect(20, 10, 100, 50)
+ window.HTMLElement.prototype.getBoundingClientRect = function () {
+ return rect
+ }
+ const el = ref()
+ const [bounding] = renderHook(() => useElementBounding(el, { windowResize: false, windowScroll: false }))
+ const div = document.createElement('div')
+ el.value = div
+ await nextTick()
+ expect(bounding.width.value).toBe(100)
+ rect = mockRect(40, 30, 300, 150)
+ window.dispatchEvent(new Event('resize'))
+ window.dispatchEvent(new Event('scroll'))
+ await nextTick()
+ // Should not update
+ expect(bounding.width.value).toBe(100)
+ })
+
+ it('should have correct return type', () => {
+ const el = ref()
+ const [callbackOptions] = renderHook(() => useElementBounding(el))
assertType(callbackOptions)
})
})
diff --git a/packages/hooks/src/useElementBounding/index.ts b/packages/hooks/src/useElementBounding/index.ts
index 86a9cbac..513169ab 100644
--- a/packages/hooks/src/useElementBounding/index.ts
+++ b/packages/hooks/src/useElementBounding/index.ts
@@ -103,9 +103,8 @@ export default function useElementBounding(
useResizeObserver(target, update)
watch(() => getTargetElement(target), update)
-
onMounted(() => {
- immediate && update()
+ if (immediate) update()
})
return {
diff --git a/packages/hooks/src/useEventListener/__tests__/index.spec.ts b/packages/hooks/src/useEventListener/__tests__/index.spec.ts
index f7e9d3da..4b2f8ec0 100644
--- a/packages/hooks/src/useEventListener/__tests__/index.spec.ts
+++ b/packages/hooks/src/useEventListener/__tests__/index.spec.ts
@@ -17,7 +17,7 @@ describe('useEventListener', () => {
const onClick = () => {
state++
}
- renderHook(() => useEventListener('click', onClick, { target: () => container }))
+ useEventListener('click', onClick, { target: () => container })
document.body.click()
expect(state).toEqual(0)
@@ -26,4 +26,82 @@ describe('useEventListener', () => {
document.body.click()
expect(state).toEqual(1)
})
+
+ it('should listen to window resize event', async () => {
+ let called = false
+ const onResize = () => {
+ called = true
+ }
+ useEventListener('resize', onResize, { target: window })
+ window.dispatchEvent(new Event('resize'))
+ expect(called).toBe(true)
+ })
+
+ it('should listen to document keydown event', async () => {
+ let key = ''
+ const onKeyDown = (e: KeyboardEvent) => {
+ key = e.key
+ }
+ useEventListener('keydown', onKeyDown, { target: document })
+ const event = new KeyboardEvent('keydown', { key: 'a' })
+ document.dispatchEvent(event)
+ expect(key).toBe('a')
+ })
+
+ it('should support once option', async () => {
+ let count = 0
+ let triggered = false
+ const onClick = () => {
+ if (!triggered) {
+ count++
+ triggered = true
+ }
+ }
+ useEventListener('click', onClick, { target: () => container, once: true })
+ container.click()
+ container.click()
+ expect(count).toBe(1)
+ })
+
+ it('should support passive option', async () => {
+ let called = false
+ const onWheel = () => {
+ called = true
+ }
+ useEventListener('wheel', onWheel, { target: () => container, passive: true })
+ const event = new Event('wheel')
+ container.dispatchEvent(event)
+ expect(called).toBe(true)
+ })
+
+ it('should support capture option', async () => {
+ const phase: string[] = []
+ const onCapture = () => phase.push('capture')
+ const onBubble = () => phase.push('bubble')
+ useEventListener('click', onCapture, { target: () => container, capture: true })
+ container.addEventListener('click', onBubble)
+ container.click()
+ expect(phase[0]).toBe('capture')
+ expect(phase[1]).toBe('bubble')
+ container.removeEventListener('click', onBubble)
+ })
+
+ it('should remove event listener after unmount', async () => {
+ let count = 0
+ const onClick = () => {
+ count++
+ }
+ const [, app] = renderHook(() => useEventListener('click', onClick, { target: () => container }))
+ container.click()
+ expect(count).toBe(1)
+ app.unmount()
+ container.click()
+ expect(count).toBe(1)
+ })
+
+ it('should not throw if target is null', async () => {
+ expect(() => {
+ renderHook(() => useEventListener('click', () => { }, { target: null as any }))
+ }).not.toThrow()
+ })
})
diff --git a/packages/hooks/src/useFetchs/__tests__/index.spec.ts b/packages/hooks/src/useFetchs/__tests__/index.spec.ts
index 5affd22b..eff77dfc 100644
--- a/packages/hooks/src/useFetchs/__tests__/index.spec.ts
+++ b/packages/hooks/src/useFetchs/__tests__/index.spec.ts
@@ -8,14 +8,14 @@ async function getUsername(params: { desc: string }): Promise {
() => {
resolve(`vue-hooks-plus ${params.desc}`)
},
- params.desc === '大牛' ? 4000 : 2000,
+ params.desc === '3' ? 4000 : 2000,
)
})
}
describe('useFetchs', () => {
it('should work', async () => {
- const arr = ['牛', '小牛', '中牛', '大牛']
+ const arr = ['0', '1', '2', '3']
const [{ fetchRun, fetchs }] = renderHook(() =>
useFetchs(
getUsername,
@@ -40,13 +40,13 @@ describe('useFetchs', () => {
expect(fetchs.value[arr[3]].loading).toBeTruthy()
await sleep(2000)
- expect(fetchs.value[arr[0]].data).toBe('vue-hooks-plus 牛')
- expect(fetchs.value[arr[1]].data).toBe('vue-hooks-plus 小牛')
- expect(fetchs.value[arr[2]].data).toBe('vue-hooks-plus 中牛')
+ expect(fetchs.value[arr[0]].data).toBe('vue-hooks-plus 0')
+ expect(fetchs.value[arr[1]].data).toBe('vue-hooks-plus 1')
+ expect(fetchs.value[arr[2]].data).toBe('vue-hooks-plus 2')
expect(fetchs.value[arr[3]].loading).toBeTruthy()
await sleep(2000)
await sleep(200)
- expect(fetchs.value[arr[3]].data).toBe('vue-hooks-plus 大牛')
+ expect(fetchs.value[arr[3]].data).toBe('vue-hooks-plus 3')
})
})
diff --git a/packages/hooks/src/useFocusWithin/__tests__/index.spec.ts b/packages/hooks/src/useFocusWithin/__tests__/index.spec.ts
new file mode 100644
index 00000000..64ab3331
--- /dev/null
+++ b/packages/hooks/src/useFocusWithin/__tests__/index.spec.ts
@@ -0,0 +1,61 @@
+import renderHook from 'test-utils/renderHook'
+import useFocusWithin from '..'
+
+describe('useFocusWithin', () => {
+ let container: HTMLDivElement
+
+ beforeEach(() => {
+ container = document.createElement('div')
+ document.body.appendChild(container)
+ })
+
+ afterEach(() => {
+ document.body.removeChild(container)
+ })
+
+ it('should return false initially', () => {
+ const [state] = renderHook(() => useFocusWithin(container))
+ expect(state.value).toBe(false)
+ })
+
+ it('should call onFocus and onChange(true) when focusin event is triggered', () => {
+ const onFocus = vitest.fn()
+ const onChange = vitest.fn()
+ renderHook(() => useFocusWithin(container, { onFocus, onChange }))
+ const event = new FocusEvent('focusin', { bubbles: true })
+ container.dispatchEvent(event)
+ expect(onFocus).toHaveBeenCalledTimes(1)
+ expect(onChange).toHaveBeenCalledWith(true)
+ })
+
+ it('should call onBlur and onChange(false) when focusout event is triggered and relatedTarget is outside', () => {
+ const onBlur = vitest.fn()
+ const onChange = vitest.fn()
+ renderHook(() => useFocusWithin(container, { onBlur, onChange }))
+ // First focusin to set state to true
+ container.dispatchEvent(new FocusEvent('focusin', { bubbles: true }))
+ // Then focusout with relatedTarget outside
+ const event = new FocusEvent('focusout', { bubbles: true, relatedTarget: document.body })
+ Object.defineProperty(event, 'currentTarget', { value: container })
+ container.dispatchEvent(event)
+ expect(onBlur).toHaveBeenCalledTimes(1)
+ expect(onChange).toHaveBeenCalledWith(false)
+ })
+
+ it('should not call onBlur if relatedTarget is inside container', () => {
+ const onBlur = vitest.fn()
+ const onChange = vitest.fn()
+ renderHook(() => useFocusWithin(container, { onBlur, onChange }))
+ // First focusin to set state to true
+ container.dispatchEvent(new FocusEvent('focusin', { bubbles: true }))
+ // Create a child element and set as relatedTarget
+ const child = document.createElement('div')
+ container.appendChild(child)
+ const event = new FocusEvent('focusout', { bubbles: true, relatedTarget: child })
+ Object.defineProperty(event, 'currentTarget', { value: container })
+ container.dispatchEvent(event)
+ expect(onBlur).not.toHaveBeenCalled()
+ // onChange(false) should not be called either
+ expect(onChange).not.toHaveBeenCalledWith(false)
+ })
+})
From a50eec5bd66fbff0ff65a10726854980ee29d2d8 Mon Sep 17 00:00:00 2001
From: YongGit <1013588891@qq.com>
Date: Sun, 1 Jun 2025 23:28:32 +0800
Subject: [PATCH 16/29] docs: mark version
---
docs/en/components/useRequest.md | 2 +-
docs/zh/components/useRequest.md | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/docs/en/components/useRequest.md b/docs/en/components/useRequest.md
index 740ef1c0..59050fb9 100644
--- a/docs/en/components/useRequest.md
+++ b/docs/en/components/useRequest.md
@@ -2,7 +2,7 @@
The `useRequest` component is a high-level abstraction based on the `useRequest` hook, allowing you to use all the powerful features of `useRequest` in a declarative, component-based way.
-## Component Usage
+## Component Usage `2.4.0-beta`
You can use the `useRequest` component to handle data fetching, loading, error, and success states directly in your template. The API and props of the component are fully consistent with the `useRequest` hook, making it easy to switch between the two approaches.
diff --git a/docs/zh/components/useRequest.md b/docs/zh/components/useRequest.md
index ec73de3a..c38f4634 100644
--- a/docs/zh/components/useRequest.md
+++ b/docs/zh/components/useRequest.md
@@ -2,7 +2,7 @@
`useRequest` 组件是基于 `useRequest` hook 的高阶封装,允许你以声明式、组件化的方式使用所有 `useRequest` 的强大功能。
-## 组件用法
+## 组件用法 `2.4.0-beta`
你可以直接在模板中使用 `` 组件来处理数据请求、加载、错误和成功等状态。组件的 API 和 props 与 `useRequest` hook 完全一致,方便在两种用法间切换。
From 3f839185944f49b9c1eb527b6b17d734c84b4182 Mon Sep 17 00:00:00 2001
From: YongGit <1013588891@qq.com>
Date: Sun, 1 Jun 2025 23:29:38 +0800
Subject: [PATCH 17/29] version: 2.4.0-beta.1
---
packages/hooks/package.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/packages/hooks/package.json b/packages/hooks/package.json
index 084fe8e5..dd5e0d05 100644
--- a/packages/hooks/package.json
+++ b/packages/hooks/package.json
@@ -1,6 +1,6 @@
{
"name": "vue-hooks-plus",
- "version": "2.4.0-alpha.5",
+ "version": "2.4.0-beta.1",
"description": "Vue hooks library",
"files": [
"dist",
From 6e76adcefe4d866eb73d37401cf054dcba7eb365 Mon Sep 17 00:00:00 2001
From: YongGit <1013588891@qq.com>
Date: Sun, 1 Jun 2025 23:43:14 +0800
Subject: [PATCH 18/29] docs: updated
---
docs/en/components/useRequest.md | 6 +-
docs/zh/components/useRequest.md | 2 +-
package.json | 2 -
pnpm-lock.yaml | 2871 +++++++++++++++++++++++++++---
4 files changed, 2670 insertions(+), 211 deletions(-)
diff --git a/docs/en/components/useRequest.md b/docs/en/components/useRequest.md
index 59050fb9..e2d0995f 100644
--- a/docs/en/components/useRequest.md
+++ b/docs/en/components/useRequest.md
@@ -47,7 +47,7 @@ The `useRequest` component accepts all the same props as the `useRequest` hook o
### Consistency with useRequest Hook
-All features, options, and return values of the `useRequest` component are consistent with the `useRequest` hook. You can refer to the [useRequest hook documentation](../hooks/useRequest.md) for detailed API descriptions and advanced usage.
+All features, options, and return values of the `useRequest` component are consistent with the `useRequest` hook. You can refer to the useRequest hook documentation for detailed API descriptions and advanced usage.
## When to Use
@@ -55,10 +55,6 @@ All features, options, and return values of the `useRequest` component are consi
- When you want to leverage slots for flexible UI customization
- When you need to keep logic and UI closely coupled in your component templates
-## References
-
-- [useRequest hook documentation](../hooks/useRequest.md)
-- [Component Hook Guide](./guide.md)
## Using `createUseRequestComponent`
diff --git a/docs/zh/components/useRequest.md b/docs/zh/components/useRequest.md
index c38f4634..757b59f5 100644
--- a/docs/zh/components/useRequest.md
+++ b/docs/zh/components/useRequest.md
@@ -40,7 +40,7 @@
### 与 useRequest hook 的一致性
-所有功能、参数和返回值都与 `useRequest` hook 保持一致。详细 API 可参考 [useRequest hook 文档](../hooks/useRequest.md)。
+所有功能、参数和返回值都与 `useRequest` hook 保持一致。详细 API 可参考 useRequest hook 文档。
---
diff --git a/package.json b/package.json
index 4d684e57..a0c87c0a 100644
--- a/package.json
+++ b/package.json
@@ -12,8 +12,6 @@
"build:vitepress-demo-block": "cd packages/vitepress/vitepress-demo-block && pnpm build",
"docs:dev": "vitepress dev docs",
"docs:build": "pnpm build && vitepress build docs",
- "docs:build-github": "pnpm build:vitepress-demo-block && tsx scripts/gitPage.ts github",
- "docs:build-gitee": "pnpm build:vitepress-demo-block && tsx scripts/gitPage.ts gitee",
"build": "pnpm recursive exec pnpm run build",
"test": "vitest",
"test:ui": "vitest --ui",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 03a8397e..bd2d90d5 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -80,21 +80,21 @@ importers:
'@types/node': 17.0.45
'@types/prettier': 2.7.3
'@types/qs': 6.9.18
- '@types/react-dom': 18.3.6
+ '@types/react-dom': 18.3.6_@types+react@18.3.23
'@typescript-eslint/eslint-plugin': 5.62.0_ks6ui6jebwf5sajuqqtqmktvo4
- '@vite-pwa/vitepress': 1.0.0
+ '@vite-pwa/vitepress': 1.0.0_vite-plugin-pwa@1.0.0
'@vitejs/plugin-vue': 2.3.4_vite@3.0.2+vue@3.5.13
'@vitest/coverage-c8': 0.25.8_4rke55fors2tnsu273t7mnruwm
'@vitest/ui': 0.25.8
- '@vue-hooks-plus/md-demo-plugins': 1.1.0_6xgyufr755ieb744rnjknwxdqq
+ '@vue-hooks-plus/md-demo-plugins': 1.1.0_4hfvhstsfslvn7fjhkqqeebcea
'@vue-hooks-plus/types': link:packages/types
'@vue-hooks-plus/use-immer': link:packages/use-immer
'@vue-hooks-plus/use-request': link:packages/use-request
'@vue-hooks-plus/use-request-plugins': link:packages/use-request-plugins
'@vue-hooks-plus/use-url-state': link:packages/use-url-state
'@vue-hooks-plus/use-worker': link:packages/use-worker
- '@vue-hooks-plus/vite-plugin-gen-temp': 2.6.6_4dydiev6zwdmgkjmzqeg75ctza
- '@vue-hooks-plus/vitepress': 1.2.4_6xgyufr755ieb744rnjknwxdqq
+ '@vue-hooks-plus/vite-plugin-gen-temp': 2.6.6_pfrxxcnxc2tz5ic4db3wq5lsse
+ '@vue-hooks-plus/vitepress': 1.2.4_4hfvhstsfslvn7fjhkqqeebcea
'@vue-hooks-plus/vitepress-demo-block': link:packages/vitepress/vitepress-demo-block
'@vue/compiler-core': 3.5.13
'@vue/eslint-config-typescript': 14.5.0_zgfvtz6npy5t4dtg3dmqsrsmd4
@@ -125,9 +125,9 @@ importers:
typeit: 8.8.7
typescript: 5.8.2
vite: 3.0.2_less@4.2.2
- vite-plugin-build: 0.7.1
- vite-plugin-dts: 2.3.0_6y4hq23vlu65m74cay4y7ctr24
- vitepress: 1.6.3_demff4vjbagpqdjum6sew2u5zy
+ vite-plugin-build: 0.7.1_svelte@3.59.2
+ vite-plugin-dts: 2.3.0_ua7s575yoq34e5f6es546vplsi
+ vitepress: 1.6.3_upwuos7m6v2vdoxny3rkqlb7aa
vitepress-plugin-group-icons: 1.3.8
vitest: 2.1.9_zae7dsnwsizzxm5tsw4wmcypxe
vue: 3.5.13_typescript@5.8.2
@@ -144,6 +144,7 @@ importers:
js-cookie: ^3.0.1
lodash-es: ^4.17.21
screenfull: ^5.0.0
+ vue: ^3.2.25
dependencies:
'@types/js-cookie': 3.0.6
'@vue/devtools-api': 7.7.2
@@ -152,6 +153,7 @@ importers:
screenfull: 5.2.0
devDependencies:
'@types/lodash-es': 4.17.12
+ vue: 3.5.13
packages/resolvers:
specifiers:
@@ -161,8 +163,10 @@ importers:
local-pkg: ^0.4.2
tsup: ^6.2.3
unplugin-auto-import: ^0.12.1
+ vue-hooks-plus: '>=1.5.2'
dependencies:
local-pkg: 0.4.3
+ vue-hooks-plus: 2.3.1_vue@3.5.13
devDependencies:
'@types/node': 18.19.86
execa: 6.1.0
@@ -196,8 +200,10 @@ importers:
packages/use-request-plugins:
specifiers:
'@vue-hooks-plus/use-request': '*'
+ pinia: ^2.0.30
devDependencies:
'@vue-hooks-plus/use-request': 2.2.2
+ pinia: 2.3.1_vue@3.5.13
packages/use-url-state:
specifiers:
@@ -220,251 +226,1271 @@ importers:
vite-plugin-dts: ^1.4.0
vue: ^3.2.37
devDependencies:
- '@vitejs/plugin-vue': 3.2.0_vue@3.5.13
+ '@vitejs/plugin-vue': 3.2.0_vite@3.2.11+vue@3.5.13
less: 4.2.2
- vite-plugin-dts: 1.7.3
+ vite-plugin-dts: 1.7.3_vite@3.2.11
vue: 3.5.13
packages:
- /@algolia/autocomplete-core/1.17.7_algoliasearch@5.23.1:
+ /@algolia/autocomplete-core/1.17.7_vodhaecvskiwpluroz46xmd4oy:
resolution: {integrity: sha512-BjiPOW6ks90UKl7TwMv7oNQMnzU+t/wk9mgIDi6b1tXpUek7MW0lbNOUHpvam9pe3lVCf4xPFT+lK7s+e+fs7Q==}
dependencies:
- '@algolia/autocomplete-plugin-algolia-insights': 1.17.7_algoliasearch@5.23.1
- '@algolia/autocomplete-shared': 1.17.7_algoliasearch@5.23.1
+ '@algolia/autocomplete-plugin-algolia-insights': 1.17.7_vodhaecvskiwpluroz46xmd4oy
+ '@algolia/autocomplete-shared': 1.17.7_5b5vtcx4jjghcnvdt5h4c2l4vy
transitivePeerDependencies:
- '@algolia/client-search'
- algoliasearch
- search-insights
dev: true
- /@algolia/autocomplete-core/1.17.9_algoliasearch@5.23.1:
+ /@algolia/autocomplete-core/1.17.9_vodhaecvskiwpluroz46xmd4oy:
resolution: {integrity: sha512-O7BxrpLDPJWWHv/DLA9DRFWs+iY1uOJZkqUwjS5HSZAGcl0hIVCQ97LTLewiZmZ402JYUrun+8NqFP+hCknlbQ==}
dependencies:
- '@algolia/autocomplete-plugin-algolia-insights': 1.17.9_algoliasearch@5.23.1
- '@algolia/autocomplete-shared': 1.17.9_algoliasearch@5.23.1
+ '@algolia/autocomplete-plugin-algolia-insights': 1.17.9_vodhaecvskiwpluroz46xmd4oy
+ '@algolia/autocomplete-shared': 1.17.9_5b5vtcx4jjghcnvdt5h4c2l4vy
transitivePeerDependencies:
- '@algolia/client-search'
- algoliasearch
- search-insights
dev: true
- /@algolia/autocomplete-plugin-algolia-insights/1.17.7_algoliasearch@5.23.1:
+ /@algolia/autocomplete-plugin-algolia-insights/1.17.7_vodhaecvskiwpluroz46xmd4oy:
resolution: {integrity: sha512-Jca5Ude6yUOuyzjnz57og7Et3aXjbwCSDf/8onLHSQgw1qW3ALl9mrMWaXb5FmPVkV3EtkD2F/+NkT6VHyPu9A==}
peerDependencies:
search-insights: '>= 1 < 3'
dependencies:
- '@algolia/autocomplete-shared': 1.17.7_algoliasearch@5.23.1
+ '@algolia/autocomplete-shared': 1.17.7_5b5vtcx4jjghcnvdt5h4c2l4vy
+ search-insights: 2.17.3
transitivePeerDependencies:
- '@algolia/client-search'
- algoliasearch
dev: true
- /@algolia/autocomplete-plugin-algolia-insights/1.17.9_algoliasearch@5.23.1:
+ /@algolia/autocomplete-plugin-algolia-insights/1.17.9_vodhaecvskiwpluroz46xmd4oy:
resolution: {integrity: sha512-u1fEHkCbWF92DBeB/KHeMacsjsoI0wFhjZtlCq2ddZbAehshbZST6Hs0Avkc0s+4UyBGbMDnSuXHLuvRWK5iDQ==}
peerDependencies:
search-insights: '>= 1 < 3'
dependencies:
- '@algolia/autocomplete-shared': 1.17.9_algoliasearch@5.23.1
+ '@algolia/autocomplete-shared': 1.17.9_5b5vtcx4jjghcnvdt5h4c2l4vy
+ search-insights: 2.17.3
transitivePeerDependencies:
- '@algolia/client-search'
- algoliasearch
dev: true
- /@algolia/autocomplete-preset-algolia/1.17.7_algoliasearch@5.23.1:
+ /@algolia/autocomplete-preset-algolia/1.17.7_5b5vtcx4jjghcnvdt5h4c2l4vy:
resolution: {integrity: sha512-ggOQ950+nwbWROq2MOCIL71RE0DdQZsceqrg32UqnhDz8FlO9rL8ONHNsI2R1MH0tkgVIDKI/D0sMiUchsFdWA==}
peerDependencies:
'@algolia/client-search': '>= 4.9.1 < 6'
algoliasearch: '>= 4.9.1 < 6'
dependencies:
- '@algolia/autocomplete-shared': 1.17.7_algoliasearch@5.23.1
+ '@algolia/autocomplete-shared': 1.17.7_5b5vtcx4jjghcnvdt5h4c2l4vy
+ '@algolia/client-search': 5.23.1
algoliasearch: 5.23.1
dev: true
- /@algolia/autocomplete-preset-algolia/1.17.9_algoliasearch@5.23.1:
+ /@algolia/autocomplete-preset-algolia/1.17.9_5b5vtcx4jjghcnvdt5h4c2l4vy:
resolution: {integrity: sha512-Na1OuceSJeg8j7ZWn5ssMu/Ax3amtOwk76u4h5J4eK2Nx2KB5qt0Z4cOapCsxot9VcEN11ADV5aUSlQF4RhGjQ==}
peerDependencies:
'@algolia/client-search': '>= 4.9.1 < 6'
algoliasearch: '>= 4.9.1 < 6'
dependencies:
- '@algolia/autocomplete-shared': 1.17.9_algoliasearch@5.23.1
+ '@algolia/autocomplete-shared': 1.17.9_5b5vtcx4jjghcnvdt5h4c2l4vy
+ '@algolia/client-search': 5.23.1
algoliasearch: 5.23.1
dev: true
- /@algolia/autocomplete-shared/1.17.7_algoliasearch@5.23.1:
+ /@algolia/autocomplete-shared/1.17.7_5b5vtcx4jjghcnvdt5h4c2l4vy:
resolution: {integrity: sha512-o/1Vurr42U/qskRSuhBH+VKxMvkkUVTLU6WZQr+L5lGZZLYWyhdzWjW0iGXY7EkwRTjBqvN2EsR81yCTGV/kmg==}
peerDependencies:
'@algolia/client-search': '>= 4.9.1 < 6'
algoliasearch: '>= 4.9.1 < 6'
dependencies:
+ '@algolia/client-search': 5.23.1
algoliasearch: 5.23.1
dev: true
- /@algolia/autocomplete-shared/1.17.9_algoliasearch@5.23.1:
+ /@algolia/autocomplete-shared/1.17.9_5b5vtcx4jjghcnvdt5h4c2l4vy:
resolution: {integrity: sha512-iDf05JDQ7I0b7JEA/9IektxN/80a2MZ1ToohfmNS3rfeuQnIKI3IJlIafD0xu4StbtQTghx9T3Maa97ytkXenQ==}
peerDependencies:
'@algolia/client-search': '>= 4.9.1 < 6'
algoliasearch: '>= 4.9.1 < 6'
dependencies:
+ '@algolia/client-search': 5.23.1
algoliasearch: 5.23.1
dev: true
- /@algolia/client-abtesting/5.23.1:
- resolution: {integrity: sha512-WZ9vKwHDiTCq6/F2+KHMeojT6MuqtVVvUJorbi6zGeOokKbOeeq7+RIPEezynsfq+Tl6SjuAbOWiQ0qTpJTWQw==}
- engines: {node: '>= 14.0.0'}
+ /@algolia/client-abtesting/5.23.1:
+ resolution: {integrity: sha512-WZ9vKwHDiTCq6/F2+KHMeojT6MuqtVVvUJorbi6zGeOokKbOeeq7+RIPEezynsfq+Tl6SjuAbOWiQ0qTpJTWQw==}
+ engines: {node: '>= 14.0.0'}
+ dependencies:
+ '@algolia/client-common': 5.23.1
+ '@algolia/requester-browser-xhr': 5.23.1
+ '@algolia/requester-fetch': 5.23.1
+ '@algolia/requester-node-http': 5.23.1
+ dev: true
+
+ /@algolia/client-analytics/5.23.1:
+ resolution: {integrity: sha512-Pr/hVwl2YN7xw0R9HS8KzG+R7IQAArdMQIqi/QYRmW6+Mst3cqGqvVJEAYOJUS5lAQ93pkAkc5ns1kFxSfWRIg==}
+ engines: {node: '>= 14.0.0'}
+ dependencies:
+ '@algolia/client-common': 5.23.1
+ '@algolia/requester-browser-xhr': 5.23.1
+ '@algolia/requester-fetch': 5.23.1
+ '@algolia/requester-node-http': 5.23.1
+ dev: true
+
+ /@algolia/client-common/5.23.1:
+ resolution: {integrity: sha512-/xJtZl+A7GBNf1jkG/xsemur7JDkBWY8wh58iah1xvJxxxpi+WBYAtVkwS7Mn/D/PJFpuVNSHKkoC8+uT5jYKQ==}
+ engines: {node: '>= 14.0.0'}
+ dev: true
+
+ /@algolia/client-insights/5.23.1:
+ resolution: {integrity: sha512-tmg7ovakc0uOfp5vZv9CPLuMkIqEEn7Ra3NzU0GOpSjXTgQmcsw7QvzLQtD6u9oFPCMk+OqJ+4V/94P5M0yWSw==}
+ engines: {node: '>= 14.0.0'}
+ dependencies:
+ '@algolia/client-common': 5.23.1
+ '@algolia/requester-browser-xhr': 5.23.1
+ '@algolia/requester-fetch': 5.23.1
+ '@algolia/requester-node-http': 5.23.1
+ dev: true
+
+ /@algolia/client-personalization/5.23.1:
+ resolution: {integrity: sha512-jYsKIiCN5IlWG+F9vbrAXuXPy0u44HDYN3QrX+zfQ8Fr8cpdNHbQTuQAQfWpofhA6hYrrQ66Ms2KbXcdgkyPKw==}
+ engines: {node: '>= 14.0.0'}
+ dependencies:
+ '@algolia/client-common': 5.23.1
+ '@algolia/requester-browser-xhr': 5.23.1
+ '@algolia/requester-fetch': 5.23.1
+ '@algolia/requester-node-http': 5.23.1
+ dev: true
+
+ /@algolia/client-query-suggestions/5.23.1:
+ resolution: {integrity: sha512-BDFiGQ6UdFsEMEigFlOAeL7VDysqf05qn+yyQUnGuOuzSbsqtlB4W6ZyZC1+jpY2tXGpGOMDh9ej2BQOoji8UQ==}
+ engines: {node: '>= 14.0.0'}
+ dependencies:
+ '@algolia/client-common': 5.23.1
+ '@algolia/requester-browser-xhr': 5.23.1
+ '@algolia/requester-fetch': 5.23.1
+ '@algolia/requester-node-http': 5.23.1
+ dev: true
+
+ /@algolia/client-search/5.23.1:
+ resolution: {integrity: sha512-5aW3B0F2aALh54rn/LLSZPigA0Wbpl4EZfI8g2KmAWHM3HLQtzFhpmeiItFMUklmmHwse4s/iDmRHlBhdHfFIQ==}
+ engines: {node: '>= 14.0.0'}
+ dependencies:
+ '@algolia/client-common': 5.23.1
+ '@algolia/requester-browser-xhr': 5.23.1
+ '@algolia/requester-fetch': 5.23.1
+ '@algolia/requester-node-http': 5.23.1
+ dev: true
+
+ /@algolia/ingestion/1.23.1:
+ resolution: {integrity: sha512-YlS7wL1vFGd79/gDXHejfjcbLJHwh5Y9ljA6TEbsHsXeZuN8galpcMIDl9qadHJgx3PgQbwmWV87+EHGiLzXoQ==}
+ engines: {node: '>= 14.0.0'}
+ dependencies:
+ '@algolia/client-common': 5.23.1
+ '@algolia/requester-browser-xhr': 5.23.1
+ '@algolia/requester-fetch': 5.23.1
+ '@algolia/requester-node-http': 5.23.1
+ dev: true
+
+ /@algolia/monitoring/1.23.1:
+ resolution: {integrity: sha512-qD79lqsLv9G/nu6EIo3hjBBQr7rBt7QatdABT59HnQI5exbJBDMbtynu3VdrvvCfZ9XEb7j/HFbglbN7fVYKfA==}
+ engines: {node: '>= 14.0.0'}
+ dependencies:
+ '@algolia/client-common': 5.23.1
+ '@algolia/requester-browser-xhr': 5.23.1
+ '@algolia/requester-fetch': 5.23.1
+ '@algolia/requester-node-http': 5.23.1
+ dev: true
+
+ /@algolia/recommend/5.23.1:
+ resolution: {integrity: sha512-kmQtotstkZCCojfqv4//XQhy+Y5rTkNTTadiJf/KsR1wBvLMIYDQtTR+1XZdHdVaJCnvW//gJA3KL84rQ91uPg==}
+ engines: {node: '>= 14.0.0'}
+ dependencies:
+ '@algolia/client-common': 5.23.1
+ '@algolia/requester-browser-xhr': 5.23.1
+ '@algolia/requester-fetch': 5.23.1
+ '@algolia/requester-node-http': 5.23.1
+ dev: true
+
+ /@algolia/requester-browser-xhr/5.23.1:
+ resolution: {integrity: sha512-BJfxcOWj3vAr3r4Oe9T3O+pg54qRZdeEmp5Lmzocog05rhfH/wgEXv/stFnuB+6MgLOOiXJNP1kdaiAHLzRZYw==}
+ engines: {node: '>= 14.0.0'}
+ dependencies:
+ '@algolia/client-common': 5.23.1
+ dev: true
+
+ /@algolia/requester-fetch/5.23.1:
+ resolution: {integrity: sha512-YTbslSbEpuCZn15eMx8djR1jYbJdELOIfvo5xLOBeSB/bGReHAOoQ9HHopCB17F40xaPQi6CJMXWx63ImMAN4w==}
+ engines: {node: '>= 14.0.0'}
+ dependencies:
+ '@algolia/client-common': 5.23.1
+ dev: true
+
+ /@algolia/requester-node-http/5.23.1:
+ resolution: {integrity: sha512-Jp/5Fqx+eREpmM179LOQpyvQOdsR3Pq2aVpsuoSdQ/8o4B6v38lmrkbbMrMsNayR59QQ9VkL2ImYKBysqB4Qug==}
+ engines: {node: '>= 14.0.0'}
+ dependencies:
+ '@algolia/client-common': 5.23.1
+ dev: true
+
+ /@ampproject/remapping/2.3.0:
+ resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==}
+ engines: {node: '>=6.0.0'}
+ dependencies:
+ '@jridgewell/gen-mapping': 0.3.8
+ '@jridgewell/trace-mapping': 0.3.25
+ dev: true
+
+ /@antfu/install-pkg/1.0.0:
+ resolution: {integrity: sha512-xvX6P/lo1B3ej0OsaErAjqgFYzYVcJpamjLAFLYh9vRJngBrMoUG7aVnrGTeqM7yxbyTD5p3F2+0/QUEh8Vzhw==}
+ dependencies:
+ package-manager-detector: 0.2.11
+ tinyexec: 0.3.2
+ dev: true
+
+ /@antfu/utils/0.7.10:
+ resolution: {integrity: sha512-+562v9k4aI80m1+VuMHehNJWLOFjBnXn3tdOitzD0il5b7smkSBal4+a3oKiQTbrwMmN/TBUMDvbdoWDehgOww==}
+ dev: true
+
+ /@antfu/utils/8.1.1:
+ resolution: {integrity: sha512-Mex9nXf9vR6AhcXmMrlz/HVgYYZpVGJ6YlPgwl7UnaFpnshXs6EK/oa5Gpf3CzENMjkvEx2tQtntGnb7UtSTOQ==}
+ dev: true
+
+ /@apideck/better-ajv-errors/0.3.6_ajv@8.17.1:
+ resolution: {integrity: sha512-P+ZygBLZtkp0qqOAJJVX4oX/sFo5JR3eBWwwuqHHhK0GIgQOKWrAfiAaWX0aArHkRWHMuggFEgAZNxVPwPZYaA==}
+ engines: {node: '>=10'}
+ peerDependencies:
+ ajv: '>=8'
+ dependencies:
+ ajv: 8.17.1
+ json-schema: 0.4.0
+ jsonpointer: 5.0.1
+ leven: 3.1.0
+ dev: true
+
+ /@babel/code-frame/7.26.2:
+ resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/helper-validator-identifier': 7.25.9
+ js-tokens: 4.0.0
+ picocolors: 1.1.1
+ dev: true
+
+ /@babel/code-frame/7.27.1:
+ resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/helper-validator-identifier': 7.27.1
+ js-tokens: 4.0.0
+ picocolors: 1.1.1
+ dev: true
+
+ /@babel/compat-data/7.27.3:
+ resolution: {integrity: sha512-V42wFfx1ymFte+ecf6iXghnnP8kWTO+ZLXIyZq+1LAXHHvTZdVxicn4yiVYdYMGaCO3tmqub11AorKkv+iodqw==}
+ engines: {node: '>=6.9.0'}
+ dev: true
+
+ /@babel/core/7.27.4:
+ resolution: {integrity: sha512-bXYxrXFubeYdvB0NhD/NBB3Qi6aZeV20GOWVI47t2dkecCEoneR4NPVcb7abpXDEvejgrUfFtG6vG/zxAKmg+g==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@ampproject/remapping': 2.3.0
+ '@babel/code-frame': 7.27.1
+ '@babel/generator': 7.27.3
+ '@babel/helper-compilation-targets': 7.27.2
+ '@babel/helper-module-transforms': 7.27.3_@babel+core@7.27.4
+ '@babel/helpers': 7.27.4
+ '@babel/parser': 7.27.4
+ '@babel/template': 7.27.2
+ '@babel/traverse': 7.27.4
+ '@babel/types': 7.27.3
+ convert-source-map: 2.0.0
+ debug: 4.4.0
+ gensync: 1.0.0-beta.2
+ json5: 2.2.3
+ semver: 6.3.1
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@babel/generator/7.27.3:
+ resolution: {integrity: sha512-xnlJYj5zepml8NXtjkG0WquFUv8RskFqyFcVgTBp5k+NaA/8uw/K+OSVf8AMGw5e9HKP2ETd5xpK5MLZQD6b4Q==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/parser': 7.27.4
+ '@babel/types': 7.27.3
+ '@jridgewell/gen-mapping': 0.3.8
+ '@jridgewell/trace-mapping': 0.3.25
+ jsesc: 3.1.0
+ dev: true
+
+ /@babel/helper-annotate-as-pure/7.27.3:
+ resolution: {integrity: sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/types': 7.27.3
+ dev: true
+
+ /@babel/helper-compilation-targets/7.27.2:
+ resolution: {integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/compat-data': 7.27.3
+ '@babel/helper-validator-option': 7.27.1
+ browserslist: 4.25.0
+ lru-cache: 5.1.1
+ semver: 6.3.1
+ dev: true
+
+ /@babel/helper-create-class-features-plugin/7.27.1_@babel+core@7.27.4:
+ resolution: {integrity: sha512-QwGAmuvM17btKU5VqXfb+Giw4JcN0hjuufz3DYnpeVDvZLAObloM77bhMXiqry3Iio+Ai4phVRDwl6WU10+r5A==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+ dependencies:
+ '@babel/core': 7.27.4
+ '@babel/helper-annotate-as-pure': 7.27.3
+ '@babel/helper-member-expression-to-functions': 7.27.1
+ '@babel/helper-optimise-call-expression': 7.27.1
+ '@babel/helper-replace-supers': 7.27.1_@babel+core@7.27.4
+ '@babel/helper-skip-transparent-expression-wrappers': 7.27.1
+ '@babel/traverse': 7.27.4
+ semver: 6.3.1
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@babel/helper-create-regexp-features-plugin/7.27.1_@babel+core@7.27.4:
+ resolution: {integrity: sha512-uVDC72XVf8UbrH5qQTc18Agb8emwjTiZrQE11Nv3CuBEZmVvTwwE9CBUEvHku06gQCAyYf8Nv6ja1IN+6LMbxQ==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+ dependencies:
+ '@babel/core': 7.27.4
+ '@babel/helper-annotate-as-pure': 7.27.3
+ regexpu-core: 6.2.0
+ semver: 6.3.1
+ dev: true
+
+ /@babel/helper-define-polyfill-provider/0.6.4_@babel+core@7.27.4:
+ resolution: {integrity: sha512-jljfR1rGnXXNWnmQg2K3+bvhkxB51Rl32QRaOTuwwjviGrHzIbSc8+x9CpraDtbT7mfyjXObULP4w/adunNwAw==}
+ peerDependencies:
+ '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0
+ dependencies:
+ '@babel/core': 7.27.4
+ '@babel/helper-compilation-targets': 7.27.2
+ '@babel/helper-plugin-utils': 7.27.1
+ debug: 4.4.0
+ lodash.debounce: 4.0.8
+ resolve: 1.22.10
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@babel/helper-member-expression-to-functions/7.27.1:
+ resolution: {integrity: sha512-E5chM8eWjTp/aNoVpcbfM7mLxu9XGLWYise2eBKGQomAk/Mb4XoxyqXTZbuTohbsl8EKqdlMhnDI2CCLfcs9wA==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/traverse': 7.27.4
+ '@babel/types': 7.27.3
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@babel/helper-module-imports/7.27.1:
+ resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/traverse': 7.27.4
+ '@babel/types': 7.27.3
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@babel/helper-module-transforms/7.27.3_@babel+core@7.27.4:
+ resolution: {integrity: sha512-dSOvYwvyLsWBeIRyOeHXp5vPj5l1I011r52FM1+r1jCERv+aFXYk4whgQccYEGYxK2H3ZAIA8nuPkQ0HaUo3qg==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+ dependencies:
+ '@babel/core': 7.27.4
+ '@babel/helper-module-imports': 7.27.1
+ '@babel/helper-validator-identifier': 7.27.1
+ '@babel/traverse': 7.27.4
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@babel/helper-optimise-call-expression/7.27.1:
+ resolution: {integrity: sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/types': 7.27.3
+ dev: true
+
+ /@babel/helper-plugin-utils/7.27.1:
+ resolution: {integrity: sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==}
+ engines: {node: '>=6.9.0'}
+ dev: true
+
+ /@babel/helper-remap-async-to-generator/7.27.1_@babel+core@7.27.4:
+ resolution: {integrity: sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+ dependencies:
+ '@babel/core': 7.27.4
+ '@babel/helper-annotate-as-pure': 7.27.3
+ '@babel/helper-wrap-function': 7.27.1
+ '@babel/traverse': 7.27.4
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@babel/helper-replace-supers/7.27.1_@babel+core@7.27.4:
+ resolution: {integrity: sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+ dependencies:
+ '@babel/core': 7.27.4
+ '@babel/helper-member-expression-to-functions': 7.27.1
+ '@babel/helper-optimise-call-expression': 7.27.1
+ '@babel/traverse': 7.27.4
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@babel/helper-skip-transparent-expression-wrappers/7.27.1:
+ resolution: {integrity: sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/traverse': 7.27.4
+ '@babel/types': 7.27.3
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@babel/helper-string-parser/7.25.9:
+ resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==}
+ engines: {node: '>=6.9.0'}
+
+ /@babel/helper-string-parser/7.27.1:
+ resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==}
+ engines: {node: '>=6.9.0'}
+ dev: true
+
+ /@babel/helper-validator-identifier/7.25.9:
+ resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==}
+ engines: {node: '>=6.9.0'}
+
+ /@babel/helper-validator-identifier/7.27.1:
+ resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==}
+ engines: {node: '>=6.9.0'}
+ dev: true
+
+ /@babel/helper-validator-option/7.27.1:
+ resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==}
+ engines: {node: '>=6.9.0'}
+ dev: true
+
+ /@babel/helper-wrap-function/7.27.1:
+ resolution: {integrity: sha512-NFJK2sHUvrjo8wAU/nQTWU890/zB2jj0qBcCbZbbf+005cAsv6tMjXz31fBign6M5ov1o0Bllu+9nbqkfsjjJQ==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/template': 7.27.2
+ '@babel/traverse': 7.27.4
+ '@babel/types': 7.27.3
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@babel/helpers/7.27.4:
+ resolution: {integrity: sha512-Y+bO6U+I7ZKaM5G5rDUZiYfUvQPUibYmAFe7EnKdnKBbVXDZxvp+MWOH5gYciY0EPk4EScsuFMQBbEfpdRKSCQ==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/template': 7.27.2
+ '@babel/types': 7.27.3
+ dev: true
+
+ /@babel/parser/7.27.0:
+ resolution: {integrity: sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==}
+ engines: {node: '>=6.0.0'}
+ hasBin: true
+ dependencies:
+ '@babel/types': 7.27.0
+
+ /@babel/parser/7.27.4:
+ resolution: {integrity: sha512-BRmLHGwpUqLFR2jzx9orBuX/ABDkj2jLKOXrHDTN2aOKL+jFDDKaRNo9nyYsIl9h/UE/7lMKdDjKQQyxKKDZ7g==}
+ engines: {node: '>=6.0.0'}
+ hasBin: true
+ dependencies:
+ '@babel/types': 7.27.3
+ dev: true
+
+ /@babel/plugin-bugfix-firefox-class-in-computed-class-key/7.27.1_@babel+core@7.27.4:
+ resolution: {integrity: sha512-QPG3C9cCVRQLxAVwmefEmwdTanECuUBMQZ/ym5kiw3XKCGA7qkuQLcjWWHcrD/GKbn/WmJwaezfuuAOcyKlRPA==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+ dependencies:
+ '@babel/core': 7.27.4
+ '@babel/helper-plugin-utils': 7.27.1
+ '@babel/traverse': 7.27.4
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@babel/plugin-bugfix-safari-class-field-initializer-scope/7.27.1_@babel+core@7.27.4:
+ resolution: {integrity: sha512-qNeq3bCKnGgLkEXUuFry6dPlGfCdQNZbn7yUAPCInwAJHMU7THJfrBSozkcWq5sNM6RcF3S8XyQL2A52KNR9IA==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+ dependencies:
+ '@babel/core': 7.27.4
+ '@babel/helper-plugin-utils': 7.27.1
+ dev: true
+
+ /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/7.27.1_@babel+core@7.27.4:
+ resolution: {integrity: sha512-g4L7OYun04N1WyqMNjldFwlfPCLVkgB54A/YCXICZYBsvJJE3kByKv9c9+R/nAfmIfjl2rKYLNyMHboYbZaWaA==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+ dependencies:
+ '@babel/core': 7.27.4
+ '@babel/helper-plugin-utils': 7.27.1
+ dev: true
+
+ /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/7.27.1_@babel+core@7.27.4:
+ resolution: {integrity: sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.13.0
+ dependencies:
+ '@babel/core': 7.27.4
+ '@babel/helper-plugin-utils': 7.27.1
+ '@babel/helper-skip-transparent-expression-wrappers': 7.27.1
+ '@babel/plugin-transform-optional-chaining': 7.27.1_@babel+core@7.27.4
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/7.27.1_@babel+core@7.27.4:
+ resolution: {integrity: sha512-6BpaYGDavZqkI6yT+KSPdpZFfpnd68UKXbcjI9pJ13pvHhPrCKWOOLp+ysvMeA+DxnhuPpgIaRpxRxo5A9t5jw==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+ dependencies:
+ '@babel/core': 7.27.4
+ '@babel/helper-plugin-utils': 7.27.1
+ '@babel/traverse': 7.27.4
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@babel/plugin-proposal-private-property-in-object/7.21.0-placeholder-for-preset-env.2_@babel+core@7.27.4:
+ resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.27.4
+ dev: true
+
+ /@babel/plugin-syntax-import-assertions/7.27.1_@babel+core@7.27.4:
+ resolution: {integrity: sha512-UT/Jrhw57xg4ILHLFnzFpPDlMbcdEicaAtjPQpbj9wa8T4r5KVWCimHcL/460g8Ht0DMxDyjsLgiWSkVjnwPFg==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.27.4
+ '@babel/helper-plugin-utils': 7.27.1
+ dev: true
+
+ /@babel/plugin-syntax-import-attributes/7.27.1_@babel+core@7.27.4:
+ resolution: {integrity: sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.27.4
+ '@babel/helper-plugin-utils': 7.27.1
+ dev: true
+
+ /@babel/plugin-syntax-unicode-sets-regex/7.18.6_@babel+core@7.27.4:
+ resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+ dependencies:
+ '@babel/core': 7.27.4
+ '@babel/helper-create-regexp-features-plugin': 7.27.1_@babel+core@7.27.4
+ '@babel/helper-plugin-utils': 7.27.1
+ dev: true
+
+ /@babel/plugin-transform-arrow-functions/7.27.1_@babel+core@7.27.4:
+ resolution: {integrity: sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.27.4
+ '@babel/helper-plugin-utils': 7.27.1
+ dev: true
+
+ /@babel/plugin-transform-async-generator-functions/7.27.1_@babel+core@7.27.4:
+ resolution: {integrity: sha512-eST9RrwlpaoJBDHShc+DS2SG4ATTi2MYNb4OxYkf3n+7eb49LWpnS+HSpVfW4x927qQwgk8A2hGNVaajAEw0EA==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.27.4
+ '@babel/helper-plugin-utils': 7.27.1
+ '@babel/helper-remap-async-to-generator': 7.27.1_@babel+core@7.27.4
+ '@babel/traverse': 7.27.4
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@babel/plugin-transform-async-to-generator/7.27.1_@babel+core@7.27.4:
+ resolution: {integrity: sha512-NREkZsZVJS4xmTr8qzE5y8AfIPqsdQfRuUiLRTEzb7Qii8iFWCyDKaUV2c0rCuh4ljDZ98ALHP/PetiBV2nddA==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.27.4
+ '@babel/helper-module-imports': 7.27.1
+ '@babel/helper-plugin-utils': 7.27.1
+ '@babel/helper-remap-async-to-generator': 7.27.1_@babel+core@7.27.4
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@babel/plugin-transform-block-scoped-functions/7.27.1_@babel+core@7.27.4:
+ resolution: {integrity: sha512-cnqkuOtZLapWYZUYM5rVIdv1nXYuFVIltZ6ZJ7nIj585QsjKM5dhL2Fu/lICXZ1OyIAFc7Qy+bvDAtTXqGrlhg==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.27.4
+ '@babel/helper-plugin-utils': 7.27.1
+ dev: true
+
+ /@babel/plugin-transform-block-scoping/7.27.3_@babel+core@7.27.4:
+ resolution: {integrity: sha512-+F8CnfhuLhwUACIJMLWnjz6zvzYM2r0yeIHKlbgfw7ml8rOMJsXNXV/hyRcb3nb493gRs4WvYpQAndWj/qQmkQ==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.27.4
+ '@babel/helper-plugin-utils': 7.27.1
+ dev: true
+
+ /@babel/plugin-transform-class-properties/7.27.1_@babel+core@7.27.4:
+ resolution: {integrity: sha512-D0VcalChDMtuRvJIu3U/fwWjf8ZMykz5iZsg77Nuj821vCKI3zCyRLwRdWbsuJ/uRwZhZ002QtCqIkwC/ZkvbA==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.27.4
+ '@babel/helper-create-class-features-plugin': 7.27.1_@babel+core@7.27.4
+ '@babel/helper-plugin-utils': 7.27.1
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@babel/plugin-transform-class-static-block/7.27.1_@babel+core@7.27.4:
+ resolution: {integrity: sha512-s734HmYU78MVzZ++joYM+NkJusItbdRcbm+AGRgJCt3iA+yux0QpD9cBVdz3tKyrjVYWRl7j0mHSmv4lhV0aoA==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.12.0
+ dependencies:
+ '@babel/core': 7.27.4
+ '@babel/helper-create-class-features-plugin': 7.27.1_@babel+core@7.27.4
+ '@babel/helper-plugin-utils': 7.27.1
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@babel/plugin-transform-classes/7.27.1_@babel+core@7.27.4:
+ resolution: {integrity: sha512-7iLhfFAubmpeJe/Wo2TVuDrykh/zlWXLzPNdL0Jqn/Xu8R3QQ8h9ff8FQoISZOsw74/HFqFI7NX63HN7QFIHKA==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.27.4
+ '@babel/helper-annotate-as-pure': 7.27.3
+ '@babel/helper-compilation-targets': 7.27.2
+ '@babel/helper-plugin-utils': 7.27.1
+ '@babel/helper-replace-supers': 7.27.1_@babel+core@7.27.4
+ '@babel/traverse': 7.27.4
+ globals: 11.12.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@babel/plugin-transform-computed-properties/7.27.1_@babel+core@7.27.4:
+ resolution: {integrity: sha512-lj9PGWvMTVksbWiDT2tW68zGS/cyo4AkZ/QTp0sQT0mjPopCmrSkzxeXkznjqBxzDI6TclZhOJbBmbBLjuOZUw==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.27.4
+ '@babel/helper-plugin-utils': 7.27.1
+ '@babel/template': 7.27.2
+ dev: true
+
+ /@babel/plugin-transform-destructuring/7.27.3_@babel+core@7.27.4:
+ resolution: {integrity: sha512-s4Jrok82JpiaIprtY2nHsYmrThKvvwgHwjgd7UMiYhZaN0asdXNLr0y+NjTfkA7SyQE5i2Fb7eawUOZmLvyqOA==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.27.4
+ '@babel/helper-plugin-utils': 7.27.1
+ dev: true
+
+ /@babel/plugin-transform-dotall-regex/7.27.1_@babel+core@7.27.4:
+ resolution: {integrity: sha512-gEbkDVGRvjj7+T1ivxrfgygpT7GUd4vmODtYpbs0gZATdkX8/iSnOtZSxiZnsgm1YjTgjI6VKBGSJJevkrclzw==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.27.4
+ '@babel/helper-create-regexp-features-plugin': 7.27.1_@babel+core@7.27.4
+ '@babel/helper-plugin-utils': 7.27.1
+ dev: true
+
+ /@babel/plugin-transform-duplicate-keys/7.27.1_@babel+core@7.27.4:
+ resolution: {integrity: sha512-MTyJk98sHvSs+cvZ4nOauwTTG1JeonDjSGvGGUNHreGQns+Mpt6WX/dVzWBHgg+dYZhkC4X+zTDfkTU+Vy9y7Q==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.27.4
+ '@babel/helper-plugin-utils': 7.27.1
+ dev: true
+
+ /@babel/plugin-transform-duplicate-named-capturing-groups-regex/7.27.1_@babel+core@7.27.4:
+ resolution: {integrity: sha512-hkGcueTEzuhB30B3eJCbCYeCaaEQOmQR0AdvzpD4LoN0GXMWzzGSuRrxR2xTnCrvNbVwK9N6/jQ92GSLfiZWoQ==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+ dependencies:
+ '@babel/core': 7.27.4
+ '@babel/helper-create-regexp-features-plugin': 7.27.1_@babel+core@7.27.4
+ '@babel/helper-plugin-utils': 7.27.1
+ dev: true
+
+ /@babel/plugin-transform-dynamic-import/7.27.1_@babel+core@7.27.4:
+ resolution: {integrity: sha512-MHzkWQcEmjzzVW9j2q8LGjwGWpG2mjwaaB0BNQwst3FIjqsg8Ct/mIZlvSPJvfi9y2AC8mi/ktxbFVL9pZ1I4A==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.27.4
+ '@babel/helper-plugin-utils': 7.27.1
+ dev: true
+
+ /@babel/plugin-transform-exponentiation-operator/7.27.1_@babel+core@7.27.4:
+ resolution: {integrity: sha512-uspvXnhHvGKf2r4VVtBpeFnuDWsJLQ6MF6lGJLC89jBR1uoVeqM416AZtTuhTezOfgHicpJQmoD5YUakO/YmXQ==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.27.4
+ '@babel/helper-plugin-utils': 7.27.1
+ dev: true
+
+ /@babel/plugin-transform-export-namespace-from/7.27.1_@babel+core@7.27.4:
+ resolution: {integrity: sha512-tQvHWSZ3/jH2xuq/vZDy0jNn+ZdXJeM8gHvX4lnJmsc3+50yPlWdZXIc5ay+umX+2/tJIqHqiEqcJvxlmIvRvQ==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.27.4
+ '@babel/helper-plugin-utils': 7.27.1
+ dev: true
+
+ /@babel/plugin-transform-for-of/7.27.1_@babel+core@7.27.4:
+ resolution: {integrity: sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.27.4
+ '@babel/helper-plugin-utils': 7.27.1
+ '@babel/helper-skip-transparent-expression-wrappers': 7.27.1
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@babel/plugin-transform-function-name/7.27.1_@babel+core@7.27.4:
+ resolution: {integrity: sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.27.4
+ '@babel/helper-compilation-targets': 7.27.2
+ '@babel/helper-plugin-utils': 7.27.1
+ '@babel/traverse': 7.27.4
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@babel/plugin-transform-json-strings/7.27.1_@babel+core@7.27.4:
+ resolution: {integrity: sha512-6WVLVJiTjqcQauBhn1LkICsR2H+zm62I3h9faTDKt1qP4jn2o72tSvqMwtGFKGTpojce0gJs+76eZ2uCHRZh0Q==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.27.4
+ '@babel/helper-plugin-utils': 7.27.1
+ dev: true
+
+ /@babel/plugin-transform-literals/7.27.1_@babel+core@7.27.4:
+ resolution: {integrity: sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.27.4
+ '@babel/helper-plugin-utils': 7.27.1
+ dev: true
+
+ /@babel/plugin-transform-logical-assignment-operators/7.27.1_@babel+core@7.27.4:
+ resolution: {integrity: sha512-SJvDs5dXxiae4FbSL1aBJlG4wvl594N6YEVVn9e3JGulwioy6z3oPjx/sQBO3Y4NwUu5HNix6KJ3wBZoewcdbw==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.27.4
+ '@babel/helper-plugin-utils': 7.27.1
+ dev: true
+
+ /@babel/plugin-transform-member-expression-literals/7.27.1_@babel+core@7.27.4:
+ resolution: {integrity: sha512-hqoBX4dcZ1I33jCSWcXrP+1Ku7kdqXf1oeah7ooKOIiAdKQ+uqftgCFNOSzA5AMS2XIHEYeGFg4cKRCdpxzVOQ==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.27.4
+ '@babel/helper-plugin-utils': 7.27.1
+ dev: true
+
+ /@babel/plugin-transform-modules-amd/7.27.1_@babel+core@7.27.4:
+ resolution: {integrity: sha512-iCsytMg/N9/oFq6n+gFTvUYDZQOMK5kEdeYxmxt91fcJGycfxVP9CnrxoliM0oumFERba2i8ZtwRUCMhvP1LnA==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.27.4
+ '@babel/helper-module-transforms': 7.27.3_@babel+core@7.27.4
+ '@babel/helper-plugin-utils': 7.27.1
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@babel/plugin-transform-modules-commonjs/7.27.1_@babel+core@7.27.4:
+ resolution: {integrity: sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.27.4
+ '@babel/helper-module-transforms': 7.27.3_@babel+core@7.27.4
+ '@babel/helper-plugin-utils': 7.27.1
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@babel/plugin-transform-modules-systemjs/7.27.1_@babel+core@7.27.4:
+ resolution: {integrity: sha512-w5N1XzsRbc0PQStASMksmUeqECuzKuTJer7kFagK8AXgpCMkeDMO5S+aaFb7A51ZYDF7XI34qsTX+fkHiIm5yA==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.27.4
+ '@babel/helper-module-transforms': 7.27.3_@babel+core@7.27.4
+ '@babel/helper-plugin-utils': 7.27.1
+ '@babel/helper-validator-identifier': 7.27.1
+ '@babel/traverse': 7.27.4
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@babel/plugin-transform-modules-umd/7.27.1_@babel+core@7.27.4:
+ resolution: {integrity: sha512-iQBE/xC5BV1OxJbp6WG7jq9IWiD+xxlZhLrdwpPkTX3ydmXdvoCpyfJN7acaIBZaOqTfr76pgzqBJflNbeRK+w==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.27.4
+ '@babel/helper-module-transforms': 7.27.3_@babel+core@7.27.4
+ '@babel/helper-plugin-utils': 7.27.1
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@babel/plugin-transform-named-capturing-groups-regex/7.27.1_@babel+core@7.27.4:
+ resolution: {integrity: sha512-SstR5JYy8ddZvD6MhV0tM/j16Qds4mIpJTOd1Yu9J9pJjH93bxHECF7pgtc28XvkzTD6Pxcm/0Z73Hvk7kb3Ng==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+ dependencies:
+ '@babel/core': 7.27.4
+ '@babel/helper-create-regexp-features-plugin': 7.27.1_@babel+core@7.27.4
+ '@babel/helper-plugin-utils': 7.27.1
+ dev: true
+
+ /@babel/plugin-transform-new-target/7.27.1_@babel+core@7.27.4:
+ resolution: {integrity: sha512-f6PiYeqXQ05lYq3TIfIDu/MtliKUbNwkGApPUvyo6+tc7uaR4cPjPe7DFPr15Uyycg2lZU6btZ575CuQoYh7MQ==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.27.4
+ '@babel/helper-plugin-utils': 7.27.1
+ dev: true
+
+ /@babel/plugin-transform-nullish-coalescing-operator/7.27.1_@babel+core@7.27.4:
+ resolution: {integrity: sha512-aGZh6xMo6q9vq1JGcw58lZ1Z0+i0xB2x0XaauNIUXd6O1xXc3RwoWEBlsTQrY4KQ9Jf0s5rgD6SiNkaUdJegTA==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.27.4
+ '@babel/helper-plugin-utils': 7.27.1
+ dev: true
+
+ /@babel/plugin-transform-numeric-separator/7.27.1_@babel+core@7.27.4:
+ resolution: {integrity: sha512-fdPKAcujuvEChxDBJ5c+0BTaS6revLV7CJL08e4m3de8qJfNIuCc2nc7XJYOjBoTMJeqSmwXJ0ypE14RCjLwaw==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.27.4
+ '@babel/helper-plugin-utils': 7.27.1
+ dev: true
+
+ /@babel/plugin-transform-object-rest-spread/7.27.3_@babel+core@7.27.4:
+ resolution: {integrity: sha512-7ZZtznF9g4l2JCImCo5LNKFHB5eXnN39lLtLY5Tg+VkR0jwOt7TBciMckuiQIOIW7L5tkQOCh3bVGYeXgMx52Q==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.27.4
+ '@babel/helper-compilation-targets': 7.27.2
+ '@babel/helper-plugin-utils': 7.27.1
+ '@babel/plugin-transform-destructuring': 7.27.3_@babel+core@7.27.4
+ '@babel/plugin-transform-parameters': 7.27.1_@babel+core@7.27.4
+ dev: true
+
+ /@babel/plugin-transform-object-super/7.27.1_@babel+core@7.27.4:
+ resolution: {integrity: sha512-SFy8S9plRPbIcxlJ8A6mT/CxFdJx/c04JEctz4jf8YZaVS2px34j7NXRrlGlHkN/M2gnpL37ZpGRGVFLd3l8Ng==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.27.4
+ '@babel/helper-plugin-utils': 7.27.1
+ '@babel/helper-replace-supers': 7.27.1_@babel+core@7.27.4
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@babel/plugin-transform-optional-catch-binding/7.27.1_@babel+core@7.27.4:
+ resolution: {integrity: sha512-txEAEKzYrHEX4xSZN4kJ+OfKXFVSWKB2ZxM9dpcE3wT7smwkNmXo5ORRlVzMVdJbD+Q8ILTgSD7959uj+3Dm3Q==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
dependencies:
- '@algolia/client-common': 5.23.1
- '@algolia/requester-browser-xhr': 5.23.1
- '@algolia/requester-fetch': 5.23.1
- '@algolia/requester-node-http': 5.23.1
+ '@babel/core': 7.27.4
+ '@babel/helper-plugin-utils': 7.27.1
dev: true
- /@algolia/client-analytics/5.23.1:
- resolution: {integrity: sha512-Pr/hVwl2YN7xw0R9HS8KzG+R7IQAArdMQIqi/QYRmW6+Mst3cqGqvVJEAYOJUS5lAQ93pkAkc5ns1kFxSfWRIg==}
- engines: {node: '>= 14.0.0'}
+ /@babel/plugin-transform-optional-chaining/7.27.1_@babel+core@7.27.4:
+ resolution: {integrity: sha512-BQmKPPIuc8EkZgNKsv0X4bPmOoayeu4F1YCwx2/CfmDSXDbp7GnzlUH+/ul5VGfRg1AoFPsrIThlEBj2xb4CAg==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
dependencies:
- '@algolia/client-common': 5.23.1
- '@algolia/requester-browser-xhr': 5.23.1
- '@algolia/requester-fetch': 5.23.1
- '@algolia/requester-node-http': 5.23.1
+ '@babel/core': 7.27.4
+ '@babel/helper-plugin-utils': 7.27.1
+ '@babel/helper-skip-transparent-expression-wrappers': 7.27.1
+ transitivePeerDependencies:
+ - supports-color
dev: true
- /@algolia/client-common/5.23.1:
- resolution: {integrity: sha512-/xJtZl+A7GBNf1jkG/xsemur7JDkBWY8wh58iah1xvJxxxpi+WBYAtVkwS7Mn/D/PJFpuVNSHKkoC8+uT5jYKQ==}
- engines: {node: '>= 14.0.0'}
+ /@babel/plugin-transform-parameters/7.27.1_@babel+core@7.27.4:
+ resolution: {integrity: sha512-018KRk76HWKeZ5l4oTj2zPpSh+NbGdt0st5S6x0pga6HgrjBOJb24mMDHorFopOOd6YHkLgOZ+zaCjZGPO4aKg==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.27.4
+ '@babel/helper-plugin-utils': 7.27.1
dev: true
- /@algolia/client-insights/5.23.1:
- resolution: {integrity: sha512-tmg7ovakc0uOfp5vZv9CPLuMkIqEEn7Ra3NzU0GOpSjXTgQmcsw7QvzLQtD6u9oFPCMk+OqJ+4V/94P5M0yWSw==}
- engines: {node: '>= 14.0.0'}
+ /@babel/plugin-transform-private-methods/7.27.1_@babel+core@7.27.4:
+ resolution: {integrity: sha512-10FVt+X55AjRAYI9BrdISN9/AQWHqldOeZDUoLyif1Kn05a56xVBXb8ZouL8pZ9jem8QpXaOt8TS7RHUIS+GPA==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
dependencies:
- '@algolia/client-common': 5.23.1
- '@algolia/requester-browser-xhr': 5.23.1
- '@algolia/requester-fetch': 5.23.1
- '@algolia/requester-node-http': 5.23.1
+ '@babel/core': 7.27.4
+ '@babel/helper-create-class-features-plugin': 7.27.1_@babel+core@7.27.4
+ '@babel/helper-plugin-utils': 7.27.1
+ transitivePeerDependencies:
+ - supports-color
dev: true
- /@algolia/client-personalization/5.23.1:
- resolution: {integrity: sha512-jYsKIiCN5IlWG+F9vbrAXuXPy0u44HDYN3QrX+zfQ8Fr8cpdNHbQTuQAQfWpofhA6hYrrQ66Ms2KbXcdgkyPKw==}
- engines: {node: '>= 14.0.0'}
+ /@babel/plugin-transform-private-property-in-object/7.27.1_@babel+core@7.27.4:
+ resolution: {integrity: sha512-5J+IhqTi1XPa0DXF83jYOaARrX+41gOewWbkPyjMNRDqgOCqdffGh8L3f/Ek5utaEBZExjSAzcyjmV9SSAWObQ==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
dependencies:
- '@algolia/client-common': 5.23.1
- '@algolia/requester-browser-xhr': 5.23.1
- '@algolia/requester-fetch': 5.23.1
- '@algolia/requester-node-http': 5.23.1
+ '@babel/core': 7.27.4
+ '@babel/helper-annotate-as-pure': 7.27.3
+ '@babel/helper-create-class-features-plugin': 7.27.1_@babel+core@7.27.4
+ '@babel/helper-plugin-utils': 7.27.1
+ transitivePeerDependencies:
+ - supports-color
dev: true
- /@algolia/client-query-suggestions/5.23.1:
- resolution: {integrity: sha512-BDFiGQ6UdFsEMEigFlOAeL7VDysqf05qn+yyQUnGuOuzSbsqtlB4W6ZyZC1+jpY2tXGpGOMDh9ej2BQOoji8UQ==}
- engines: {node: '>= 14.0.0'}
+ /@babel/plugin-transform-property-literals/7.27.1_@babel+core@7.27.4:
+ resolution: {integrity: sha512-oThy3BCuCha8kDZ8ZkgOg2exvPYUlprMukKQXI1r1pJ47NCvxfkEy8vK+r/hT9nF0Aa4H1WUPZZjHTFtAhGfmQ==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
dependencies:
- '@algolia/client-common': 5.23.1
- '@algolia/requester-browser-xhr': 5.23.1
- '@algolia/requester-fetch': 5.23.1
- '@algolia/requester-node-http': 5.23.1
+ '@babel/core': 7.27.4
+ '@babel/helper-plugin-utils': 7.27.1
dev: true
- /@algolia/client-search/5.23.1:
- resolution: {integrity: sha512-5aW3B0F2aALh54rn/LLSZPigA0Wbpl4EZfI8g2KmAWHM3HLQtzFhpmeiItFMUklmmHwse4s/iDmRHlBhdHfFIQ==}
- engines: {node: '>= 14.0.0'}
+ /@babel/plugin-transform-regenerator/7.27.4_@babel+core@7.27.4:
+ resolution: {integrity: sha512-Glp/0n8xuj+E1588otw5rjJkTXfzW7FjH3IIUrfqiZOPQCd2vbg8e+DQE8jK9g4V5/zrxFW+D9WM9gboRPELpQ==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
dependencies:
- '@algolia/client-common': 5.23.1
- '@algolia/requester-browser-xhr': 5.23.1
- '@algolia/requester-fetch': 5.23.1
- '@algolia/requester-node-http': 5.23.1
+ '@babel/core': 7.27.4
+ '@babel/helper-plugin-utils': 7.27.1
dev: true
- /@algolia/ingestion/1.23.1:
- resolution: {integrity: sha512-YlS7wL1vFGd79/gDXHejfjcbLJHwh5Y9ljA6TEbsHsXeZuN8galpcMIDl9qadHJgx3PgQbwmWV87+EHGiLzXoQ==}
- engines: {node: '>= 14.0.0'}
+ /@babel/plugin-transform-regexp-modifiers/7.27.1_@babel+core@7.27.4:
+ resolution: {integrity: sha512-TtEciroaiODtXvLZv4rmfMhkCv8jx3wgKpL68PuiPh2M4fvz5jhsA7697N1gMvkvr/JTF13DrFYyEbY9U7cVPA==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0
dependencies:
- '@algolia/client-common': 5.23.1
- '@algolia/requester-browser-xhr': 5.23.1
- '@algolia/requester-fetch': 5.23.1
- '@algolia/requester-node-http': 5.23.1
+ '@babel/core': 7.27.4
+ '@babel/helper-create-regexp-features-plugin': 7.27.1_@babel+core@7.27.4
+ '@babel/helper-plugin-utils': 7.27.1
dev: true
- /@algolia/monitoring/1.23.1:
- resolution: {integrity: sha512-qD79lqsLv9G/nu6EIo3hjBBQr7rBt7QatdABT59HnQI5exbJBDMbtynu3VdrvvCfZ9XEb7j/HFbglbN7fVYKfA==}
- engines: {node: '>= 14.0.0'}
+ /@babel/plugin-transform-reserved-words/7.27.1_@babel+core@7.27.4:
+ resolution: {integrity: sha512-V2ABPHIJX4kC7HegLkYoDpfg9PVmuWy/i6vUM5eGK22bx4YVFD3M5F0QQnWQoDs6AGsUWTVOopBiMFQgHaSkVw==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
dependencies:
- '@algolia/client-common': 5.23.1
- '@algolia/requester-browser-xhr': 5.23.1
- '@algolia/requester-fetch': 5.23.1
- '@algolia/requester-node-http': 5.23.1
+ '@babel/core': 7.27.4
+ '@babel/helper-plugin-utils': 7.27.1
dev: true
- /@algolia/recommend/5.23.1:
- resolution: {integrity: sha512-kmQtotstkZCCojfqv4//XQhy+Y5rTkNTTadiJf/KsR1wBvLMIYDQtTR+1XZdHdVaJCnvW//gJA3KL84rQ91uPg==}
- engines: {node: '>= 14.0.0'}
+ /@babel/plugin-transform-shorthand-properties/7.27.1_@babel+core@7.27.4:
+ resolution: {integrity: sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
dependencies:
- '@algolia/client-common': 5.23.1
- '@algolia/requester-browser-xhr': 5.23.1
- '@algolia/requester-fetch': 5.23.1
- '@algolia/requester-node-http': 5.23.1
+ '@babel/core': 7.27.4
+ '@babel/helper-plugin-utils': 7.27.1
dev: true
- /@algolia/requester-browser-xhr/5.23.1:
- resolution: {integrity: sha512-BJfxcOWj3vAr3r4Oe9T3O+pg54qRZdeEmp5Lmzocog05rhfH/wgEXv/stFnuB+6MgLOOiXJNP1kdaiAHLzRZYw==}
- engines: {node: '>= 14.0.0'}
+ /@babel/plugin-transform-spread/7.27.1_@babel+core@7.27.4:
+ resolution: {integrity: sha512-kpb3HUqaILBJcRFVhFUs6Trdd4mkrzcGXss+6/mxUd273PfbWqSDHRzMT2234gIg2QYfAjvXLSquP1xECSg09Q==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
dependencies:
- '@algolia/client-common': 5.23.1
+ '@babel/core': 7.27.4
+ '@babel/helper-plugin-utils': 7.27.1
+ '@babel/helper-skip-transparent-expression-wrappers': 7.27.1
+ transitivePeerDependencies:
+ - supports-color
dev: true
- /@algolia/requester-fetch/5.23.1:
- resolution: {integrity: sha512-YTbslSbEpuCZn15eMx8djR1jYbJdELOIfvo5xLOBeSB/bGReHAOoQ9HHopCB17F40xaPQi6CJMXWx63ImMAN4w==}
- engines: {node: '>= 14.0.0'}
+ /@babel/plugin-transform-sticky-regex/7.27.1_@babel+core@7.27.4:
+ resolution: {integrity: sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
dependencies:
- '@algolia/client-common': 5.23.1
+ '@babel/core': 7.27.4
+ '@babel/helper-plugin-utils': 7.27.1
dev: true
- /@algolia/requester-node-http/5.23.1:
- resolution: {integrity: sha512-Jp/5Fqx+eREpmM179LOQpyvQOdsR3Pq2aVpsuoSdQ/8o4B6v38lmrkbbMrMsNayR59QQ9VkL2ImYKBysqB4Qug==}
- engines: {node: '>= 14.0.0'}
+ /@babel/plugin-transform-template-literals/7.27.1_@babel+core@7.27.4:
+ resolution: {integrity: sha512-fBJKiV7F2DxZUkg5EtHKXQdbsbURW3DZKQUWphDum0uRP6eHGGa/He9mc0mypL680pb+e/lDIthRohlv8NCHkg==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
dependencies:
- '@algolia/client-common': 5.23.1
+ '@babel/core': 7.27.4
+ '@babel/helper-plugin-utils': 7.27.1
dev: true
- /@antfu/install-pkg/1.0.0:
- resolution: {integrity: sha512-xvX6P/lo1B3ej0OsaErAjqgFYzYVcJpamjLAFLYh9vRJngBrMoUG7aVnrGTeqM7yxbyTD5p3F2+0/QUEh8Vzhw==}
+ /@babel/plugin-transform-typeof-symbol/7.27.1_@babel+core@7.27.4:
+ resolution: {integrity: sha512-RiSILC+nRJM7FY5srIyc4/fGIwUhyDuuBSdWn4y6yT6gm652DpCHZjIipgn6B7MQ1ITOUnAKWixEUjQRIBIcLw==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
dependencies:
- package-manager-detector: 0.2.11
- tinyexec: 0.3.2
+ '@babel/core': 7.27.4
+ '@babel/helper-plugin-utils': 7.27.1
dev: true
- /@antfu/utils/0.7.10:
- resolution: {integrity: sha512-+562v9k4aI80m1+VuMHehNJWLOFjBnXn3tdOitzD0il5b7smkSBal4+a3oKiQTbrwMmN/TBUMDvbdoWDehgOww==}
+ /@babel/plugin-transform-unicode-escapes/7.27.1_@babel+core@7.27.4:
+ resolution: {integrity: sha512-Ysg4v6AmF26k9vpfFuTZg8HRfVWzsh1kVfowA23y9j/Gu6dOuahdUVhkLqpObp3JIv27MLSii6noRnuKN8H0Mg==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.27.4
+ '@babel/helper-plugin-utils': 7.27.1
dev: true
- /@antfu/utils/8.1.1:
- resolution: {integrity: sha512-Mex9nXf9vR6AhcXmMrlz/HVgYYZpVGJ6YlPgwl7UnaFpnshXs6EK/oa5Gpf3CzENMjkvEx2tQtntGnb7UtSTOQ==}
+ /@babel/plugin-transform-unicode-property-regex/7.27.1_@babel+core@7.27.4:
+ resolution: {integrity: sha512-uW20S39PnaTImxp39O5qFlHLS9LJEmANjMG7SxIhap8rCHqu0Ik+tLEPX5DKmHn6CsWQ7j3lix2tFOa5YtL12Q==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.27.4
+ '@babel/helper-create-regexp-features-plugin': 7.27.1_@babel+core@7.27.4
+ '@babel/helper-plugin-utils': 7.27.1
dev: true
- /@babel/code-frame/7.26.2:
- resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==}
+ /@babel/plugin-transform-unicode-regex/7.27.1_@babel+core@7.27.4:
+ resolution: {integrity: sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw==}
engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
dependencies:
- '@babel/helper-validator-identifier': 7.25.9
- js-tokens: 4.0.0
- picocolors: 1.1.1
+ '@babel/core': 7.27.4
+ '@babel/helper-create-regexp-features-plugin': 7.27.1_@babel+core@7.27.4
+ '@babel/helper-plugin-utils': 7.27.1
dev: true
- /@babel/helper-string-parser/7.25.9:
- resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==}
+ /@babel/plugin-transform-unicode-sets-regex/7.27.1_@babel+core@7.27.4:
+ resolution: {integrity: sha512-EtkOujbc4cgvb0mlpQefi4NTPBzhSIevblFevACNLUspmrALgmEBdL/XfnyyITfd8fKBZrZys92zOWcik7j9Tw==}
engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+ dependencies:
+ '@babel/core': 7.27.4
+ '@babel/helper-create-regexp-features-plugin': 7.27.1_@babel+core@7.27.4
+ '@babel/helper-plugin-utils': 7.27.1
dev: true
- /@babel/helper-validator-identifier/7.25.9:
- resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==}
+ /@babel/preset-env/7.27.2_@babel+core@7.27.4:
+ resolution: {integrity: sha512-Ma4zSuYSlGNRlCLO+EAzLnCmJK2vdstgv+n7aUP+/IKZrOfWHOJVdSJtuub8RzHTj3ahD37k5OKJWvzf16TQyQ==}
engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/compat-data': 7.27.3
+ '@babel/core': 7.27.4
+ '@babel/helper-compilation-targets': 7.27.2
+ '@babel/helper-plugin-utils': 7.27.1
+ '@babel/helper-validator-option': 7.27.1
+ '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.27.1_@babel+core@7.27.4
+ '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.27.1_@babel+core@7.27.4
+ '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.27.1_@babel+core@7.27.4
+ '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.27.1_@babel+core@7.27.4
+ '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.27.1_@babel+core@7.27.4
+ '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2_@babel+core@7.27.4
+ '@babel/plugin-syntax-import-assertions': 7.27.1_@babel+core@7.27.4
+ '@babel/plugin-syntax-import-attributes': 7.27.1_@babel+core@7.27.4
+ '@babel/plugin-syntax-unicode-sets-regex': 7.18.6_@babel+core@7.27.4
+ '@babel/plugin-transform-arrow-functions': 7.27.1_@babel+core@7.27.4
+ '@babel/plugin-transform-async-generator-functions': 7.27.1_@babel+core@7.27.4
+ '@babel/plugin-transform-async-to-generator': 7.27.1_@babel+core@7.27.4
+ '@babel/plugin-transform-block-scoped-functions': 7.27.1_@babel+core@7.27.4
+ '@babel/plugin-transform-block-scoping': 7.27.3_@babel+core@7.27.4
+ '@babel/plugin-transform-class-properties': 7.27.1_@babel+core@7.27.4
+ '@babel/plugin-transform-class-static-block': 7.27.1_@babel+core@7.27.4
+ '@babel/plugin-transform-classes': 7.27.1_@babel+core@7.27.4
+ '@babel/plugin-transform-computed-properties': 7.27.1_@babel+core@7.27.4
+ '@babel/plugin-transform-destructuring': 7.27.3_@babel+core@7.27.4
+ '@babel/plugin-transform-dotall-regex': 7.27.1_@babel+core@7.27.4
+ '@babel/plugin-transform-duplicate-keys': 7.27.1_@babel+core@7.27.4
+ '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.27.1_@babel+core@7.27.4
+ '@babel/plugin-transform-dynamic-import': 7.27.1_@babel+core@7.27.4
+ '@babel/plugin-transform-exponentiation-operator': 7.27.1_@babel+core@7.27.4
+ '@babel/plugin-transform-export-namespace-from': 7.27.1_@babel+core@7.27.4
+ '@babel/plugin-transform-for-of': 7.27.1_@babel+core@7.27.4
+ '@babel/plugin-transform-function-name': 7.27.1_@babel+core@7.27.4
+ '@babel/plugin-transform-json-strings': 7.27.1_@babel+core@7.27.4
+ '@babel/plugin-transform-literals': 7.27.1_@babel+core@7.27.4
+ '@babel/plugin-transform-logical-assignment-operators': 7.27.1_@babel+core@7.27.4
+ '@babel/plugin-transform-member-expression-literals': 7.27.1_@babel+core@7.27.4
+ '@babel/plugin-transform-modules-amd': 7.27.1_@babel+core@7.27.4
+ '@babel/plugin-transform-modules-commonjs': 7.27.1_@babel+core@7.27.4
+ '@babel/plugin-transform-modules-systemjs': 7.27.1_@babel+core@7.27.4
+ '@babel/plugin-transform-modules-umd': 7.27.1_@babel+core@7.27.4
+ '@babel/plugin-transform-named-capturing-groups-regex': 7.27.1_@babel+core@7.27.4
+ '@babel/plugin-transform-new-target': 7.27.1_@babel+core@7.27.4
+ '@babel/plugin-transform-nullish-coalescing-operator': 7.27.1_@babel+core@7.27.4
+ '@babel/plugin-transform-numeric-separator': 7.27.1_@babel+core@7.27.4
+ '@babel/plugin-transform-object-rest-spread': 7.27.3_@babel+core@7.27.4
+ '@babel/plugin-transform-object-super': 7.27.1_@babel+core@7.27.4
+ '@babel/plugin-transform-optional-catch-binding': 7.27.1_@babel+core@7.27.4
+ '@babel/plugin-transform-optional-chaining': 7.27.1_@babel+core@7.27.4
+ '@babel/plugin-transform-parameters': 7.27.1_@babel+core@7.27.4
+ '@babel/plugin-transform-private-methods': 7.27.1_@babel+core@7.27.4
+ '@babel/plugin-transform-private-property-in-object': 7.27.1_@babel+core@7.27.4
+ '@babel/plugin-transform-property-literals': 7.27.1_@babel+core@7.27.4
+ '@babel/plugin-transform-regenerator': 7.27.4_@babel+core@7.27.4
+ '@babel/plugin-transform-regexp-modifiers': 7.27.1_@babel+core@7.27.4
+ '@babel/plugin-transform-reserved-words': 7.27.1_@babel+core@7.27.4
+ '@babel/plugin-transform-shorthand-properties': 7.27.1_@babel+core@7.27.4
+ '@babel/plugin-transform-spread': 7.27.1_@babel+core@7.27.4
+ '@babel/plugin-transform-sticky-regex': 7.27.1_@babel+core@7.27.4
+ '@babel/plugin-transform-template-literals': 7.27.1_@babel+core@7.27.4
+ '@babel/plugin-transform-typeof-symbol': 7.27.1_@babel+core@7.27.4
+ '@babel/plugin-transform-unicode-escapes': 7.27.1_@babel+core@7.27.4
+ '@babel/plugin-transform-unicode-property-regex': 7.27.1_@babel+core@7.27.4
+ '@babel/plugin-transform-unicode-regex': 7.27.1_@babel+core@7.27.4
+ '@babel/plugin-transform-unicode-sets-regex': 7.27.1_@babel+core@7.27.4
+ '@babel/preset-modules': 0.1.6-no-external-plugins_@babel+core@7.27.4
+ babel-plugin-polyfill-corejs2: 0.4.13_@babel+core@7.27.4
+ babel-plugin-polyfill-corejs3: 0.11.1_@babel+core@7.27.4
+ babel-plugin-polyfill-regenerator: 0.6.4_@babel+core@7.27.4
+ core-js-compat: 3.42.0
+ semver: 6.3.1
+ transitivePeerDependencies:
+ - supports-color
dev: true
- /@babel/parser/7.27.0:
- resolution: {integrity: sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==}
- engines: {node: '>=6.0.0'}
- hasBin: true
+ /@babel/preset-modules/0.1.6-no-external-plugins_@babel+core@7.27.4:
+ resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0
dependencies:
- '@babel/types': 7.27.0
+ '@babel/core': 7.27.4
+ '@babel/helper-plugin-utils': 7.27.1
+ '@babel/types': 7.27.3
+ esutils: 2.0.3
dev: true
/@babel/runtime/7.23.2:
@@ -474,12 +1500,43 @@ packages:
regenerator-runtime: 0.14.1
dev: true
+ /@babel/template/7.27.2:
+ resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/code-frame': 7.27.1
+ '@babel/parser': 7.27.4
+ '@babel/types': 7.27.3
+ dev: true
+
+ /@babel/traverse/7.27.4:
+ resolution: {integrity: sha512-oNcu2QbHqts9BtOWJosOVJapWjBDSxGCpFvikNR5TGDYDQf3JwpIoMzIKrvfoti93cLfPJEG4tH9SPVeyCGgdA==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/code-frame': 7.27.1
+ '@babel/generator': 7.27.3
+ '@babel/parser': 7.27.4
+ '@babel/template': 7.27.2
+ '@babel/types': 7.27.3
+ debug: 4.4.0
+ globals: 11.12.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
/@babel/types/7.27.0:
resolution: {integrity: sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==}
engines: {node: '>=6.9.0'}
dependencies:
'@babel/helper-string-parser': 7.25.9
'@babel/helper-validator-identifier': 7.25.9
+
+ /@babel/types/7.27.3:
+ resolution: {integrity: sha512-Y1GkI4ktrtvmawoSq+4FCVHNryea6uR+qUQy0AGxLSsjCX0nVmkYQMBLHDkXZuo5hGx7eYdnIaslsdBFm7zbUw==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/helper-string-parser': 7.27.1
+ '@babel/helper-validator-identifier': 7.27.1
dev: true
/@bcoe/v8-coverage/0.2.3:
@@ -669,10 +1726,10 @@ packages:
resolution: {integrity: sha512-cQbnVbq0rrBwNAKegIac/t6a8nWoUAn8frnkLFW6YARaRmAQr5/Eoe6Ln2fqkUCZ40KpdrKbpSAmgrkviOxuWA==}
dev: true
- /@docsearch/js/3.8.2:
+ /@docsearch/js/3.8.2_rjv6y3krrl5rwzkal4h52azgya:
resolution: {integrity: sha512-Q5wY66qHn0SwA7Taa0aDbHiJvaFJLOJyHmooQ7y8hlwwQLQ/5WwCcoX0g7ii04Qi2DJlHsd0XXzJ8Ypw9+9YmQ==}
dependencies:
- '@docsearch/react': 3.8.2
+ '@docsearch/react': 3.8.2_rjv6y3krrl5rwzkal4h52azgya
preact: 10.26.4
transitivePeerDependencies:
- '@algolia/client-search'
@@ -682,10 +1739,10 @@ packages:
- search-insights
dev: true
- /@docsearch/js/3.9.0:
+ /@docsearch/js/3.9.0_rjv6y3krrl5rwzkal4h52azgya:
resolution: {integrity: sha512-4bKHcye6EkLgRE8ze0vcdshmEqxeiJM77M0JXjef7lrYZfSlMunrDOCqyLjiZyo1+c0BhUqA2QpFartIjuHIjw==}
dependencies:
- '@docsearch/react': 3.9.0
+ '@docsearch/react': 3.9.0_rjv6y3krrl5rwzkal4h52azgya
preact: 10.26.4
transitivePeerDependencies:
- '@algolia/client-search'
@@ -695,7 +1752,7 @@ packages:
- search-insights
dev: true
- /@docsearch/react/3.8.2:
+ /@docsearch/react/3.8.2_rjv6y3krrl5rwzkal4h52azgya:
resolution: {integrity: sha512-xCRrJQlTt8N9GU0DG4ptwHRkfnSnD/YpdeaXe02iKfqs97TkZJv60yE+1eq/tjPcVnTW8dP5qLP7itifFVV5eg==}
peerDependencies:
'@types/react': '>= 16.8.0 < 19.0.0'
@@ -712,15 +1769,17 @@ packages:
search-insights:
optional: true
dependencies:
- '@algolia/autocomplete-core': 1.17.7_algoliasearch@5.23.1
- '@algolia/autocomplete-preset-algolia': 1.17.7_algoliasearch@5.23.1
+ '@algolia/autocomplete-core': 1.17.7_vodhaecvskiwpluroz46xmd4oy
+ '@algolia/autocomplete-preset-algolia': 1.17.7_5b5vtcx4jjghcnvdt5h4c2l4vy
'@docsearch/css': 3.8.2
+ '@types/react': 18.3.23
algoliasearch: 5.23.1
+ search-insights: 2.17.3
transitivePeerDependencies:
- '@algolia/client-search'
dev: true
- /@docsearch/react/3.9.0:
+ /@docsearch/react/3.9.0_rjv6y3krrl5rwzkal4h52azgya:
resolution: {integrity: sha512-mb5FOZYZIkRQ6s/NWnM98k879vu5pscWqTLubLFBO87igYYT4VzVazh4h5o/zCvTIZgEt3PvsCOMOswOUo9yHQ==}
peerDependencies:
'@types/react': '>= 16.8.0 < 20.0.0'
@@ -737,10 +1796,12 @@ packages:
search-insights:
optional: true
dependencies:
- '@algolia/autocomplete-core': 1.17.9_algoliasearch@5.23.1
- '@algolia/autocomplete-preset-algolia': 1.17.9_algoliasearch@5.23.1
+ '@algolia/autocomplete-core': 1.17.9_vodhaecvskiwpluroz46xmd4oy
+ '@algolia/autocomplete-preset-algolia': 1.17.9_5b5vtcx4jjghcnvdt5h4c2l4vy
'@docsearch/css': 3.9.0
+ '@types/react': 18.3.23
algoliasearch: 5.23.1
+ search-insights: 2.17.3
transitivePeerDependencies:
- '@algolia/client-search'
dev: true
@@ -1609,9 +2670,15 @@ packages:
engines: {node: '>=6.0.0'}
dev: true
+ /@jridgewell/source-map/0.3.6:
+ resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==}
+ dependencies:
+ '@jridgewell/gen-mapping': 0.3.8
+ '@jridgewell/trace-mapping': 0.3.25
+ dev: true
+
/@jridgewell/sourcemap-codec/1.5.0:
resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==}
- dev: true
/@jridgewell/trace-mapping/0.3.25:
resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==}
@@ -1738,6 +2805,79 @@ packages:
resolution: {integrity: sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw==}
dev: true
+ /@rollup/plugin-babel/5.3.1_h2wdawvvx3hnqk2p4pcfrsdv2m:
+ resolution: {integrity: sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==}
+ engines: {node: '>= 10.0.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+ '@types/babel__core': ^7.1.9
+ rollup: ^1.20.0||^2.0.0
+ peerDependenciesMeta:
+ '@types/babel__core':
+ optional: true
+ dependencies:
+ '@babel/core': 7.27.4
+ '@babel/helper-module-imports': 7.27.1
+ '@rollup/pluginutils': 3.1.0_rollup@2.79.2
+ rollup: 2.79.2
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@rollup/plugin-node-resolve/15.3.1_rollup@2.79.2:
+ resolution: {integrity: sha512-tgg6b91pAybXHJQMAAwW9VuWBO6Thi+q7BCNARLwSqlmsHz0XYURtGvh/AuwSADXSI4h/2uHbs7s4FzlZDGSGA==}
+ engines: {node: '>=14.0.0'}
+ peerDependencies:
+ rollup: ^2.78.0||^3.0.0||^4.0.0
+ peerDependenciesMeta:
+ rollup:
+ optional: true
+ dependencies:
+ '@rollup/pluginutils': 5.1.4_rollup@2.79.2
+ '@types/resolve': 1.20.2
+ deepmerge: 4.3.1
+ is-module: 1.0.0
+ resolve: 1.22.10
+ rollup: 2.79.2
+ dev: true
+
+ /@rollup/plugin-replace/2.4.2_rollup@2.79.2:
+ resolution: {integrity: sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==}
+ peerDependencies:
+ rollup: ^1.20.0 || ^2.0.0
+ dependencies:
+ '@rollup/pluginutils': 3.1.0_rollup@2.79.2
+ magic-string: 0.25.9
+ rollup: 2.79.2
+ dev: true
+
+ /@rollup/plugin-terser/0.4.4_rollup@2.79.2:
+ resolution: {integrity: sha512-XHeJC5Bgvs8LfukDwWZp7yeqin6ns8RTl2B9avbejt6tZqsqvVoWI7ZTQrcNsfKEDWBTnTxM8nMDkO2IFFbd0A==}
+ engines: {node: '>=14.0.0'}
+ peerDependencies:
+ rollup: ^2.0.0||^3.0.0||^4.0.0
+ peerDependenciesMeta:
+ rollup:
+ optional: true
+ dependencies:
+ rollup: 2.79.2
+ serialize-javascript: 6.0.2
+ smob: 1.5.0
+ terser: 5.40.0
+ dev: true
+
+ /@rollup/pluginutils/3.1.0_rollup@2.79.2:
+ resolution: {integrity: sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==}
+ engines: {node: '>= 8.0.0'}
+ peerDependencies:
+ rollup: ^1.20.0||^2.0.0
+ dependencies:
+ '@types/estree': 0.0.39
+ estree-walker: 1.0.1
+ picomatch: 2.3.1
+ rollup: 2.79.2
+ dev: true
+
/@rollup/pluginutils/5.1.4:
resolution: {integrity: sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==}
engines: {node: '>=14.0.0'}
@@ -1752,6 +2892,21 @@ packages:
picomatch: 4.0.2
dev: true
+ /@rollup/pluginutils/5.1.4_rollup@2.79.2:
+ resolution: {integrity: sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==}
+ engines: {node: '>=14.0.0'}
+ peerDependencies:
+ rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0
+ peerDependenciesMeta:
+ rollup:
+ optional: true
+ dependencies:
+ '@types/estree': 1.0.7
+ estree-walker: 2.0.2
+ picomatch: 4.0.2
+ rollup: 2.79.2
+ dev: true
+
/@rollup/rollup-android-arm-eabi/4.39.0:
resolution: {integrity: sha512-lGVys55Qb00Wvh8DMAocp5kIcaNzEFTmGhfFd88LfaogYTRKrdxgtlO5H6S49v2Nd8R2C6wLOal0qv6/kCkOwA==}
cpu: [arm]
@@ -1912,11 +3067,11 @@ packages:
dev: true
optional: true
- /@ruabick/utils/0.3.3_4dydiev6zwdmgkjmzqeg75ctza:
+ /@ruabick/utils/0.3.3_pfrxxcnxc2tz5ic4db3wq5lsse:
resolution: {integrity: sha512-YvZHOjwE2FJ8PAXPPMGka9qp7Z513yEZNyDFshJNfvl8q2TNvKU34jtsWeTuKYfqZVFV8mOnFNdaFo/fuGDcEQ==}
dependencies:
'@vue/compiler-core': 3.5.13
- vitepress: 1.0.0-alpha.29_4dydiev6zwdmgkjmzqeg75ctza
+ vitepress: 1.0.0-alpha.29_pfrxxcnxc2tz5ic4db3wq5lsse
transitivePeerDependencies:
- '@algolia/client-search'
- '@types/node'
@@ -2119,6 +3274,15 @@ packages:
resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==}
dev: true
+ /@surma/rollup-plugin-off-main-thread/2.2.3:
+ resolution: {integrity: sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ==}
+ dependencies:
+ ejs: 3.1.10
+ json5: 2.2.3
+ magic-string: 0.25.9
+ string.prototype.matchall: 4.0.12
+ dev: true
+
/@ts-morph/common/0.12.3:
resolution: {integrity: sha512-4tUmeLyXJnJWvTFOKtcNJ1yh0a3SsTLi2MUoyj8iUNznFRN1ZquaNe7Oukqrnki2FzZkm0J9adCNLDZxUzvj+w==}
dependencies:
@@ -2178,6 +3342,10 @@ packages:
resolution: {integrity: sha512-/pC9HAB5I/xMlc5FP77qjCnI16ChlJfW0tGa0IUcFn38VJrTV6DeZ60NU5KZBtaOZqjdpwTWohz5HU1RrhiYxQ==}
dev: true
+ /@types/estree/0.0.39:
+ resolution: {integrity: sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==}
+ dev: true
+
/@types/estree/1.0.7:
resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==}
dev: true
@@ -2290,14 +3458,31 @@ packages:
resolution: {integrity: sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==}
dev: true
+ /@types/prop-types/15.7.14:
+ resolution: {integrity: sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ==}
+ dev: true
+
/@types/qs/6.9.18:
resolution: {integrity: sha512-kK7dgTYDyGqS+e2Q4aK9X3D7q234CIZ1Bv0q/7Z5IwRDoADNU81xXJK/YVyLbLTZCoIwUoDoffFeF+p/eIklAA==}
dev: true
- /@types/react-dom/18.3.6:
+ /@types/react-dom/18.3.6_@types+react@18.3.23:
resolution: {integrity: sha512-nf22//wEbKXusP6E9pfOCDwFdHAX4u172eaJI4YkDRQEZiorm6KfYnSC2SWLDMVWUOWPERmJnN0ujeAfTBLvrw==}
peerDependencies:
'@types/react': ^18.0.0
+ dependencies:
+ '@types/react': 18.3.23
+ dev: true
+
+ /@types/react/18.3.23:
+ resolution: {integrity: sha512-/LDXMQh55EzZQ0uVAZmKKhfENivEvWz6E+EYzh+/MCjMhNsotd+ZHhBGIjFDTi6+fz0OhQQQLbTgdQIxxCsC0w==}
+ dependencies:
+ '@types/prop-types': 15.7.14
+ csstype: 3.1.3
+ dev: true
+
+ /@types/resolve/1.20.2:
+ resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==}
dev: true
/@types/semver/7.7.0:
@@ -2308,6 +3493,10 @@ packages:
resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==}
dev: true
+ /@types/trusted-types/2.0.7:
+ resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==}
+ dev: true
+
/@types/unist/3.0.3:
resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==}
dev: true
@@ -2567,7 +3756,7 @@ packages:
resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==}
dev: true
- /@vite-pwa/vitepress/1.0.0:
+ /@vite-pwa/vitepress/1.0.0_vite-plugin-pwa@1.0.0:
resolution: {integrity: sha512-i5RFah4urA6tZycYlGyBslVx8cVzbZBcARJLDg5rWMfAkRmyLtpRU6usGfVOwyN9kjJ2Bkm+gBHXF1hhr7HptQ==}
peerDependencies:
'@vite-pwa/assets-generator': ^1.0.0
@@ -2575,6 +3764,8 @@ packages:
peerDependenciesMeta:
'@vite-pwa/assets-generator':
optional: true
+ dependencies:
+ vite-plugin-pwa: 1.0.0_vite@3.0.2
dev: true
/@vitejs/plugin-vue/2.3.4_vite@2.9.18+vue@3.5.13:
@@ -2590,33 +3781,23 @@ packages:
/@vitejs/plugin-vue/2.3.4_vite@3.0.2+vue@3.5.13:
resolution: {integrity: sha512-IfFNbtkbIm36O9KB8QodlwwYvTEsJb4Lll4c2IwB3VHc2gie2mSPtSzL0eYay7X2jd/2WX02FjSGTWR6OPr/zg==}
- engines: {node: '>=12.0.0'}
- peerDependencies:
- vite: ^2.5.10
- vue: ^3.2.25
- dependencies:
- vite: 3.0.2_less@4.2.2
- vue: 3.5.13_typescript@5.8.2
- dev: true
-
- /@vitejs/plugin-vue/3.2.0_vite@3.2.11+vue@3.5.13:
- resolution: {integrity: sha512-E0tnaL4fr+qkdCNxJ+Xd0yM31UwMkQje76fsDVBBUCoGOUPexu2VDUYHL8P4CwV+zMvWw6nlRw19OnRKmYAJpw==}
- engines: {node: ^14.18.0 || >=16.0.0}
+ engines: {node: '>=12.0.0'}
peerDependencies:
- vite: ^3.0.0
+ vite: ^2.5.10
vue: ^3.2.25
dependencies:
- vite: 3.2.11_ue4hszsjlr3ayqwkvy34jdue3e
+ vite: 3.0.2_less@4.2.2
vue: 3.5.13_typescript@5.8.2
dev: true
- /@vitejs/plugin-vue/3.2.0_vue@3.5.13:
+ /@vitejs/plugin-vue/3.2.0_vite@3.2.11+vue@3.5.13:
resolution: {integrity: sha512-E0tnaL4fr+qkdCNxJ+Xd0yM31UwMkQje76fsDVBBUCoGOUPexu2VDUYHL8P4CwV+zMvWw6nlRw19OnRKmYAJpw==}
engines: {node: ^14.18.0 || >=16.0.0}
peerDependencies:
vite: ^3.0.0
vue: ^3.2.25
dependencies:
+ vite: 3.2.11_less@4.2.2
vue: 3.5.13
dev: true
@@ -2804,14 +3985,14 @@ packages:
'@volar/vue-language-core': 1.0.9
dev: true
- /@vue-hooks-plus/md-demo-plugins/1.1.0_6xgyufr755ieb744rnjknwxdqq:
+ /@vue-hooks-plus/md-demo-plugins/1.1.0_4hfvhstsfslvn7fjhkqqeebcea:
resolution: {integrity: sha512-61S5aFlrOm1c5+V+pX6g9dY5DGQVi6rQJrJ+Bu/wuLiIKzftlDXblLL1EeYaviAo8hGNBcgHRT7C7zRGb//vJw==}
dependencies:
'@vue/compiler-core': 3.5.13
fs-extra: 10.1.0
gray-matter: 4.0.3
markdown-it: 13.0.2
- vitepress: 1.0.0-alpha.4_6xgyufr755ieb744rnjknwxdqq
+ vitepress: 1.0.0-alpha.4_4hfvhstsfslvn7fjhkqqeebcea
transitivePeerDependencies:
- '@algolia/client-search'
- '@types/react'
@@ -2832,11 +4013,11 @@ packages:
lodash: 4.17.21
dev: true
- /@vue-hooks-plus/vite-plugin-gen-temp/2.6.6_4dydiev6zwdmgkjmzqeg75ctza:
+ /@vue-hooks-plus/vite-plugin-gen-temp/2.6.6_pfrxxcnxc2tz5ic4db3wq5lsse:
resolution: {integrity: sha512-3fvLDq4TDMmHj6ZzeAie8Gw75U2KSE2V/lVy3aAeuxRtAqCQfigXNTIz6sPSfrJZrOARe4sxVok3qbWjP3m9vw==}
hasBin: true
dependencies:
- '@ruabick/utils': 0.3.3_4dydiev6zwdmgkjmzqeg75ctza
+ '@ruabick/utils': 0.3.3_pfrxxcnxc2tz5ic4db3wq5lsse
chokidar: 3.6.0
colorette: 2.0.20
fast-glob: 3.3.3
@@ -2861,13 +4042,13 @@ packages:
- typescript
dev: true
- /@vue-hooks-plus/vitepress/1.2.4_6xgyufr755ieb744rnjknwxdqq:
+ /@vue-hooks-plus/vitepress/1.2.4_4hfvhstsfslvn7fjhkqqeebcea:
resolution: {integrity: sha512-mP6goD88OLY981sVEbbqGXgApx+KXS9TciA22mXSV9fgdKeYhTb6CIjDCueR029O44kaEyJNG/TBcWvk3Qj7Cw==}
engines: {node: '>=14.6.0'}
hasBin: true
dependencies:
'@docsearch/css': 3.9.0
- '@docsearch/js': 3.9.0
+ '@docsearch/js': 3.9.0_rjv6y3krrl5rwzkal4h52azgya
'@vitejs/plugin-vue': 2.3.4_vite@2.9.18+vue@3.5.13
'@vue/devtools-api': 6.6.4
'@vueuse/core': 8.9.4_vue@3.5.13
@@ -2896,14 +4077,12 @@ packages:
entities: 4.5.0
estree-walker: 2.0.2
source-map-js: 1.2.1
- dev: true
/@vue/compiler-dom/3.5.13:
resolution: {integrity: sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA==}
dependencies:
'@vue/compiler-core': 3.5.13
'@vue/shared': 3.5.13
- dev: true
/@vue/compiler-sfc/3.5.13:
resolution: {integrity: sha512-6VdaljMpD82w6c2749Zhf5T9u5uLBWKnVue6XWxprDobftnletJ8+oel7sexFfM3qIxNmVE7LSFGTpv6obNyaQ==}
@@ -2917,14 +4096,12 @@ packages:
magic-string: 0.30.17
postcss: 8.5.3
source-map-js: 1.2.1
- dev: true
/@vue/compiler-ssr/3.5.13:
resolution: {integrity: sha512-wMH6vrYHxQl/IybKJagqbquvxpWCuVYpoUJfCqFZwa/JY1GdATAQ+TgVtgrwwMZ0D07QhA99rs/EAAWfvG6KpA==}
dependencies:
'@vue/compiler-dom': 3.5.13
'@vue/shared': 3.5.13
- dev: true
/@vue/devtools-api/6.6.4:
resolution: {integrity: sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==}
@@ -2977,14 +4154,12 @@ packages:
resolution: {integrity: sha512-NaCwtw8o48B9I6L1zl2p41OHo/2Z4wqYGGIK1Khu5T7yxrn+ATOixn/Udn2m+6kZKB/J7cuT9DbWWhRxqixACg==}
dependencies:
'@vue/shared': 3.5.13
- dev: true
/@vue/runtime-core/3.5.13:
resolution: {integrity: sha512-Fj4YRQ3Az0WTZw1sFe+QDb0aXCerigEpw418pw1HBUKFtnQHWzwojaukAs2X/c9DQz4MQ4bsXTGlcpGxU/RCIw==}
dependencies:
'@vue/reactivity': 3.5.13
'@vue/shared': 3.5.13
- dev: true
/@vue/runtime-dom/3.5.13:
resolution: {integrity: sha512-dLaj94s93NYLqjLiyFzVs9X6dWhTdAlEAciC3Moq7gzAc13VJUdCnjjRurNM6uTLFATRHexHCTu/Xp3eW6yoog==}
@@ -2993,7 +4168,6 @@ packages:
'@vue/runtime-core': 3.5.13
'@vue/shared': 3.5.13
csstype: 3.1.3
- dev: true
/@vue/server-renderer/3.5.13_vue@3.5.13:
resolution: {integrity: sha512-wAi4IRJV/2SAW3htkTlB+dHeRmpTiVIK1OGLWV1yeStVSebSQQOwGwIq0D3ZIoBj2C2qpgz5+vX9iEBkTdk5YA==}
@@ -3003,11 +4177,9 @@ packages:
'@vue/compiler-ssr': 3.5.13
'@vue/shared': 3.5.13
vue: 3.5.13
- dev: true
/@vue/shared/3.5.13:
resolution: {integrity: sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==}
- dev: true
/@vue/test-utils/2.4.6:
resolution: {integrity: sha512-FMxEjOpYNYiFe0GkaHsnJPXFHxQ6m4t8vI/ElPGpMWxZKpmRvQ33OIrvRXemy6yha03RxhOlQuy+gZMC3CQSow==}
@@ -3325,6 +4497,14 @@ packages:
resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
dev: true
+ /array-buffer-byte-length/1.0.2:
+ resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bound: 1.0.4
+ is-array-buffer: 3.0.5
+ dev: true
+
/array-ify/1.0.0:
resolution: {integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==}
dev: true
@@ -3346,6 +4526,19 @@ packages:
engines: {node: '>=0.10.0'}
dev: true
+ /arraybuffer.prototype.slice/1.0.4:
+ resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ array-buffer-byte-length: 1.0.2
+ call-bind: 1.0.8
+ define-properties: 1.2.1
+ es-abstract: 1.24.0
+ es-errors: 1.3.0
+ get-intrinsic: 1.3.0
+ is-array-buffer: 3.0.5
+ dev: true
+
/arrify/1.0.1:
resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==}
engines: {node: '>=0.10.0'}
@@ -3360,16 +4553,37 @@ packages:
engines: {node: '>=12'}
dev: true
+ /async-function/1.0.0:
+ resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==}
+ engines: {node: '>= 0.4'}
+ dev: true
+
/async/2.6.4:
resolution: {integrity: sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==}
dependencies:
lodash: 4.17.21
dev: true
+ /async/3.2.6:
+ resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==}
+ dev: true
+
/asynckit/0.4.0:
resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==}
dev: true
+ /at-least-node/1.0.0:
+ resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==}
+ engines: {node: '>= 4.0.0'}
+ dev: true
+
+ /available-typed-arrays/1.0.7:
+ resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ possible-typed-array-names: 1.1.0
+ dev: true
+
/axios/1.8.4:
resolution: {integrity: sha512-eBSYY4Y68NNlHbHBMdeDmKNtDgXWhQsJcGqzO3iLUM0GraQFSS9cVgPX5I9b3lbdFKyYoAEGAZF1DwhTaljNAw==}
dependencies:
@@ -3380,6 +4594,42 @@ packages:
- debug
dev: true
+ /babel-plugin-polyfill-corejs2/0.4.13_@babel+core@7.27.4:
+ resolution: {integrity: sha512-3sX/eOms8kd3q2KZ6DAhKPc0dgm525Gqq5NtWKZ7QYYZEv57OQ54KtblzJzH1lQF/eQxO8KjWGIK9IPUJNus5g==}
+ peerDependencies:
+ '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0
+ dependencies:
+ '@babel/compat-data': 7.27.3
+ '@babel/core': 7.27.4
+ '@babel/helper-define-polyfill-provider': 0.6.4_@babel+core@7.27.4
+ semver: 6.3.1
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /babel-plugin-polyfill-corejs3/0.11.1_@babel+core@7.27.4:
+ resolution: {integrity: sha512-yGCqvBT4rwMczo28xkH/noxJ6MZ4nJfkVYdoDaC/utLtWrXxv27HVrzAeSbqR8SxDsp46n0YF47EbHoixy6rXQ==}
+ peerDependencies:
+ '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0
+ dependencies:
+ '@babel/core': 7.27.4
+ '@babel/helper-define-polyfill-provider': 0.6.4_@babel+core@7.27.4
+ core-js-compat: 3.42.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /babel-plugin-polyfill-regenerator/0.6.4_@babel+core@7.27.4:
+ resolution: {integrity: sha512-7gD3pRadPrbjhjLyxebmx/WrFYcuSjZ0XbdUujQMZ/fcE9oeewk2U/7PCvez84UeuK3oSjmPZ0Ch0dlupQvGzw==}
+ peerDependencies:
+ '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0
+ dependencies:
+ '@babel/core': 7.27.4
+ '@babel/helper-define-polyfill-provider': 0.6.4_@babel+core@7.27.4
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
/balanced-match/1.0.2:
resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
dev: true
@@ -3429,6 +4679,21 @@ packages:
unload: 2.4.1
dev: true
+ /browserslist/4.25.0:
+ resolution: {integrity: sha512-PJ8gYKeS5e/whHBh8xrwYK+dAvEj7JXtz6uTucnMRB8OiGTsKccFekoRrjajPBHV8oOY+2tI4uxeceSimKwMFA==}
+ engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
+ hasBin: true
+ dependencies:
+ caniuse-lite: 1.0.30001720
+ electron-to-chromium: 1.5.161
+ node-releases: 2.0.19
+ update-browserslist-db: 1.1.3_browserslist@4.25.0
+ dev: true
+
+ /buffer-from/1.1.2:
+ resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==}
+ dev: true
+
/bundle-require/4.2.1_esbuild@0.17.19:
resolution: {integrity: sha512-7Q/6vkyYAwOmQNRw75x+4yRtZCZJXUDmHHlFdkiV0wgv/reNjtJwpu1jPJ0w2kbEpIM0uoKI3S4/f39dU7AjSA==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
@@ -3470,13 +4735,22 @@ packages:
es-errors: 1.3.0
function-bind: 1.1.2
+ /call-bind/1.0.8:
+ resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind-apply-helpers: 1.0.2
+ es-define-property: 1.0.1
+ get-intrinsic: 1.3.0
+ set-function-length: 1.2.2
+ dev: true
+
/call-bound/1.0.4:
resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==}
engines: {node: '>= 0.4'}
dependencies:
call-bind-apply-helpers: 1.0.2
get-intrinsic: 1.3.0
- dev: false
/callsites/3.1.0:
resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
@@ -3497,6 +4771,10 @@ packages:
engines: {node: '>=6'}
dev: true
+ /caniuse-lite/1.0.30001720:
+ resolution: {integrity: sha512-Ec/2yV2nNPwb4DnTANEV99ZWwm3ZWfdlfkQbWSDDt+PsXEVYwlhPH8tdMaPunYTKKmz7AnHi2oNEi1GcmKCD8g==}
+ dev: true
+
/ccount/2.0.1:
resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==}
dev: true
@@ -3707,6 +4985,11 @@ packages:
dev: true
optional: true
+ /common-tags/1.8.2:
+ resolution: {integrity: sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==}
+ engines: {node: '>=4.0.0'}
+ dev: true
+
/commondir/1.0.1:
resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==}
dev: true
@@ -3778,6 +5061,12 @@ packages:
dependencies:
is-what: 4.1.16
+ /core-js-compat/3.42.0:
+ resolution: {integrity: sha512-bQasjMfyDGyaeWKBIu33lHh9qlSR0MFE/Nmc6nMjf/iU9b3rSMdAYz1Baxrv4lPdGUsTqZudHA4jIGSJy0SWZQ==}
+ dependencies:
+ browserslist: 4.25.0
+ dev: true
+
/cosmiconfig-typescript-loader/4.4.0_behysihmtj6ldilunbxtjnrjua:
resolution: {integrity: sha512-BabizFdC3wBHhbI4kJh0VkQP9GkBfoHPydD0COMce1nJ1kJAB3F2TmJ/I7diULBKtmEWSwEbuN/KDtgnmUUVmw==}
engines: {node: '>=v14.21.3'}
@@ -3839,6 +5128,11 @@ packages:
which: 2.0.2
dev: true
+ /crypto-random-string/2.0.0:
+ resolution: {integrity: sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==}
+ engines: {node: '>=8'}
+ dev: true
+
/css-select/4.3.0:
resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==}
dependencies:
@@ -3866,13 +5160,39 @@ packages:
/csstype/3.1.3:
resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==}
- dev: true
/dargs/7.0.0:
resolution: {integrity: sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==}
engines: {node: '>=8'}
dev: true
+ /data-view-buffer/1.0.2:
+ resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bound: 1.0.4
+ es-errors: 1.3.0
+ is-data-view: 1.0.2
+ dev: true
+
+ /data-view-byte-length/1.0.2:
+ resolution: {integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bound: 1.0.4
+ es-errors: 1.3.0
+ is-data-view: 1.0.2
+ dev: true
+
+ /data-view-byte-offset/1.0.1:
+ resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bound: 1.0.4
+ es-errors: 1.3.0
+ is-data-view: 1.0.2
+ dev: true
+
/de-indent/1.0.2:
resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==}
dev: true
@@ -3934,6 +5254,29 @@ packages:
resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
dev: true
+ /deepmerge/4.3.1:
+ resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /define-data-property/1.1.4:
+ resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ es-define-property: 1.0.1
+ es-errors: 1.3.0
+ gopd: 1.2.0
+ dev: true
+
+ /define-properties/1.2.1:
+ resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ define-data-property: 1.1.4
+ has-property-descriptors: 1.0.2
+ object-keys: 1.1.1
+ dev: true
+
/delayed-stream/1.0.0:
resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==}
engines: {node: '>=0.4.0'}
@@ -4031,6 +5374,18 @@ packages:
semver: 7.7.1
dev: true
+ /ejs/3.1.10:
+ resolution: {integrity: sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==}
+ engines: {node: '>=0.10.0'}
+ hasBin: true
+ dependencies:
+ jake: 10.9.2
+ dev: true
+
+ /electron-to-chromium/1.5.161:
+ resolution: {integrity: sha512-hwtetwfKNZo/UlwHIVBlKZVdy7o8bIZxxKs0Mv/ROPiQQQmDgdm5a+KvKtBsxM8ZjFzTaCeLoodZ8jiBE3o9rA==}
+ dev: true
+
/email-addresses/3.1.0:
resolution: {integrity: sha512-k0/r7GrWVL32kZlGwfPNgB2Y/mMXVTq/decgLczm/j34whdaspNrZO8CnXPf1laaHxI6ptUlsnAxN+UAPw+fzg==}
dev: true
@@ -4059,7 +5414,6 @@ packages:
/entities/4.5.0:
resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==}
engines: {node: '>=0.12'}
- dev: true
/errno/0.1.8:
resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==}
@@ -4076,6 +5430,66 @@ packages:
is-arrayish: 0.2.1
dev: true
+ /es-abstract/1.24.0:
+ resolution: {integrity: sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ array-buffer-byte-length: 1.0.2
+ arraybuffer.prototype.slice: 1.0.4
+ available-typed-arrays: 1.0.7
+ call-bind: 1.0.8
+ call-bound: 1.0.4
+ data-view-buffer: 1.0.2
+ data-view-byte-length: 1.0.2
+ data-view-byte-offset: 1.0.1
+ es-define-property: 1.0.1
+ es-errors: 1.3.0
+ es-object-atoms: 1.1.1
+ es-set-tostringtag: 2.1.0
+ es-to-primitive: 1.3.0
+ function.prototype.name: 1.1.8
+ get-intrinsic: 1.3.0
+ get-proto: 1.0.1
+ get-symbol-description: 1.1.0
+ globalthis: 1.0.4
+ gopd: 1.2.0
+ has-property-descriptors: 1.0.2
+ has-proto: 1.2.0
+ has-symbols: 1.1.0
+ hasown: 2.0.2
+ internal-slot: 1.1.0
+ is-array-buffer: 3.0.5
+ is-callable: 1.2.7
+ is-data-view: 1.0.2
+ is-negative-zero: 2.0.3
+ is-regex: 1.2.1
+ is-set: 2.0.3
+ is-shared-array-buffer: 1.0.4
+ is-string: 1.1.1
+ is-typed-array: 1.1.15
+ is-weakref: 1.1.1
+ math-intrinsics: 1.1.0
+ object-inspect: 1.13.4
+ object-keys: 1.1.1
+ object.assign: 4.1.7
+ own-keys: 1.0.1
+ regexp.prototype.flags: 1.5.4
+ safe-array-concat: 1.1.3
+ safe-push-apply: 1.0.0
+ safe-regex-test: 1.1.0
+ set-proto: 1.0.0
+ stop-iteration-iterator: 1.1.0
+ string.prototype.trim: 1.2.10
+ string.prototype.trimend: 1.0.9
+ string.prototype.trimstart: 1.0.8
+ typed-array-buffer: 1.0.3
+ typed-array-byte-length: 1.0.3
+ typed-array-byte-offset: 1.0.4
+ typed-array-length: 1.0.7
+ unbox-primitive: 1.1.0
+ which-typed-array: 1.1.19
+ dev: true
+
/es-define-property/1.0.1:
resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==}
engines: {node: '>= 0.4'}
@@ -4104,6 +5518,15 @@ packages:
hasown: 2.0.2
dev: true
+ /es-to-primitive/1.3.0:
+ resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ is-callable: 1.2.7
+ is-date-object: 1.1.0
+ is-symbol: 1.1.1
+ dev: true
+
/esbuild-android-64/0.14.54:
resolution: {integrity: sha512-Tz2++Aqqz0rJ7kYBfz+iqyE3QMycD4vk7LBRyWaAVFgFtQ/O8EJOnVmTOiDWYZ/uYzB4kvP+bqejYdVKzE5lAQ==}
engines: {node: '>=12'}
@@ -4802,9 +6225,12 @@ packages:
engines: {node: '>=4.0'}
dev: true
+ /estree-walker/1.0.1:
+ resolution: {integrity: sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==}
+ dev: true
+
/estree-walker/2.0.2:
resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==}
- dev: true
/estree-walker/3.0.3:
resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==}
@@ -4930,6 +6356,17 @@ packages:
reusify: 1.1.0
dev: true
+ /fdir/6.4.5_picomatch@4.0.2:
+ resolution: {integrity: sha512-4BG7puHpVsIYxZUbiUE3RqGloLaSSwzYie5jvasC4LWuBWzZawynvYouhjbQKw2JuIGYdm0DzIxl8iVidKlUEw==}
+ peerDependencies:
+ picomatch: ^3 || ^4
+ peerDependenciesMeta:
+ picomatch:
+ optional: true
+ dependencies:
+ picomatch: 4.0.2
+ dev: true
+
/file-entry-cache/8.0.0:
resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==}
engines: {node: '>=16.0.0'}
@@ -4937,6 +6374,12 @@ packages:
flat-cache: 4.0.1
dev: true
+ /filelist/1.0.4:
+ resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==}
+ dependencies:
+ minimatch: 5.1.6
+ dev: true
+
/filename-reserved-regex/2.0.0:
resolution: {integrity: sha512-lc1bnsSr4L4Bdif8Xb/qrtokGbq5zlsms/CYH8PP+WtCkGNF65DPiQY8vG3SakEdRn8Dlnm+gW/qWKKjS5sZzQ==}
engines: {node: '>=4'}
@@ -5011,6 +6454,13 @@ packages:
optional: true
dev: true
+ /for-each/0.3.5:
+ resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ is-callable: 1.2.7
+ dev: true
+
/foreground-child/2.0.0:
resolution: {integrity: sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==}
engines: {node: '>=8.0.0'}
@@ -5073,6 +6523,16 @@ packages:
universalify: 0.1.2
dev: true
+ /fs-extra/9.1.0:
+ resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==}
+ engines: {node: '>=10'}
+ dependencies:
+ at-least-node: 1.0.0
+ graceful-fs: 4.2.11
+ jsonfile: 6.1.0
+ universalify: 2.0.1
+ dev: true
+
/fs.realpath/1.0.0:
resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
dev: true
@@ -5088,6 +6548,27 @@ packages:
/function-bind/1.1.2:
resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
+ /function.prototype.name/1.1.8:
+ resolution: {integrity: sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.8
+ call-bound: 1.0.4
+ define-properties: 1.2.1
+ functions-have-names: 1.2.3
+ hasown: 2.0.2
+ is-callable: 1.2.7
+ dev: true
+
+ /functions-have-names/1.2.3:
+ resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==}
+ dev: true
+
+ /gensync/1.0.0-beta.2:
+ resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==}
+ engines: {node: '>=6.9.0'}
+ dev: true
+
/get-caller-file/2.0.5:
resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==}
engines: {node: 6.* || 8.* || >= 10.*}
@@ -5112,6 +6593,10 @@ packages:
hasown: 2.0.2
math-intrinsics: 1.1.0
+ /get-own-enumerable-property-symbols/3.0.2:
+ resolution: {integrity: sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==}
+ dev: true
+
/get-proto/1.0.1:
resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==}
engines: {node: '>= 0.4'}
@@ -5124,6 +6609,15 @@ packages:
engines: {node: '>=10'}
dev: true
+ /get-symbol-description/1.1.0:
+ resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bound: 1.0.4
+ es-errors: 1.3.0
+ get-intrinsic: 1.3.0
+ dev: true
+
/get-tsconfig/4.10.0:
resolution: {integrity: sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A==}
dependencies:
@@ -5201,6 +6695,11 @@ packages:
ini: 1.3.8
dev: true
+ /globals/11.12.0:
+ resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==}
+ engines: {node: '>=4'}
+ dev: true
+
/globals/13.24.0:
resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==}
engines: {node: '>=8'}
@@ -5218,6 +6717,14 @@ packages:
engines: {node: '>=18'}
dev: true
+ /globalthis/1.0.4:
+ resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ define-properties: 1.2.1
+ gopd: 1.2.0
+ dev: true
+
/globby/11.1.0:
resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==}
engines: {node: '>=10'}
@@ -5292,11 +6799,29 @@ packages:
engines: {node: '>=6'}
dev: true
+ /has-bigints/1.1.0:
+ resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==}
+ engines: {node: '>= 0.4'}
+ dev: true
+
/has-flag/4.0.0:
resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
engines: {node: '>=8'}
dev: true
+ /has-property-descriptors/1.0.2:
+ resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==}
+ dependencies:
+ es-define-property: 1.0.1
+ dev: true
+
+ /has-proto/1.2.0:
+ resolution: {integrity: sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ dunder-proto: 1.0.1
+ dev: true
+
/has-symbols/1.1.0:
resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==}
engines: {node: '>= 0.4'}
@@ -5409,6 +6934,10 @@ packages:
safer-buffer: 2.1.2
dev: true
+ /idb/7.1.1:
+ resolution: {integrity: sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==}
+ dev: true
+
/ignore/5.3.2:
resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==}
engines: {node: '>= 4'}
@@ -5465,10 +6994,46 @@ packages:
resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==}
dev: true
+ /internal-slot/1.1.0:
+ resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ es-errors: 1.3.0
+ hasown: 2.0.2
+ side-channel: 1.1.0
+ dev: true
+
+ /is-array-buffer/3.0.5:
+ resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.8
+ call-bound: 1.0.4
+ get-intrinsic: 1.3.0
+ dev: true
+
/is-arrayish/0.2.1:
resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==}
dev: true
+ /is-async-function/2.1.1:
+ resolution: {integrity: sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ async-function: 1.0.0
+ call-bound: 1.0.4
+ get-proto: 1.0.1
+ has-tostringtag: 1.0.2
+ safe-regex-test: 1.1.0
+ dev: true
+
+ /is-bigint/1.1.0:
+ resolution: {integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ has-bigints: 1.1.0
+ dev: true
+
/is-binary-path/2.1.0:
resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
engines: {node: '>=8'}
@@ -5476,11 +7041,41 @@ packages:
binary-extensions: 2.3.0
dev: true
- /is-core-module/2.16.1:
- resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==}
+ /is-boolean-object/1.2.2:
+ resolution: {integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bound: 1.0.4
+ has-tostringtag: 1.0.2
+ dev: true
+
+ /is-callable/1.2.7:
+ resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==}
+ engines: {node: '>= 0.4'}
+ dev: true
+
+ /is-core-module/2.16.1:
+ resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ hasown: 2.0.2
+ dev: true
+
+ /is-data-view/1.0.2:
+ resolution: {integrity: sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bound: 1.0.4
+ get-intrinsic: 1.3.0
+ is-typed-array: 1.1.15
+ dev: true
+
+ /is-date-object/1.1.0:
+ resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==}
engines: {node: '>= 0.4'}
dependencies:
- hasown: 2.0.2
+ call-bound: 1.0.4
+ has-tostringtag: 1.0.2
dev: true
/is-extendable/0.1.1:
@@ -5493,6 +7088,13 @@ packages:
engines: {node: '>=0.10.0'}
dev: true
+ /is-finalizationregistry/1.1.1:
+ resolution: {integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bound: 1.0.4
+ dev: true
+
/is-fullwidth-code-point/3.0.0:
resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
engines: {node: '>=8'}
@@ -5503,6 +7105,16 @@ packages:
engines: {node: '>=12'}
dev: true
+ /is-generator-function/1.1.0:
+ resolution: {integrity: sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bound: 1.0.4
+ get-proto: 1.0.1
+ has-tostringtag: 1.0.2
+ safe-regex-test: 1.1.0
+ dev: true
+
/is-glob/4.0.3:
resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
engines: {node: '>=0.10.0'}
@@ -5510,11 +7122,38 @@ packages:
is-extglob: 2.1.1
dev: true
+ /is-map/2.0.3:
+ resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==}
+ engines: {node: '>= 0.4'}
+ dev: true
+
+ /is-module/1.0.0:
+ resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==}
+ dev: true
+
+ /is-negative-zero/2.0.3:
+ resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==}
+ engines: {node: '>= 0.4'}
+ dev: true
+
+ /is-number-object/1.1.1:
+ resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bound: 1.0.4
+ has-tostringtag: 1.0.2
+ dev: true
+
/is-number/7.0.0:
resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
engines: {node: '>=0.12.0'}
dev: true
+ /is-obj/1.0.1:
+ resolution: {integrity: sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
/is-obj/2.0.0:
resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==}
engines: {node: '>=8'}
@@ -5530,6 +7169,33 @@ packages:
engines: {node: '>=0.10.0'}
dev: true
+ /is-regex/1.2.1:
+ resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bound: 1.0.4
+ gopd: 1.2.0
+ has-tostringtag: 1.0.2
+ hasown: 2.0.2
+ dev: true
+
+ /is-regexp/1.0.0:
+ resolution: {integrity: sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /is-set/2.0.3:
+ resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==}
+ engines: {node: '>= 0.4'}
+ dev: true
+
+ /is-shared-array-buffer/1.0.4:
+ resolution: {integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bound: 1.0.4
+ dev: true
+
/is-stream/2.0.1:
resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==}
engines: {node: '>=8'}
@@ -5540,6 +7206,23 @@ packages:
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
dev: true
+ /is-string/1.1.1:
+ resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bound: 1.0.4
+ has-tostringtag: 1.0.2
+ dev: true
+
+ /is-symbol/1.1.1:
+ resolution: {integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bound: 1.0.4
+ has-symbols: 1.1.0
+ safe-regex-test: 1.1.0
+ dev: true
+
/is-text-path/1.0.1:
resolution: {integrity: sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w==}
engines: {node: '>=0.10.0'}
@@ -5547,6 +7230,33 @@ packages:
text-extensions: 1.9.0
dev: true
+ /is-typed-array/1.1.15:
+ resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ which-typed-array: 1.1.19
+ dev: true
+
+ /is-weakmap/2.0.2:
+ resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==}
+ engines: {node: '>= 0.4'}
+ dev: true
+
+ /is-weakref/1.1.1:
+ resolution: {integrity: sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bound: 1.0.4
+ dev: true
+
+ /is-weakset/2.0.4:
+ resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bound: 1.0.4
+ get-intrinsic: 1.3.0
+ dev: true
+
/is-what/3.14.1:
resolution: {integrity: sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==}
dev: true
@@ -5555,6 +7265,10 @@ packages:
resolution: {integrity: sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==}
engines: {node: '>=12.13'}
+ /isarray/2.0.5:
+ resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==}
+ dev: true
+
/isexe/2.0.0:
resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
dev: true
@@ -5589,6 +7303,17 @@ packages:
'@pkgjs/parseargs': 0.11.0
dev: true
+ /jake/10.9.2:
+ resolution: {integrity: sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==}
+ engines: {node: '>=10'}
+ hasBin: true
+ dependencies:
+ async: 3.2.6
+ chalk: 4.1.2
+ filelist: 1.0.4
+ minimatch: 3.1.2
+ dev: true
+
/jest-diff/29.7.0:
resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
@@ -5685,6 +7410,18 @@ packages:
argparse: 2.0.1
dev: true
+ /jsesc/3.0.2:
+ resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==}
+ engines: {node: '>=6'}
+ hasBin: true
+ dev: true
+
+ /jsesc/3.1.0:
+ resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==}
+ engines: {node: '>=6'}
+ hasBin: true
+ dev: true
+
/json-buffer/3.0.1:
resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==}
dev: true
@@ -5701,10 +7438,20 @@ packages:
resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==}
dev: true
+ /json-schema/0.4.0:
+ resolution: {integrity: sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==}
+ dev: true
+
/json-stable-stringify-without-jsonify/1.0.1:
resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
dev: true
+ /json5/2.2.3:
+ resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==}
+ engines: {node: '>=6'}
+ hasBin: true
+ dev: true
+
/jsonc-parser/3.3.1:
resolution: {integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==}
dev: true
@@ -5728,6 +7475,11 @@ packages:
engines: {'0': node >= 0.2.0}
dev: true
+ /jsonpointer/5.0.1:
+ resolution: {integrity: sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
/juice/8.1.0:
resolution: {integrity: sha512-FLzurJrx5Iv1e7CfBSZH68dC04EEvXvvVvPYB7Vx1WAuhCp1ZPIMtqxc+WTWxVkpTIC2Ach/GAv0rQbtGf6YMA==}
engines: {node: '>=10.0.0'}
@@ -5775,6 +7527,11 @@ packages:
source-map: 0.6.1
dev: true
+ /leven/3.1.0:
+ resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==}
+ engines: {node: '>=6'}
+ dev: true
+
/levn/0.4.1:
resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
engines: {node: '>= 0.8.0'}
@@ -5875,6 +7632,10 @@ packages:
resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==}
dev: true
+ /lodash.debounce/4.0.8:
+ resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==}
+ dev: true
+
/lodash.get/4.4.2:
resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==}
deprecated: This package is deprecated. Use the optional chaining (?.) operator instead.
@@ -5959,6 +7720,12 @@ packages:
resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==}
dev: true
+ /lru-cache/5.1.1:
+ resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==}
+ dependencies:
+ yallist: 3.1.1
+ dev: true
+
/lru-cache/6.0.0:
resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==}
engines: {node: '>=10'}
@@ -5966,6 +7733,12 @@ packages:
yallist: 4.0.0
dev: true
+ /magic-string/0.25.9:
+ resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==}
+ dependencies:
+ sourcemap-codec: 1.4.8
+ dev: true
+
/magic-string/0.27.0:
resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==}
engines: {node: '>=12'}
@@ -5984,7 +7757,6 @@ packages:
resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==}
dependencies:
'@jridgewell/sourcemap-codec': 1.5.0
- dev: true
/make-dir/2.1.0:
resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==}
@@ -6316,7 +8088,6 @@ packages:
resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==}
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
hasBin: true
- dev: true
/natural-compare-lite/1.4.0:
resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==}
@@ -6356,6 +8127,10 @@ packages:
whatwg-url: 5.0.0
dev: true
+ /node-releases/2.0.19:
+ resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==}
+ dev: true
+
/nopt/7.2.1:
resolution: {integrity: sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w==}
engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
@@ -6416,7 +8191,23 @@ packages:
/object-inspect/1.13.4:
resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==}
engines: {node: '>= 0.4'}
- dev: false
+
+ /object-keys/1.1.1:
+ resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==}
+ engines: {node: '>= 0.4'}
+ dev: true
+
+ /object.assign/4.1.7:
+ resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.8
+ call-bound: 1.0.4
+ define-properties: 1.2.1
+ es-object-atoms: 1.1.1
+ has-symbols: 1.1.0
+ object-keys: 1.1.1
+ dev: true
/oblivious-set/1.1.1:
resolution: {integrity: sha512-Oh+8fK09mgGmAshFdH6hSVco6KZmd1tTwNFWj35OvzdmJTMZtAkbn05zar2iG3v6sDs1JLEtOiBGNb6BHwkb2w==}
@@ -6462,6 +8253,15 @@ packages:
word-wrap: 1.2.5
dev: true
+ /own-keys/1.0.1:
+ resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ get-intrinsic: 1.3.0
+ object-keys: 1.1.1
+ safe-push-apply: 1.0.0
+ dev: true
+
/p-finally/1.0.0:
resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==}
engines: {node: '>=4'}
@@ -6627,7 +8427,6 @@ packages:
/picocolors/1.1.1:
resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
- dev: true
/picomatch/2.3.1:
resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
@@ -6673,6 +8472,22 @@ packages:
- '@vue/composition-api'
dev: true
+ /pinia/2.3.1_vue@3.5.13:
+ resolution: {integrity: sha512-khUlZSwt9xXCaTbbxFYBKDc/bWAGWJjOgvxETwkTN7KRm66EeT1ZdZj6i2ceh9sP2Pzqsbc704r2yngBrxBVug==}
+ peerDependencies:
+ typescript: '>=4.4.4'
+ vue: ^2.7.0 || ^3.5.11
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ dependencies:
+ '@vue/devtools-api': 6.6.4
+ vue: 3.5.13
+ vue-demi: 0.14.10_vue@3.5.13
+ transitivePeerDependencies:
+ - '@vue/composition-api'
+ dev: true
+
/pinkie-promise/2.0.1:
resolution: {integrity: sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==}
engines: {node: '>=0.10.0'}
@@ -6713,6 +8528,11 @@ packages:
pathe: 2.0.3
dev: true
+ /possible-typed-array-names/1.1.0:
+ resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==}
+ engines: {node: '>= 0.4'}
+ dev: true
+
/postcss-load-config/3.1.4:
resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==}
engines: {node: '>= 10'}
@@ -6744,7 +8564,6 @@ packages:
nanoid: 3.3.11
picocolors: 1.1.1
source-map-js: 1.2.1
- dev: true
/preact/10.26.4:
resolution: {integrity: sha512-KJhO7LBFTjP71d83trW+Ilnjbo+ySsaAgCfXOXUlmGzJ4ygYPWmysm77yg4emwfmoz3b22yvH5IsVFHbhUaH5w==}
@@ -6761,6 +8580,16 @@ packages:
hasBin: true
dev: true
+ /pretty-bytes/5.6.0:
+ resolution: {integrity: sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==}
+ engines: {node: '>=6'}
+ dev: true
+
+ /pretty-bytes/6.1.1:
+ resolution: {integrity: sha512-mQUvGU6aUFQ+rNvTIAcZuWGRT9a6f6Yrg9bHs4ImKF+HZCEK+plBvnAZYSIQztknZF2qnzNtr6F8s0+IuptdlQ==}
+ engines: {node: ^14.13.1 || >=16.0.0}
+ dev: true
+
/pretty-format/29.7.0:
resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
@@ -6812,6 +8641,12 @@ packages:
engines: {node: '>=8'}
dev: true
+ /randombytes/2.1.0:
+ resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==}
+ dependencies:
+ safe-buffer: 5.2.1
+ dev: true
+
/react-is/18.3.1:
resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==}
dev: true
@@ -6859,6 +8694,31 @@ packages:
strip-indent: 3.0.0
dev: true
+ /reflect.getprototypeof/1.0.10:
+ resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.8
+ define-properties: 1.2.1
+ es-abstract: 1.24.0
+ es-errors: 1.3.0
+ es-object-atoms: 1.1.1
+ get-intrinsic: 1.3.0
+ get-proto: 1.0.1
+ which-builtin-type: 1.2.1
+ dev: true
+
+ /regenerate-unicode-properties/10.2.0:
+ resolution: {integrity: sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==}
+ engines: {node: '>=4'}
+ dependencies:
+ regenerate: 1.4.2
+ dev: true
+
+ /regenerate/1.4.2:
+ resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==}
+ dev: true
+
/regenerator-runtime/0.14.1:
resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==}
dev: true
@@ -6879,6 +8739,41 @@ packages:
regex-utilities: 2.3.0
dev: true
+ /regexp.prototype.flags/1.5.4:
+ resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.8
+ define-properties: 1.2.1
+ es-errors: 1.3.0
+ get-proto: 1.0.1
+ gopd: 1.2.0
+ set-function-name: 2.0.2
+ dev: true
+
+ /regexpu-core/6.2.0:
+ resolution: {integrity: sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA==}
+ engines: {node: '>=4'}
+ dependencies:
+ regenerate: 1.4.2
+ regenerate-unicode-properties: 10.2.0
+ regjsgen: 0.8.0
+ regjsparser: 0.12.0
+ unicode-match-property-ecmascript: 2.0.0
+ unicode-match-property-value-ecmascript: 2.2.0
+ dev: true
+
+ /regjsgen/0.8.0:
+ resolution: {integrity: sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==}
+ dev: true
+
+ /regjsparser/0.12.0:
+ resolution: {integrity: sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==}
+ hasBin: true
+ dependencies:
+ jsesc: 3.0.2
+ dev: true
+
/require-directory/2.1.1:
resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==}
engines: {node: '>=0.10.0'}
@@ -7004,10 +8899,38 @@ packages:
queue-microtask: 1.2.3
dev: true
+ /safe-array-concat/1.1.3:
+ resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==}
+ engines: {node: '>=0.4'}
+ dependencies:
+ call-bind: 1.0.8
+ call-bound: 1.0.4
+ get-intrinsic: 1.3.0
+ has-symbols: 1.1.0
+ isarray: 2.0.5
+ dev: true
+
/safe-buffer/5.2.1:
resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
dev: true
+ /safe-push-apply/1.0.0:
+ resolution: {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ es-errors: 1.3.0
+ isarray: 2.0.5
+ dev: true
+
+ /safe-regex-test/1.1.0:
+ resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bound: 1.0.4
+ es-errors: 1.3.0
+ is-regex: 1.2.1
+ dev: true
+
/safer-buffer/2.1.2:
resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
dev: true
@@ -7026,6 +8949,10 @@ packages:
resolution: {integrity: sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==}
dev: true
+ /search-insights/2.17.3:
+ resolution: {integrity: sha512-RQPdCYTa8A68uM2jwxoY842xDhvx3E5LFL1LxvxCNMev4o5mLuokczhzjAgGwUZBAmOKZknArSxLKmXtIi2AxQ==}
+ dev: true
+
/section-matter/1.0.0:
resolution: {integrity: sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==}
engines: {node: '>=4'}
@@ -7058,6 +8985,43 @@ packages:
hasBin: true
dev: true
+ /serialize-javascript/6.0.2:
+ resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==}
+ dependencies:
+ randombytes: 2.1.0
+ dev: true
+
+ /set-function-length/1.2.2:
+ resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ define-data-property: 1.1.4
+ es-errors: 1.3.0
+ function-bind: 1.1.2
+ get-intrinsic: 1.3.0
+ gopd: 1.2.0
+ has-property-descriptors: 1.0.2
+ dev: true
+
+ /set-function-name/2.0.2:
+ resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ define-data-property: 1.1.4
+ es-errors: 1.3.0
+ functions-have-names: 1.2.3
+ has-property-descriptors: 1.0.2
+ dev: true
+
+ /set-proto/1.0.0:
+ resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ dunder-proto: 1.0.1
+ es-errors: 1.3.0
+ es-object-atoms: 1.1.1
+ dev: true
+
/shebang-command/2.0.0:
resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
engines: {node: '>=8'}
@@ -7105,7 +9069,6 @@ packages:
dependencies:
es-errors: 1.3.0
object-inspect: 1.13.4
- dev: false
/side-channel-map/1.0.1:
resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==}
@@ -7115,7 +9078,6 @@ packages:
es-errors: 1.3.0
get-intrinsic: 1.3.0
object-inspect: 1.13.4
- dev: false
/side-channel-weakmap/1.0.2:
resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==}
@@ -7126,7 +9088,6 @@ packages:
get-intrinsic: 1.3.0
object-inspect: 1.13.4
side-channel-map: 1.0.1
- dev: false
/side-channel/1.1.0:
resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==}
@@ -7137,7 +9098,6 @@ packages:
side-channel-list: 1.0.0
side-channel-map: 1.0.1
side-channel-weakmap: 1.0.2
- dev: false
/siginfo/2.0.0:
resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==}
@@ -7183,9 +9143,19 @@ packages:
resolution: {integrity: sha512-4qdtOGcBjral6YIBCWJ0ljFSKNLz9KkhbWtuGvUyRowl1kxfuE1x/Z/aJcaiilpb3do9bl5K7/1h9XC5wWpY/A==}
dev: true
+ /smob/1.5.0:
+ resolution: {integrity: sha512-g6T+p7QO8npa+/hNx9ohv1E5pVCmWrVCUzUXJyLdMmftX6ER0oiWY/w9knEonLpnOp6b6FenKnMfR8gqwWdwig==}
+ dev: true
+
/source-map-js/1.2.1:
resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
engines: {node: '>=0.10.0'}
+
+ /source-map-support/0.5.21:
+ resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==}
+ dependencies:
+ buffer-from: 1.1.2
+ source-map: 0.6.1
dev: true
/source-map/0.6.1:
@@ -7200,6 +9170,11 @@ packages:
whatwg-url: 7.1.0
dev: true
+ /sourcemap-codec/1.4.8:
+ resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==}
+ deprecated: Please use @jridgewell/sourcemap-codec instead
+ dev: true
+
/space-separated-tokens/2.0.2:
resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==}
dev: true
@@ -7264,6 +9239,14 @@ packages:
resolution: {integrity: sha512-vj5lIj3Mwf9D79hBkltk5qmkFI+biIKWS2IBxEyEU3AX1tUf7AoL8nSazCOiiqQsGKIq01SClsKEzweu34uwvA==}
dev: true
+ /stop-iteration-iterator/1.1.0:
+ resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ es-errors: 1.3.0
+ internal-slot: 1.1.0
+ dev: true
+
/string-argv/0.3.2:
resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==}
engines: {node: '>=0.6.19'}
@@ -7287,6 +9270,57 @@ packages:
strip-ansi: 7.1.0
dev: true
+ /string.prototype.matchall/4.0.12:
+ resolution: {integrity: sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.8
+ call-bound: 1.0.4
+ define-properties: 1.2.1
+ es-abstract: 1.24.0
+ es-errors: 1.3.0
+ es-object-atoms: 1.1.1
+ get-intrinsic: 1.3.0
+ gopd: 1.2.0
+ has-symbols: 1.1.0
+ internal-slot: 1.1.0
+ regexp.prototype.flags: 1.5.4
+ set-function-name: 2.0.2
+ side-channel: 1.1.0
+ dev: true
+
+ /string.prototype.trim/1.2.10:
+ resolution: {integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.8
+ call-bound: 1.0.4
+ define-data-property: 1.1.4
+ define-properties: 1.2.1
+ es-abstract: 1.24.0
+ es-object-atoms: 1.1.1
+ has-property-descriptors: 1.0.2
+ dev: true
+
+ /string.prototype.trimend/1.0.9:
+ resolution: {integrity: sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.8
+ call-bound: 1.0.4
+ define-properties: 1.2.1
+ es-object-atoms: 1.1.1
+ dev: true
+
+ /string.prototype.trimstart/1.0.8:
+ resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.8
+ define-properties: 1.2.1
+ es-object-atoms: 1.1.1
+ dev: true
+
/string_decoder/1.3.0:
resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==}
dependencies:
@@ -7300,6 +9334,15 @@ packages:
character-entities-legacy: 3.0.0
dev: true
+ /stringify-object/3.3.0:
+ resolution: {integrity: sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==}
+ engines: {node: '>=4'}
+ dependencies:
+ get-own-enumerable-property-symbols: 3.0.2
+ is-obj: 1.0.1
+ is-regexp: 1.0.0
+ dev: true
+
/strip-ansi/6.0.1:
resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
engines: {node: '>=8'}
@@ -7319,6 +9362,11 @@ packages:
engines: {node: '>=0.10.0'}
dev: true
+ /strip-comments/2.0.1:
+ resolution: {integrity: sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw==}
+ engines: {node: '>=10'}
+ dev: true
+
/strip-final-newline/2.0.0:
resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==}
engines: {node: '>=6'}
@@ -7393,17 +9441,22 @@ packages:
engines: {node: '>= 0.4'}
dev: true
- /svelte-tsc/0.7.1_typescript@4.9.5:
+ /svelte-tsc/0.7.1_iswo7uadljeyepwefr7yw27cie:
resolution: {integrity: sha512-PukL/vx02NIYF4kBe5qUiaCeH5r/o0tszgtqyuAOpYp+cXInfj2i7xM3dzU2BeoSTbZc8H7u25aKVOifHNmItw==}
dependencies:
fs-extra: 10.1.0
- svelte2tsx: 0.5.23_typescript@4.9.5
+ svelte2tsx: 0.5.23_iswo7uadljeyepwefr7yw27cie
transitivePeerDependencies:
- svelte
- typescript
dev: true
- /svelte2tsx/0.5.23_typescript@4.9.5:
+ /svelte/3.59.2:
+ resolution: {integrity: sha512-vzSyuGr3eEoAtT/A6bmajosJZIUWySzY2CzB3w2pgPvnkUjGqlDnsNnA0PMO+mMAhuyMul6C2uuZzY6ELSkzyA==}
+ engines: {node: '>= 8'}
+ dev: true
+
+ /svelte2tsx/0.5.23_iswo7uadljeyepwefr7yw27cie:
resolution: {integrity: sha512-jYFnugTQRFmUpvLXPQrKzVYcW5ErT+0QCxg027Zx9BuvYefMZFuoBSTDYe7viPEFGrPPiLgT2m7f5n9khE7f7Q==}
peerDependencies:
svelte: ^3.24
@@ -7411,6 +9464,7 @@ packages:
dependencies:
dedent-js: 1.0.1
pascal-case: 3.1.2
+ svelte: 3.59.2
typescript: 4.9.5
dev: true
@@ -7418,6 +9472,32 @@ packages:
resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==}
dev: true
+ /temp-dir/2.0.0:
+ resolution: {integrity: sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /tempy/0.6.0:
+ resolution: {integrity: sha512-G13vtMYPT/J8A4X2SjdtBTphZlrp1gKv6hZiOjw14RCWg6GbHuQBGtjlx75xLbYV/wEc0D7G5K4rxKP/cXk8Bw==}
+ engines: {node: '>=10'}
+ dependencies:
+ is-stream: 2.0.1
+ temp-dir: 2.0.0
+ type-fest: 0.16.0
+ unique-string: 2.0.0
+ dev: true
+
+ /terser/5.40.0:
+ resolution: {integrity: sha512-cfeKl/jjwSR5ar7d0FGmave9hFGJT8obyo0z+CrQOylLDbk7X81nPU6vq9VORa5jU30SkDnT2FXjLbR8HLP+xA==}
+ engines: {node: '>=10'}
+ hasBin: true
+ dependencies:
+ '@jridgewell/source-map': 0.3.6
+ acorn: 8.14.1
+ commander: 2.20.3
+ source-map-support: 0.5.21
+ dev: true
+
/test-exclude/6.0.0:
resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==}
engines: {node: '>=8'}
@@ -7467,6 +9547,14 @@ packages:
resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==}
dev: true
+ /tinyglobby/0.2.14:
+ resolution: {integrity: sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==}
+ engines: {node: '>=12.0.0'}
+ dependencies:
+ fdir: 6.4.5_picomatch@4.0.2
+ picomatch: 4.0.2
+ dev: true
+
/tinypool/0.3.1:
resolution: {integrity: sha512-zLA1ZXlstbU2rlpA4CIeVaqvWq41MTWqLY3FfsAXgC8+f7Pk7zroaJQxDgxn1xNudKW6Kmj4808rPFShUlIRmQ==}
engines: {node: '>=14.0.0'}
@@ -7707,6 +9795,11 @@ packages:
engines: {node: '>=4'}
dev: true
+ /type-fest/0.16.0:
+ resolution: {integrity: sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==}
+ engines: {node: '>=10'}
+ dev: true
+
/type-fest/0.18.1:
resolution: {integrity: sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==}
engines: {node: '>=10'}
@@ -7732,6 +9825,51 @@ packages:
engines: {node: '>=10'}
dev: true
+ /typed-array-buffer/1.0.3:
+ resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bound: 1.0.4
+ es-errors: 1.3.0
+ is-typed-array: 1.1.15
+ dev: true
+
+ /typed-array-byte-length/1.0.3:
+ resolution: {integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.8
+ for-each: 0.3.5
+ gopd: 1.2.0
+ has-proto: 1.2.0
+ is-typed-array: 1.1.15
+ dev: true
+
+ /typed-array-byte-offset/1.0.4:
+ resolution: {integrity: sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ available-typed-arrays: 1.0.7
+ call-bind: 1.0.8
+ for-each: 0.3.5
+ gopd: 1.2.0
+ has-proto: 1.2.0
+ is-typed-array: 1.1.15
+ reflect.getprototypeof: 1.0.10
+ dev: true
+
+ /typed-array-length/1.0.7:
+ resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.8
+ for-each: 0.3.5
+ gopd: 1.2.0
+ is-typed-array: 1.1.15
+ possible-typed-array-names: 1.1.0
+ reflect.getprototypeof: 1.0.10
+ dev: true
+
/typeit/8.8.7:
resolution: {integrity: sha512-sSVpy+cjeFP6Z+fZqiHzUSShg5yYFeJEt/Qut/bX945+Axyq+Yq+GPOuuk+sofoccSv8nNX/ibOOHkbki2mEpg==}
requiresBuild: true
@@ -7775,10 +9913,43 @@ packages:
resolution: {integrity: sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==}
dev: true
+ /unbox-primitive/1.1.0:
+ resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bound: 1.0.4
+ has-bigints: 1.1.0
+ has-symbols: 1.1.0
+ which-boxed-primitive: 1.1.1
+ dev: true
+
/undici-types/5.26.5:
resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==}
dev: true
+ /unicode-canonical-property-names-ecmascript/2.0.1:
+ resolution: {integrity: sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==}
+ engines: {node: '>=4'}
+ dev: true
+
+ /unicode-match-property-ecmascript/2.0.0:
+ resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==}
+ engines: {node: '>=4'}
+ dependencies:
+ unicode-canonical-property-names-ecmascript: 2.0.1
+ unicode-property-aliases-ecmascript: 2.1.0
+ dev: true
+
+ /unicode-match-property-value-ecmascript/2.2.0:
+ resolution: {integrity: sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==}
+ engines: {node: '>=4'}
+ dev: true
+
+ /unicode-property-aliases-ecmascript/2.1.0:
+ resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==}
+ engines: {node: '>=4'}
+ dev: true
+
/unimport/2.2.4:
resolution: {integrity: sha512-qMgmeEGqqrrmEtm0dqxMG37J6xBtrriqxq9hILvDb+e6l2F0yTnJomLoCCp0eghLR7bYGeBsUU5Y0oyiUYhViw==}
dependencies:
@@ -7797,6 +9968,13 @@ packages:
- rollup
dev: true
+ /unique-string/2.0.0:
+ resolution: {integrity: sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==}
+ engines: {node: '>=8'}
+ dependencies:
+ crypto-random-string: 2.0.0
+ dev: true
+
/unist-util-is/6.0.0:
resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==}
dependencies:
@@ -7871,6 +10049,22 @@ packages:
webpack-virtual-modules: 0.6.2
dev: true
+ /upath/1.2.0:
+ resolution: {integrity: sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==}
+ engines: {node: '>=4'}
+ dev: true
+
+ /update-browserslist-db/1.1.3_browserslist@4.25.0:
+ resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==}
+ hasBin: true
+ peerDependencies:
+ browserslist: '>= 4.21.0'
+ dependencies:
+ browserslist: 4.25.0
+ escalade: 3.2.0
+ picocolors: 1.1.1
+ dev: true
+
/uri-js/4.4.1:
resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
dependencies:
@@ -7947,21 +10141,21 @@ packages:
- terser
dev: true
- /vite-plugin-build/0.7.1:
+ /vite-plugin-build/0.7.1_svelte@3.59.2:
resolution: {integrity: sha512-IbJQ/U5WU2DiOfHbJbCqcGOytZRWYSbVB2YRPubIJGOV09fAx6S/yolPmsjgxO/H8mvF0a3oEZQWIJSujHAp0Q==}
dependencies:
cross-spawn: 7.0.3
fast-glob: 3.3.3
fs-extra: 10.1.0
picocolors: 1.1.1
- svelte-tsc: 0.7.1_typescript@4.9.5
+ svelte-tsc: 0.7.1_iswo7uadljeyepwefr7yw27cie
typescript: 4.9.5
vue-tsc: 0.39.5_typescript@4.9.5
transitivePeerDependencies:
- svelte
dev: true
- /vite-plugin-dts/1.7.3:
+ /vite-plugin-dts/1.7.3_vite@3.2.11:
resolution: {integrity: sha512-u3t45p6fTbzUPMkwYe0ESwuUeiRMlwdPfD3dRyDKUwLe2WmEYcFyVp2o9/ke2EMrM51lQcmNWdV9eLcgjD1/ng==}
engines: {node: ^14.18.0 || >=16.0.0}
peerDependencies:
@@ -7975,13 +10169,14 @@ packages:
fs-extra: 10.1.0
kolorist: 1.8.0
ts-morph: 17.0.1
+ vite: 3.2.11_less@4.2.2
transitivePeerDependencies:
- '@types/node'
- rollup
- supports-color
dev: true
- /vite-plugin-dts/2.3.0_6y4hq23vlu65m74cay4y7ctr24:
+ /vite-plugin-dts/2.3.0_ua7s575yoq34e5f6es546vplsi:
resolution: {integrity: sha512-WbJgGtsStgQhdm3EosYmIdTGbag5YQpZ3HXWUAPCDyoXI5qN6EY0V7NXq0lAmnv9hVQsvh0htbYcg0Or5Db9JQ==}
engines: {node: ^14.18.0 || >=16.0.0}
peerDependencies:
@@ -7989,7 +10184,7 @@ packages:
dependencies:
'@babel/parser': 7.27.0
'@microsoft/api-extractor': 7.52.2_@types+node@17.0.45
- '@rollup/pluginutils': 5.1.4
+ '@rollup/pluginutils': 5.1.4_rollup@2.79.2
'@rushstack/node-core-library': 3.66.1_@types+node@17.0.45
debug: 4.4.0
fast-glob: 3.3.3
@@ -8004,6 +10199,27 @@ packages:
- supports-color
dev: true
+ /vite-plugin-pwa/1.0.0_vite@3.0.2:
+ resolution: {integrity: sha512-X77jo0AOd5OcxmWj3WnVti8n7Kw2tBgV1c8MCXFclrSlDV23ePzv2eTDIALXI2Qo6nJ5pZJeZAuX0AawvRfoeA==}
+ engines: {node: '>=16.0.0'}
+ peerDependencies:
+ '@vite-pwa/assets-generator': ^1.0.0
+ vite: ^3.1.0 || ^4.0.0 || ^5.0.0 || ^6.0.0
+ peerDependenciesMeta:
+ '@vite-pwa/assets-generator':
+ optional: true
+ dependencies:
+ debug: 4.4.0
+ pretty-bytes: 6.1.1
+ tinyglobby: 0.2.14
+ vite: 3.0.2_less@4.2.2
+ workbox-build: 7.3.0
+ workbox-window: 7.3.0
+ transitivePeerDependencies:
+ - '@types/babel__core'
+ - supports-color
+ dev: true
+
/vite/2.9.18_less@4.2.2:
resolution: {integrity: sha512-sAOqI5wNM9QvSEE70W3UGMdT8cyEn0+PmJMTFvTB8wB0YbYUWw3gUbY62AOyrXosGieF2htmeLATvNxpv/zNyQ==}
engines: {node: '>=12.2.0'}
@@ -8057,6 +10273,40 @@ packages:
fsevents: 2.3.3
dev: true
+ /vite/3.2.11_less@4.2.2:
+ resolution: {integrity: sha512-K/jGKL/PgbIgKCiJo5QbASQhFiV02X9Jh+Qq0AKCRCRKZtOTVi4t6wh75FDpGf2N9rYOnzH87OEFQNaFy6pdxQ==}
+ engines: {node: ^14.18.0 || >=16.0.0}
+ hasBin: true
+ peerDependencies:
+ '@types/node': '>= 14'
+ less: '*'
+ sass: '*'
+ stylus: '*'
+ sugarss: '*'
+ terser: ^5.4.0
+ peerDependenciesMeta:
+ '@types/node':
+ optional: true
+ less:
+ optional: true
+ sass:
+ optional: true
+ stylus:
+ optional: true
+ sugarss:
+ optional: true
+ terser:
+ optional: true
+ dependencies:
+ esbuild: 0.15.18
+ less: 4.2.2
+ postcss: 8.5.3
+ resolve: 1.22.10
+ rollup: 2.79.2
+ optionalDependencies:
+ fsevents: 2.3.3
+ dev: true
+
/vite/3.2.11_ue4hszsjlr3ayqwkvy34jdue3e:
resolution: {integrity: sha512-K/jGKL/PgbIgKCiJo5QbASQhFiV02X9Jh+Qq0AKCRCRKZtOTVi4t6wh75FDpGf2N9rYOnzH87OEFQNaFy6pdxQ==}
engines: {node: ^14.18.0 || >=16.0.0}
@@ -8142,12 +10392,12 @@ packages:
- supports-color
dev: true
- /vitepress/1.0.0-alpha.29_4dydiev6zwdmgkjmzqeg75ctza:
+ /vitepress/1.0.0-alpha.29_pfrxxcnxc2tz5ic4db3wq5lsse:
resolution: {integrity: sha512-oaRaeMLcN9M3Bxz97fFVF6Gzm3Aqtb0CijTt5TOW0XPzNPuKA0YpFnsmS97gdKmA+VztM6itRJ8K7JJuU0VS3g==}
hasBin: true
dependencies:
'@docsearch/css': 3.9.0
- '@docsearch/js': 3.9.0
+ '@docsearch/js': 3.9.0_rjv6y3krrl5rwzkal4h52azgya
'@vitejs/plugin-vue': 3.2.0_vite@3.2.11+vue@3.5.13
'@vue/devtools-api': 6.6.4
'@vueuse/core': 9.13.0_vue@3.5.13
@@ -8171,13 +10421,13 @@ packages:
- typescript
dev: true
- /vitepress/1.0.0-alpha.4_6xgyufr755ieb744rnjknwxdqq:
+ /vitepress/1.0.0-alpha.4_4hfvhstsfslvn7fjhkqqeebcea:
resolution: {integrity: sha512-bOAA4KW6vYGlkbcrPLZLTKWTgXVroObU+o9xj9EENyEl6yg26WWvfN7DGA4BftjdM5O8nR93Z5khPQ3W/tFE7Q==}
engines: {node: '>=14.6.0'}
hasBin: true
dependencies:
'@docsearch/css': 3.9.0
- '@docsearch/js': 3.9.0
+ '@docsearch/js': 3.9.0_rjv6y3krrl5rwzkal4h52azgya
'@vitejs/plugin-vue': 2.3.4_vite@2.9.18+vue@3.5.13
'@vue/devtools-api': 6.6.4
'@vueuse/core': 8.9.4_vue@3.5.13
@@ -8198,7 +10448,7 @@ packages:
- typescript
dev: true
- /vitepress/1.6.3_demff4vjbagpqdjum6sew2u5zy:
+ /vitepress/1.6.3_upwuos7m6v2vdoxny3rkqlb7aa:
resolution: {integrity: sha512-fCkfdOk8yRZT8GD9BFqusW3+GggWYZ/rYncOfmgcDtP3ualNHCAg+Robxp2/6xfH1WwPHtGpPwv7mbA3qomtBw==}
hasBin: true
peerDependencies:
@@ -8211,7 +10461,7 @@ packages:
optional: true
dependencies:
'@docsearch/css': 3.8.2
- '@docsearch/js': 3.8.2
+ '@docsearch/js': 3.8.2_rjv6y3krrl5rwzkal4h52azgya
'@iconify-json/simple-icons': 1.2.30
'@shikijs/core': 2.5.0
'@shikijs/transformers': 2.5.0
@@ -8406,7 +10656,7 @@ packages:
'@vue/composition-api':
optional: true
dependencies:
- vue: 3.5.13_typescript@5.8.2
+ vue: 3.5.13
dev: true
/vue-eslint-parser/10.1.3_eslint@9.24.0:
@@ -8445,6 +10695,19 @@ packages:
- supports-color
dev: true
+ /vue-hooks-plus/2.3.1_vue@3.5.13:
+ resolution: {integrity: sha512-aI95zHG4vJ4ldVLEkTAfQ+WbZKRx5TF70Ia1QGkKze2fmp9BZUo8UCX+2aLyUtivTVJps9gerc6spmnF07E4CA==}
+ peerDependencies:
+ vue: ^3.2.25
+ dependencies:
+ '@types/js-cookie': 3.0.6
+ '@vue/devtools-api': 7.7.2
+ js-cookie: 3.0.5
+ lodash-es: 4.17.21
+ screenfull: 5.2.0
+ vue: 3.5.13
+ dev: false
+
/vue-template-compiler/2.7.16:
resolution: {integrity: sha512-AYbUWAJHLGGQM7+cNTELw+KsOG9nl2CnSv467WobS5Cv9uk3wFcnr1Etsz2sEIHEZvw1U+o9mRlEO6QbZvUPGQ==}
dependencies:
@@ -8491,7 +10754,6 @@ packages:
'@vue/runtime-dom': 3.5.13
'@vue/server-renderer': 3.5.13_vue@3.5.13
'@vue/shared': 3.5.13
- dev: true
/vue/3.5.13_typescript@5.8.2:
resolution: {integrity: sha512-wmeiSMxkZCSc+PM2w2VRsOYAZC8GdipNFRTsLSfodVqI9mbejKeXEGr8SckuLnrQPGe3oJN5c3K0vpoU9q/wCQ==}
@@ -8567,6 +10829,59 @@ packages:
webidl-conversions: 4.0.2
dev: true
+ /which-boxed-primitive/1.1.1:
+ resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ is-bigint: 1.1.0
+ is-boolean-object: 1.2.2
+ is-number-object: 1.1.1
+ is-string: 1.1.1
+ is-symbol: 1.1.1
+ dev: true
+
+ /which-builtin-type/1.2.1:
+ resolution: {integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bound: 1.0.4
+ function.prototype.name: 1.1.8
+ has-tostringtag: 1.0.2
+ is-async-function: 2.1.1
+ is-date-object: 1.1.0
+ is-finalizationregistry: 1.1.1
+ is-generator-function: 1.1.0
+ is-regex: 1.2.1
+ is-weakref: 1.1.1
+ isarray: 2.0.5
+ which-boxed-primitive: 1.1.1
+ which-collection: 1.0.2
+ which-typed-array: 1.1.19
+ dev: true
+
+ /which-collection/1.0.2:
+ resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ is-map: 2.0.3
+ is-set: 2.0.3
+ is-weakmap: 2.0.2
+ is-weakset: 2.0.4
+ dev: true
+
+ /which-typed-array/1.1.19:
+ resolution: {integrity: sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ available-typed-arrays: 1.0.7
+ call-bind: 1.0.8
+ call-bound: 1.0.4
+ for-each: 0.3.5
+ get-proto: 1.0.1
+ gopd: 1.2.0
+ has-tostringtag: 1.0.2
+ dev: true
+
/which/2.0.2:
resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
engines: {node: '>= 8'}
@@ -8593,6 +10908,152 @@ packages:
engines: {node: '>=0.10.0'}
dev: true
+ /workbox-background-sync/7.3.0:
+ resolution: {integrity: sha512-PCSk3eK7Mxeuyatb22pcSx9dlgWNv3+M8PqPaYDokks8Y5/FX4soaOqj3yhAZr5k6Q5JWTOMYgaJBpbw11G9Eg==}
+ dependencies:
+ idb: 7.1.1
+ workbox-core: 7.3.0
+ dev: true
+
+ /workbox-broadcast-update/7.3.0:
+ resolution: {integrity: sha512-T9/F5VEdJVhwmrIAE+E/kq5at2OY6+OXXgOWQevnubal6sO92Gjo24v6dCVwQiclAF5NS3hlmsifRrpQzZCdUA==}
+ dependencies:
+ workbox-core: 7.3.0
+ dev: true
+
+ /workbox-build/7.3.0:
+ resolution: {integrity: sha512-JGL6vZTPlxnlqZRhR/K/msqg3wKP+m0wfEUVosK7gsYzSgeIxvZLi1ViJJzVL7CEeI8r7rGFV973RiEqkP3lWQ==}
+ engines: {node: '>=16.0.0'}
+ dependencies:
+ '@apideck/better-ajv-errors': 0.3.6_ajv@8.17.1
+ '@babel/core': 7.27.4
+ '@babel/preset-env': 7.27.2_@babel+core@7.27.4
+ '@babel/runtime': 7.23.2
+ '@rollup/plugin-babel': 5.3.1_h2wdawvvx3hnqk2p4pcfrsdv2m
+ '@rollup/plugin-node-resolve': 15.3.1_rollup@2.79.2
+ '@rollup/plugin-replace': 2.4.2_rollup@2.79.2
+ '@rollup/plugin-terser': 0.4.4_rollup@2.79.2
+ '@surma/rollup-plugin-off-main-thread': 2.2.3
+ ajv: 8.17.1
+ common-tags: 1.8.2
+ fast-json-stable-stringify: 2.1.0
+ fs-extra: 9.1.0
+ glob: 7.2.3
+ lodash: 4.17.21
+ pretty-bytes: 5.6.0
+ rollup: 2.79.2
+ source-map: 0.8.0-beta.0
+ stringify-object: 3.3.0
+ strip-comments: 2.0.1
+ tempy: 0.6.0
+ upath: 1.2.0
+ workbox-background-sync: 7.3.0
+ workbox-broadcast-update: 7.3.0
+ workbox-cacheable-response: 7.3.0
+ workbox-core: 7.3.0
+ workbox-expiration: 7.3.0
+ workbox-google-analytics: 7.3.0
+ workbox-navigation-preload: 7.3.0
+ workbox-precaching: 7.3.0
+ workbox-range-requests: 7.3.0
+ workbox-recipes: 7.3.0
+ workbox-routing: 7.3.0
+ workbox-strategies: 7.3.0
+ workbox-streams: 7.3.0
+ workbox-sw: 7.3.0
+ workbox-window: 7.3.0
+ transitivePeerDependencies:
+ - '@types/babel__core'
+ - supports-color
+ dev: true
+
+ /workbox-cacheable-response/7.3.0:
+ resolution: {integrity: sha512-eAFERIg6J2LuyELhLlmeRcJFa5e16Mj8kL2yCDbhWE+HUun9skRQrGIFVUagqWj4DMaaPSMWfAolM7XZZxNmxA==}
+ dependencies:
+ workbox-core: 7.3.0
+ dev: true
+
+ /workbox-core/7.3.0:
+ resolution: {integrity: sha512-Z+mYrErfh4t3zi7NVTvOuACB0A/jA3bgxUN3PwtAVHvfEsZxV9Iju580VEETug3zYJRc0Dmii/aixI/Uxj8fmw==}
+ dev: true
+
+ /workbox-expiration/7.3.0:
+ resolution: {integrity: sha512-lpnSSLp2BM+K6bgFCWc5bS1LR5pAwDWbcKt1iL87/eTSJRdLdAwGQznZE+1czLgn/X05YChsrEegTNxjM067vQ==}
+ dependencies:
+ idb: 7.1.1
+ workbox-core: 7.3.0
+ dev: true
+
+ /workbox-google-analytics/7.3.0:
+ resolution: {integrity: sha512-ii/tSfFdhjLHZ2BrYgFNTrb/yk04pw2hasgbM70jpZfLk0vdJAXgaiMAWsoE+wfJDNWoZmBYY0hMVI0v5wWDbg==}
+ dependencies:
+ workbox-background-sync: 7.3.0
+ workbox-core: 7.3.0
+ workbox-routing: 7.3.0
+ workbox-strategies: 7.3.0
+ dev: true
+
+ /workbox-navigation-preload/7.3.0:
+ resolution: {integrity: sha512-fTJzogmFaTv4bShZ6aA7Bfj4Cewaq5rp30qcxl2iYM45YD79rKIhvzNHiFj1P+u5ZZldroqhASXwwoyusnr2cg==}
+ dependencies:
+ workbox-core: 7.3.0
+ dev: true
+
+ /workbox-precaching/7.3.0:
+ resolution: {integrity: sha512-ckp/3t0msgXclVAYaNndAGeAoWQUv7Rwc4fdhWL69CCAb2UHo3Cef0KIUctqfQj1p8h6aGyz3w8Cy3Ihq9OmIw==}
+ dependencies:
+ workbox-core: 7.3.0
+ workbox-routing: 7.3.0
+ workbox-strategies: 7.3.0
+ dev: true
+
+ /workbox-range-requests/7.3.0:
+ resolution: {integrity: sha512-EyFmM1KpDzzAouNF3+EWa15yDEenwxoeXu9bgxOEYnFfCxns7eAxA9WSSaVd8kujFFt3eIbShNqa4hLQNFvmVQ==}
+ dependencies:
+ workbox-core: 7.3.0
+ dev: true
+
+ /workbox-recipes/7.3.0:
+ resolution: {integrity: sha512-BJro/MpuW35I/zjZQBcoxsctgeB+kyb2JAP5EB3EYzePg8wDGoQuUdyYQS+CheTb+GhqJeWmVs3QxLI8EBP1sg==}
+ dependencies:
+ workbox-cacheable-response: 7.3.0
+ workbox-core: 7.3.0
+ workbox-expiration: 7.3.0
+ workbox-precaching: 7.3.0
+ workbox-routing: 7.3.0
+ workbox-strategies: 7.3.0
+ dev: true
+
+ /workbox-routing/7.3.0:
+ resolution: {integrity: sha512-ZUlysUVn5ZUzMOmQN3bqu+gK98vNfgX/gSTZ127izJg/pMMy4LryAthnYtjuqcjkN4HEAx1mdgxNiKJMZQM76A==}
+ dependencies:
+ workbox-core: 7.3.0
+ dev: true
+
+ /workbox-strategies/7.3.0:
+ resolution: {integrity: sha512-tmZydug+qzDFATwX7QiEL5Hdf7FrkhjaF9db1CbB39sDmEZJg3l9ayDvPxy8Y18C3Y66Nrr9kkN1f/RlkDgllg==}
+ dependencies:
+ workbox-core: 7.3.0
+ dev: true
+
+ /workbox-streams/7.3.0:
+ resolution: {integrity: sha512-SZnXucyg8x2Y61VGtDjKPO5EgPUG5NDn/v86WYHX+9ZqvAsGOytP0Jxp1bl663YUuMoXSAtsGLL+byHzEuMRpw==}
+ dependencies:
+ workbox-core: 7.3.0
+ workbox-routing: 7.3.0
+ dev: true
+
+ /workbox-sw/7.3.0:
+ resolution: {integrity: sha512-aCUyoAZU9IZtH05mn0ACUpyHzPs0lMeJimAYkQkBsOWiqaJLgusfDCR+yllkPkFRxWpZKF8vSvgHYeG7LwhlmA==}
+ dev: true
+
+ /workbox-window/7.3.0:
+ resolution: {integrity: sha512-qW8PDy16OV1UBaUNGlTVcepzrlzyzNW/ZJvFQQs2j2TzGsg6IKjcpZC1RSquqQnTOafl5pCj5bGfAHlCjOOjdA==}
+ dependencies:
+ '@types/trusted-types': 2.0.7
+ workbox-core: 7.3.0
+ dev: true
+
/wrap-ansi/7.0.0:
resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==}
engines: {node: '>=10'}
@@ -8630,6 +11091,10 @@ packages:
engines: {node: '>=10'}
dev: true
+ /yallist/3.1.1:
+ resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==}
+ dev: true
+
/yallist/4.0.0:
resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
dev: true
From c2b99600db75ba6cd9a5b67d623e68e11ce4aa43 Mon Sep 17 00:00:00 2001
From: YongGit <1013588891@qq.com>
Date: Sun, 1 Jun 2025 23:51:27 +0800
Subject: [PATCH 19/29] chore: command opt
---
package.json | 10 +-
pnpm-lock.yaml | 246 -------------------------------------------------
2 files changed, 3 insertions(+), 253 deletions(-)
diff --git a/package.json b/package.json
index a0c87c0a..75cfab04 100644
--- a/package.json
+++ b/package.json
@@ -9,15 +9,12 @@
},
"scripts": {
"bootstrap": "tsx scripts/bootstrap.ts",
- "build:vitepress-demo-block": "cd packages/vitepress/vitepress-demo-block && pnpm build",
"docs:dev": "vitepress dev docs",
"docs:build": "pnpm build && vitepress build docs",
- "build": "pnpm recursive exec pnpm run build",
+ "docs:preview": "vitepress preview docs --base /vue-hooks-plus/",
+ "build": "pnpm bootstrap && pnpm recursive exec pnpm run build",
"test": "vitest",
- "test:ui": "vitest --ui",
- "coverage": "vitest run --coverage",
- "prepare": "husky install",
- "docs:preview": "vitepress preview docs"
+ "prepare": "husky install"
},
"devDependencies": {
"@commitlint/cli": "^17.8.1",
@@ -34,7 +31,6 @@
"@typescript-eslint/eslint-plugin": "^5.33.0",
"@vite-pwa/vitepress": "^1.0.0",
"@vitejs/plugin-vue": "^2.3.1",
- "@vitest/coverage-c8": "^0.25.7",
"@vitest/ui": "^0.25.3",
"@vue-hooks-plus/md-demo-plugins": "^1.0.0",
"@vue-hooks-plus/types": "workspace:^2.0.0",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index bd2d90d5..e2be317e 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -18,7 +18,6 @@ importers:
'@typescript-eslint/eslint-plugin': ^5.33.0
'@vite-pwa/vitepress': ^1.0.0
'@vitejs/plugin-vue': ^2.3.1
- '@vitest/coverage-c8': ^0.25.7
'@vitest/ui': ^0.25.3
'@vue-hooks-plus/md-demo-plugins': ^1.0.0
'@vue-hooks-plus/types': workspace:^2.0.0
@@ -84,7 +83,6 @@ importers:
'@typescript-eslint/eslint-plugin': 5.62.0_ks6ui6jebwf5sajuqqtqmktvo4
'@vite-pwa/vitepress': 1.0.0_vite-plugin-pwa@1.0.0
'@vitejs/plugin-vue': 2.3.4_vite@3.0.2+vue@3.5.13
- '@vitest/coverage-c8': 0.25.8_4rke55fors2tnsu273t7mnruwm
'@vitest/ui': 0.25.8
'@vue-hooks-plus/md-demo-plugins': 1.1.0_4hfvhstsfslvn7fjhkqqeebcea
'@vue-hooks-plus/types': link:packages/types
@@ -1539,10 +1537,6 @@ packages:
'@babel/helper-validator-identifier': 7.27.1
dev: true
- /@bcoe/v8-coverage/0.2.3:
- resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==}
- dev: true
-
/@commitlint/cli/17.8.1:
resolution: {integrity: sha512-ay+WbzQesE0Rv4EQKfNbSMiJJ12KdKTDzIt0tcK4k11FdsWmtwP0Kp1NWMOUswfIWo6Eb7p7Ln721Nx9FLNBjg==}
engines: {node: '>=v14'}
@@ -2620,11 +2614,6 @@ packages:
wrap-ansi-cjs: /wrap-ansi/7.0.0
dev: true
- /@istanbuljs/schema/0.1.3:
- resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==}
- engines: {node: '>=8'}
- dev: true
-
/@jest/expect-utils/29.7.0:
resolution: {integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
@@ -3330,18 +3319,6 @@ packages:
resolution: {integrity: sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==}
dev: true
- /@types/chai-subset/1.3.6_@types+chai@4.3.20:
- resolution: {integrity: sha512-m8lERkkQj+uek18hXOZuec3W/fCRTrU4hrnXjH3qhHy96ytuPaPiWGgu7sJb7tZxZonO75vYAjCvpe/e4VUwRw==}
- peerDependencies:
- '@types/chai': <5.2.0
- dependencies:
- '@types/chai': 4.3.20
- dev: true
-
- /@types/chai/4.3.20:
- resolution: {integrity: sha512-/pC9HAB5I/xMlc5FP77qjCnI16ChlJfW0tGa0IUcFn38VJrTV6DeZ60NU5KZBtaOZqjdpwTWohz5HU1RrhiYxQ==}
- dev: true
-
/@types/estree/0.0.39:
resolution: {integrity: sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==}
dev: true
@@ -3812,25 +3789,6 @@ packages:
vue: 3.5.13_typescript@5.8.2
dev: true
- /@vitest/coverage-c8/0.25.8_4rke55fors2tnsu273t7mnruwm:
- resolution: {integrity: sha512-fWgzQoK2KNzTTNnDcLCyibfO9/pbcpPOMtZ9Yvq/Eggpi2X8lewx/OcKZkO5ba5q9dl6+BBn6d5hTcS1709rZw==}
- deprecated: v8 coverage is moved to @vitest/coverage-v8 package
- dependencies:
- c8: 7.14.0
- vitest: 0.25.8_4rke55fors2tnsu273t7mnruwm
- transitivePeerDependencies:
- - '@edge-runtime/vm'
- - '@vitest/browser'
- - '@vitest/ui'
- - happy-dom
- - jsdom
- - less
- - sass
- - stylus
- - supports-color
- - terser
- dev: true
-
/@vitest/expect/2.1.9:
resolution: {integrity: sha512-UJCIkTBenHeKT1TTlKMJWy1laZewsRIzYighyYiJKZreqtdxSos/S1t+ktRMQWu2CKqaarrkeszJx1cgC5tGZw==}
dependencies:
@@ -4544,10 +4502,6 @@ packages:
engines: {node: '>=0.10.0'}
dev: true
- /assertion-error/1.1.0:
- resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==}
- dev: true
-
/assertion-error/2.0.1:
resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==}
engines: {node: '>=12'}
@@ -4704,25 +4658,6 @@ packages:
load-tsconfig: 0.2.5
dev: true
- /c8/7.14.0:
- resolution: {integrity: sha512-i04rtkkcNcCf7zsQcSv/T9EbUn4RXQ6mropeMcjFOsQXQ0iGLAr/xT6TImQg4+U9hmNpN9XdvPkjUL1IzbgxJw==}
- engines: {node: '>=10.12.0'}
- hasBin: true
- dependencies:
- '@bcoe/v8-coverage': 0.2.3
- '@istanbuljs/schema': 0.1.3
- find-up: 5.0.0
- foreground-child: 2.0.0
- istanbul-lib-coverage: 3.2.2
- istanbul-lib-report: 3.0.1
- istanbul-reports: 3.1.7
- rimraf: 3.0.2
- test-exclude: 6.0.0
- v8-to-istanbul: 9.3.0
- yargs: 16.2.0
- yargs-parser: 20.2.9
- dev: true
-
/cac/6.7.14:
resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==}
engines: {node: '>=8'}
@@ -4779,19 +4714,6 @@ packages:
resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==}
dev: true
- /chai/4.5.0:
- resolution: {integrity: sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==}
- engines: {node: '>=4'}
- dependencies:
- assertion-error: 1.1.0
- check-error: 1.0.3
- deep-eql: 4.1.4
- get-func-name: 2.0.2
- loupe: 2.3.7
- pathval: 1.1.1
- type-detect: 4.1.0
- dev: true
-
/chai/5.2.0:
resolution: {integrity: sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==}
engines: {node: '>=12'}
@@ -4824,12 +4746,6 @@ packages:
resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==}
dev: true
- /check-error/1.0.3:
- resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==}
- dependencies:
- get-func-name: 2.0.2
- dev: true
-
/check-error/2.1.1:
resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==}
engines: {node: '>= 16'}
@@ -4893,14 +4809,6 @@ packages:
string-width: 5.1.2
dev: true
- /cliui/7.0.4:
- resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==}
- dependencies:
- string-width: 4.2.3
- strip-ansi: 6.0.1
- wrap-ansi: 7.0.0
- dev: true
-
/cliui/8.0.1:
resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==}
engines: {node: '>=12'}
@@ -5238,13 +5146,6 @@ packages:
resolution: {integrity: sha512-OUepMozQULMLUmhxS95Vudo0jb0UchLimi3+pQ2plj61Fcy8axbP9hbiD4Sz6DPqn6XG3kfmziVfQ1rSys5AJQ==}
dev: true
- /deep-eql/4.1.4:
- resolution: {integrity: sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==}
- engines: {node: '>=6'}
- dependencies:
- type-detect: 4.1.0
- dev: true
-
/deep-eql/5.0.2:
resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==}
engines: {node: '>=6'}
@@ -6461,14 +6362,6 @@ packages:
is-callable: 1.2.7
dev: true
- /foreground-child/2.0.0:
- resolution: {integrity: sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==}
- engines: {node: '>=8.0.0'}
- dependencies:
- cross-spawn: 7.0.6
- signal-exit: 3.0.7
- dev: true
-
/foreground-child/3.3.1:
resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==}
engines: {node: '>=14'}
@@ -6574,10 +6467,6 @@ packages:
engines: {node: 6.* || 8.* || >= 10.*}
dev: true
- /get-func-name/2.0.2:
- resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==}
- dev: true
-
/get-intrinsic/1.3.0:
resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==}
engines: {node: '>= 0.4'}
@@ -6880,10 +6769,6 @@ packages:
lru-cache: 6.0.0
dev: true
- /html-escaper/2.0.2:
- resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==}
- dev: true
-
/html-void-elements/3.0.0:
resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==}
dev: true
@@ -7273,28 +7158,6 @@ packages:
resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
dev: true
- /istanbul-lib-coverage/3.2.2:
- resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==}
- engines: {node: '>=8'}
- dev: true
-
- /istanbul-lib-report/3.0.1:
- resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==}
- engines: {node: '>=10'}
- dependencies:
- istanbul-lib-coverage: 3.2.2
- make-dir: 4.0.0
- supports-color: 7.2.0
- dev: true
-
- /istanbul-reports/3.1.7:
- resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==}
- engines: {node: '>=8'}
- dependencies:
- html-escaper: 2.0.2
- istanbul-lib-report: 3.0.1
- dev: true
-
/jackspeak/3.4.3:
resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==}
dependencies:
@@ -7700,12 +7563,6 @@ packages:
wrap-ansi: 8.1.0
dev: true
- /loupe/2.3.7:
- resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==}
- dependencies:
- get-func-name: 2.0.2
- dev: true
-
/loupe/3.1.3:
resolution: {integrity: sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==}
dev: true
@@ -7775,13 +7632,6 @@ packages:
semver: 6.3.1
dev: true
- /make-dir/4.0.0:
- resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==}
- engines: {node: '>=10'}
- dependencies:
- semver: 7.7.1
- dev: true
-
/make-error/1.3.6:
resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==}
dev: true
@@ -8413,10 +8263,6 @@ packages:
resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==}
dev: true
- /pathval/1.1.1:
- resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==}
- dev: true
-
/pathval/2.0.0:
resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==}
engines: {node: '>= 14.16'}
@@ -9498,15 +9344,6 @@ packages:
source-map-support: 0.5.21
dev: true
- /test-exclude/6.0.0:
- resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==}
- engines: {node: '>=8'}
- dependencies:
- '@istanbuljs/schema': 0.1.3
- glob: 7.2.3
- minimatch: 3.1.2
- dev: true
-
/text-extensions/1.9.0:
resolution: {integrity: sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==}
engines: {node: '>=0.10'}
@@ -9555,11 +9392,6 @@ packages:
picomatch: 4.0.2
dev: true
- /tinypool/0.3.1:
- resolution: {integrity: sha512-zLA1ZXlstbU2rlpA4CIeVaqvWq41MTWqLY3FfsAXgC8+f7Pk7zroaJQxDgxn1xNudKW6Kmj4808rPFShUlIRmQ==}
- engines: {node: '>=14.0.0'}
- dev: true
-
/tinypool/1.0.2:
resolution: {integrity: sha512-al6n+QEANGFOMf/dmUMsuS5/r9B06uwlyNjZZql/zv8J7ybHCgoihBNORZCY2mzUuAnomQa2JdhyHKzZxPCrFA==}
engines: {node: ^18.0.0 || >=20.0.0}
@@ -9570,11 +9402,6 @@ packages:
engines: {node: '>=14.0.0'}
dev: true
- /tinyspy/1.1.1:
- resolution: {integrity: sha512-UVq5AXt/gQlti7oxoIg5oi/9r0WpF7DGEVwXgqWSMmyN16+e3tl5lIvTaOpJ3TAtu5xFzWccFRM4R5NaWHF+4g==}
- engines: {node: '>=14.0.0'}
- dev: true
-
/tinyspy/3.0.2:
resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==}
engines: {node: '>=14.0.0'}
@@ -9790,11 +9617,6 @@ packages:
prelude-ls: 1.2.1
dev: true
- /type-detect/4.1.0:
- resolution: {integrity: sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==}
- engines: {node: '>=4'}
- dev: true
-
/type-fest/0.16.0:
resolution: {integrity: sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==}
engines: {node: '>=10'}
@@ -10079,15 +9901,6 @@ packages:
resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==}
dev: true
- /v8-to-istanbul/9.3.0:
- resolution: {integrity: sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==}
- engines: {node: '>=10.12.0'}
- dependencies:
- '@jridgewell/trace-mapping': 0.3.25
- '@types/istanbul-lib-coverage': 2.0.6
- convert-source-map: 2.0.0
- dev: true
-
/valid-data-url/3.0.1:
resolution: {integrity: sha512-jOWVmzVceKlVVdwjNSenT4PbGghU0SBIizAev8ofZVgivk/TVHXSbNL8LP6M3spZvkR9/QolkyJavGSX5Cs0UA==}
engines: {node: '>=10'}
@@ -10507,52 +10320,6 @@ packages:
- universal-cookie
dev: true
- /vitest/0.25.8_4rke55fors2tnsu273t7mnruwm:
- resolution: {integrity: sha512-X75TApG2wZTJn299E/TIYevr4E9/nBo1sUtZzn0Ci5oK8qnpZAZyhwg0qCeMSakGIWtc6oRwcQFyFfW14aOFWg==}
- engines: {node: '>=v14.16.0'}
- hasBin: true
- peerDependencies:
- '@edge-runtime/vm': '*'
- '@vitest/browser': '*'
- '@vitest/ui': '*'
- happy-dom: '*'
- jsdom: '*'
- peerDependenciesMeta:
- '@edge-runtime/vm':
- optional: true
- '@vitest/browser':
- optional: true
- '@vitest/ui':
- optional: true
- happy-dom:
- optional: true
- jsdom:
- optional: true
- dependencies:
- '@types/chai': 4.3.20
- '@types/chai-subset': 1.3.6_@types+chai@4.3.20
- '@types/node': 17.0.45
- '@vitest/ui': 0.25.8
- acorn: 8.14.1
- acorn-walk: 8.3.4
- chai: 4.5.0
- debug: 4.4.0
- happy-dom: 7.8.1
- local-pkg: 0.4.3
- source-map: 0.6.1
- strip-literal: 1.3.0
- tinybench: 2.9.0
- tinypool: 0.3.1
- tinyspy: 1.1.1
- vite: 3.0.2_less@4.2.2
- transitivePeerDependencies:
- - less
- - sass
- - stylus
- - supports-color
- - terser
- dev: true
-
/vitest/2.1.9_zae7dsnwsizzxm5tsw4wmcypxe:
resolution: {integrity: sha512-MSmPM9REYqDGBI8439mA4mWhV5sKmDlBKWIYbA3lRb2PTHACE0mgKwA8yQ2xq9vxDTuk4iPrECBAEW2aoFXY0Q==}
engines: {node: ^18.0.0 || >=20.0.0}
@@ -11119,19 +10886,6 @@ packages:
engines: {node: '>=12'}
dev: true
- /yargs/16.2.0:
- resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==}
- engines: {node: '>=10'}
- dependencies:
- cliui: 7.0.4
- escalade: 3.2.0
- get-caller-file: 2.0.5
- require-directory: 2.1.1
- string-width: 4.2.3
- y18n: 5.0.8
- yargs-parser: 20.2.9
- dev: true
-
/yargs/17.7.2:
resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==}
engines: {node: '>=12'}
From b42f72971b9c5391acd8a62a5abbd89195789e23 Mon Sep 17 00:00:00 2001
From: YongGit <1013588891@qq.com>
Date: Sun, 1 Jun 2025 23:55:20 +0800
Subject: [PATCH 20/29] style: format
---
.markdownlint.json | 19 +++++++++++++++++--
1 file changed, 17 insertions(+), 2 deletions(-)
diff --git a/.markdownlint.json b/.markdownlint.json
index 8c789eb2..eb34f583 100644
--- a/.markdownlint.json
+++ b/.markdownlint.json
@@ -1,7 +1,22 @@
{
"no-inline-html": {
- "allowed_elements": ["ul", "li", "div", "img", "a", "br", "script", "Badge", "Home","demo","VPTeamPage","VPTeamPageTitle","VPTeamMembers","VPTeamPageSection"]
+ "allowed_elements": [
+ "ul",
+ "li",
+ "div",
+ "img",
+ "a",
+ "br",
+ "script",
+ "Badge",
+ "Home",
+ "demo",
+ "VPTeamPage",
+ "VPTeamPageTitle",
+ "VPTeamMembers",
+ "VPTeamPageSection"
+ ]
},
"MD013": false,
"MD041": false
-}
+}
\ No newline at end of file
From 68749255e4202bc277d542822c13b1ef33c0f017 Mon Sep 17 00:00:00 2001
From: YongGit <1013588891@qq.com>
Date: Sun, 1 Jun 2025 23:57:03 +0800
Subject: [PATCH 21/29] chore: rm unuse
---
.vscode/settings.json | 1 -
1 file changed, 1 deletion(-)
delete mode 100644 .vscode/settings.json
diff --git a/.vscode/settings.json b/.vscode/settings.json
deleted file mode 100644
index 0967ef42..00000000
--- a/.vscode/settings.json
+++ /dev/null
@@ -1 +0,0 @@
-{}
From 1effaa19df66108382d293ef8c26e8f2abda61ed Mon Sep 17 00:00:00 2001
From: YongGit <1013588891@qq.com>
Date: Mon, 2 Jun 2025 11:15:28 +0800
Subject: [PATCH 22/29] =?UTF-8?q?chore:=20opt=20=F0=9F=9A=9B?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../src/useDebounceFn/__tests__/index.spec.ts | 11 +-
packages/hooks/src/useDebounceFn/index.ts | 6 +-
.../useEventListener/__tests__/index.spec.ts | 12 +-
.../src/useFavicon/__tests__/index.spec.ts | 103 +-
packages/sponsor/package.json | 1 +
packages/types/index.d.ts | 1228 -----------------
packages/types/package.json | 27 -
packages/types/tsconfig.json | 11 -
packages/types/types.d.ts | 6 -
packages/types/vite.config.ts | 31 -
vitest.config.ts | 5 +-
11 files changed, 97 insertions(+), 1344 deletions(-)
delete mode 100644 packages/types/index.d.ts
delete mode 100644 packages/types/package.json
delete mode 100644 packages/types/tsconfig.json
delete mode 100644 packages/types/types.d.ts
delete mode 100644 packages/types/vite.config.ts
diff --git a/packages/hooks/src/useDebounceFn/__tests__/index.spec.ts b/packages/hooks/src/useDebounceFn/__tests__/index.spec.ts
index f4e57af9..c67a8348 100644
--- a/packages/hooks/src/useDebounceFn/__tests__/index.spec.ts
+++ b/packages/hooks/src/useDebounceFn/__tests__/index.spec.ts
@@ -1,5 +1,6 @@
import { sleep } from 'test-utils/sleep'
import useDebounceFn from '..'
+import renderHook from 'test-utils/renderHook'
let count = 0
const debounceFn = (gap: number) => {
@@ -8,7 +9,7 @@ const debounceFn = (gap: number) => {
describe('useDebounceFn', () => {
it('run, cancel and flush should work', async () => {
- const { run, cancel, flush } = useDebounceFn(debounceFn, { wait: 200 })
+ const [{ run, cancel, flush }] = renderHook(() => useDebounceFn(debounceFn, { wait: 100 }))
run(2)
run(2)
run(2)
@@ -39,7 +40,7 @@ describe('useDebounceFn', () => {
it('should support leading option', async () => {
let value = 0
const fn = (v: number) => { value += v }
- const { run } = useDebounceFn(fn, { wait: 100, leading: true, trailing: false })
+ const [{ run }] = renderHook(() => useDebounceFn(fn, { wait: 100, leading: true, trailing: false }))
run(1)
expect(value).toBe(1)
run(1)
@@ -53,7 +54,7 @@ describe('useDebounceFn', () => {
it('should support trailing option', async () => {
let value = 0
const fn = (v: number) => { value += v }
- const { run } = useDebounceFn(fn, { wait: 100, leading: false, trailing: true })
+ const [{ run }] = renderHook(() => useDebounceFn(fn, { wait: 100, leading: false, trailing: true }))
run(1)
run(2)
run(3)
@@ -65,7 +66,7 @@ describe('useDebounceFn', () => {
it('should support maxWait option', async () => {
let value = 0
const fn = (v: number) => { value += v }
- const { run } = useDebounceFn(fn, { wait: 100, maxWait: 200 })
+ const [{ run }] = renderHook(() => useDebounceFn(fn, { wait: 100, maxWait: 200 }))
run(1)
setTimeout(() => run(2), 50)
setTimeout(() => run(3), 120)
@@ -76,7 +77,7 @@ describe('useDebounceFn', () => {
it('should update options dynamically', async () => {
let value = 0
const fn = (v: number) => { value += v }
- const { run, updateOptions } = useDebounceFn(fn, { wait: 200 })
+ const [{ run, updateOptions }] = renderHook(() => useDebounceFn(fn, { wait: 200 }))
run(1)
await sleep(100)
updateOptions({ wait: 50 })
diff --git a/packages/hooks/src/useDebounceFn/index.ts b/packages/hooks/src/useDebounceFn/index.ts
index 2a6f913e..f60dc7d0 100644
--- a/packages/hooks/src/useDebounceFn/index.ts
+++ b/packages/hooks/src/useDebounceFn/index.ts
@@ -1,5 +1,5 @@
import debounce from 'lodash-es/debounce'
-import { onUnmounted, Ref, ref, watch } from 'vue'
+import { onScopeDispose, Ref, ref, watch } from 'vue'
export interface DebounceOptions {
/**
@@ -51,10 +51,12 @@ function useDebounceFn(fn: T, options?: DebounceOptions) {
);
- onUnmounted(() => {
+ onScopeDispose(() => {
debouncedRef.value?.cancel();
});
+
+
return {
/**
* Invode and pass parameters to fn.
diff --git a/packages/hooks/src/useEventListener/__tests__/index.spec.ts b/packages/hooks/src/useEventListener/__tests__/index.spec.ts
index 4b2f8ec0..eabb4775 100644
--- a/packages/hooks/src/useEventListener/__tests__/index.spec.ts
+++ b/packages/hooks/src/useEventListener/__tests__/index.spec.ts
@@ -17,7 +17,7 @@ describe('useEventListener', () => {
const onClick = () => {
state++
}
- useEventListener('click', onClick, { target: () => container })
+ renderHook(() => useEventListener('click', onClick, { target: () => container }))
document.body.click()
expect(state).toEqual(0)
@@ -32,7 +32,7 @@ describe('useEventListener', () => {
const onResize = () => {
called = true
}
- useEventListener('resize', onResize, { target: window })
+ renderHook(() => useEventListener('resize', onResize, { target: window }))
window.dispatchEvent(new Event('resize'))
expect(called).toBe(true)
})
@@ -42,7 +42,7 @@ describe('useEventListener', () => {
const onKeyDown = (e: KeyboardEvent) => {
key = e.key
}
- useEventListener('keydown', onKeyDown, { target: document })
+ renderHook(() => useEventListener('keydown', onKeyDown, { target: document }))
const event = new KeyboardEvent('keydown', { key: 'a' })
document.dispatchEvent(event)
expect(key).toBe('a')
@@ -57,7 +57,7 @@ describe('useEventListener', () => {
triggered = true
}
}
- useEventListener('click', onClick, { target: () => container, once: true })
+ renderHook(() => useEventListener('click', onClick, { target: () => container, once: true }))
container.click()
container.click()
expect(count).toBe(1)
@@ -68,7 +68,7 @@ describe('useEventListener', () => {
const onWheel = () => {
called = true
}
- useEventListener('wheel', onWheel, { target: () => container, passive: true })
+ renderHook(() => useEventListener('wheel', onWheel, { target: () => container, passive: true }))
const event = new Event('wheel')
container.dispatchEvent(event)
expect(called).toBe(true)
@@ -78,7 +78,7 @@ describe('useEventListener', () => {
const phase: string[] = []
const onCapture = () => phase.push('capture')
const onBubble = () => phase.push('bubble')
- useEventListener('click', onCapture, { target: () => container, capture: true })
+ renderHook(() => useEventListener('click', onCapture, { target: () => container, capture: true }))
container.addEventListener('click', onBubble)
container.click()
expect(phase[0]).toBe('capture')
diff --git a/packages/hooks/src/useFavicon/__tests__/index.spec.ts b/packages/hooks/src/useFavicon/__tests__/index.spec.ts
index 7ca2fe99..63c18e69 100644
--- a/packages/hooks/src/useFavicon/__tests__/index.spec.ts
+++ b/packages/hooks/src/useFavicon/__tests__/index.spec.ts
@@ -1,41 +1,96 @@
+import { ref, defineComponent } from 'vue'
import { mount } from '@vue/test-utils'
-import { ref } from 'vue'
import useFavicon from '..'
-import Test from './Test.vue'
const DEFAULT_FAVICON_URL =
'https://raw.githubusercontent.com/InhiblabCore/vue-hooks-plus/master/packages/hooks/docs/public/logo.svg'
const GOOGLE_FAVICON_URL = 'https://www.google.com/favicon.ico'
-describe('useFavicon', () => {
- const url = ref(DEFAULT_FAVICON_URL)
- useFavicon(url)
- it('default be DEFAULT_FAVICON_URL', () => {
- expect(url.value).toBe(DEFAULT_FAVICON_URL)
- })
-
- it('should work', async () => {
- url.value = GOOGLE_FAVICON_URL
- expect(url.value).toBe(GOOGLE_FAVICON_URL)
-
- const wrapper = mount(Test)
+function getFaviconHref() {
+ const link = document.head.querySelector('link[rel*="icon"]') as HTMLLinkElement | null
+ return link?.href || ''
+}
- const currentFaviconURL = wrapper.find('span')
+describe('useFavicon', () => {
+ let originalFavicon: string | null = null
- const toggleToGoogleBtn = wrapper.find('.button1')
- const toggleToAHooksBtn = wrapper.find('.button2')
+ beforeEach(() => {
+ const link = document.head.querySelector('link[rel="icon"]') as HTMLLinkElement | null
+ originalFavicon = link?.href || null
+ })
- expect(currentFaviconURL.text()).toBe(DEFAULT_FAVICON_URL)
+ afterEach(() => {
+ // 恢复原始 favicon
+ let link = document.head.querySelector('link[rel="icon"]') as HTMLLinkElement | null
+ if (!link && originalFavicon) {
+ link = document.createElement('link')
+ link.rel = 'icon'
+ document.head.appendChild(link)
+ }
+ if (link && originalFavicon) {
+ link.href = originalFavicon
+ } else if (link) {
+ link.parentNode?.removeChild(link)
+ }
+ })
- await toggleToGoogleBtn?.trigger('click')
- expect(currentFaviconURL.text()).toBe(GOOGLE_FAVICON_URL)
+ it('should set favicon to the provided URL', async () => {
+ const url = ref(DEFAULT_FAVICON_URL)
+ mount(defineComponent({
+ setup() {
+ useFavicon(url)
+ return () => null
+ }
+ }))
+ await Promise.resolve().then()
+ expect(getFaviconHref()).toBe(DEFAULT_FAVICON_URL)
+ })
- await toggleToAHooksBtn?.trigger('click')
- expect(currentFaviconURL.text()).toBe(DEFAULT_FAVICON_URL)
+ it('should update favicon when URL changes', async () => {
+ const url = ref(DEFAULT_FAVICON_URL)
+ const wrapper = mount(defineComponent({
+ setup() {
+ useFavicon(url)
+ return () => null
+ }
+ }))
+ await Promise.resolve().then()
+ expect(getFaviconHref()).toBe(DEFAULT_FAVICON_URL)
+ url.value = GOOGLE_FAVICON_URL
+ await wrapper.vm.$nextTick()
+ await Promise.resolve().then()
+ expect(getFaviconHref()).toBe(GOOGLE_FAVICON_URL)
})
- it('support undefined', () => {
+ it('should remove favicon when URL is undefined', async () => {
+ const url = ref(DEFAULT_FAVICON_URL)
+ const wrapper = mount(defineComponent({
+ setup() {
+ useFavicon(url)
+ return () => null
+ }
+ }))
+ await Promise.resolve().then()
+ expect(getFaviconHref()).toBe(DEFAULT_FAVICON_URL)
url.value = undefined
- expect(url.value).toBeUndefined
+ await wrapper.vm.$nextTick()
+ await Promise.resolve().then()
+ const link = document.head.querySelector('link[rel="icon"]')
+ expect(link).toBeNull()
+ })
+
+ it('should restore previous favicon on unmount', async () => {
+ const url = ref(GOOGLE_FAVICON_URL)
+ const wrapper = mount(defineComponent({
+ setup() {
+ useFavicon(url)
+ return () => null
+ }
+ }))
+ await Promise.resolve().then()
+ expect(getFaviconHref()).toBe(GOOGLE_FAVICON_URL)
+ wrapper.unmount()
+ await Promise.resolve().then()
+ expect(getFaviconHref()).toBe(GOOGLE_FAVICON_URL)
})
})
diff --git a/packages/sponsor/package.json b/packages/sponsor/package.json
index 1b560d4a..32923c04 100644
--- a/packages/sponsor/package.json
+++ b/packages/sponsor/package.json
@@ -1,6 +1,7 @@
{
"name": "@vue-hooks-plus/sponsor",
"version": "1.0.0",
+ "private": true,
"description": "Vue hooks plus sponsor",
"files": [
"dist",
diff --git a/packages/types/index.d.ts b/packages/types/index.d.ts
deleted file mode 100644
index 2d2ded94..00000000
--- a/packages/types/index.d.ts
+++ /dev/null
@@ -1,1228 +0,0 @@
-import { type ComponentPublicInstance } from 'vue';
-import { ComputedRef } from 'vue';
-import Cookies from 'js-cookie';
-import { type DebouncedFunc } from 'lodash';
-import { DeepReadonly } from 'vue';
-import { Ref } from 'vue';
-import { UnwrapNestedRefs } from 'vue';
-import { UnwrapRef } from 'vue';
-import { watch } from 'vue';
-import { WatchSource } from 'vue';
-
-declare type BasicTarget = (() => TargetValue) | TargetValue | Ref>;
-
-declare interface CachedData {
- data: TData;
- params: TParams;
- time: number;
-}
-
-export declare const clearUseRequestCache: (key?: string | string[]) => void;
-
-declare interface DebounceOptions {
- /**
- * The number of milliseconds to delay.
- */
- wait?: number;
- /**
- * Specify invoking on the leading edge of the timeout.
- */
- leading?: boolean;
- /**
- * Specify invoking on the trailing edge of the timeout.
- */
- trailing?: boolean;
- /**
- * The maximum time func is allowed to be delayed before it’s invoked.
- */
- maxWait?: number;
-}
-
-declare type DependencyList = WatchSource | any[] | any;
-
-declare class EventEmitter {
- private subscriptions;
- private emitEffectCache;
- constructor();
- /**
- * Subscribe to the event
- * @param event string
- * @param listener Subscription
- */
- useSubscription: (event: string, listener?: Subscription) => void;
- /**
- * Send an event notification
- * @param event string | number
- * @param args T extends any[] ? any[] : any
- */
- emit: (event: string | number, ...args: T extends any[] ? any[] : any) => void;
- emitEffect: (event: string | number) => void;
- removeListener: (event: string) => void;
- clear: () => void;
-}
-
-declare const eventEmitterOverall: EventEmitter;
-
-declare class Fetch {
- serviceRef: Ref>;
- options: Partial & UseRequestOptionsWithFormatResult>;
- setUpdateData: (currentState: unknown, key?: keyof UseRequestFetchState) => void;
- initState: Partial>;
- pluginImpls: UseRequestPluginReturn[] | undefined;
- count: number;
- state: UseRequestFetchState;
- previousValidData: UseRequestFetchState['data'];
- constructor(serviceRef: Ref>, options: Partial & UseRequestOptionsWithFormatResult>, setUpdateData: (currentState: unknown, key?: keyof UseRequestFetchState) => void, initState?: Partial>);
- /**
- * set state
- * @param currentState currentState
- */
- setState(currentState?: Partial>): void;
- /**
- * should rename
- * @param data Result value `unknown`
- * @param key Result key `data`| `params` | `loading`| `error`
- */
- setData(data: unknown, key?: keyof UseRequestFetchState | (keyof UseRequestFetchState)[]): void;
- /**
- *
- * @param data Result value `unknown`
- * @param key Result key `data`| `params` | `loading`| `error`
- */
- setFetchState(data: unknown, key?: keyof UseRequestFetchState | (keyof UseRequestFetchState)[]): void;
- /**
- * Traverse the plugin that needs to be run,
- * which is a callback function for the plugin to obtain fetch instances and execute plugin logic at the corresponding nodes.
- */
- runPluginHandler(event: keyof UseRequestPluginReturn, ...rest: unknown[]): any;
- runAsync(...params: TParams): Promise;
- run(...params: TParams): void;
- cancel(): void;
- refresh(): void;
- refreshAsync(): Promise;
- mutate(data?: TData | ((oldData?: TData) => TData | undefined)): void;
-}
-
-declare type FetchType = Record | undefined;
- params: TParams;
- loading: boolean;
- key: string | number;
-}>;
-
-declare interface IFuncUpdater {
- (previousState?: T): T;
-}
-
-declare type InterruptibleRejectType = (error: any) => void;
-
-declare type IProps = Record;
-
-declare interface LongPressModifiers {
- stop?: boolean;
- once?: boolean;
- prevent?: boolean;
- capture?: boolean;
- self?: boolean;
-}
-
-declare type noop = (...args: any) => any;
-
-declare type noop_2 = (...p: any) => void;
-
-declare type noop_3 = (...args: any) => any;
-
-declare interface Options {
- serializer?: (value: T) => string;
- deserializer?: (value: string) => T;
-}
-
-declare interface OptionsWithDefaultValue extends Options {
- defaultValue: T | IFuncUpdater;
-}
-
-declare type ParamsType = P extends any[] ? any[] : any;
-
-declare type Position = {
- left: number;
- top: number;
-};
-
-declare enum ReadyState_2 {
- Connecting = 0,
- Open = 1,
- Closing = 2,
- Closed = 3
-}
-
-declare type RequestHook = (service: UseRequestService, options: UseRequestOptions, plugins: UseRequestPlugin[]) => useRequestResult;
-
-declare type ResizeObserverCallback_2 = (entries: ReadonlyArray, ob: ResizeObserver) => void;
-
-declare type Resolve = (value: any) => void;
-
-declare type Size = {
- width: Readonly[>;
- height: Readonly][>;
-};
-
-declare type StorageStateResultHasDefaultValue = [
-Ref | Ref,
-(value?: T | IFuncUpdater | undefined) => void
-];
-
-declare type Subscription = ({ params, event }: SubscriptionParams) => void;
-
-declare type SubscriptionParams = {
- params: T;
- event: string | number;
-};
-
-declare type TargetType = HTMLElement | Element | Window | Document | ComponentPublicInstance;
-
-declare type TargetValue = T | undefined | null;
-
-declare interface UrlState {
- [key: string]: any;
-}
-
-export declare function useAsyncOrder({ task, option }: UseAsyncOrderType): void;
-
-declare type UseAsyncOrderType = {
- task: ((resolve?: Resolve, reject?: InterruptibleRejectType, index?: number) => void)[];
- option?: {
- /**
- * Delay execution
- */
- delay?: number;
- /**
- * Preparation phase callback
- * @returns void
- */
- onReady?: () => void;
- /**
- * Successful callback
- * @param result any
- * @returns void
- */
- onSuccess?: (result: unknown) => void;
- /**
- * Error callback
- * @param err unknown
- * @returns void
- */
- onError?: (err: unknown) => void;
- };
-};
-
-export declare function useBoolean(defaultValue?: boolean): UseBooleanResult;
-
-declare interface UseBooleanActions {
- /**
- * Set state to `true`
- * @returns void
- */
- setTrue: () => void;
- /**
- * Set state to `false`
- * @returns void
- */
- setFalse: () => void;
- /**
- * Set state
- * @param value boolean
- * @returns void
- */
- set: (value: boolean) => void;
- /**
- * Toggle state
- * @returns void
- */
- toggle: () => void;
-}
-
-declare type UseBooleanResult = [Readonly][>, UseBooleanActions];
-
-export declare function useCookieState(cookieKey: string, options?: UseCookieStateOptions): readonly [Readonly][ UseCookieStateType)>>, (newValue: UseCookieStateType | ((prevState: UseCookieStateType) => UseCookieStateType), newOptions?: Cookies.CookieAttributes) => void];
-
-declare interface UseCookieStateOptions extends Cookies.CookieAttributes {
- defaultValue?: UseCookieStateType | (() => UseCookieStateType);
-}
-
-declare type UseCookieStateType = string | undefined;
-
-export declare function useCounter(initialValue?: number, options?: UseCounterOptions): [Ref, UseCounterActions];
-
-declare interface UseCounterActions {
- /**
- * Increment, default delta is 1
- * @param delta number
- * @returns void
- */
- inc: (delta?: number) => void;
- /**
- * Decrement, default delta is 1
- * @param delta number
- * @returns void
- */
- dec: (delta?: number) => void;
- /**
- * Set current value
- * @param value number | ((c: number) => number)
- * @returns void
- */
- set: (value: number | ((c: number) => number)) => void;
- /**
- * Reset current value to initial value
- * @returns void
- */
- reset: () => void;
-}
-
-declare interface UseCounterOptions {
- /**
- * Min count
- */
- min?: number;
- /**
- * Max count
- */
- max?: number;
-}
-
-export declare function useDarkMode(): [ComputedRef, (value?: unknown) => void];
-
-export declare function useDebounce(value: Ref, options?: DebounceOptions): Ref;
-
-export declare function useDebounceFn(fn: T, options?: DebounceOptions): {
- /**
- * Invode and pass parameters to fn.
- * `(...args: any[]) => any`
- */
- run: DebouncedFunc;
- /**
- * Cancel the invocation of currently debounced function.
- * `() => void`
- */
- cancel: () => void;
- /**
- * Immediately invoke currently debounced function.
- * `() => void`
- */
- flush: () => ReturnType | undefined;
-};
-
-export declare const useDrag: (data: T, target: BasicTarget, options?: UseDragOptions) => void;
-
-declare interface UseDragOptions {
- draggable?: boolean;
- /**
- * On drag start callback
- * @param event DragEvent
- * @returns void
- */
- onDragStart?: (event: DragEvent) => void;
- /**
- * On drag end callback
- * @param event DragEvent
- * @returns void
- */
- onDragEnd?: (event: DragEvent) => void;
-}
-
-export declare const useDrop: (target: BasicTarget, options?: UseDropOptions) => void;
-
-declare interface UseDropOptions {
- /**
- * The callback when file is dropped or pasted
- * @param files File[]
- * @param event DragEvent
- * @returns void
- */
- onFiles?: (files: File[], event?: DragEvent) => void;
- /**
- * The callback when uri is dropped or pasted
- * @param url string
- * @param event DragEvent
- * @returns void
- */
- onUri?: (url: string, event?: DragEvent) => void;
- /**
- * The callback when DOM is dropped or pasted
- * @param content any
- * @param event DragEvent
- * @returns void
- */
- onDom?: (content: any, event?: DragEvent) => void;
- /**
- * The callback when text is dropped or pasted
- * @param text `string`
- * @param event `ClipboardEvent`
- * @returns `void`
- */
- onText?: (text: string, event?: ClipboardEvent) => void;
- /**
- * On drag enter callback
- * @param event `DragEvent`
- * @returns `void`
- */
- onDragEnter?: (event?: DragEvent) => void;
- /**
- * On drag over callback
- * @param event `DragEvent``
- * @returns `void`
- */
- onDragOver?: (event?: DragEvent) => void;
- /**
- * On drag leave callback
- * @param event `DragEvent`
- * @returns `void`
- */
- onDragLeave?: (event?: DragEvent) => void;
- /**
- * The callback when any is dropped
- * @param event DragEvent
- * @returns void
- */
- onDrop?: (event?: DragEvent) => void;
- /**
- * The callback when any is pasted
- * @param event ClipboardEvent
- * @returns void
- */
- onPaste?: (event?: ClipboardEvent) => void;
-}
-
-export declare function useElementBounding(target: BasicTarget, options?: UseElementBoundingOptions): UseElementBoundingReturnType;
-
-declare interface UseElementBoundingOptions {
- /**
- *
- * When the component is mounted, initialize all values to 0
- *
- * @default true
- */
- reset?: boolean;
- /**
- *
- * windowResize
- *
- * @default true
- */
- windowResize?: boolean;
- /**
- *
- * windowScroll
- *
- * @default true
- */
- windowScroll?: boolean;
- /**
- *
- * immediate
- *
- * @default true
- */
- immediate?: boolean;
-}
-
-declare interface UseElementBoundingReturnType {
- width: Ref;
- height: Ref;
- top: Ref;
- left: Ref;
- bottom: Ref;
- right: Ref;
-}
-
-export declare function useEventEmitter(options?: {
- /**
- * Is it global
- */
- global?: boolean;
-}): UseEventEmitterType;
-
-declare type UseEventEmitterType = EventEmitter | typeof eventEmitterOverall;
-
-export declare function useEventListener(eventName: K, handler: (ev: HTMLElementEventMap[K]) => void, options?: UseEventListenerOptions): void;
-
-export declare function useEventListener(eventName: K, handler: (ev: ElementEventMap[K]) => void, options?: UseEventListenerOptions): void;
-
-export declare function useEventListener(eventName: K, handler: (ev: DocumentEventMap[K]) => void, options?: UseEventListenerOptions): void;
-
-export declare function useEventListener(eventName: K, handler: (ev: WindowEventMap[K]) => void, options?: UseEventListenerOptions): void;
-
-export declare function useEventListener(eventName: string, handler: noop_2, options: UseEventListenerOptions): void;
-
-declare type UseEventListenerOptions = {
- /**
- * DOM element or ref
- */
- target?: T;
- /**
- * Optional, a Boolean indicating that events of this type will be dispatched to the registered listener before being dispatched to any EventTarget beneath it in the DOM tree.
- */
- capture?: boolean;
- /**
- * Optional, A Boolean indicating that the listener should be invoked at most once after being added. If true, the listener would be automatically removed when invoked.
- */
- once?: boolean;
- /**
- * Optional, A Boolean which, if true, indicates that the function specified by listener will never call preventDefault(). If a passive listener does call preventDefault(), the user agent will do nothing other than generate a console warning.
- */
- passive?: boolean;
-};
-
-declare type UseEventListenerTarget = BasicTarget;
-
-export declare function useExternal(path?: string | Ref, options?: UseExternalOptions): Readonly][>;
-
-declare interface UseExternalOptions {
- /**
- * The type of extarnal resources which need to load, support `js`/`css`, if no type, it will deduced according to path
- */
- type?: 'js' | 'css';
- /**
- * Attributes supported by `script`
- */
- js?: Partial;
- /**
- * Attributes supported by `link`
- */
- css?: Partial;
-}
-
-declare type UseExternalStatus = 'unset' | 'loading' | 'ready' | 'error';
-
-export declare function useFavicon(href?: string | Ref): void;
-
-export declare function useFetchs(service: UseRequestService>, options: UseRequestOptions, any> & {
- manual: true;
-}, self: {
- fetchKey?: (...args: ParamsType) => string;
-}): {
- fetchs: Ref>;
- fetchRun: (...args: TParams extends any[] ? any[] : any) => void;
-};
-
-export declare function useFocusWithin(
-/**
- * DOM element or ref
- */
-target: BasicTarget, options?: UseFocusWithinOptions): Readonly][>;
-
-declare interface UseFocusWithinOptions {
- /**
- * Callback to be executed on focus
- * @param e FocusEvent
- * @returns void
- */
- onFocus?: (e: FocusEvent) => void;
- /**
- * Callback to be executed on blur
- * @param e FocusEvent
- * @returns void
- */
- onBlur?: (e: FocusEvent) => void;
- /**
- * Callback to be executed on focus change
- * @param isFocusWithin boolean
- * @returns void
- */
- onChange?: (isFocusWithin: boolean) => void;
-}
-
-export declare function useFormatResult(data: TData | Ref, formatResultCallback: (data: TData) => FData): ComputedRef;
-
-export declare const useFullscreen: (target?: BasicTarget, options?: UseFullscreenOptions) => readonly [Readonly][>, {
- readonly enterFullscreen: () => void;
- readonly exitFullscreen: () => void;
- readonly toggleFullscreen: () => void;
- readonly isEnabled: true;
-}];
-
-declare interface UseFullscreenOptions {
- /**
- * Exit full screen trigger
- * @returns void
- */
- onExit?: () => void;
- /**
- * Enter full screen trigger
- * @returns void
- */
- onEnter?: () => void;
- /**
- *
- * The element enters full screen by default when the binding element is not found or the element is not passed
- * @default html
- */
- defaultElement?: HTMLElement | Element;
-}
-
-export declare function useHover(target: BasicTarget, options?: UseHoverOptions): Ref;
-
-declare interface UseHoverOptions {
- /**
- * Callback to be executed on mouse hover
- * @returns void
- */
- onEnter?: () => void;
- /**
- * Callback to be executed on mouse leave
- * @returns void
- */
- onLeave?: () => void;
- /**
- * Callback to be executed on hover change
- * @param isHovering boolean
- * @returns void
- */
- onChange?: (isHovering: boolean) => void;
-}
-
-declare type UseInfiniteData = {
- list: any[];
- [key: string]: any;
-};
-
-export declare const useInfiniteScroll: (service: UseInfiniteService, options?: UseInfiniteScrollOptions) => {
- data: Readonly][>;
- loading: Readonly][>;
- loadingMore: Readonly][>;
- noMore: ComputedRef;
- loadMore: () => void;
- loadMoreAsync: () => Promise | undefined;
- reload: () => void;
- reloadAsync: () => Promise;
- mutate: (mutateData: any) => void;
- scrollMethod: () => void;
- cancel: () => void;
-};
-
-declare interface UseInfiniteScrollOptions {
- /**
- * specifies the parent element. If it exists, it will trigger the `loadMore` when scrolling to the bottom. Needs to work with `isNoMore` to know when there is no more data to load
- */
- target?: BasicTarget;
- /**
- * determines if there is no more data, the input parameter is the latest merged `data`
- * @param data TData
- * @returns boolean
- */
- isNoMore?: (data?: TData) => boolean;
- /**
- * The pixel threshold to the bottom for the scrolling to load
- */
- threshold?: number;
- /**
- * - The default is `false`. That is, the service is automatically executed during initialization.
- * - If set to `true`, you need to manually call `run` or `runAsync` to trigger execution.
- */
- manual?: boolean;
- /**
- * When the content of the array changes, `reload` will be triggered
- */
- reloadDeps?: DependencyList;
- /**
- * Triggered before service execution
- * @returns void
- */
- onBefore?: () => void;
- /**
- * Triggered when service resolve
- * @param data TData
- * @returns void
- */
- onSuccess?: (data: TData) => void;
- /**
- * Triggered when service reject
- * @param e Error
- * @returns void
- */
- onError?: (e: Error) => void;
- /**
- * Triggered when service execution is complete
- * @param data TData
- * @param e Error
- * @returns void
- */
- onFinally?: (data?: TData, e?: Error) => void;
-}
-
-declare type UseInfiniteService = (currentData?: TData) => Promise;
-
-export declare function useInterval(
-/**
- * The function to be executed every `delay` milliseconds.
- */
-fn: () => void,
-/**
- * The time in milliseconds, the timer should delay in between executions of the specified function. The timer will be cancelled if delay is set to `undefined`.
- */
-delay: Ref | number | undefined, options?: {
- /**
- * Whether the function should be executed immediately on first execution.
- */
- immediate?: boolean;
-}): void;
-
-export declare function useInViewport(target: BasicTarget, options?: UseInViewportOptions): readonly [Readonly][>, Readonly][>];
-
-declare interface UseInViewportOptions {
- /**
- * Margin around the root
- */
- rootMargin?: string;
- /**
- * Either a single number or an array of numbers which indicate at what percentage of the target's visibility the ratio should be executed
- */
- threshold?: number | number[];
- /**
- * The element that is used as the viewport for checking visibility of the target. Must be the ancestor of the target. Defaults to the browser viewport if not specified or if null.
- */
- root?: BasicTarget;
-}
-
-export declare function useKeyPress(keyFilter: UseKeyPressKeyFilter, eventHandler: UseKeyPressEventHandler, option?: UseKeyPressOptions): void;
-
-declare type UseKeyPressEventHandler = (event: KeyboardEvent) => void;
-
-declare type UseKeyPressKeyEvent = 'keydown' | 'keyup';
-
-declare type UseKeyPressKeyFilter = UseKeyPressKeyType | UseKeyPressKeyType[] | ((event: KeyboardEvent) => boolean);
-
-declare type UseKeyPressKeyType = number | string;
-
-declare type UseKeyPressOptions = {
- /**
- * Trigger Events
- */
- events?: UseKeyPressKeyEvent[];
- /**
- * DOM element or ref
- */
- target?: UseKeyPressTarget;
- /**
- * Exact match. If set true, the event will only be trigger when the keys match exactly. For example, pressing [shif + c] will not trigger [c]
- */
- exactMatch?: boolean;
-};
-
-declare type UseKeyPressTarget = BasicTarget;
-
-export declare const useLocalStorageState: (key: string | Ref, options?: OptionsWithDefaultValue | undefined) => StorageStateResultHasDefaultValue;
-
-export declare function useLockFn](fn: (...args: P) => Promise): (...args: P) => Promise;
-
-export declare const useLongPress: (target: BasicTarget, options?: UseLongPressOptions) => {
- pressingTime: DeepReadonly[>;
- isPressing: DeepReadonly][>;
-};
-
-declare interface UseLongPressOptions {
- delay?: number;
- minUpdateTime?: number;
- cancelOnMove?: boolean;
- modifiers?: LongPressModifiers;
-}
-
-export declare function useMap(initialValue?: UseMapValue): [Readonly][>>, UseMapActions];
-
-declare type UseMapActions = {
- /**
- * Add item
- * @param key K
- * @param value T
- * @returns void
- */
- set: (key: K, value: T) => void;
- /**
- * Get item
- * @param key K
- * @param value T
- * @returns undefined
- */
- get: (key: K) => T | undefined;
- /**
- * Remove key
- * @param key K
- * @returns void
- */
- remove: (key: K) => void;
- /**
- * Add item
- * @param key K
- * @returns boolean
- */
- has: (key: K) => boolean;
- /**
- * clear
- * @returns void
- */
- clear: () => void;
- /**
- * Set a new Map
- * @param newMap UseMapValue
- * @returns void
- */
- setAll: (newMap: UseMapValue) => void;
- /**
- * Reset to default
- * @returns void
- */
- reset: () => void;
-};
-
-declare type UseMapValue = Iterable;
-
-export declare function useMedia(
-/**
- * Media to query for an array of objects
- */
-queries: any[],
-/**
- * The default value for each media query object
- */
-values: {
- [x: string]: any;
-},
-/**
- * DefaultValue
- */
-defaultValue: any): any;
-
-export declare function useMouse(target?: BasicTarget): Readonly][>;
-
-export declare const useMutationObserver: (callback: MutationCallback, target: BasicTarget, options?: MutationObserverInit) => void;
-
-export declare function useNetwork(): Readonly][>;
-
-declare interface UseNetworkState {
- since?: Date;
- online?: boolean;
- rtt?: number;
- type?: string;
- downlink?: number;
- saveData?: boolean;
- downlinkMax?: number;
- effectiveType?: string;
-}
-
-export declare function usePrevious(state: Ref | ComputedRef, shouldUpdate?: UsePreviousShouldUpdateFunc): Readonly][ | undefined>>;
-
-declare type UsePreviousShouldUpdateFunc = (prev: T | undefined, next: T) => boolean;
-
-export declare function useRequest[] = UseRequestPlugin[], SR = any>(service: UseRequestService, options?: UseRequestOptionsWithFormatResult ? R : never : never, SR>, plugins?: PluginsOptions): useRequestResult;
-
-export declare function useRequest[] = UseRequestPlugin[]>(service: UseRequestService, options?: UseRequestOptions ? R : never : never>, plugins?: PluginsOptions): useRequestResult;
-
-declare type UseRequestBasicOptions = {
- /**
- * Init data.
- */
- initialData?: TData;
- /**
- * - The default is `false.` That is, the service is automatically executed during initialization.
- * - f set to `true`, you need to manually call `run` or r`unAsync` to trigger execution.
- */
- manual?: boolean;
- /**
- * The parameters passed to the service at the first default execution
- */
- defaultParams?: TParams;
- /**
- * Triggered before service execution
- * @param params TParams
- * @returns void
- */
- onBefore?: (params: TParams) => void;
- /**
- * Triggered when service resolve.
- * @param data TData
- * @param params TParams
- * @returns void
- */
- onSuccess?: (data: TData, params: TParams) => void;
- /**
- * Triggered when service reject.
- * @param e Error
- * @param params TParams
- * @returns void
- */
- onError?: (e: Error, params: TParams) => void;
- /**
- * Triggered when service execution is complete.
- * @param params TParams
- * @param data TData
- * @param e Error
- * @returns void
- */
- onFinally?: (params: TParams, data?: TData, e?: Error) => void;
- /**
- * Is the current request ready
- */
- ready?: Ref]