- children?: React.ReactNode
-}
-
-interface PrimitiveProps {
- name?: string
-}
-
-declare global {
- namespace JSX {
- interface IntrinsicElements {
- primitive: ReactProps & PrimitiveProps
- element: ReactProps & PrimitiveProps
- }
- }
-}
-
-interface Instance> {
- type: string
- props: P
- children: Instance[]
-}
-
-interface HostContainer {
- head: Instance | null
-}
-
-interface HostConfig {
- type: string
- props: Record
- container: HostContainer
- instance: Instance
- textInstance: Instance
- suspenseInstance: Instance
- hydratableInstance: never
- publicInstance: null
- hostContext: null
- updatePayload: {}
- childSet: never
- timeoutHandle: number
- noTimeout: -1
-}
-
-// react-reconciler exposes some sensitive props. We don't want them exposed in public instances
-const REACT_INTERNAL_PROPS = ['ref', 'key', 'children']
-function getInstanceProps(props: Reconciler.Fiber['pendingProps']): HostConfig['props'] {
- const instanceProps: HostConfig['props'] = {}
-
- for (const key in props) {
- if (!REACT_INTERNAL_PROPS.includes(key)) instanceProps[key] = props[key]
- }
-
- return instanceProps
-}
-
-const config: Reconciler.HostConfig<
- HostConfig['type'],
- HostConfig['props'],
- HostConfig['container'],
- HostConfig['instance'],
- HostConfig['textInstance'],
- HostConfig['suspenseInstance'],
- HostConfig['hydratableInstance'],
- HostConfig['publicInstance'],
- HostConfig['hostContext'],
- HostConfig['updatePayload'],
- HostConfig['childSet'],
- HostConfig['timeoutHandle'],
- HostConfig['noTimeout']
-> = {
- isPrimaryRenderer: true,
- supportsMutation: true,
- supportsPersistence: false,
- supportsHydration: false,
- scheduleTimeout: setTimeout,
- cancelTimeout: clearTimeout,
- noTimeout: -1,
- createInstance: (type, props) => ({ type, props: getInstanceProps(props), children: [] }),
- hideInstance() {},
- unhideInstance() {},
- createTextInstance: (value) => ({ type: 'text', props: { value }, children: [] }),
- hideTextInstance() {},
- unhideTextInstance() {},
- appendInitialChild: (parent, child) => parent.children.push(child),
- appendChild: (parent, child) => parent.children.push(child),
- appendChildToContainer: (container, child) => (container.head = child),
- insertBefore: (parent, child, beforeChild) => parent.children.splice(parent.children.indexOf(beforeChild), 0, child),
- removeChild: (parent, child) => parent.children.splice(parent.children.indexOf(child), 1),
- removeChildFromContainer: (container) => (container.head = null),
- getPublicInstance: () => null,
- getRootHostContext: () => null,
- getChildHostContext: () => null,
- shouldSetTextContent: () => false,
- finalizeInitialChildren: () => false,
- prepareUpdate: () => ({}),
- commitUpdate: (instance, _, __, ___, props) => (instance.props = getInstanceProps(props)),
- commitTextUpdate: (instance, _, value) => (instance.props.value = value),
- prepareForCommit: () => null,
- resetAfterCommit() {},
- preparePortalMount() {},
- clearContainer: (container) => (container.head = null),
- getCurrentEventPriority: () => DefaultEventPriority,
- beforeActiveInstanceBlur() {},
- afterActiveInstanceBlur() {},
- detachDeletedInstance() {},
- getInstanceFromNode: () => null,
- prepareScopeUpdate() {},
- getInstanceFromScope: () => null,
-}
-
-type _Reconciler = typeof Reconciler
-
-// Classes have internal instances which would be bound to `this`
-class ClassComponent extends React.Component<{ children?: React.ReactNode }> {
- render() {
- return <>{this.props?.children}>
- }
-}
-
-for (const suite of ['development', 'production']) {
- describe(`React ${suite}`, () => {
- vi.stubEnv('NODE_ENV', suite)
-
- const Reconciler: _Reconciler = require(suite === 'development'
- ? '../node_modules/react-reconciler/cjs/react-reconciler.development.js'
- : '../node_modules/react-reconciler/cjs/react-reconciler.production.min.js')
-
- function createRoot(container: HostContainer, overrides?: Partial) {
- const reconciler = Reconciler({ ...config, ...overrides })
- const root = reconciler.createContainer(container, ConcurrentRoot, null, false, null, '', console.error, null)
-
- return {
- async render(element: React.ReactNode): Promise {
- return new Promise((res) => reconciler.updateContainer(element, root, null, () => res(container)))
- },
- createPortal(element: React.ReactNode, container: HostContainer): JSX.Element {
- return <>{reconciler.createPortal(element, container, null, null)}>
- },
- }
- }
-
- const primaryContainer: HostContainer = { head: null }
- const primary = createRoot(primaryContainer)
-
- const secondaryContainer: HostContainer = { head: null }
- const secondary = createRoot(secondaryContainer, { isPrimaryRenderer: false })
-
- const resolved = new WeakMap, boolean>()
- function suspend(value: Promise): T {
- if (resolved.get(value)) return value as T
-
- if (!resolved.has(value)) {
- resolved.set(value, false)
- value.then(() => resolved.set(value, true))
- }
-
- throw value
- }
-
- describe('useFiber', () => {
- it('gets the current react-internal Fiber', async () => {
- let fiber!: Fiber
-
- function Test() {
- fiber = useFiber()!
- return
- }
- const container = await primary.render()
-
- expect(fiber).toBeDefined()
- expect(fiber.type).toBe(Test)
- expect(fiber.child!.stateNode).toBe(container.head)
- })
-
- it('works in concurrent mode', async () => {
- const promise = Promise.resolve()
- function AsyncFragment(props: any) {
- suspend(promise)
- return props.children
- }
-
- let fiber!: Fiber
-
- function Test(props: any) {
- fiber = useFiber()!
- return
- }
- const Test1 = Test
- const Test2 = Test
- const Test3 = Test
-
- // Parent
- const container = await primary.render(
-
-
- ,
- )
- expect(fiber).toBeDefined()
- expect(fiber.type).toBe(Test1)
- expect(fiber.child!.stateNode).toBe(container.head)
-
- // Child
- await primary.render(
-
-
- ,
- )
- expect(fiber).toBeDefined()
- expect(fiber.type).toBe(Test2)
- expect(fiber.child!.stateNode).toBe(container.head)
-
- // Sibling
- await primary.render(
- <>
-
-
- >,
- )
- expect(fiber).toBeDefined()
- expect(fiber.type).toBe(Test3)
- expect(fiber.child!.stateNode).toBe(container.head)
- })
-
- it('works across concurrent renderers', async () => {
- const fibers: Fiber[] = []
-
- function Test() {
- fibers.push(useFiber()!)
- return null
- }
-
- function Wrapper() {
- secondary.render()
- return
- }
-
- await primary.render()
-
- const [outer, inner] = fibers
- expect(outer).not.toBe(inner)
- expect(outer.type).toBe(Test)
- expect(inner.type).toBe(Test)
- })
- })
-
- describe('traverseFiber', () => {
- it('iterates descending through a fiber', async () => {
- let fiber!: Fiber
-
- function Test() {
- fiber = useFiber()!
- return
- }
- await primary.render(
-
-
- ,
- )
-
- const traversed = [] as unknown as [self: Fiber, child: Fiber]
- traverseFiber(fiber, false, (node) => void traversed.push(node))
-
- expect(traversed.length).toBe(2)
-
- const [self, child] = traversed
- expect(self.type).toBe(Test)
- expect(child.stateNode.props.name).toBe('child')
- })
-
- it('iterates ascending through a fiber', async () => {
- let fiber!: Fiber
-
- function Test() {
- fiber = useFiber()!
- return
- }
- await primary.render(
-
-
-
-
-
- ,
- )
-
- const traversed: Fiber[] = []
- traverseFiber(fiber, true, (node) => void traversed.push(node))
-
- expect(traversed.filter((o) => o.stateNode?.props?.name === 'other').length).toBe(0)
- expect(traversed.filter((o) => o.stateNode?.props?.name === 'ancestor').length).toBe(1)
- expect(traversed.filter((o) => o.stateNode?.props?.name === 'parent').length).toBe(1)
-
- const [self, parent, ancestor] = traversed
- expect(self.type).toBe(Test)
- expect(parent.stateNode?.props?.name).toBe('parent')
- expect(ancestor.stateNode?.props?.name).toBe('ancestor')
- })
-
- it('returns the active node when halted', async () => {
- let fiber!: Fiber
-
- function Test() {
- fiber = useFiber()!
- return
- }
- const container = await primary.render()
-
- const child = traverseFiber(fiber, false, (node) => node.stateNode === container.head)
- expect(child!.stateNode.props.name).toBe('child')
- })
- })
-
- describe('useContextBridge', () => {
- it('forwards live context between renderers', async () => {
- let value = -1
- const context = React.createContext(null!)
-
- function Two() {
- value = React.useContext(context)
- return null
- }
-
- function One() {
- const Bridge = useContextBridge()
- secondary.render(
-
-
- ,
- )
- return null
- }
-
- await primary.render()
- expect(value).toBe(null)
-
- await primary.render(
-
-
- ,
- )
- expect(value).toBe(1)
-
- await primary.render(
-
-
- ,
- )
- expect(value).toBe(2)
- })
- })
-
- describe('useContainer', () => {
- it('gets the current react-reconciler container', async () => {
- let container!: HostContainer
-
- function Test() {
- container = useContainer()!
- return null
- }
-
- await primary.render()
- expect(container).toBe(primaryContainer)
-
- const portalContainer: HostContainer = { head: null }
- await primary.render(primary.createPortal(, portalContainer))
- expect(container).toBe(portalContainer)
- })
- })
-
- describe('useNearestChild', () => {
- it('gets the nearest child instance', async () => {
- const instances: React.MutableRefObject | undefined>[] = []
-
- function Test(props: React.PropsWithChildren<{ strict?: boolean }>) {
- instances.push(useNearestChild>(props.strict ? 'element' : undefined))
- return <>{props.children}>
- }
-
- await primary.render(
- <>
-
-
-
-
-
- <>
-
- >
-
-
-
-
-
-
-
-
-
-
- >,
- )
-
- expect(instances.map((ref) => ref.current?.props?.name)).toStrictEqual([undefined, 'one', 'two', 'two', 'four'])
- })
- })
-
- describe('useNearestParent', () => {
- it('gets the nearest parent instance', async () => {
- const instances: React.MutableRefObject | undefined>[] = []
-
- function Test(props: React.PropsWithChildren<{ strict?: boolean }>) {
- instances.push(useNearestParent>(props.strict ? 'element' : undefined))
- return <>{props.children}>
- }
-
- await primary.render(
- <>
-
-
- <>
-
- <>
-
- >
-
-
-
-
-
-
-
-
-
-
-
- >
-
- >,
- )
-
- expect(instances.map((ref) => ref.current?.props?.name)).toStrictEqual([
- undefined,
- 'one',
- 'one',
- 'one',
- 'two',
- 'four',
- ])
- })
- })
-
- vi.unstubAllEnvs()
- })
-}
diff --git a/src/index.ts b/src/index.tsx
similarity index 66%
rename from src/index.ts
rename to src/index.tsx
index bea3d25..0b59e0b 100644
--- a/src/index.ts
+++ b/src/index.tsx
@@ -1,16 +1,4 @@
-import {
- type MutableRefObject,
- type Context,
- type FC,
- type PropsWithChildren,
- useLayoutEffect,
- useEffect,
- Fragment,
- useRef,
- useState,
- useMemo,
- createElement,
-} from 'react'
+import * as React from 'react'
import type ReactReconciler from 'react-reconciler'
/**
@@ -24,8 +12,8 @@ import type ReactReconciler from 'react-reconciler'
*/
const useIsomorphicLayoutEffect =
typeof window !== 'undefined' && (window.document?.createElement || window.navigator?.product === 'ReactNative')
- ? useLayoutEffect
- : useEffect
+ ? React.useLayoutEffect
+ : React.useEffect
/**
* Represents a react-internal Fiber node.
@@ -63,29 +51,66 @@ export function traverseFiber(
}
}
+// In development, React will warn about using contexts between renderers.
+// Hide the warning because its-fine fixes this issue
+// https://github.com/facebook/react/pull/12779
+function wrapContext(context: React.Context): React.Context {
+ try {
+ return Object.defineProperties(context, {
+ _currentRenderer: {
+ get() {
+ return null
+ },
+ set() {},
+ },
+ _currentRenderer2: {
+ get() {
+ return null
+ },
+ set() {},
+ },
+ })
+ } catch (_) {
+ return context
+ }
+}
+
+const FiberContext = wrapContext(React.createContext(null!))
+
/**
- * @deprecated since v1.2.0.
+ * A react-internal {@link Fiber} provider. This component binds React children to the React Fiber tree. Call its-fine hooks within this.
*/
-export const FiberProvider = Fragment
+export class FiberProvider extends React.Component<{ children?: React.ReactNode }> {
+ private _reactInternals!: Fiber
+
+ render() {
+ return {this.props.children}
+ }
+}
/**
* Returns the current react-internal {@link Fiber}. This is an implementation detail of [react-reconciler](https://github.com/facebook/react/tree/main/packages/react-reconciler).
*/
export function useFiber(): Fiber | undefined {
- const fiber = useRef()
-
- useState(() => {
- const bind = Function.prototype.bind
- Function.prototype.bind = function (self, maybeFiber) {
- if (self === null && typeof maybeFiber?.type === 'function') {
- fiber.current = maybeFiber
- Function.prototype.bind = bind
- }
- return bind.apply(this, arguments as any)
+ const root = React.useContext(FiberContext)
+ if (root === null) throw new Error('its-fine: useFiber must be called within a !')
+
+ const id = React.useId()
+ const fiber = React.useMemo(() => {
+ for (const maybeFiber of [root, root?.alternate]) {
+ if (!maybeFiber) continue
+ const fiber = traverseFiber(maybeFiber, false, (node) => {
+ let state = node.memoizedState
+ while (state) {
+ if (state.memoizedState === id) return true
+ state = state.next
+ }
+ })
+ if (fiber) return fiber
}
- })
+ }, [root, id])
- return fiber.current
+ return fiber
}
/**
@@ -102,7 +127,7 @@ export interface ContainerInstance {
*/
export function useContainer(): T | undefined {
const fiber = useFiber()
- const root = useMemo(
+ const root = React.useMemo(
() => traverseFiber>(fiber, true, (node) => node.stateNode?.containerInfo != null),
[fiber],
)
@@ -118,9 +143,9 @@ export function useContainer(): T | undefined {
export function useNearestChild(
/** An optional element type to filter to. */
type?: keyof JSX.IntrinsicElements,
-): MutableRefObject {
+): React.MutableRefObject {
const fiber = useFiber()
- const childRef = useRef()
+ const childRef = React.useRef()
useIsomorphicLayoutEffect(() => {
childRef.current = traverseFiber(
@@ -141,9 +166,9 @@ export function useNearestChild(
export function useNearestParent(
/** An optional element type to filter to. */
type?: keyof JSX.IntrinsicElements,
-): MutableRefObject {
+): React.MutableRefObject {
const fiber = useFiber()
- const parentRef = useRef()
+ const parentRef = React.useRef()
useIsomorphicLayoutEffect(() => {
parentRef.current = traverseFiber(
@@ -156,11 +181,8 @@ export function useNearestParent(
return parentRef
}
-/**
- * Represents a map of all live contexts.
- */
-export type ContextMap = Map, any> & {
- get(context: Context): T | undefined
+export type ContextMap = Map, any> & {
+ get(context: React.Context): T | undefined
}
/**
@@ -168,7 +190,7 @@ export type ContextMap = Map, any> & {
*/
export function useContextMap(): ContextMap {
const fiber = useFiber()
- const [contextMap] = useState(() => new Map, any>())
+ const [contextMap] = React.useState(() => new Map, any>())
// Collect live context
contextMap.clear()
@@ -178,8 +200,8 @@ export function useContextMap(): ContextMap {
// https://github.com/facebook/react/pull/28226
const enableRenderableContext = node.type._context === undefined && node.type.Provider === node.type
const context = enableRenderableContext ? node.type : node.type._context
- if (context && !contextMap.has(context)) {
- contextMap.set(context, context._currentValue)
+ if (context && context !== FiberContext && !contextMap.has(context)) {
+ contextMap.set(context, React.useContext(wrapContext(context)))
}
}
@@ -192,7 +214,7 @@ export function useContextMap(): ContextMap {
/**
* Represents a react-context bridge provider component.
*/
-export type ContextBridge = FC>
+export type ContextBridge = React.FC>
/**
* React Context currently cannot be shared across [React renderers](https://reactjs.org/docs/codebase-overview.html#renderers) but explicitly forwarded between providers (see [react#17275](https://github.com/facebook/react/issues/17275)). This hook returns a {@link ContextBridge} of live context providers to pierce Context across renderers.
@@ -203,14 +225,17 @@ export function useContextBridge(): ContextBridge {
const contextMap = useContextMap()
// Flatten context and their memoized values into a `ContextBridge` provider
- return useMemo(
+ return React.useMemo(
() =>
- ({ children }) => {
- for (const [context, value] of contextMap) {
- children = createElement(context.Provider, { value }, children)
- }
- return children as unknown as JSX.Element
- },
+ Array.from(contextMap.keys()).reduce(
+ (Prev, context) => (props) =>
+ (
+
+
+
+ ),
+ (props) => ,
+ ),
[contextMap],
)
}
diff --git a/tests/index.test.tsx b/tests/index.test.tsx
new file mode 100644
index 0000000..0890ca9
--- /dev/null
+++ b/tests/index.test.tsx
@@ -0,0 +1,427 @@
+import * as React from 'react'
+import { describe, expect, it } from 'vitest'
+import { type NilNode, type HostContainer, act, render, createPortal } from 'react-nil'
+import { create } from 'react-test-renderer'
+import {
+ type Fiber,
+ traverseFiber,
+ useFiber,
+ useContainer,
+ useNearestChild,
+ useNearestParent,
+ useContextBridge,
+ FiberProvider,
+} from '../src'
+
+interface ReactProps {
+ key?: React.Key
+ ref?: React.Ref
+ children?: React.ReactNode
+}
+
+interface PrimitiveProps {
+ name?: string
+}
+
+type Primitive = NilNode
+
+declare global {
+ namespace JSX {
+ interface IntrinsicElements {
+ primitive: ReactProps & PrimitiveProps
+ element: ReactProps & PrimitiveProps
+ }
+ }
+}
+
+// Classes have internal instances which would be bound to `this`
+class ClassComponent extends React.Component<{ children?: React.ReactNode }> {
+ render() {
+ return <>{this.props?.children}>
+ }
+}
+
+describe('useFiber', () => {
+ it('throws when used outside of a FiberProvider', async () => {
+ let threw = false
+
+ function Test() {
+ try {
+ useFiber()
+ } catch (_) {
+ threw = true
+ }
+ return null
+ }
+ await act(async () => render())
+
+ expect(threw).toBe(true)
+ })
+
+ it('gets the current react-internal Fiber', async () => {
+ let fiber!: Fiber
+
+ function Test() {
+ fiber = useFiber()!
+ return
+ }
+ const container = await act(async () =>
+ render(
+
+
+ ,
+ ),
+ )
+
+ expect(fiber).toBeDefined()
+ expect(fiber.type).toBe(Test)
+ expect(fiber.child!.stateNode).toBe(container.head)
+ })
+
+ it('works across concurrent renderers', async () => {
+ const fibers: Fiber[] = []
+
+ function Test() {
+ fibers.push(useFiber()!)
+ return null
+ }
+
+ function Wrapper() {
+ render(
+
+
+ ,
+ )
+ return
+ }
+
+ await act(async () =>
+ create(
+
+
+ ,
+ ),
+ )
+
+ const [outer, inner] = fibers
+ expect(outer).not.toBe(inner)
+ expect(outer.type).toBe(Test)
+ expect(inner.type).toBe(Test)
+ })
+})
+
+describe('traverseFiber', () => {
+ it('iterates descending through a fiber', async () => {
+ let fiber!: Fiber
+
+ function Test() {
+ fiber = useFiber()!
+ return
+ }
+ await act(async () =>
+ render(
+
+
+
+
+ ,
+ ),
+ )
+
+ const traversed = [] as unknown as [self: Fiber, child: Fiber]
+ traverseFiber(fiber, false, (node) => void traversed.push(node))
+
+ expect(traversed.length).toBe(2)
+
+ const [self, child] = traversed
+ expect(self.type).toBe(Test)
+ expect(child.stateNode.props.name).toBe('child')
+ })
+
+ it('iterates ascending through a fiber', async () => {
+ let fiber!: Fiber
+
+ function Test() {
+ fiber = useFiber()!
+ return
+ }
+ const container = await act(async () =>
+ render(
+
+
+
+
+
+
+
+ ,
+ ),
+ )
+
+ const traversed: Fiber[] = []
+ traverseFiber(fiber, true, (node) => void traversed.push(node))
+
+ expect(traversed.filter((o) => o.stateNode?.props?.name === 'other').length).toBe(0)
+ expect(traversed.filter((o) => o.stateNode?.props?.name === 'ancestor').length).toBe(1)
+ expect(traversed.filter((o) => o.stateNode?.props?.name === 'parent').length).toBe(1)
+
+ const [self, parent, ancestor] = traversed
+ expect(self.type).toBe(Test)
+ expect(parent.stateNode?.props?.name).toBe('parent')
+ expect(ancestor.stateNode?.props?.name).toBe('ancestor')
+ })
+
+ it('returns the active node when halted', async () => {
+ let fiber!: Fiber
+
+ function Test() {
+ fiber = useFiber()!
+ return
+ }
+ const container = await act(async () =>
+ render(
+
+
+ ,
+ ),
+ )
+
+ const child = traverseFiber(fiber, false, (node) => node.stateNode === container.head)
+ expect(child!.stateNode.props.name).toBe('child')
+ })
+})
+
+describe('useContainer', () => {
+ it('gets the current react-reconciler container', async () => {
+ let container!: HostContainer
+
+ function Test() {
+ container = useContainer()!
+ return null
+ }
+
+ const rootContainer = await act(async () =>
+ render(
+
+
+ ,
+ ),
+ )
+ expect(container).toBe(rootContainer)
+
+ const portalContainer: HostContainer = { head: null }
+ await act(async () => render({createPortal(, portalContainer)}))
+ expect(container).toBe(portalContainer)
+ })
+})
+
+describe('useNearestChild', () => {
+ it('gets the nearest child instance', async () => {
+ const instances: React.MutableRefObject[] = []
+
+ function Test(props: React.PropsWithChildren<{ strict?: boolean }>) {
+ instances.push(useNearestChild(props.strict ? 'element' : undefined))
+ return <>{props.children}>
+ }
+
+ await act(async () => {
+ render(
+
+
+
+
+
+
+ <>
+
+ >
+
+
+
+
+
+
+
+
+
+
+ ,
+ )
+ })
+
+ expect(instances.map((ref) => ref.current?.props?.name)).toStrictEqual([undefined, 'one', 'two', 'two', 'four'])
+ })
+})
+
+describe('useNearestParent', () => {
+ it('gets the nearest parent instance', async () => {
+ const instances: React.MutableRefObject[] = []
+
+ function Test(props: React.PropsWithChildren<{ strict?: boolean }>) {
+ instances.push(useNearestParent(props.strict ? 'element' : undefined))
+ return <>{props.children}>
+ }
+
+ await act(async () => {
+ render(
+
+
+
+ <>
+
+ <>
+
+ >
+
+
+
+
+
+
+
+
+
+
+
+ >
+
+ ,
+ )
+ })
+
+ expect(instances.map((ref) => ref.current?.props?.name)).toStrictEqual([
+ undefined,
+ 'one',
+ 'one',
+ 'one',
+ 'two',
+ 'four',
+ ])
+ })
+})
+
+describe('useContextBridge', () => {
+ it('forwards live context between renderers', async () => {
+ const Context1 = React.createContext(null!)
+ const Context2 = React.createContext(null!)
+
+ const outer: string[] = []
+ const inner: string[] = []
+
+ function Test({ secondary }: { secondary?: boolean }) {
+ const target = secondary ? inner : outer
+ target.push(React.useContext(Context1), React.useContext(Context2))
+
+ return null
+ }
+
+ function Wrapper() {
+ const Bridge = useContextBridge()
+ render(
+
+
+ ,
+ )
+
+ return (
+ <>
+
+
+ >
+ )
+ }
+
+ function Providers(props: { values: [value1: string, value2?: string]; children: React.ReactNode }) {
+ const [value1, value2] = props.values
+ return (
+
+
+
+ {value2 ? {props.children} : props.children}
+
+
+
+ )
+ }
+
+ const renderer = await act(async () =>
+ create(
+
+
+ ,
+ ),
+ )
+
+ await act(async () =>
+ renderer.update(
+
+
+ ,
+ ),
+ )
+
+ await act(async () =>
+ renderer.update(
+
+
+ ,
+ ),
+ )
+
+ await act(async () =>
+ renderer.update(
+
+
+
+
+ ,
+ ),
+ )
+
+ expect(outer).toStrictEqual([
+ 'value1',
+ 'value2',
+ 'value1__new',
+ 'value2__new',
+ 'value1__new',
+ null,
+ 'value1__new',
+ 'value2__new',
+ ])
+ expect(inner).toStrictEqual(outer)
+ })
+
+ it('does not unmount children', async () => {
+ const calls: string[] = []
+
+ const Context = React.createContext(null!)
+
+ function Inner() {
+ React.useEffect(() => (calls.push('mount'), () => void calls.push('unmount')), [])
+ return null
+ }
+
+ function Canvas(props: { children: React.ReactNode }) {
+ const Bridge = useContextBridge()
+ render({props.children})
+
+ return null
+ }
+
+ function Test(props: { value: boolean }) {
+ return (
+
+
+
+
+
+ )
+ }
+
+ const renderer = await act(async () => create())
+ await act(async () => renderer.update())
+ expect(calls).toStrictEqual(['mount'])
+ })
+})
diff --git a/tests/setupTests.ts b/tests/setupTests.ts
new file mode 100644
index 0000000..88b412b
--- /dev/null
+++ b/tests/setupTests.ts
@@ -0,0 +1,11 @@
+import { vi } from 'vitest'
+
+declare global {
+ var IS_REACT_ACT_ENVIRONMENT: boolean
+}
+
+// Let React know that we'll be testing effectful components
+global.IS_REACT_ACT_ENVIRONMENT = true
+
+// Mock scheduler to test React features
+vi.mock('scheduler', () => require('scheduler/unstable_mock'))
diff --git a/tsconfig.json b/tsconfig.json
index 0f16b5f..18519e4 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -1,18 +1,17 @@
{
"compilerOptions": {
"outDir": "dist",
- "target": "ESNext",
- "module": "NodeNext",
- "moduleResolution": "NodeNext",
+ "target": "es6",
+ "module": "ESNext",
+ "lib": ["ESNext", "dom"],
+ "moduleResolution": "node",
"esModuleInterop": true,
"jsx": "react",
"pretty": true,
"strict": true,
- "noEmit": true,
- "forceConsistentCasingInFileNames": true,
- "paths": {
- "its-fine": ["./src/index.js"]
- }
+ "declaration": true,
+ "emitDeclarationOnly": true,
+ "forceConsistentCasingInFileNames": true
},
"include": ["src/**/*"]
}
diff --git a/vite.config.ts b/vite.config.ts
index ef99ab4..b674cd4 100644
--- a/vite.config.ts
+++ b/vite.config.ts
@@ -1,11 +1,11 @@
-import * as path from 'node:path'
-import * as vite from 'vite'
+///
+import * as path from 'path'
+import { defineConfig } from 'vite'
-export default vite.defineConfig({
- resolve: {
- alias: {
- 'its-fine': path.resolve(__dirname, 'src'),
- },
+export default defineConfig({
+ test: {
+ dir: 'tests',
+ setupFiles: 'tests/setupTests.ts',
},
build: {
minify: false,
@@ -13,7 +13,7 @@ export default vite.defineConfig({
target: 'es2018',
lib: {
formats: ['cjs', 'es'],
- entry: 'src/index.ts',
+ entry: 'src/index.tsx',
fileName: '[name]',
},
rollupOptions: {
@@ -25,26 +25,4 @@ export default vite.defineConfig({
},
},
},
- plugins: [
- {
- name: 'vite-tsc',
- generateBundle() {
- this.emitFile({ type: 'asset', fileName: 'index.d.ts', source: `export * from '../src'` })
- },
- },
- {
- name: 'vite-minify',
- transform(code, url) {
- if (!url.includes('node_modules')) {
- return vite.transformWithEsbuild(code, url, { target: 'es2018' })
- }
- },
- renderChunk: {
- order: 'post',
- handler(code, { fileName }) {
- return vite.transformWithEsbuild(code, fileName, { minify: true, target: 'es2018' })
- },
- },
- },
- ],
})
diff --git a/yarn.lock b/yarn.lock
index d0dfa16..81ca379 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -2,238 +2,62 @@
# yarn lockfile v1
-"@esbuild/aix-ppc64@0.20.2":
- version "0.20.2"
- resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.20.2.tgz#a70f4ac11c6a1dfc18b8bbb13284155d933b9537"
- integrity sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==
-
-"@esbuild/android-arm64@0.20.2":
- version "0.20.2"
- resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.20.2.tgz#db1c9202a5bc92ea04c7b6840f1bbe09ebf9e6b9"
- integrity sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==
-
-"@esbuild/android-arm@0.20.2":
- version "0.20.2"
- resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.20.2.tgz#3b488c49aee9d491c2c8f98a909b785870d6e995"
- integrity sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==
-
-"@esbuild/android-x64@0.20.2":
- version "0.20.2"
- resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.20.2.tgz#3b1628029e5576249d2b2d766696e50768449f98"
- integrity sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==
-
-"@esbuild/darwin-arm64@0.20.2":
- version "0.20.2"
- resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.20.2.tgz#6e8517a045ddd86ae30c6608c8475ebc0c4000bb"
- integrity sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==
-
-"@esbuild/darwin-x64@0.20.2":
- version "0.20.2"
- resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.20.2.tgz#90ed098e1f9dd8a9381695b207e1cff45540a0d0"
- integrity sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==
-
-"@esbuild/freebsd-arm64@0.20.2":
- version "0.20.2"
- resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.2.tgz#d71502d1ee89a1130327e890364666c760a2a911"
- integrity sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==
-
-"@esbuild/freebsd-x64@0.20.2":
- version "0.20.2"
- resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.20.2.tgz#aa5ea58d9c1dd9af688b8b6f63ef0d3d60cea53c"
- integrity sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==
-
-"@esbuild/linux-arm64@0.20.2":
- version "0.20.2"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.20.2.tgz#055b63725df678379b0f6db9d0fa85463755b2e5"
- integrity sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==
-
-"@esbuild/linux-arm@0.20.2":
- version "0.20.2"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.20.2.tgz#76b3b98cb1f87936fbc37f073efabad49dcd889c"
- integrity sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==
-
-"@esbuild/linux-ia32@0.20.2":
- version "0.20.2"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.20.2.tgz#c0e5e787c285264e5dfc7a79f04b8b4eefdad7fa"
- integrity sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==
-
-"@esbuild/linux-loong64@0.20.2":
- version "0.20.2"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.20.2.tgz#a6184e62bd7cdc63e0c0448b83801001653219c5"
- integrity sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==
-
-"@esbuild/linux-mips64el@0.20.2":
- version "0.20.2"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.20.2.tgz#d08e39ce86f45ef8fc88549d29c62b8acf5649aa"
- integrity sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==
-
-"@esbuild/linux-ppc64@0.20.2":
- version "0.20.2"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.20.2.tgz#8d252f0b7756ffd6d1cbde5ea67ff8fd20437f20"
- integrity sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==
-
-"@esbuild/linux-riscv64@0.20.2":
- version "0.20.2"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.20.2.tgz#19f6dcdb14409dae607f66ca1181dd4e9db81300"
- integrity sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==
-
-"@esbuild/linux-s390x@0.20.2":
- version "0.20.2"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.20.2.tgz#3c830c90f1a5d7dd1473d5595ea4ebb920988685"
- integrity sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==
-
-"@esbuild/linux-x64@0.20.2":
- version "0.20.2"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.20.2.tgz#86eca35203afc0d9de0694c64ec0ab0a378f6fff"
- integrity sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==
-
-"@esbuild/netbsd-x64@0.20.2":
- version "0.20.2"
- resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.20.2.tgz#e771c8eb0e0f6e1877ffd4220036b98aed5915e6"
- integrity sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==
-
-"@esbuild/openbsd-x64@0.20.2":
- version "0.20.2"
- resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.20.2.tgz#9a795ae4b4e37e674f0f4d716f3e226dd7c39baf"
- integrity sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==
-
-"@esbuild/sunos-x64@0.20.2":
- version "0.20.2"
- resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.20.2.tgz#7df23b61a497b8ac189def6e25a95673caedb03f"
- integrity sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==
-
-"@esbuild/win32-arm64@0.20.2":
- version "0.20.2"
- resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.20.2.tgz#f1ae5abf9ca052ae11c1bc806fb4c0f519bacf90"
- integrity sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==
-
-"@esbuild/win32-ia32@0.20.2":
- version "0.20.2"
- resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.20.2.tgz#241fe62c34d8e8461cd708277813e1d0ba55ce23"
- integrity sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==
-
-"@esbuild/win32-x64@0.20.2":
- version "0.20.2"
- resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.20.2.tgz#9c907b21e30a52db959ba4f80bb01a0cc403d5cc"
- integrity sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==
-
-"@jest/schemas@^29.6.3":
- version "29.6.3"
- resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.6.3.tgz#430b5ce8a4e0044a7e3819663305a7b3091c8e03"
- integrity sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==
- dependencies:
- "@sinclair/typebox" "^0.27.8"
-
-"@jridgewell/sourcemap-codec@^1.4.15":
- version "1.4.15"
- resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32"
- integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==
-
-"@rollup/rollup-android-arm-eabi@4.14.1":
- version "4.14.1"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.14.1.tgz#ca0501dd836894216cb9572848c5dde4bfca3bec"
- integrity sha512-fH8/o8nSUek8ceQnT7K4EQbSiV7jgkHq81m9lWZFIXjJ7lJzpWXbQFpT/Zh6OZYnpFykvzC3fbEvEAFZu03dPA==
-
-"@rollup/rollup-android-arm64@4.14.1":
- version "4.14.1"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.14.1.tgz#154ca7e4f815d2e442ffc62ee7f64aee8b2547b0"
- integrity sha512-Y/9OHLjzkunF+KGEoJr3heiD5X9OLa8sbT1lm0NYeKyaM3oMhhQFvPB0bNZYJwlq93j8Z6wSxh9+cyKQaxS7PQ==
-
-"@rollup/rollup-darwin-arm64@4.14.1":
- version "4.14.1"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.14.1.tgz#02b522ab6ccc2c504634651985ff8e657b42c055"
- integrity sha512-+kecg3FY84WadgcuSVm6llrABOdQAEbNdnpi5X3UwWiFVhZIZvKgGrF7kmLguvxHNQy+UuRV66cLVl3S+Rkt+Q==
-
-"@rollup/rollup-darwin-x64@4.14.1":
- version "4.14.1"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.14.1.tgz#217737f9f73de729fdfd7d529afebb6c8283f554"
- integrity sha512-2pYRzEjVqq2TB/UNv47BV/8vQiXkFGVmPFwJb+1E0IFFZbIX8/jo1olxqqMbo6xCXf8kabANhp5bzCij2tFLUA==
-
-"@rollup/rollup-linux-arm-gnueabihf@4.14.1":
- version "4.14.1"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.14.1.tgz#a87e478ab3f697c7f4e74c8b1cac1e0667f8f4be"
- integrity sha512-mS6wQ6Do6/wmrF9aTFVpIJ3/IDXhg1EZcQFYHZLHqw6AzMBjTHWnCG35HxSqUNphh0EHqSM6wRTT8HsL1C0x5g==
-
-"@rollup/rollup-linux-arm64-gnu@4.14.1":
- version "4.14.1"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.14.1.tgz#4da6830eca27e5f4ca15f9197e5660952ca185c6"
- integrity sha512-p9rGKYkHdFMzhckOTFubfxgyIO1vw//7IIjBBRVzyZebWlzRLeNhqxuSaZ7kCEKVkm/kuC9fVRW9HkC/zNRG2w==
-
-"@rollup/rollup-linux-arm64-musl@4.14.1":
- version "4.14.1"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.14.1.tgz#0b0ed35720aebc8f5e501d370a9ea0f686ead1e0"
- integrity sha512-nDY6Yz5xS/Y4M2i9JLQd3Rofh5OR8Bn8qe3Mv/qCVpHFlwtZSBYSPaU4mrGazWkXrdQ98GB//H0BirGR/SKFSw==
-
-"@rollup/rollup-linux-powerpc64le-gnu@4.14.1":
- version "4.14.1"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.14.1.tgz#024ad04d162726f25e62915851f7df69a9677c17"
- integrity sha512-im7HE4VBL+aDswvcmfx88Mp1soqL9OBsdDBU8NqDEYtkri0qV0THhQsvZtZeNNlLeCUQ16PZyv7cqutjDF35qw==
-
-"@rollup/rollup-linux-riscv64-gnu@4.14.1":
- version "4.14.1"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.14.1.tgz#180694d1cd069ddbe22022bb5b1bead3b7de581c"
- integrity sha512-RWdiHuAxWmzPJgaHJdpvUUlDz8sdQz4P2uv367T2JocdDa98iRw2UjIJ4QxSyt077mXZT2X6pKfT2iYtVEvOFw==
-
-"@rollup/rollup-linux-s390x-gnu@4.14.1":
- version "4.14.1"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.14.1.tgz#f7b4e2b0ca49be4e34f9ef0b548c926d94edee87"
- integrity sha512-VMgaGQ5zRX6ZqV/fas65/sUGc9cPmsntq2FiGmayW9KMNfWVG/j0BAqImvU4KTeOOgYSf1F+k6at1UfNONuNjA==
-
-"@rollup/rollup-linux-x64-gnu@4.14.1":
- version "4.14.1"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.14.1.tgz#0aaf79e5b9ccf7db3084fe6c3f2d2873a27d5af4"
- integrity sha512-9Q7DGjZN+hTdJomaQ3Iub4m6VPu1r94bmK2z3UeWP3dGUecRC54tmVu9vKHTm1bOt3ASoYtEz6JSRLFzrysKlA==
-
-"@rollup/rollup-linux-x64-musl@4.14.1":
- version "4.14.1"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.14.1.tgz#38f0a37ca5015eb07dff86a1b6f94279c179f4ed"
- integrity sha512-JNEG/Ti55413SsreTguSx0LOVKX902OfXIKVg+TCXO6Gjans/k9O6ww9q3oLGjNDaTLxM+IHFMeXy/0RXL5R/g==
-
-"@rollup/rollup-win32-arm64-msvc@4.14.1":
- version "4.14.1"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.14.1.tgz#84d48c55740ede42c77373f76e85f368633a0cc3"
- integrity sha512-ryS22I9y0mumlLNwDFYZRDFLwWh3aKaC72CWjFcFvxK0U6v/mOkM5Up1bTbCRAhv3kEIwW2ajROegCIQViUCeA==
-
-"@rollup/rollup-win32-ia32-msvc@4.14.1":
- version "4.14.1"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.14.1.tgz#c1e0bc39e20e760f0a526ddf14ae0543af796605"
- integrity sha512-TdloItiGk+T0mTxKx7Hp279xy30LspMso+GzQvV2maYePMAWdmrzqSNZhUpPj3CGw12aGj57I026PgLCTu8CGg==
-
-"@rollup/rollup-win32-x64-msvc@4.14.1":
- version "4.14.1"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.14.1.tgz#299eee74b7d87e116083ac5b1ce8dd9434668294"
- integrity sha512-wQGI+LY/Py20zdUPq+XCem7JcPOyzIJBm3dli+56DJsQOHbnXZFEwgmnC6el1TPAfC8lBT3m+z69RmLykNUbew==
-
-"@sinclair/typebox@^0.27.8":
- version "0.27.8"
- resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e"
- integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==
-
-"@types/estree@1.0.5", "@types/estree@^1.0.0":
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4"
- integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==
-
-"@types/node@^18.7.15":
- version "18.19.31"
- resolved "https://registry.yarnpkg.com/@types/node/-/node-18.19.31.tgz#b7d4a00f7cb826b60a543cebdbda5d189aaecdcd"
- integrity sha512-ArgCD39YpyyrtFKIqMDvjz79jto5fcI/SVUs2HwB+f0dAzq68yqOdyaSivLiLugSziTpNXLQrVb7RZFmdZzbhA==
- dependencies:
- undici-types "~5.26.4"
+"@esbuild/android-arm@0.15.8":
+ version "0.15.8"
+ resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.15.8.tgz#52b094c98e415ec72fab39827c12f2051ac9c550"
+ integrity sha512-CyEWALmn+no/lbgbAJsbuuhT8s2J19EJGHkeyAwjbFJMrj80KJ9zuYsoAvidPTU7BgBf87r/sgae8Tw0dbOc4Q==
+ dependencies:
+ esbuild-wasm "0.15.8"
+
+"@esbuild/linux-loong64@0.15.8":
+ version "0.15.8"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.15.8.tgz#d64575fc46bf4eb689352aa9f8a139271b6e1647"
+ integrity sha512-pE5RQsOTSERCtfZdfCT25wzo7dfhOSlhAXcsZmuvRYhendOv7djcdvtINdnDp2DAjP17WXlBB4nBO6sHLczmsg==
+
+"@types/chai-subset@^1.3.3":
+ version "1.3.3"
+ resolved "https://registry.yarnpkg.com/@types/chai-subset/-/chai-subset-1.3.3.tgz#97893814e92abd2c534de422cb377e0e0bdaac94"
+ integrity sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==
+ dependencies:
+ "@types/chai" "*"
+
+"@types/chai@*", "@types/chai@^4.3.3":
+ version "4.3.3"
+ resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.3.3.tgz#3c90752792660c4b562ad73b3fbd68bf3bc7ae07"
+ integrity sha512-hC7OMnszpxhZPduX+m+nrx+uFoLkWOMiR4oa/AZF3MuSETYTZmFfJAHqZEM8MVlvfG7BEUcgvtwoCTxBp6hm3g==
+
+"@types/node@*", "@types/node@^18.7.15":
+ version "18.7.18"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-18.7.18.tgz#633184f55c322e4fb08612307c274ee6d5ed3154"
+ integrity sha512-m+6nTEOadJZuTPkKR/SYK3A2d7FZrgElol9UP1Kae90VVU4a6mxnPuLiIW1m4Cq4gZ/nWb9GrdVXJCoCazDAbg==
"@types/prop-types@*":
version "15.7.5"
resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.5.tgz#5f19d2b85a98e9558036f6a3cacc8819420f05cf"
integrity sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==
-"@types/react-reconciler@*":
- version "0.28.8"
- resolved "https://registry.yarnpkg.com/@types/react-reconciler/-/react-reconciler-0.28.8.tgz#e51710572bcccf214306833c2438575d310b3e98"
- integrity sha512-SN9c4kxXZonFhbX4hJrZy37yw9e7EIxcpHCxQv5JUS18wDE5ovkQKlqQEkufdJCCMfuI9BnjUJvhYeJ9x5Ra7g==
+"@types/react-reconciler@^0.26.7":
+ version "0.26.7"
+ resolved "https://registry.yarnpkg.com/@types/react-reconciler/-/react-reconciler-0.26.7.tgz#0c4643f30821ae057e401b0d9037e03e8e9b2a36"
+ integrity sha512-mBDYl8x+oyPX/VBb3E638N0B7xG+SPk/EAMcVPeexqus/5aTpTphQi0curhhshOqRrc9t6OPoJfEUkbymse/lQ==
dependencies:
"@types/react" "*"
-"@types/react@*":
+"@types/react-reconciler@^0.28.0":
+ version "0.28.0"
+ resolved "https://registry.yarnpkg.com/@types/react-reconciler/-/react-reconciler-0.28.0.tgz#513acbed173140e958c909041ca14eb40412077f"
+ integrity sha512-5cjk9ottZAj7eaTsqzPUIlrVbh3hBAO2YaEL1rkjHKB3xNAId7oU8GhzvAX+gfmlfoxTwJnBjPxEHyxkEA1Ffg==
+ dependencies:
+ "@types/react" "*"
+
+"@types/react-test-renderer@^18.0.0":
+ version "18.0.0"
+ resolved "https://registry.yarnpkg.com/@types/react-test-renderer/-/react-test-renderer-18.0.0.tgz#7b7f69ca98821ea5501b21ba24ea7b6139da2243"
+ integrity sha512-C7/5FBJ3g3sqUahguGi03O79b8afNeSD6T8/GU50oQrJCU0bVCCGQHaGKUbg2Ce8VQEEqTw8/HiS6lXHHdgkdQ==
+ dependencies:
+ "@types/react" "*"
+
+"@types/react@*", "@types/react@^18.0.17":
version "18.0.20"
resolved "https://registry.yarnpkg.com/@types/react/-/react-18.0.20.tgz#e4c36be3a55eb5b456ecf501bd4a00fd4fd0c9ab"
integrity sha512-MWul1teSPxujEHVwZl4a5HxQ9vVNsjTchVA+xRqv/VYGCuKGAU6UhfrTdF5aBefwD1BHUD8i/zq+O/vyCm/FrA==
@@ -247,103 +71,51 @@
resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.2.tgz#1a62f89525723dde24ba1b01b092bf5df8ad4d39"
integrity sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==
-"@vitest/expect@1.4.0":
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/@vitest/expect/-/expect-1.4.0.tgz#d64e17838a20007fecd252397f9b96a1ca81bfb0"
- integrity sha512-Jths0sWCJZ8BxjKe+p+eKsoqev1/T8lYcrjavEaz8auEJ4jAVY0GwW3JKmdVU4mmNPLPHixh4GNXP7GFtAiDHA==
- dependencies:
- "@vitest/spy" "1.4.0"
- "@vitest/utils" "1.4.0"
- chai "^4.3.10"
-
-"@vitest/runner@1.4.0":
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/@vitest/runner/-/runner-1.4.0.tgz#907c2d17ad5975b70882c25ab7a13b73e5a28da9"
- integrity sha512-EDYVSmesqlQ4RD2VvWo3hQgTJ7ZrFQ2VSJdfiJiArkCerDAGeyF1i6dHkmySqk573jLp6d/cfqCN+7wUB5tLgg==
- dependencies:
- "@vitest/utils" "1.4.0"
- p-limit "^5.0.0"
- pathe "^1.1.1"
-
-"@vitest/snapshot@1.4.0":
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/@vitest/snapshot/-/snapshot-1.4.0.tgz#2945b3fb53767a3f4f421919e93edfef2935b8bd"
- integrity sha512-saAFnt5pPIA5qDGxOHxJ/XxhMFKkUSBJmVt5VgDsAqPTX6JP326r5C/c9UuCMPoXNzuudTPsYDZCoJ5ilpqG2A==
- dependencies:
- magic-string "^0.30.5"
- pathe "^1.1.1"
- pretty-format "^29.7.0"
-
-"@vitest/spy@1.4.0":
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/@vitest/spy/-/spy-1.4.0.tgz#cf953c93ae54885e801cbe6b408a547ae613f26c"
- integrity sha512-Ywau/Qs1DzM/8Uc+yA77CwSegizMlcgTJuYGAi0jujOteJOUf1ujunHThYo243KG9nAyWT3L9ifPYZ5+As/+6Q==
- dependencies:
- tinyspy "^2.2.0"
-
-"@vitest/utils@1.4.0":
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/@vitest/utils/-/utils-1.4.0.tgz#ea6297e0d329f9ff0a106f4e1f6daf3ff6aad3f0"
- integrity sha512-mx3Yd1/6e2Vt/PUC98DcqTirtfxUyAZ32uK82r8rZzbtBeBo+nqgnjx/LvqQdWsrvNtm14VmurNgcf4nqY5gJg==
- dependencies:
- diff-sequences "^29.6.3"
- estree-walker "^3.0.3"
- loupe "^2.3.7"
- pretty-format "^29.7.0"
-
-acorn-walk@^8.3.2:
- version "8.3.2"
- resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.2.tgz#7703af9415f1b6db9315d6895503862e231d34aa"
- integrity sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==
-
-acorn@^8.11.3:
- version "8.11.3"
- resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.3.tgz#71e0b14e13a4ec160724b38fb7b0f233b1b81d7a"
- integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==
-
-ansi-styles@^5.0.0:
- version "5.2.0"
- resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b"
- integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==
+acorn@^8.8.0:
+ version "8.8.0"
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.0.tgz#88c0187620435c7f6015803f5539dae05a9dbea8"
+ integrity sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==
assertion-error@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b"
integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==
-cac@^6.7.14:
- version "6.7.14"
- resolved "https://registry.yarnpkg.com/cac/-/cac-6.7.14.tgz#804e1e6f506ee363cb0e3ccbb09cad5dd9870959"
- integrity sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==
+balanced-match@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
+ integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
-chai@^4.3.10:
- version "4.4.1"
- resolved "https://registry.yarnpkg.com/chai/-/chai-4.4.1.tgz#3603fa6eba35425b0f2ac91a009fe924106e50d1"
- integrity sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==
+brace-expansion@^1.1.7:
+ version "1.1.11"
+ resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
+ integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
+ dependencies:
+ balanced-match "^1.0.0"
+ concat-map "0.0.1"
+
+chai@^4.3.6:
+ version "4.3.6"
+ resolved "https://registry.yarnpkg.com/chai/-/chai-4.3.6.tgz#ffe4ba2d9fa9d6680cc0b370adae709ec9011e9c"
+ integrity sha512-bbcp3YfHCUzMOvKqsztczerVgBKSsEijCySNlHHbX3VG1nskvqjz5Rfso1gGwD6w6oOV3eI60pKuMOV5MV7p3Q==
dependencies:
assertion-error "^1.1.0"
- check-error "^1.0.3"
- deep-eql "^4.1.3"
- get-func-name "^2.0.2"
- loupe "^2.3.6"
+ check-error "^1.0.2"
+ deep-eql "^3.0.1"
+ get-func-name "^2.0.0"
+ loupe "^2.3.1"
pathval "^1.1.1"
- type-detect "^4.0.8"
+ type-detect "^4.0.5"
-check-error@^1.0.3:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.3.tgz#a6502e4312a7ee969f646e83bb3ddd56281bd694"
- integrity sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==
- dependencies:
- get-func-name "^2.0.2"
+check-error@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82"
+ integrity sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==
-cross-spawn@^7.0.3:
- version "7.0.3"
- resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6"
- integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==
- dependencies:
- path-key "^3.1.0"
- shebang-command "^2.0.0"
- which "^2.0.1"
+concat-map@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
+ integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==
csstype@^3.0.2:
version "3.1.1"
@@ -357,126 +129,216 @@ debug@^4.3.4:
dependencies:
ms "2.1.2"
-deep-eql@^4.1.3:
- version "4.1.3"
- resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-4.1.3.tgz#7c7775513092f7df98d8df9996dd085eb668cc6d"
- integrity sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==
+deep-eql@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-3.0.1.tgz#dfc9404400ad1c8fe023e7da1df1c147c4b444df"
+ integrity sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==
dependencies:
type-detect "^4.0.0"
-diff-sequences@^29.6.3:
- version "29.6.3"
- resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.6.3.tgz#4deaf894d11407c51efc8418012f9e70b84ea921"
- integrity sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==
-
-esbuild@^0.20.1:
- version "0.20.2"
- resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.20.2.tgz#9d6b2386561766ee6b5a55196c6d766d28c87ea1"
- integrity sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==
+esbuild-android-64@0.15.8:
+ version "0.15.8"
+ resolved "https://registry.yarnpkg.com/esbuild-android-64/-/esbuild-android-64-0.15.8.tgz#625863e705d4ed32a3b4c0b997dbf9454d50a455"
+ integrity sha512-bVh8FIKOolF7/d4AMzt7xHlL0Ljr+mYKSHI39TJWDkybVWHdn6+4ODL3xZGHOxPpdRpitemXA1WwMKYBsw8dGw==
+ dependencies:
+ esbuild-wasm "0.15.8"
+
+esbuild-android-arm64@0.15.8:
+ version "0.15.8"
+ resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.15.8.tgz#cd62afe08652ac146014386d3adbe7a9d33db1b0"
+ integrity sha512-ReAMDAHuo0H1h9LxRabI6gwYPn8k6WiUeyxuMvx17yTrJO+SCnIfNc/TSPFvDwtK9MiyiKG/2dBYHouT/M0BXQ==
+
+esbuild-darwin-64@0.15.8:
+ version "0.15.8"
+ resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.15.8.tgz#eb668dc973165f85aefecdca8aa60231acb2f705"
+ integrity sha512-KaKcGfJ+yto7Fo5gAj3xwxHMd1fBIKatpCHK8znTJLVv+9+NN2/tIPBqA4w5rBwjX0UqXDeIE2v1xJP+nGEXgA==
+
+esbuild-darwin-arm64@0.15.8:
+ version "0.15.8"
+ resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.8.tgz#91c110daa46074fdfc18f411247ca0d1228aacc3"
+ integrity sha512-8tjEaBgAKnXCkP7bhEJmEqdG9HEV6oLkF36BrMzpfW2rgaw0c48Zrxe+9RlfeGvs6gDF4w+agXyTjikzsS3izw==
+
+esbuild-freebsd-64@0.15.8:
+ version "0.15.8"
+ resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.8.tgz#22270945a9bf9107c340eb73922e122bbe84f8ad"
+ integrity sha512-jaxcsGHYzn2L0/lffON2WfH4Nc+d/EwozVTP5K2v016zxMb5UQMhLoJzvLgBqHT1SG0B/mO+a+THnJCMVg15zw==
+
+esbuild-freebsd-arm64@0.15.8:
+ version "0.15.8"
+ resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.8.tgz#0efe2741fbcaa2cfd31b9f94bd3ca7385b68c469"
+ integrity sha512-2xp2UlljMvX8HExtcg7VHaeQk8OBU0CSl1j18B5CcZmSDkLF9p3utuMXIopG3a08fr9Hv+Dz6+seSXUow/G51w==
+
+esbuild-linux-32@0.15.8:
+ version "0.15.8"
+ resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.15.8.tgz#6fc98659105da5c0d1fedfce3b7b9fa24ebee0d4"
+ integrity sha512-9u1E54BRz1FQMl86iaHK146+4ID2KYNxL3trLZT4QLLx3M7Q9n4lGG3lrzqUatGR2cKy8c33b0iaCzsItZWkFg==
+
+esbuild-linux-64@0.15.8:
+ version "0.15.8"
+ resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.15.8.tgz#8e738c926d145cdd4e9bcb2febc96d89dc27dc09"
+ integrity sha512-4HxrsN9eUzJXdVGMTYA5Xler82FuZUu21bXKN42zcLHHNKCAMPUzD62I+GwDhsdgUBAUj0tRXDdsQHgaP6v0HA==
+
+esbuild-linux-arm64@0.15.8:
+ version "0.15.8"
+ resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.8.tgz#a12675e5a56e8ef08dea49da8eed51a87b0e60d6"
+ integrity sha512-1OCm7Aq0tEJT70PbxmHSGYDLYP8DKH8r4Nk7/XbVzWaduo9beCjGBB+tGZIHK6DdTQ3h00/4Tb/70YMH/bOtKg==
+
+esbuild-linux-arm@0.15.8:
+ version "0.15.8"
+ resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.15.8.tgz#6424da1e8a3ece78681ebee4a70477b40c36ab35"
+ integrity sha512-7DVBU9SFjX4+vBwt8tHsUCbE6Vvl6y6FQWHAgyw1lybC5gULqn/WnjHYHN2/LJaZRsDBvxWT4msEgwLGq1Wd3Q==
+
+esbuild-linux-mips64le@0.15.8:
+ version "0.15.8"
+ resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.8.tgz#5b39a16272cb4eaaad1f24938c057b19fb5a0ee5"
+ integrity sha512-yeFoNPVFPEzZvFYBfUQNG2TjGRaCyV1E27OcOg4LOtnGrxb2wA+mkW3luckyv1CEyd00mpAg7UdHx8nlx3ghgA==
+
+esbuild-linux-ppc64le@0.15.8:
+ version "0.15.8"
+ resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.8.tgz#98ea8cfae8227180b45b2d952b2cbb072900944f"
+ integrity sha512-CEyMMUUNabXibw8OSNmBXhOIGhnjNVl5Lpseiuf00iKN0V47oqDrbo4dsHz1wH62m49AR8iG8wpDlTqfYgKbtg==
+
+esbuild-linux-riscv64@0.15.8:
+ version "0.15.8"
+ resolved "https://registry.yarnpkg.com/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.8.tgz#6334607025eb449d8dd402d7810721dc15a6210f"
+ integrity sha512-OCGSOaspMUjexSCU8ZiA0UnV/NiRU+s2vIfEcAQWQ6u32R+2luyfh/4ZaY6jFbylJE07Esc/yRvb9Q5fXuClXA==
+
+esbuild-linux-s390x@0.15.8:
+ version "0.15.8"
+ resolved "https://registry.yarnpkg.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.8.tgz#874f1a3507c32cce1d2ce0d2f28ac1496c094eab"
+ integrity sha512-RHdpdfxRTSrZXZJlFSLazFU4YwXLB5Rgf6Zr5rffqSsO4y9JybgtKO38bFwxZNlDXliYISXN/YROKrG9s7mZQA==
+
+esbuild-netbsd-64@0.15.8:
+ version "0.15.8"
+ resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.8.tgz#2e03d87ed811400d5d1fa8c7629b9fd97a574231"
+ integrity sha512-VolFFRatBH09T5QMWhiohAWCOien1R1Uz9K0BRVVTBgBaVBt7eArsXTKxVhUgRf2vwu2c2SXkuP0r7HLG0eozw==
+
+esbuild-openbsd-64@0.15.8:
+ version "0.15.8"
+ resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.8.tgz#8fdbc6399563ac61ff546449e2226a2b1477216c"
+ integrity sha512-HTAPlg+n4kUeE/isQxlCfsOz0xJGNoT5LJ9oYZWFKABfVf4Ycu7Zlf5ITgOnrdheTkz8JeL/gISIOCFAoOXrSA==
+
+esbuild-sunos-64@0.15.8:
+ version "0.15.8"
+ resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.15.8.tgz#db657b5c09c0c0161d67ddafca1b710a2e7ce96b"
+ integrity sha512-qMP/jR/FzcIOwKj+W+Lb+8Cfr8GZHbHUJxAPi7DUhNZMQ/6y7sOgRzlOSpRrbbUntrRZh0MqOyDhJ3Gpo6L1QA==
+
+esbuild-wasm@0.15.8:
+ version "0.15.8"
+ resolved "https://registry.yarnpkg.com/esbuild-wasm/-/esbuild-wasm-0.15.8.tgz#60fb8c5dc1a5538421857a2fa5fbb9eab908dcbb"
+ integrity sha512-Y7uCl5RNO4URjlemjdx++ukVHEMt5s5AfMWYUnMiK4Sry+pPCvQIctzXq6r6FKCyGKjX6/NGMCqR2OX6aLxj0w==
+
+esbuild-windows-32@0.15.8:
+ version "0.15.8"
+ resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.15.8.tgz#bbb9fe20a8b6bba4428642cacf45a0fb7b2f3783"
+ integrity sha512-RKR1QHh4iWzjUhkP8Yqi75PPz/KS+b8zw3wUrzw6oAkj+iU5Qtyj61ZDaSG3Qf2vc6hTIUiPqVTqBH0NpXFNwg==
+
+esbuild-windows-64@0.15.8:
+ version "0.15.8"
+ resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.15.8.tgz#cedee65505209c8d371d7228b60785c08f43e04d"
+ integrity sha512-ag9ptYrsizgsR+PQE8QKeMqnosLvAMonQREpLw4evA4FFgOBMLEat/dY/9txbpozTw9eEOYyD3a4cE9yTu20FA==
+
+esbuild-windows-arm64@0.15.8:
+ version "0.15.8"
+ resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.8.tgz#1d75235290bf23a111e6c0b03febd324af115cb1"
+ integrity sha512-dbpAb0VyPaUs9mgw65KRfQ9rqiWCHpNzrJusoPu+LpEoswosjt/tFxN7cd2l68AT4qWdBkzAjDLRon7uqMeWcg==
+
+esbuild@^0.15.6:
+ version "0.15.8"
+ resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.15.8.tgz#75daa25d03f6dd9cc9355030eba2b93555b42cd4"
+ integrity sha512-Remsk2dmr1Ia65sU+QasE6svJbsHe62lzR+CnjpUvbZ+uSYo1SitiOWPRfZQkCu82YWZBBKXiD/j0i//XWMZ+Q==
optionalDependencies:
- "@esbuild/aix-ppc64" "0.20.2"
- "@esbuild/android-arm" "0.20.2"
- "@esbuild/android-arm64" "0.20.2"
- "@esbuild/android-x64" "0.20.2"
- "@esbuild/darwin-arm64" "0.20.2"
- "@esbuild/darwin-x64" "0.20.2"
- "@esbuild/freebsd-arm64" "0.20.2"
- "@esbuild/freebsd-x64" "0.20.2"
- "@esbuild/linux-arm" "0.20.2"
- "@esbuild/linux-arm64" "0.20.2"
- "@esbuild/linux-ia32" "0.20.2"
- "@esbuild/linux-loong64" "0.20.2"
- "@esbuild/linux-mips64el" "0.20.2"
- "@esbuild/linux-ppc64" "0.20.2"
- "@esbuild/linux-riscv64" "0.20.2"
- "@esbuild/linux-s390x" "0.20.2"
- "@esbuild/linux-x64" "0.20.2"
- "@esbuild/netbsd-x64" "0.20.2"
- "@esbuild/openbsd-x64" "0.20.2"
- "@esbuild/sunos-x64" "0.20.2"
- "@esbuild/win32-arm64" "0.20.2"
- "@esbuild/win32-ia32" "0.20.2"
- "@esbuild/win32-x64" "0.20.2"
-
-estree-walker@^3.0.3:
- version "3.0.3"
- resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-3.0.3.tgz#67c3e549ec402a487b4fc193d1953a524752340d"
- integrity sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==
- dependencies:
- "@types/estree" "^1.0.0"
-
-execa@^8.0.1:
- version "8.0.1"
- resolved "https://registry.yarnpkg.com/execa/-/execa-8.0.1.tgz#51f6a5943b580f963c3ca9c6321796db8cc39b8c"
- integrity sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==
- dependencies:
- cross-spawn "^7.0.3"
- get-stream "^8.0.1"
- human-signals "^5.0.0"
- is-stream "^3.0.0"
- merge-stream "^2.0.0"
- npm-run-path "^5.1.0"
- onetime "^6.0.0"
- signal-exit "^4.1.0"
- strip-final-newline "^3.0.0"
+ "@esbuild/android-arm" "0.15.8"
+ "@esbuild/linux-loong64" "0.15.8"
+ esbuild-android-64 "0.15.8"
+ esbuild-android-arm64 "0.15.8"
+ esbuild-darwin-64 "0.15.8"
+ esbuild-darwin-arm64 "0.15.8"
+ esbuild-freebsd-64 "0.15.8"
+ esbuild-freebsd-arm64 "0.15.8"
+ esbuild-linux-32 "0.15.8"
+ esbuild-linux-64 "0.15.8"
+ esbuild-linux-arm "0.15.8"
+ esbuild-linux-arm64 "0.15.8"
+ esbuild-linux-mips64le "0.15.8"
+ esbuild-linux-ppc64le "0.15.8"
+ esbuild-linux-riscv64 "0.15.8"
+ esbuild-linux-s390x "0.15.8"
+ esbuild-netbsd-64 "0.15.8"
+ esbuild-openbsd-64 "0.15.8"
+ esbuild-sunos-64 "0.15.8"
+ esbuild-windows-32 "0.15.8"
+ esbuild-windows-64 "0.15.8"
+ esbuild-windows-arm64 "0.15.8"
+
+fs.realpath@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
+ integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==
fsevents@~2.3.2:
version "2.3.2"
resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a"
integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==
-fsevents@~2.3.3:
- version "2.3.3"
- resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6"
- integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==
-
-get-func-name@^2.0.1, get-func-name@^2.0.2:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.2.tgz#0d7cf20cd13fda808669ffa88f4ffc7a3943fc41"
- integrity sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==
+function-bind@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
+ integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
-get-stream@^8.0.1:
- version "8.0.1"
- resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-8.0.1.tgz#def9dfd71742cd7754a7761ed43749a27d02eca2"
- integrity sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==
+get-func-name@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41"
+ integrity sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==
+
+glob@^7.1.3:
+ version "7.2.3"
+ resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b"
+ integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==
+ dependencies:
+ fs.realpath "^1.0.0"
+ inflight "^1.0.4"
+ inherits "2"
+ minimatch "^3.1.1"
+ once "^1.3.0"
+ path-is-absolute "^1.0.0"
+
+has@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
+ integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==
+ dependencies:
+ function-bind "^1.1.1"
-human-signals@^5.0.0:
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-5.0.0.tgz#42665a284f9ae0dade3ba41ebc37eb4b852f3a28"
- integrity sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==
+inflight@^1.0.4:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
+ integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==
+ dependencies:
+ once "^1.3.0"
+ wrappy "1"
-is-stream@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-3.0.0.tgz#e6bfd7aa6bef69f4f472ce9bb681e3e57b4319ac"
- integrity sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==
+inherits@2:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
+ integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
-isexe@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
- integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==
+is-core-module@^2.9.0:
+ version "2.10.0"
+ resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.10.0.tgz#9012ede0a91c69587e647514e1d5277019e728ed"
+ integrity sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==
+ dependencies:
+ has "^1.0.3"
"js-tokens@^3.0.0 || ^4.0.0":
version "4.0.0"
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
-js-tokens@^9.0.0:
- version "9.0.0"
- resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-9.0.0.tgz#0f893996d6f3ed46df7f0a3b12a03f5fd84223c1"
- integrity sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==
-
-jsonc-parser@^3.2.0:
- version "3.2.1"
- resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.2.1.tgz#031904571ccf929d7670ee8c547545081cb37f1a"
- integrity sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==
-
-local-pkg@^0.5.0:
- version "0.5.0"
- resolved "https://registry.yarnpkg.com/local-pkg/-/local-pkg-0.5.0.tgz#093d25a346bae59a99f80e75f6e9d36d7e8c925c"
- integrity sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==
- dependencies:
- mlly "^1.4.2"
- pkg-types "^1.0.3"
+local-pkg@^0.4.2:
+ version "0.4.2"
+ resolved "https://registry.yarnpkg.com/local-pkg/-/local-pkg-0.4.2.tgz#13107310b77e74a0e513147a131a2ba288176c2f"
+ integrity sha512-mlERgSPrbxU3BP4qBqAvvwlgW4MTg78iwJdGGnv7kibKjWcJksrG3t6LB5lXI93wXRDvG4NpUgJFmTG4T6rdrg==
loose-envify@^1.1.0:
version "1.4.0"
@@ -485,85 +347,51 @@ loose-envify@^1.1.0:
dependencies:
js-tokens "^3.0.0 || ^4.0.0"
-loupe@^2.3.6, loupe@^2.3.7:
- version "2.3.7"
- resolved "https://registry.yarnpkg.com/loupe/-/loupe-2.3.7.tgz#6e69b7d4db7d3ab436328013d37d1c8c3540c697"
- integrity sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==
+loupe@^2.3.1:
+ version "2.3.4"
+ resolved "https://registry.yarnpkg.com/loupe/-/loupe-2.3.4.tgz#7e0b9bffc76f148f9be769cb1321d3dcf3cb25f3"
+ integrity sha512-OvKfgCC2Ndby6aSTREl5aCCPTNIzlDfQZvZxNUrBrihDhL3xcrYegTblhmEiCrg2kKQz4XsFIaemE5BF4ybSaQ==
dependencies:
- get-func-name "^2.0.1"
+ get-func-name "^2.0.0"
-magic-string@^0.30.5:
- version "0.30.9"
- resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.9.tgz#8927ae21bfdd856310e07a1bc8dd5e73cb6c251d"
- integrity sha512-S1+hd+dIrC8EZqKyT9DstTH/0Z+f76kmmvZnkfQVmOpDEF9iVgdYif3Q/pIWHmCoo59bQVGW0kVL3e2nl+9+Sw==
+minimatch@^3.1.1:
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
+ integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
dependencies:
- "@jridgewell/sourcemap-codec" "^1.4.15"
-
-merge-stream@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60"
- integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==
-
-mimic-fn@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-4.0.0.tgz#60a90550d5cb0b239cca65d893b1a53b29871ecc"
- integrity sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==
-
-mlly@^1.2.0, mlly@^1.4.2:
- version "1.6.1"
- resolved "https://registry.yarnpkg.com/mlly/-/mlly-1.6.1.tgz#0983067dc3366d6314fc5e12712884e6978d028f"
- integrity sha512-vLgaHvaeunuOXHSmEbZ9izxPx3USsk8KCQ8iC+aTlp5sKRSoZvwhHh5L9VbKSaVC6sJDqbyohIS76E2VmHIPAA==
- dependencies:
- acorn "^8.11.3"
- pathe "^1.1.2"
- pkg-types "^1.0.3"
- ufo "^1.3.2"
+ brace-expansion "^1.1.7"
ms@2.1.2:
version "2.1.2"
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
-nanoid@^3.3.7:
- version "3.3.7"
- resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8"
- integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==
+nanoid@^3.3.4:
+ version "3.3.4"
+ resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab"
+ integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==
-npm-run-path@^5.1.0:
- version "5.3.0"
- resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-5.3.0.tgz#e23353d0ebb9317f174e93417e4a4d82d0249e9f"
- integrity sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==
- dependencies:
- path-key "^4.0.0"
+object-assign@^4.1.1:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
+ integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==
-onetime@^6.0.0:
- version "6.0.0"
- resolved "https://registry.yarnpkg.com/onetime/-/onetime-6.0.0.tgz#7c24c18ed1fd2e9bca4bd26806a33613c77d34b4"
- integrity sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==
+once@^1.3.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
+ integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==
dependencies:
- mimic-fn "^4.0.0"
+ wrappy "1"
-p-limit@^5.0.0:
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-5.0.0.tgz#6946d5b7140b649b7a33a027d89b4c625b3a5985"
- integrity sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==
- dependencies:
- yocto-queue "^1.0.0"
+path-is-absolute@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
+ integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==
-path-key@^3.1.0:
- version "3.1.1"
- resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375"
- integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==
-
-path-key@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/path-key/-/path-key-4.0.0.tgz#295588dc3aee64154f877adb9d780b81c554bf18"
- integrity sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==
-
-pathe@^1.1.0, pathe@^1.1.1, pathe@^1.1.2:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/pathe/-/pathe-1.1.2.tgz#6c4cb47a945692e48a1ddd6e4094d170516437ec"
- integrity sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==
+path-parse@^1.0.7:
+ version "1.0.7"
+ resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
+ integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
pathval@^1.1.1:
version "1.1.1"
@@ -575,44 +403,51 @@ picocolors@^1.0.0:
resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c"
integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==
-pkg-types@^1.0.3:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/pkg-types/-/pkg-types-1.0.3.tgz#988b42ab19254c01614d13f4f65a2cfc7880f868"
- integrity sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==
- dependencies:
- jsonc-parser "^3.2.0"
- mlly "^1.2.0"
- pathe "^1.1.0"
-
-postcss@^8.4.38:
- version "8.4.38"
- resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.38.tgz#b387d533baf2054288e337066d81c6bee9db9e0e"
- integrity sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==
+postcss@^8.4.16:
+ version "8.4.16"
+ resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.16.tgz#33a1d675fac39941f5f445db0de4db2b6e01d43c"
+ integrity sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ==
dependencies:
- nanoid "^3.3.7"
+ nanoid "^3.3.4"
picocolors "^1.0.0"
- source-map-js "^1.2.0"
+ source-map-js "^1.0.2"
-pretty-format@^29.7.0:
- version "29.7.0"
- resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.7.0.tgz#ca42c758310f365bfa71a0bda0a807160b776812"
- integrity sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==
- dependencies:
- "@jest/schemas" "^29.6.3"
- ansi-styles "^5.0.0"
- react-is "^18.0.0"
-
-react-is@^18.0.0:
+"react-is@^16.12.0 || ^17.0.0 || ^18.0.0", react-is@^18.2.0:
version "18.2.0"
resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b"
integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==
-react-reconciler@^0.29.0:
- version "0.29.0"
- resolved "https://registry.yarnpkg.com/react-reconciler/-/react-reconciler-0.29.0.tgz#ee769bd362915076753f3845822f2d1046603de7"
- integrity sha512-wa0fGj7Zht1EYMRhKWwoo1H9GApxYLBuhoAuXN0TlltESAjDssB+Apf0T/DngVqaMyPypDmabL37vw/2aRM98Q==
+react-nil@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/react-nil/-/react-nil-1.2.0.tgz#0f2e110b50cf12bdf1eebf43bfdb4b348a271c11"
+ integrity sha512-54yJ8+vFyJlZHiFBLny0RKQ0/FSG32y8pZt0oV7duxaW3lEM9pc6D2Hhnvu0TToJKPCAJ/A5XmjY8nDETxrrGg==
+ dependencies:
+ "@types/react-reconciler" "^0.26.7"
+ react-reconciler "^0.27.0"
+
+react-reconciler@^0.27.0:
+ version "0.27.0"
+ resolved "https://registry.yarnpkg.com/react-reconciler/-/react-reconciler-0.27.0.tgz#360124fdf2d76447c7491ee5f0e04503ed9acf5b"
+ integrity sha512-HmMDKciQjYmBRGuuhIaKA1ba/7a+UsM5FzOZsMO2JYHt9Jh8reCb7j1eDC95NOyUlKM9KRyvdx0flBuDvYSBoA==
dependencies:
loose-envify "^1.1.0"
+ scheduler "^0.21.0"
+
+react-shallow-renderer@^16.15.0:
+ version "16.15.0"
+ resolved "https://registry.yarnpkg.com/react-shallow-renderer/-/react-shallow-renderer-16.15.0.tgz#48fb2cf9b23d23cde96708fe5273a7d3446f4457"
+ integrity sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA==
+ dependencies:
+ object-assign "^4.1.1"
+ react-is "^16.12.0 || ^17.0.0 || ^18.0.0"
+
+react-test-renderer@^18.2.0:
+ version "18.2.0"
+ resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-18.2.0.tgz#1dd912bd908ff26da5b9fca4fd1c489b9523d37e"
+ integrity sha512-JWD+aQ0lh2gvh4NM3bBM42Kx+XybOxCpgYK7F8ugAlpaTSnWsX+39Z4XkOykGZAHrjwwTZT3x3KxswVWxHPUqA==
+ dependencies:
+ react-is "^18.2.0"
+ react-shallow-renderer "^16.15.0"
scheduler "^0.23.0"
react@^18.2.0:
@@ -622,30 +457,36 @@ react@^18.2.0:
dependencies:
loose-envify "^1.1.0"
-rollup@^4.13.0:
- version "4.14.1"
- resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.14.1.tgz#228d5159c3f4d8745bd24819d734bc6c6ca87c09"
- integrity sha512-4LnHSdd3QK2pa1J6dFbfm1HN0D7vSK/ZuZTsdyUAlA6Rr1yTouUTL13HaDOGJVgby461AhrNGBS7sCGXXtT+SA==
+resolve@^1.22.1:
+ version "1.22.1"
+ resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177"
+ integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==
+ dependencies:
+ is-core-module "^2.9.0"
+ path-parse "^1.0.7"
+ supports-preserve-symlinks-flag "^1.0.0"
+
+rimraf@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a"
+ integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==
dependencies:
- "@types/estree" "1.0.5"
+ glob "^7.1.3"
+
+rollup@~2.78.0:
+ version "2.78.1"
+ resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.78.1.tgz#52fe3934d9c83cb4f7c4cb5fb75d88591be8648f"
+ integrity sha512-VeeCgtGi4P+o9hIg+xz4qQpRl6R401LWEXBmxYKOV4zlF82lyhgh2hTZnheFUbANE8l2A41F458iwj2vEYaXJg==
optionalDependencies:
- "@rollup/rollup-android-arm-eabi" "4.14.1"
- "@rollup/rollup-android-arm64" "4.14.1"
- "@rollup/rollup-darwin-arm64" "4.14.1"
- "@rollup/rollup-darwin-x64" "4.14.1"
- "@rollup/rollup-linux-arm-gnueabihf" "4.14.1"
- "@rollup/rollup-linux-arm64-gnu" "4.14.1"
- "@rollup/rollup-linux-arm64-musl" "4.14.1"
- "@rollup/rollup-linux-powerpc64le-gnu" "4.14.1"
- "@rollup/rollup-linux-riscv64-gnu" "4.14.1"
- "@rollup/rollup-linux-s390x-gnu" "4.14.1"
- "@rollup/rollup-linux-x64-gnu" "4.14.1"
- "@rollup/rollup-linux-x64-musl" "4.14.1"
- "@rollup/rollup-win32-arm64-msvc" "4.14.1"
- "@rollup/rollup-win32-ia32-msvc" "4.14.1"
- "@rollup/rollup-win32-x64-msvc" "4.14.1"
fsevents "~2.3.2"
+scheduler@^0.21.0:
+ version "0.21.0"
+ resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.21.0.tgz#6fd2532ff5a6d877b6edb12f00d8ab7e8f308820"
+ integrity sha512-1r87x5fz9MXqswA2ERLo0EbOAU74DpIUO090gIasYTqlVoJeMcl+Z1Rg7WHz+qtPujhS/hGIt9kxZOYBV3faRQ==
+ dependencies:
+ loose-envify "^1.1.0"
+
scheduler@^0.23.0:
version "0.23.0"
resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.0.tgz#ba8041afc3d30eb206a487b6b384002e4e61fdfe"
@@ -653,154 +494,83 @@ scheduler@^0.23.0:
dependencies:
loose-envify "^1.1.0"
-shebang-command@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea"
- integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==
- dependencies:
- shebang-regex "^3.0.0"
-
-shebang-regex@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172"
- integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==
-
-siginfo@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/siginfo/-/siginfo-2.0.0.tgz#32e76c70b79724e3bb567cb9d543eb858ccfaf30"
- integrity sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==
+source-map-js@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c"
+ integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==
-signal-exit@^4.1.0:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04"
- integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==
+strip-literal@^0.4.1:
+ version "0.4.2"
+ resolved "https://registry.yarnpkg.com/strip-literal/-/strip-literal-0.4.2.tgz#4f9fa6c38bb157b924e9ace7155ebf8a2342cbcf"
+ integrity sha512-pv48ybn4iE1O9RLgCAN0iU4Xv7RlBTiit6DKmMiErbs9x1wH6vXBs45tWc0H5wUIF6TLTrKweqkmYF/iraQKNw==
+ dependencies:
+ acorn "^8.8.0"
-source-map-js@^1.2.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.0.tgz#16b809c162517b5b8c3e7dcd315a2a5c2612b2af"
- integrity sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==
-
-stackback@0.0.2:
- version "0.0.2"
- resolved "https://registry.yarnpkg.com/stackback/-/stackback-0.0.2.tgz#1ac8a0d9483848d1695e418b6d031a3c3ce68e3b"
- integrity sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==
-
-std-env@^3.5.0:
- version "3.7.0"
- resolved "https://registry.yarnpkg.com/std-env/-/std-env-3.7.0.tgz#c9f7386ced6ecf13360b6c6c55b8aaa4ef7481d2"
- integrity sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==
-
-strip-final-newline@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-3.0.0.tgz#52894c313fbff318835280aed60ff71ebf12b8fd"
- integrity sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==
-
-strip-literal@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/strip-literal/-/strip-literal-2.1.0.tgz#6d82ade5e2e74f5c7e8739b6c84692bd65f0bd2a"
- integrity sha512-Op+UycaUt/8FbN/Z2TWPBLge3jWrP3xj10f3fnYxf052bKuS3EKs1ZQcVGjnEMdsNVAM+plXRdmjrZ/KgG3Skw==
- dependencies:
- js-tokens "^9.0.0"
-
-tinybench@^2.5.1:
- version "2.6.0"
- resolved "https://registry.yarnpkg.com/tinybench/-/tinybench-2.6.0.tgz#1423284ee22de07c91b3752c048d2764714b341b"
- integrity sha512-N8hW3PG/3aOoZAN5V/NSAEDz0ZixDSSt5b/a05iqtpgfLWMSVuCo7w0k2vVvEjdrIoeGqZzweX2WlyioNIHchA==
-
-tinypool@^0.8.2:
- version "0.8.3"
- resolved "https://registry.yarnpkg.com/tinypool/-/tinypool-0.8.3.tgz#e17d0a5315a7d425f875b05f7af653c225492d39"
- integrity sha512-Ud7uepAklqRH1bvwy22ynrliC7Dljz7Tm8M/0RBUW+YRa4YHhZ6e4PpgE+fu1zr/WqB1kbeuVrdfeuyIBpy4tw==
-
-tinyspy@^2.2.0:
- version "2.2.1"
- resolved "https://registry.yarnpkg.com/tinyspy/-/tinyspy-2.2.1.tgz#117b2342f1f38a0dbdcc73a50a454883adf861d1"
- integrity sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==
-
-type-detect@^4.0.0, type-detect@^4.0.8:
+supports-preserve-symlinks-flag@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09"
+ integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
+
+suspend-react@^0.0.8:
+ version "0.0.8"
+ resolved "https://registry.yarnpkg.com/suspend-react/-/suspend-react-0.0.8.tgz#b0740c1386b4eb652f17affe4339915ee268bd31"
+ integrity sha512-ZC3r8Hu1y0dIThzsGw0RLZplnX9yXwfItcvaIzJc2VQVi8TGyGDlu92syMB5ulybfvGLHAI5Ghzlk23UBPF8xg==
+
+tinybench@^2.1.5:
+ version "2.1.5"
+ resolved "https://registry.yarnpkg.com/tinybench/-/tinybench-2.1.5.tgz#6864341415ff0f912ed160cfd90b7f833ece674c"
+ integrity sha512-ak+PZZEuH3mw6CCFOgf5S90YH0MARnZNhxjhjguAmoJimEMAJuNip/rJRd6/wyylHItomVpKTzZk9zrhTrQCoQ==
+
+tinypool@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/tinypool/-/tinypool-0.3.0.tgz#c405d8b743509fc28ea4ca358433190be654f819"
+ integrity sha512-NX5KeqHOBZU6Bc0xj9Vr5Szbb1j8tUHIeD18s41aDJaPeC5QTdEhK0SpdpUrZlj2nv5cctNcSjaKNanXlfcVEQ==
+
+tinyspy@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/tinyspy/-/tinyspy-1.0.2.tgz#6da0b3918bfd56170fb3cd3a2b5ef832ee1dff0d"
+ integrity sha512-bSGlgwLBYf7PnUsQ6WOc6SJ3pGOcd+d8AA6EUnLDDM0kWEstC1JIlSZA3UNliDXhd9ABoS7hiRBDCu+XP/sf1Q==
+
+type-detect@^4.0.0, type-detect@^4.0.5:
version "4.0.8"
resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c"
integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==
-typescript@^5.4.4:
- version "5.4.4"
- resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.4.4.tgz#eb2471e7b0a5f1377523700a21669dce30c2d952"
- integrity sha512-dGE2Vv8cpVvw28v8HCPqyb08EzbBURxDpuhJvTrusShUfGnhHBafDsLdS1EhhxyL6BJQE+2cT3dDPAv+MQ6oLw==
+typescript@^4.7.4:
+ version "4.8.3"
+ resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.8.3.tgz#d59344522c4bc464a65a730ac695007fdb66dd88"
+ integrity sha512-goMHfm00nWPa8UvR/CPSvykqf6dVV8x/dp0c5mFTMTIu0u0FlGWRioyy7Nn0PGAdHxpJZnuO/ut+PpQ8UiHAig==
-ufo@^1.3.2:
- version "1.5.3"
- resolved "https://registry.yarnpkg.com/ufo/-/ufo-1.5.3.tgz#3325bd3c977b6c6cd3160bf4ff52989adc9d3344"
- integrity sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw==
-
-undici-types@~5.26.4:
- version "5.26.5"
- resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617"
- integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==
-
-vite-node@1.4.0:
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/vite-node/-/vite-node-1.4.0.tgz#265529d60570ca695ceb69391f87f92847934ad8"
- integrity sha512-VZDAseqjrHgNd4Kh8icYHWzTKSCZMhia7GyHfhtzLW33fZlG9SwsB6CEhgyVOWkJfJ2pFLrp/Gj1FSfAiqH9Lw==
- dependencies:
- cac "^6.7.14"
- debug "^4.3.4"
- pathe "^1.1.1"
- picocolors "^1.0.0"
- vite "^5.0.0"
-
-vite@^5.0.0, vite@^5.2.8:
- version "5.2.8"
- resolved "https://registry.yarnpkg.com/vite/-/vite-5.2.8.tgz#a99e09939f1a502992381395ce93efa40a2844aa"
- integrity sha512-OyZR+c1CE8yeHw5V5t59aXsUPPVTHMDjEZz8MgguLL/Q7NblxhZUlTu9xSPqlsUO/y+X7dlU05jdhvyycD55DA==
+"vite@^2.9.12 || ^3.0.0-0", vite@^3.1.0:
+ version "3.1.3"
+ resolved "https://registry.yarnpkg.com/vite/-/vite-3.1.3.tgz#b2a0821c11aae124bb7618f8036913c689afcc59"
+ integrity sha512-/3XWiktaopByM5bd8dqvHxRt5EEgRikevnnrpND0gRfNkrMrPaGGexhtLCzv15RcCMtV2CLw+BPas8YFeSG0KA==
dependencies:
- esbuild "^0.20.1"
- postcss "^8.4.38"
- rollup "^4.13.0"
+ esbuild "^0.15.6"
+ postcss "^8.4.16"
+ resolve "^1.22.1"
+ rollup "~2.78.0"
optionalDependencies:
- fsevents "~2.3.3"
+ fsevents "~2.3.2"
-vitest@^1.4.0:
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/vitest/-/vitest-1.4.0.tgz#f5c812aaf5023818b89b7fc667fa45327396fece"
- integrity sha512-gujzn0g7fmwf83/WzrDTnncZt2UiXP41mHuFYFrdwaLRVQ6JYQEiME2IfEjU3vcFL3VKa75XhI3lFgn+hfVsQw==
- dependencies:
- "@vitest/expect" "1.4.0"
- "@vitest/runner" "1.4.0"
- "@vitest/snapshot" "1.4.0"
- "@vitest/spy" "1.4.0"
- "@vitest/utils" "1.4.0"
- acorn-walk "^8.3.2"
- chai "^4.3.10"
+vitest@^0.23.1:
+ version "0.23.4"
+ resolved "https://registry.yarnpkg.com/vitest/-/vitest-0.23.4.tgz#7ebea620f203f4df09a27ca17819dc9da61f88ef"
+ integrity sha512-iukBNWqQAv8EKDBUNntspLp9SfpaVFbmzmM0sNcnTxASQZMzRw3PsM6DMlsHiI+I6GeO5/sYDg3ecpC+SNFLrQ==
+ dependencies:
+ "@types/chai" "^4.3.3"
+ "@types/chai-subset" "^1.3.3"
+ "@types/node" "*"
+ chai "^4.3.6"
debug "^4.3.4"
- execa "^8.0.1"
- local-pkg "^0.5.0"
- magic-string "^0.30.5"
- pathe "^1.1.1"
- picocolors "^1.0.0"
- std-env "^3.5.0"
- strip-literal "^2.0.0"
- tinybench "^2.5.1"
- tinypool "^0.8.2"
- vite "^5.0.0"
- vite-node "1.4.0"
- why-is-node-running "^2.2.2"
-
-which@^2.0.1:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1"
- integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==
- dependencies:
- isexe "^2.0.0"
-
-why-is-node-running@^2.2.2:
- version "2.2.2"
- resolved "https://registry.yarnpkg.com/why-is-node-running/-/why-is-node-running-2.2.2.tgz#4185b2b4699117819e7154594271e7e344c9973e"
- integrity sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==
- dependencies:
- siginfo "^2.0.0"
- stackback "0.0.2"
-
-yocto-queue@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-1.0.0.tgz#7f816433fb2cbc511ec8bf7d263c3b58a1a3c251"
- integrity sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==
+ local-pkg "^0.4.2"
+ strip-literal "^0.4.1"
+ tinybench "^2.1.5"
+ tinypool "^0.3.0"
+ tinyspy "^1.0.2"
+ vite "^2.9.12 || ^3.0.0-0"
+
+wrappy@1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
+ integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==