From 482baff1cf8067ccde221b93f8e1371f1e2fc120 Mon Sep 17 00:00:00 2001 From: lmssieh <122186255+lmssiehdev@users.noreply.github.com> Date: Sun, 21 Apr 2024 19:06:27 +0100 Subject: [PATCH 01/36] fix: add missing word --- src/06-advanced-hooks/51-function-overloads-in-hooks.problem.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/06-advanced-hooks/51-function-overloads-in-hooks.problem.ts b/src/06-advanced-hooks/51-function-overloads-in-hooks.problem.ts index 7e053f7..7c137fc 100644 --- a/src/06-advanced-hooks/51-function-overloads-in-hooks.problem.ts +++ b/src/06-advanced-hooks/51-function-overloads-in-hooks.problem.ts @@ -3,7 +3,7 @@ import { Equal, Expect } from "../helpers/type-utils"; /** * Returning to our useStateAsObject function, we now want to make it work - * EXACTLY like useState, where if you NOTHING, it returns T | undefined. + * EXACTLY like useState, where if you pass NOTHING, it returns T | undefined. * * If you pass a default value, it should NOT include undefined. */ From 438190a2053ce8797816fc5d52e2777cbb080d26 Mon Sep 17 00:00:00 2001 From: Matt Pocock Date: Sun, 5 May 2024 09:52:52 +0100 Subject: [PATCH 02/36] Upgraded React TS --- snap.md | 1397 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 1397 insertions(+) create mode 100644 snap.md diff --git a/snap.md b/snap.md new file mode 100644 index 0000000..50a7aa0 --- /dev/null +++ b/snap.md @@ -0,0 +1,1397 @@ +# Root TSConfig Snapshot + +```txt +,src/01-introduction/03-navigating-jsx-types.problem.tsx(5,21): error TS17000: JSX attributes must only be assigned a non-empty 'expression'. +src/02-components/04-typing-components.problem.tsx(4,29): error TS18046: 'props' is of type 'unknown'. +src/02-components/04-typing-components.problem.tsx(10,8): error TS2578: Unused '@ts-expect-error' directive. +src/02-components/04-typing-components.problem.tsx(13,15): error TS2322: Type '{ className: string; }' is not assignable to type 'IntrinsicAttributes'. + Property 'className' does not exist on type 'IntrinsicAttributes'. +src/02-components/05-typing-components-as-functions.problem.tsx(7,1): error TS2578: Unused '@ts-expect-error' directive. +src/02-components/05-typing-components-as-functions.problem.tsx(17,8): error TS2786: 'Button' cannot be used as a JSX component. + Its type '(props: Props) => { ohDear: string; }' is not a valid JSX element type. + Type '(props: Props) => { ohDear: string; }' is not assignable to type '(props: any, deprecatedLegacyContext?: any) => ReactNode'. + Type '{ ohDear: string; }' is not assignable to type 'ReactNode'. +src/02-components/06-typing-children.problem.tsx(4,25): error TS2339: Property 'children' does not exist on type '{}'. +src/02-components/06-typing-children.problem.tsx(10,8): error TS2578: Unused '@ts-expect-error' directive. +src/02-components/06-typing-children.problem.tsx(12,8): error TS2559: Type '{ children: string; }' has no properties in common with type 'IntrinsicAttributes'. +src/02-components/07-typing-onclick-handlers.problem.tsx(8,47): error TS2339: Property 'onClick' does not exist on type 'ButtonProps'. +src/02-components/08-using-html-props.problem.tsx(3,26): error TS2339: Property 'className' does not exist on type '{}'. +src/02-components/08-using-html-props.problem.tsx(10,18): error TS2322: Type '{ onClick: () => void; type: string; }' is not assignable to type 'IntrinsicAttributes'. + Property 'onClick' does not exist on type 'IntrinsicAttributes'. +src/02-components/09-html-props-with-one-changed.problem.tsx(23,28): error TS2344: Type 'false' does not satisfy the constraint 'true'. +src/02-components/10-extracting-props-from-custom-components.problem.tsx(18,3): error TS2344: Type 'false' does not satisfy the constraint 'true'. +src/03-hooks/11-use-state.problem.tsx(8,30): error TS2339: Property 'id' does not exist on type 'never'. +src/03-hooks/11-use-state.problem.tsx(8,39): error TS2339: Property 'value' does not exist on type 'never'. +src/03-hooks/11-use-state.problem.tsx(13,13): error TS2322: Type '{ id: number; value: string; }' is not assignable to type 'never'. +src/03-hooks/11-use-state.problem.tsx(14,13): error TS2322: Type '{ id: number; value: string; }' is not assignable to type 'never'. +src/03-hooks/12-use-state-with-undefined.problem.ts(18,15): error TS2345: Argument of type '{ id: number; name: string; }' is not assignable to parameter of type 'SetStateAction'. + Type '{ id: number; name: string; }' provides no match for the signature '(prevState: undefined): undefined'. +src/03-hooks/12-use-state-with-undefined.problem.ts(22,23): error TS2344: Type 'false' does not satisfy the constraint 'true'. +src/03-hooks/13-use-state-excess-properties.problem.tsx(22,17): error TS2578: Unused '@ts-expect-error' directive. +src/03-hooks/13-use-state-excess-properties.problem.tsx(40,17): error TS2578: Unused '@ts-expect-error' directive. +src/03-hooks/14-use-effect.problem.ts(6,7): error TS2322: Type 'Timeout' is not assignable to type 'void | Destructor'. +src/03-hooks/15-use-callback.problem.tsx(5,31): error TS2344: Type 'string' does not satisfy the constraint 'Function'. +src/03-hooks/15-use-callback.problem.tsx(6,6): error TS7006: Parameter 'buttonName' implicitly has an 'any' type. +src/03-hooks/15-use-callback.problem.tsx(12,22): error TS2344: Type 'false' does not satisfy the constraint 'true'. +src/03-hooks/15-use-callback.problem.tsx(16,30): error TS2349: This expression is not callable. + Type 'String' has no call signatures. +src/03-hooks/15-use-callback.problem.tsx(17,30): error TS2349: This expression is not callable. + Type 'String' has no call signatures. +src/03-hooks/15-use-callback.problem.tsx(18,30): error TS2349: This expression is not callable. + Type 'String' has no call signatures. +src/03-hooks/16-use-memo.problem.tsx(5,52): error TS2345: Argument of type '() => string[]' is not assignable to parameter of type '() => () => string[]'. + Type 'string[]' is not assignable to type '() => string[]'. + Type 'string[]' provides no match for the signature '(): string[]'. +src/03-hooks/16-use-memo.problem.tsx(12,22): error TS2344: Type 'false' does not satisfy the constraint 'true'. +src/03-hooks/17-use-ref-basics.problem.tsx(7,5): error TS2322: Type '"Random value!"' is not assignable to type 'undefined'. +src/03-hooks/18-element-refs.explainer.tsx(19,7): error TS2322: Type 'undefined' is not assignable to type 'HTMLDivElement | null'. +src/03-hooks/19-use-ref-with-elements.problem.tsx(6,15): error TS2322: Type 'MutableRefObject' is not assignable to type 'LegacyRef | undefined'. + Type 'MutableRefObject' is not assignable to type 'RefObject'. + Types of property 'current' are incompatible. + Type 'HTMLDivElement | undefined' is not assignable to type 'HTMLDivElement | null'. + Type 'undefined' is not assignable to type 'HTMLDivElement | null'. +src/03-hooks/20-why-is-my-ref-readonly.problem.tsx(7,7): error TS2540: Cannot assign to 'current' because it is a read-only property. +src/03-hooks/20-why-is-my-ref-readonly.solution.tsx(10,18): error TS2540: Cannot assign to 'current' because it is a read-only property. +src/03-hooks/21-use-reducer.problem.ts(5,11): error TS18046: 'action' is of type 'unknown'. +src/03-hooks/21-use-reducer.problem.ts(7,23): error TS18046: 'state' is of type 'unknown'. +src/03-hooks/21-use-reducer.problem.ts(7,37): error TS18046: 'action' is of type 'unknown'. +src/03-hooks/21-use-reducer.problem.ts(9,23): error TS18046: 'state' is of type 'unknown'. +src/03-hooks/21-use-reducer.problem.ts(9,37): error TS18046: 'action' is of type 'unknown'. +src/03-hooks/21-use-reducer.problem.ts(21,1): error TS2578: Unused '@ts-expect-error' directive. +src/03-hooks/21-use-reducer.problem.ts(24,1): error TS2578: Unused '@ts-expect-error' directive. +src/03-hooks/21-use-reducer.problem.ts(27,1): error TS2578: Unused '@ts-expect-error' directive. +src/04-advanced-props/22-discriminated-union-props.problem.tsx(34,9): error TS2578: Unused '@ts-expect-error' directive. +src/04-advanced-props/23-destructuring-discriminated-unions.problem.tsx(19,34): error TS2339: Property 'title' does not exist on type 'ModalProps'. +src/04-advanced-props/23-destructuring-discriminated-unions.solution.1.tsx(18,31): error TS2339: Property 'title' does not exist on type '{} | { title: string; }'. + Property 'title' does not exist on type '{}'. +src/04-advanced-props/24-discriminated-union-with-other-props.problem.tsx(21,36): error TS2339: Property 'buttonColor' does not exist on type '{ variant: "no-title"; }'. +src/04-advanced-props/24-discriminated-union-with-other-props.problem.tsx(34,36): error TS2339: Property 'buttonColor' does not exist on type '{ variant: "title"; title: string; }'. +src/04-advanced-props/24-discriminated-union-with-other-props.problem.tsx(50,9): error TS2322: Type '{ buttonColor: string; variant: "no-title"; title: string; }' is not assignable to type 'IntrinsicAttributes & ModalProps'. + Property 'buttonColor' does not exist on type 'IntrinsicAttributes & { variant: "no-title"; }'. +src/04-advanced-props/24-discriminated-union-with-other-props.problem.tsx(52,9): error TS2578: Unused '@ts-expect-error' directive. +src/04-advanced-props/24-discriminated-union-with-other-props.problem.tsx(55,44): error TS2322: Type '{ variant: "title"; title: string; buttonColor: string; }' is not assignable to type 'IntrinsicAttributes & ModalProps'. + Property 'buttonColor' does not exist on type 'IntrinsicAttributes & { variant: "title"; title: string; }'. +src/04-advanced-props/25-toggle-props.problem.tsx(38,5): error TS2578: Unused '@ts-expect-error' directive. +src/04-advanced-props/25-toggle-props.problem.tsx(42,4): error TS2578: Unused '@ts-expect-error' directive. +src/04-advanced-props/27-either-all-these-props-or-none.problem.tsx(40,8): error TS2578: Unused '@ts-expect-error' directive. +src/04-advanced-props/27-either-all-these-props-or-none.problem.tsx(43,8): error TS2578: Unused '@ts-expect-error' directive. +src/04-advanced-props/28-passing-react-components-vs-passing-react-nodes.problem.tsx(15,30): error TS2345: Argument of type 'ReactNode' is not assignable to parameter of type '(value: number, index: number, array: number[]) => ReactNode'. + Type 'undefined' is not assignable to type '(value: number, index: number, array: number[]) => ReactNode'. +src/04-advanced-props/28-passing-react-components-vs-passing-react-nodes.problem.tsx(22,19): error TS2322: Type '(index: any) => Element' is not assignable to type 'ReactNode'. +src/04-advanced-props/28-passing-react-components-vs-passing-react-nodes.problem.tsx(22,21): error TS7006: Parameter 'index' implicitly has an 'any' type. +src/04-advanced-props/28-passing-react-components-vs-passing-react-nodes.problem.tsx(23,30): error TS2344: Type 'false' does not satisfy the constraint 'true'. +src/04-advanced-props/28-passing-react-components-vs-passing-react-nodes.problem.tsx(28,19): error TS2322: Type '(index: any) => null' is not assignable to type 'ReactNode'. +src/04-advanced-props/28-passing-react-components-vs-passing-react-nodes.problem.tsx(28,21): error TS7006: Parameter 'index' implicitly has an 'any' type. +src/04-advanced-props/28-passing-react-components-vs-passing-react-nodes.problem.tsx(33,9): error TS2578: Unused '@ts-expect-error' directive. +src/04-advanced-props/28-passing-react-components-vs-passing-react-nodes.problem.tsx(37,9): error TS2322: Type '(index: any) => any' is not assignable to type 'ReactNode'. +src/04-advanced-props/28-passing-react-components-vs-passing-react-nodes.problem.tsx(37,21): error TS7006: Parameter 'index' implicitly has an 'any' type. +src/04-advanced-props/31-as-const.problem.ts(13,10): error TS2344: Type 'false' does not satisfy the constraint 'true'. +src/04-advanced-props/31-as-const.problem.ts(14,10): error TS2344: Type 'false' does not satisfy the constraint 'true'. +src/04-advanced-props/32-satisfies-vs-annotation-vs-as.problem.tsx(6,3): error TS2578: Unused '@ts-expect-error' directive. +src/04-advanced-props/32-satisfies-vs-annotation-vs-as.problem.tsx(11,4): error TS2322: Type '{ children: string; type: string; illegalProperty: string; }' is not assignable to type 'DetailedHTMLProps, HTMLButtonElement>'. + Type '{ children: string; type: string; illegalProperty: string; }' is not assignable to type 'ButtonHTMLAttributes'. + Types of property 'type' are incompatible. + Type 'string' is not assignable to type '"button" | "submit" | "reset" | undefined'. +src/04-advanced-props/32-satisfies-vs-annotation-vs-as.problem.tsx(16,20): error TS2344: Type 'false' does not satisfy the constraint 'true'. +src/04-advanced-props/33-prop-groups-with-variants.problem.tsx(7,5): error TS2578: Unused '@ts-expect-error' directive. +src/04-advanced-props/33-prop-groups-with-variants.problem.tsx(13,5): error TS2578: Unused '@ts-expect-error' directive. +src/04-advanced-props/33-prop-groups-with-variants.problem.tsx(19,5): error TS2578: Unused '@ts-expect-error' directive. +src/04-advanced-props/33-prop-groups-with-variants.problem.tsx(48,11): error TS2322: Type '{ children: string; className: string; type: string; illegalProperty: string; } | { children: string; className: string; type: string; illegalProperty: string; } | { children: string; className: string; type: string; illegalProperty: string; }' is not assignable to type 'DetailedHTMLProps, HTMLButtonElement>'. + Type '{ children: string; className: string; type: string; illegalProperty: string; }' is not assignable to type 'DetailedHTMLProps, HTMLButtonElement>'. + Type '{ children: string; className: string; type: string; illegalProperty: string; }' is not assignable to type 'ButtonHTMLAttributes'. + Types of property 'type' are incompatible. + Type 'string' is not assignable to type '"button" | "submit" | "reset" | undefined'. +src/05-generics/36-type-helpers-with-constraints.problem.tsx(14,3): error TS2578: Unused '@ts-expect-error' directive. +src/05-generics/36-type-helpers-with-constraints.problem.tsx(16,3): error TS2578: Unused '@ts-expect-error' directive. +src/05-generics/36-type-helpers-with-constraints.problem.tsx(18,3): error TS2578: Unused '@ts-expect-error' directive. +src/05-generics/37-generic-localstorage-hook.problem.ts(28,30): error TS2558: Expected 0 type arguments, but got 1. +src/05-generics/37-generic-localstorage-hook.problem.ts(35,24): error TS2344: Type 'false' does not satisfy the constraint 'true'. +src/05-generics/37-generic-localstorage-hook.problem.ts(41,5): error TS2578: Unused '@ts-expect-error' directive. +src/05-generics/38-generic-hooks.problem.ts(23,10): error TS2344: Type 'false' does not satisfy the constraint 'true'. +src/05-generics/38-generic-hooks.problem.ts(25,5): error TS2344: Type 'false' does not satisfy the constraint 'true'. +src/05-generics/38-generic-hooks.problem.ts(35,10): error TS2344: Type 'false' does not satisfy the constraint 'true'. +src/05-generics/38-generic-hooks.problem.ts(36,10): error TS2344: Type 'false' does not satisfy the constraint 'true'. +src/05-generics/39-generic-props.problem.tsx(41,30): error TS2344: Type 'false' does not satisfy the constraint 'true'. +src/05-generics/39-generic-props.problem.tsx(45,17): error TS2578: Unused '@ts-expect-error' directive. +src/05-generics/40-generic-class-components.problem.tsx(37,30): error TS2344: Type 'false' does not satisfy the constraint 'true'. +src/05-generics/40-generic-class-components.problem.tsx(41,17): error TS2578: Unused '@ts-expect-error' directive. +src/05-generics/41-passing-types-to-components.problem.tsx(29,5): error TS2578: Unused '@ts-expect-error' directive. +src/05-generics/41-passing-types-to-components.problem.tsx(32,26): error TS2344: Type 'false' does not satisfy the constraint 'true'. +src/05-generics/41-passing-types-to-components.problem.tsx(33,23): error TS2339: Property 'name' does not exist on type 'number'. +src/05-generics/41-passing-types-to-components.problem.tsx(44,9): error TS2578: Unused '@ts-expect-error' directive. +src/05-generics/41-passing-types-to-components.problem.tsx(51,26): error TS2344: Type 'false' does not satisfy the constraint 'true'. +src/05-generics/42-generic-inference-through-multiple-helpers.problem.tsx(44,26): error TS2344: Type 'false' does not satisfy the constraint 'true'. +src/05-generics/43-inference-flow-with-constraints.problem.ts(42,1): error TS2578: Unused '@ts-expect-error' directive. +src/05-generics/43-inference-flow-with-constraints.problem.ts(52,5): error TS2578: Unused '@ts-expect-error' directive. +src/05-generics/43-inference-flow-with-constraints.problem.ts(60,5): error TS2344: Type 'false' does not satisfy the constraint 'true'. +src/06-advanced-hooks/45-tuple-return-type.problem.ts(23,10): error TS2344: Type 'false' does not satisfy the constraint 'true'. +src/06-advanced-hooks/45-tuple-return-type.problem.ts(24,10): error TS2344: Type 'false' does not satisfy the constraint 'true'. +src/06-advanced-hooks/46-required-context.problem.tsx(33,55): error TS2558: Expected 0 type arguments, but got 1. +src/06-advanced-hooks/46-required-context.problem.tsx(37,57): error TS2558: Expected 0 type arguments, but got 1. +src/06-advanced-hooks/46-required-context.problem.tsx(42,16): error TS2554: Expected 1 arguments, but got 0. +src/06-advanced-hooks/46-required-context.problem.tsx(45,5): error TS2344: Type 'false' does not satisfy the constraint 'true'. +src/06-advanced-hooks/46-required-context.problem.tsx(53,17): error TS2554: Expected 1 arguments, but got 0. +src/06-advanced-hooks/46-required-context.problem.tsx(56,5): error TS2344: Type 'false' does not satisfy the constraint 'true'. +src/06-advanced-hooks/46-required-context.problem.tsx(70,21): error TS2322: Type '{ name: string; }' is not assignable to type 'null'. +src/06-advanced-hooks/46-required-context.problem.tsx(72,11): error TS2322: Type '{ primaryColor: string; }' is not assignable to type 'null'. +src/06-advanced-hooks/47-unions-in-usestate.problem.tsx(45,3): error TS2578: Unused '@ts-expect-error' directive. +src/06-advanced-hooks/47-unions-in-usestate.problem.tsx(62,22): error TS2344: Type 'false' does not satisfy the constraint 'true'. +src/06-advanced-hooks/48-discriminated-unions-in-usestate.problem.tsx(28,37): error TS2353: Object literal may only specify known properties, and 'error' does not exist in type 'SetStateAction<{ status: string; }>'. +src/06-advanced-hooks/48-discriminated-unions-in-usestate.problem.tsx(36,3): error TS2578: Unused '@ts-expect-error' directive. +src/06-advanced-hooks/48-discriminated-unions-in-usestate.problem.tsx(46,25): error TS2339: Property 'error' does not exist on type '{ status: string; }'. +src/06-advanced-hooks/49-discriminated-tuples-from-custom-hooks.problem.tsx(46,25): error TS18048: 'value' is possibly 'undefined'. +src/06-advanced-hooks/49-discriminated-tuples-from-custom-hooks.problem.tsx(46,31): error TS2339: Property 'message' does not exist on type 'Error | { title: string; }'. + Property 'message' does not exist on type '{ title: string; }'. +src/06-advanced-hooks/49-discriminated-tuples-from-custom-hooks.problem.tsx(49,16): error TS18048: 'value' is possibly 'undefined'. +src/06-advanced-hooks/49-discriminated-tuples-from-custom-hooks.problem.tsx(49,22): error TS2339: Property 'title' does not exist on type 'Error | { title: string; }'. + Property 'title' does not exist on type 'Error'. +src/06-advanced-hooks/50-use-state-overloads.problem.ts(36,10): error TS2344: Type 'false' does not satisfy the constraint 'true'. +src/06-advanced-hooks/51-function-overloads-in-hooks.problem.ts(37,22): error TS2554: Expected 1 arguments, but got 0. +src/06-advanced-hooks/51-function-overloads-in-hooks.problem.ts(40,10): error TS2344: Type 'false' does not satisfy the constraint 'true'. +src/06-advanced-hooks/51-function-overloads-in-hooks.problem.ts(42,5): error TS2344: Type 'false' does not satisfy the constraint 'true'. +src/06-advanced-hooks/52-currying-hooks.problem.ts(38,22): error TS2344: Type 'false' does not satisfy the constraint 'true'. +src/07-types-deep-dive/54-understanding-jsx-element.problem.tsx(52,3): error TS2322: Type 'string' is not assignable to type 'ReactElement>'. +src/07-types-deep-dive/54-understanding-jsx-element.solution.tsx(52,3): error TS2322: Type 'string' is not assignable to type 'ReactElement>'. +src/07-types-deep-dive/55-strongly-typing-children.problem.tsx(32,3): error TS2322: Type 'Element' is not assignable to type 'OptionType'. + Type 'ReactElement' is not assignable to type '{ __brand: "OPTION_TYPE"; } & ReactPortal'. + Property '__brand' is missing in type 'ReactElement' but required in type '{ __brand: "OPTION_TYPE"; }'. +src/07-types-deep-dive/55-strongly-typing-children.solution.tsx(32,3): error TS2322: Type 'Element' is not assignable to type 'OptionType'. + Type 'ReactElement' is not assignable to type '{ __brand: "OPTION_TYPE"; } & ReactPortal'. + Property '__brand' is missing in type 'ReactElement' but required in type '{ __brand: "OPTION_TYPE"; }'. +src/07-types-deep-dive/56-understanding-jsx-intrinsic-elements.problem.tsx(30,1): error TS2339: Property 'myNewElement' does not exist on type 'JSX.IntrinsicElements'. +src/07-types-deep-dive/56-understanding-jsx-intrinsic-elements.solution.tsx(30,1): error TS2339: Property 'myNewElement' does not exist on type 'JSX.IntrinsicElements'. +src/07-types-deep-dive/58-appending-to-global-namespace.problem.ts(15,20): error TS2344: Type 'false' does not satisfy the constraint 'true'. +src/07-types-deep-dive/58-appending-to-global-namespace.problem.ts(15,32): error TS2694: Namespace 'React' has no exported member 'MyInterface'. +src/07-types-deep-dive/59-declaration-merging-in-global-namespace.problem.ts(25,3): error TS2344: Type 'false' does not satisfy the constraint 'true'. +src/07-types-deep-dive/60-add-new-global-element.problem.tsx(14,3): error TS2339: Property 'something' does not exist on type 'JSX.IntrinsicElements'. +src/07-types-deep-dive/60-add-new-global-element.problem.tsx(14,23): error TS2339: Property 'something' does not exist on type 'JSX.IntrinsicElements'. +src/07-types-deep-dive/62-add-attribute-to-all-elements.problem.tsx(10,8): error TS2322: Type '{ testId: string; }' is not assignable to type 'DetailedHTMLProps, HTMLDivElement>'. + Property 'testId' does not exist on type 'DetailedHTMLProps, HTMLDivElement>'. +src/07-types-deep-dive/62-add-attribute-to-all-elements.problem.tsx(11,10): error TS2322: Type '{ testId: string; }' is not assignable to type 'DetailedHTMLProps, HTMLAudioElement>'. + Property 'testId' does not exist on type 'DetailedHTMLProps, HTMLAudioElement>'. +src/07-types-deep-dive/62-add-attribute-to-all-elements.problem.tsx(12,10): error TS2322: Type '{ testId: string; }' is not assignable to type 'DetailedHTMLProps, HTMLVideoElement>'. + Property 'testId' does not exist on type 'DetailedHTMLProps, HTMLVideoElement>'. +src/07-types-deep-dive/62-add-attribute-to-all-elements.problem.tsx(13,6): error TS2322: Type '{ testId: string; }' is not assignable to type 'DetailedHTMLProps, HTMLAnchorElement>'. + Property 'testId' does not exist on type 'DetailedHTMLProps, HTMLAnchorElement>'. +src/07-types-deep-dive/62-add-attribute-to-all-elements.problem.tsx(14,9): error TS2322: Type '{ testId: string; }' is not assignable to type 'DetailedHTMLProps, HTMLElement>'. + Property 'testId' does not exist on type 'DetailedHTMLProps, HTMLElement>'. +src/07-types-deep-dive/62-add-attribute-to-all-elements.problem.tsx(15,12): error TS2322: Type '{ testId: string; }' is not assignable to type 'DetailedHTMLProps, HTMLElement>'. + Property 'testId' does not exist on type 'DetailedHTMLProps, HTMLElement>'. +src/08-advanced-patterns/63-lazy-load-component.problem.tsx(20,44): error TS2345: Argument of type 'unknown' is not assignable to parameter of type '() => Promise<{ default: ComponentType; }>'. +src/08-advanced-patterns/63-lazy-load-component.problem.tsx(30,62): error TS2322: Type '{ loader: () => Promise; id: string; }' is not assignable to type 'IntrinsicAttributes & Props'. + Property 'id' does not exist on type 'IntrinsicAttributes & Props'. +src/08-advanced-patterns/63-lazy-load-component.problem.tsx(38,4): error TS2578: Unused '@ts-expect-error' directive. +src/08-advanced-patterns/64-render-props.problem.tsx(43,9): error TS7006: Parameter 'props' implicitly has an 'any' type. +src/08-advanced-patterns/64-render-props.problem.tsx(44,28): error TS2344: Type 'false' does not satisfy the constraint 'true'. +src/08-advanced-patterns/64.5-record-of-components-with-same-props.problem.tsx(16,10): error TS7006: Parameter 'props' implicitly has an 'any' type. +src/08-advanced-patterns/64.5-record-of-components-with-same-props.problem.tsx(19,12): error TS7006: Parameter 'props' implicitly has an 'any' type. +src/08-advanced-patterns/64.5-record-of-components-with-same-props.problem.tsx(22,14): error TS7006: Parameter 'props' implicitly has an 'any' type. +src/08-advanced-patterns/64.5-record-of-components-with-same-props.problem.tsx(28,21): error TS7053: Element implicitly has an 'any' type because expression of type 'any' can't be used to index type '{ text: (props: any) => Element; number: (props: any) => Element; password: (props: any) => Element; }'. +src/08-advanced-patterns/64.5-record-of-components-with-same-props.problem.tsx(28,32): error TS18046: 'props' is of type 'unknown'. +src/08-advanced-patterns/64.5-record-of-components-with-same-props.problem.tsx(29,25): error TS2698: Spread types may only be created from object types. +src/08-advanced-patterns/64.5-record-of-components-with-same-props.problem.tsx(34,5): error TS2322: Type '{ type: string; onChange: (e: any) => void; }' is not assignable to type 'IntrinsicAttributes'. + Property 'type' does not exist on type 'IntrinsicAttributes'. +src/08-advanced-patterns/64.5-record-of-components-with-same-props.problem.tsx(35,16): error TS7006: Parameter 'e' implicitly has an 'any' type. +src/08-advanced-patterns/64.5-record-of-components-with-same-props.problem.tsx(37,26): error TS2344: Type 'false' does not satisfy the constraint 'true'. +src/08-advanced-patterns/64.5-record-of-components-with-same-props.problem.tsx(40,10): error TS2322: Type '{ type: string; }' is not assignable to type 'IntrinsicAttributes'. + Property 'type' does not exist on type 'IntrinsicAttributes'. +src/08-advanced-patterns/64.5-record-of-components-with-same-props.problem.tsx(41,10): error TS2322: Type '{ type: string; }' is not assignable to type 'IntrinsicAttributes'. + Property 'type' does not exist on type 'IntrinsicAttributes'. +src/08-advanced-patterns/65-forward-ref-with-generics.explainer.1.tsx(52,30): error TS2344: Type 'false' does not satisfy the constraint 'true'. +src/08-advanced-patterns/65-forward-ref-with-generics.explainer.2.tsx(26,28): error TS2344: Type 'false' does not satisfy the constraint 'true'. +src/08-advanced-patterns/65-forward-ref-with-generics.explainer.3.tsx(31,30): error TS2344: Type 'false' does not satisfy the constraint 'true'. +src/08-advanced-patterns/66-forward-ref-as-local-function.problem.tsx(37,21): error TS7006: Parameter 'row' implicitly has an 'any' type. +src/08-advanced-patterns/66-forward-ref-as-local-function.problem.tsx(38,30): error TS2344: Type 'false' does not satisfy the constraint 'true'. +src/08-advanced-patterns/66-forward-ref-as-local-function.problem.tsx(43,9): error TS2578: Unused '@ts-expect-error' directive. +src/08-advanced-patterns/66-forward-ref-as-local-function.problem.tsx(46,21): error TS7006: Parameter 'row' implicitly has an 'any' type. +src/08-advanced-patterns/67-hoc.problem.tsx(28,5): error TS2578: Unused '@ts-expect-error' directive. +src/08-advanced-patterns/67.5-hoc-for-generic-components.problem.tsx(40,26): error TS2344: Type 'false' does not satisfy the constraint 'true'. +src/08-advanced-patterns/67.5-hoc-for-generic-components.problem.tsx(48,26): error TS2344: Type 'false' does not satisfy the constraint 'true'. +src/08-advanced-patterns/69-as-prop.problem.tsx(41,9): error TS2578: Unused '@ts-expect-error' directive. +src/08-advanced-patterns/69-as-prop.problem.tsx(48,19): error TS7006: Parameter 'e' implicitly has an 'any' type. +src/08-advanced-patterns/69-as-prop.problem.tsx(50,13): error TS2344: Type 'false' does not satisfy the constraint 'true'. +src/08-advanced-patterns/69-as-prop.problem.tsx(67,9): error TS2578: Unused '@ts-expect-error' directive. +src/08-advanced-patterns/69-as-prop.problem.tsx(74,19): error TS7006: Parameter 'e' implicitly has an 'any' type. +src/08-advanced-patterns/69-as-prop.problem.tsx(75,30): error TS2344: Type 'false' does not satisfy the constraint 'true'. +src/08-advanced-patterns/69-as-prop.solution.1.tsx(12,32): error TS2304: Cannot find name 'AsProps'. +src/08-advanced-patterns/69-as-prop.solution.1.tsx(26,9): error TS2578: Unused '@ts-expect-error' directive. +src/08-advanced-patterns/69-as-prop.solution.1.tsx(33,19): error TS7006: Parameter 'e' implicitly has an 'any' type. +src/08-advanced-patterns/69-as-prop.solution.1.tsx(35,13): error TS2344: Type 'false' does not satisfy the constraint 'true'. +src/08-advanced-patterns/69-as-prop.solution.1.tsx(52,9): error TS2578: Unused '@ts-expect-error' directive. +src/08-advanced-patterns/69-as-prop.solution.1.tsx(59,19): error TS7006: Parameter 'e' implicitly has an 'any' type. +src/08-advanced-patterns/69-as-prop.solution.1.tsx(60,30): error TS2344: Type 'false' does not satisfy the constraint 'true'. +src/08-advanced-patterns/70-as-prop-with-custom-components.problem.tsx(67,16): error TS2322: Type '(props: { thisIsRequired: boolean;}) => JSX.Element' is not assignable to type 'keyof IntrinsicElements'. +src/08-advanced-patterns/70-as-prop-with-custom-components.problem.tsx(69,9): error TS2322: Type '(props: { thisIsRequired: boolean;}) => JSX.Element' is not assignable to type 'keyof IntrinsicElements'. +src/08-advanced-patterns/70-as-prop-with-custom-components.problem.tsx(70,9): error TS2578: Unused '@ts-expect-error' directive. +src/08-advanced-patterns/71-as-prop-with-default.problem.tsx(20,8): error TS2741: Property 'as' is missing in type '{ doesNotExist: true; }' but required in type '{ as: ElementType; }'. +src/08-advanced-patterns/71-as-prop-with-default.problem.tsx(21,9): error TS2578: Unused '@ts-expect-error' directive. +src/08-advanced-patterns/71-as-prop-with-default.problem.tsx(25,8): error TS2741: Property 'as' is missing in type '{ onClick: (e: any) => void; }' but required in type '{ as: ElementType; }'. +src/08-advanced-patterns/71-as-prop-with-default.problem.tsx(27,19): error TS7006: Parameter 'e' implicitly has an 'any' type. +src/08-advanced-patterns/71-as-prop-with-default.problem.tsx(29,13): error TS2344: Type 'false' does not satisfy the constraint 'true'. +src/08-advanced-patterns/71-as-prop-with-default.solution.2.tsx(12,11): error TS2322: Type 'Omit<{ as?: T | undefined; } & ComponentPropsWithoutRef, "as">' is not assignable to type 'IntrinsicAttributes & ((ClassAttributes & AnchorHTMLAttributes & ClassAttributes<...> & LabelHTMLAttributes<...> & ClassAttributes<...> & HTMLAttributes<...>) | LibraryManagedAttributes<...>)'. + Type 'Omit<{ as?: T | undefined; } & ComponentPropsWithoutRef, "as">' is not assignable to type 'IntrinsicAttributes & LibraryManagedAttributes & AnchorHTMLAttributes & ClassAttributes<...> & LabelHTMLAttributes<...> & ClassAttributes<...> & HTMLAttributes<...>>'. + Type 'Omit<{ as?: T | undefined; } & ComponentPropsWithoutRef, "as">' is not assignable to type 'LibraryManagedAttributes & AnchorHTMLAttributes & ClassAttributes<...> & LabelHTMLAttributes<...> & ClassAttributes<...> & HTMLAttributes<...>>'. +src/08-advanced-patterns/71-as-prop-with-default.solution.2.tsx(29,19): error TS7006: Parameter 'e' implicitly has an 'any' type. +src/08-advanced-patterns/71-as-prop-with-default.solution.2.tsx(31,13): error TS2344: Type 'false' does not satisfy the constraint 'true'. +src/08-advanced-patterns/71-as-prop-with-default.solution.2.tsx(47,9): error TS2322: Type '"button"' is not assignable to type 'PermittedElements | undefined'. +src/08-advanced-patterns/71-as-prop-with-default.solution.2.tsx(48,9): error TS2578: Unused '@ts-expect-error' directive. +src/08-advanced-patterns/71-as-prop-with-default.solution.2.tsx(53,9): error TS2322: Type '"button"' is not assignable to type 'PermittedElements | undefined'. +src/08-advanced-patterns/71-as-prop-with-default.solution.2.tsx(57,13): error TS2344: Type 'false' does not satisfy the constraint 'true'. +src/08-advanced-patterns/71-as-prop-with-default.solution.2.tsx(79,19): error TS2322: Type '(props: { thisIsRequired: boolean;}, ref: React.ForwardedRef) => JSX.Element' is not assignable to type 'PermittedElements | undefined'. +src/08-advanced-patterns/71-as-prop-with-default.solution.2.tsx(81,9): error TS2322: Type '(props: { thisIsRequired: boolean;}, ref: React.ForwardedRef) => JSX.Element' is not assignable to type 'PermittedElements | undefined'. +src/08-advanced-patterns/71-as-prop-with-default.solution.2.tsx(82,9): error TS2578: Unused '@ts-expect-error' directive. +src/08-advanced-patterns/72-as-prop-with-forward-ref.problem.tsx(42,9): error TS2578: Unused '@ts-expect-error' directive. +src/08-advanced-patterns/72-as-prop-with-forward-ref.problem.tsx(80,9): error TS2578: Unused '@ts-expect-error' directive. +src/08-advanced-patterns/72-as-prop-with-forward-ref.problem.tsx(95,13): error TS2344: Type 'false' does not satisfy the constraint 'true'. +src/08-advanced-patterns/72-as-prop-with-forward-ref.problem.tsx(121,25): error TS2322: Type '{ as: ForwardRefExoticComponent<{ thisIsRequired: boolean; } & RefAttributes>; thisIsRequired: true; }' is not assignable to type 'IntrinsicAttributes & { as?: ElementType | undefined; } & Omit, HTMLAnchorElement>, "ref"> & RefAttributes<...>'. + Property 'thisIsRequired' does not exist on type 'IntrinsicAttributes & { as?: ElementType | undefined; } & Omit, HTMLAnchorElement>, "ref"> & RefAttributes<...>'. +src/08-advanced-patterns/72-as-prop-with-forward-ref.problem.tsx(128,8): error TS2578: Unused '@ts-expect-error' directive. +src/08-advanced-patterns/72-as-prop-with-forward-ref.problem.tsx(131,35): error TS2322: Type '{ as: ForwardRefExoticComponent<{ thisIsRequired: boolean; } & RefAttributes>; ref: RefObject; thisIsRequired: true; }' is not assignable to type 'IntrinsicAttributes & { as?: ElementType | undefined; } & Omit, HTMLAnchorElement>, "ref"> & RefAttributes<...>'. + Property 'thisIsRequired' does not exist on type 'IntrinsicAttributes & { as?: ElementType | undefined; } & Omit, HTMLAnchorElement>, "ref"> & RefAttributes<...>'. +src/08-advanced-patterns/72-as-prop-with-forward-ref.problem.tsx(135,9): error TS2578: Unused '@ts-expect-error' directive. +src/08-advanced-patterns/72-as-prop-with-forward-ref.problem.tsx(137,9): error TS2322: Type '{ as: ForwardRefExoticComponent<{ thisIsRequired: boolean; } & RefAttributes>; ref: RefObject; thisIsRequired: true; }' is not assignable to type 'IntrinsicAttributes & { as?: ElementType | undefined; } & Omit, HTMLAnchorElement>, "ref"> & RefAttributes<...>'. + Property 'thisIsRequired' does not exist on type 'IntrinsicAttributes & { as?: ElementType | undefined; } & Omit, HTMLAnchorElement>, "ref"> & RefAttributes<...>'. +src/09-external-libraries/73-react-hook-form.problem.tsx(70,28): error TS2344: Type 'false' does not satisfy the constraint 'true'. +src/09-external-libraries/73-react-hook-form.problem.tsx(75,8): error TS2578: Unused '@ts-expect-error' directive. +src/09-external-libraries/74-react-hook-form-wrapper.problem.tsx(33,3): error TS2578: Unused '@ts-expect-error' directive. +src/09-external-libraries/74-react-hook-form-wrapper.problem.tsx(46,5): error TS2344: Type 'boolean' does not satisfy the constraint 'true'. +src/09-external-libraries/75-react-select.problem.tsx(10,24): error TS7006: Parameter 'props' implicitly has an 'any' type. +src/09-external-libraries/75-react-select.problem.tsx(33,16): error TS7006: Parameter 'option' implicitly has an 'any' type. +src/09-external-libraries/75-react-select.problem.tsx(36,26): error TS2344: Type 'false' does not satisfy the constraint 'true'. +src/09-external-libraries/75-react-select.problem.tsx(43,16): error TS7006: Parameter 'option' implicitly has an 'any' type. +src/09-external-libraries/75-react-select.problem.tsx(45,26): error TS2344: Type 'false' does not satisfy the constraint 'true'. +src/09-external-libraries/77-react-query-wrapper.problem.ts(30,12): error TS2344: Type 'false' does not satisfy the constraint 'true'. +src/09-external-libraries/77-react-query-wrapper.problem.ts(44,10): error TS2344: Type 'false' does not satisfy the constraint 'true'. +src/09-external-libraries/77-react-query-wrapper.problem.ts(51,12): error TS2344: Type 'false' does not satisfy the constraint 'true'. +, +``` + + + +# Vitest Snapshot + +```json +{ + "success": false, + "testResults": [ + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/01-introduction/01-react-in-typescript.explainer.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/01-introduction/02-typescript-in-react-frameworks.explainer.ts" + }, + { + "assertionResults": [], + "status": "failed", + "message": "Transform failed with 1 error:\n/Users/matt/repos/total-typescript/react-typescript-tutorial/src/01-introduction/03-navigating-jsx-types.problem.tsx:5:21: ERROR: Unexpected \"}\"", + "name": "src/01-introduction/03-navigating-jsx-types.problem.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/01-introduction/03-navigating-jsx-types.solution.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/02-components/04-typing-components.problem.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/02-components/04-typing-components.solution.1.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/02-components/04-typing-components.solution.2.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/02-components/04-typing-components.solution.3.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/02-components/04-typing-components.solution.4.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/02-components/05-typing-components-as-functions.problem.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/02-components/05-typing-components-as-functions.solution.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/02-components/06-typing-children.problem.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/02-components/06-typing-children.solution.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/02-components/07-typing-onclick-handlers.problem.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/02-components/07-typing-onclick-handlers.solution.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/02-components/08-using-html-props.problem.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/02-components/08-using-html-props.solution.1.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/02-components/08-using-html-props.solution.2.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/02-components/09-html-props-with-one-changed.problem.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/02-components/09-html-props-with-one-changed.solution.1.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/02-components/09-html-props-with-one-changed.solution.2.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/02-components/09-html-props-with-one-changed.solution.3.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/02-components/09-html-props-with-one-changed.solution.4.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/02-components/10-extracting-props-from-custom-components.problem.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/02-components/10-extracting-props-from-custom-components.solution.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/03-hooks/11-use-state.problem.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/03-hooks/11-use-state.solution.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/03-hooks/12-use-state-with-undefined.problem.ts" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/03-hooks/12-use-state-with-undefined.solution.1.ts" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/03-hooks/12-use-state-with-undefined.solution.2.ts" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/03-hooks/13-use-state-excess-properties.problem.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/03-hooks/13-use-state-excess-properties.solution.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/03-hooks/14-use-effect.problem.ts" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/03-hooks/14-use-effect.solution.ts" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/03-hooks/15-use-callback.problem.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/03-hooks/15-use-callback.solution.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/03-hooks/16-use-memo.problem.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/03-hooks/16-use-memo.solution.1.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/03-hooks/16-use-memo.solution.2.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/03-hooks/16-use-memo.solution.3.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/03-hooks/17-use-ref-basics.problem.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/03-hooks/17-use-ref-basics.solution.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/03-hooks/18-element-refs.explainer.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/03-hooks/19-use-ref-with-elements.problem.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/03-hooks/19-use-ref-with-elements.solution.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/03-hooks/20-why-is-my-ref-readonly.problem.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/03-hooks/20-why-is-my-ref-readonly.solution.tsx" + }, + { + "assertionResults": [], + "status": "failed", + "message": "Cannot read properties of null (reading 'useReducer')", + "name": "src/03-hooks/21-use-reducer.problem.ts" + }, + { + "assertionResults": [], + "status": "failed", + "message": "Cannot read properties of null (reading 'useReducer')", + "name": "src/03-hooks/21-use-reducer.solution.1.ts" + }, + { + "assertionResults": [], + "status": "failed", + "message": "Cannot read properties of null (reading 'useReducer')", + "name": "src/03-hooks/21-use-reducer.solution.2.ts" + }, + { + "assertionResults": [], + "status": "failed", + "message": "Cannot read properties of null (reading 'useReducer')", + "name": "src/03-hooks/21-use-reducer.solution.3.ts" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/04-advanced-props/22-discriminated-union-props.problem.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/04-advanced-props/22-discriminated-union-props.solution.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/04-advanced-props/23-destructuring-discriminated-unions.problem.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/04-advanced-props/23-destructuring-discriminated-unions.solution.1.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/04-advanced-props/23-destructuring-discriminated-unions.solution.2.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/04-advanced-props/24-discriminated-union-with-other-props.problem.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/04-advanced-props/24-discriminated-union-with-other-props.solution.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/04-advanced-props/25-toggle-props.problem.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/04-advanced-props/25-toggle-props.solution.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/04-advanced-props/26-empty-object-type.explainer.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/04-advanced-props/27-either-all-these-props-or-none.problem.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/04-advanced-props/27-either-all-these-props-or-none.solution.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/04-advanced-props/28-passing-react-components-vs-passing-react-nodes.problem.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/04-advanced-props/28-passing-react-components-vs-passing-react-nodes.solution.1.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/04-advanced-props/28-passing-react-components-vs-passing-react-nodes.solution.2.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/04-advanced-props/29-variants-with-classnames.problem.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/04-advanced-props/29-variants-with-classnames.solution.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/04-advanced-props/30-partial-autocomplete.problem.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/04-advanced-props/30-partial-autocomplete.solution.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/04-advanced-props/31-as-const.problem.ts" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/04-advanced-props/31-as-const.solution.ts" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/04-advanced-props/32-satisfies-vs-annotation-vs-as.problem.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/04-advanced-props/32-satisfies-vs-annotation-vs-as.solution.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/04-advanced-props/33-prop-groups-with-variants.problem.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/04-advanced-props/33-prop-groups-with-variants.solution.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/05-generics/34-type-helpers.problem.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/05-generics/34-type-helpers.solution.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/05-generics/35-type-helpers-2.problem.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/05-generics/35-type-helpers-2.solution.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/05-generics/36-type-helpers-with-constraints.problem.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/05-generics/36-type-helpers-with-constraints.solution.1.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/05-generics/36-type-helpers-with-constraints.solution.2.tsx" + }, + { + "assertionResults": [ + { + "ancestorTitles": [ + "" + ], + "fullName": " Should let you set and get values", + "status": "passed", + "title": "Should let you set and get values", + "failureMessages": [] + }, + { + "ancestorTitles": [ + "" + ], + "fullName": " Should not let you set a value that is not the same type as the type argument passed", + "status": "passed", + "title": "Should not let you set a value that is not the same type as the type argument passed", + "failureMessages": [] + } + ], + "status": "passed", + "message": "", + "name": "src/05-generics/37-generic-localstorage-hook.problem.ts" + }, + { + "assertionResults": [ + { + "ancestorTitles": [ + "" + ], + "fullName": " Should let you set and get values", + "status": "passed", + "title": "Should let you set and get values", + "failureMessages": [] + }, + { + "ancestorTitles": [ + "" + ], + "fullName": " Should not let you set a value that is not the same type as the type argument passed", + "status": "passed", + "title": "Should not let you set a value that is not the same type as the type argument passed", + "failureMessages": [] + } + ], + "status": "passed", + "message": "", + "name": "src/05-generics/37-generic-localstorage-hook.solution.ts" + }, + { + "assertionResults": [], + "status": "failed", + "message": "Cannot read properties of null (reading 'useState')", + "name": "src/05-generics/38-generic-hooks.problem.ts" + }, + { + "assertionResults": [], + "status": "failed", + "message": "Cannot read properties of null (reading 'useState')", + "name": "src/05-generics/38-generic-hooks.solution.1.ts" + }, + { + "assertionResults": [], + "status": "failed", + "message": "Cannot read properties of null (reading 'useState')", + "name": "src/05-generics/38-generic-hooks.solution.2.ts" + }, + { + "assertionResults": [], + "status": "failed", + "message": "Cannot read properties of null (reading 'useState')", + "name": "src/05-generics/38-generic-hooks.solution.3.ts" + }, + { + "assertionResults": [], + "status": "failed", + "message": "Cannot read properties of null (reading 'useState')", + "name": "src/05-generics/38-generic-hooks.solution.4.ts" + }, + { + "assertionResults": [], + "status": "failed", + "message": "Cannot read properties of null (reading 'useState')", + "name": "src/05-generics/38-generic-hooks.solution.5.ts" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/05-generics/39-generic-props.problem.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/05-generics/39-generic-props.solution.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/05-generics/40-generic-class-components.problem.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/05-generics/40-generic-class-components.solution.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/05-generics/41-passing-types-to-components.problem.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/05-generics/41-passing-types-to-components.solution.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/05-generics/42-generic-inference-through-multiple-helpers.problem.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/05-generics/42-generic-inference-through-multiple-helpers.solution.tsx" + }, + { + "assertionResults": [], + "status": "failed", + "message": "Cannot read properties of null (reading 'useState')", + "name": "src/05-generics/43-inference-flow-with-constraints.problem.ts" + }, + { + "assertionResults": [], + "status": "failed", + "message": "Cannot read properties of null (reading 'useState')", + "name": "src/05-generics/43-inference-flow-with-constraints.solution.ts" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/05-generics/44-generics-vs-discriminated-unions.problem.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/05-generics/44-generics-vs-discriminated-unions.solution.tsx" + }, + { + "assertionResults": [], + "status": "failed", + "message": "Cannot read properties of null (reading 'useState')", + "name": "src/06-advanced-hooks/45-tuple-return-type.problem.ts" + }, + { + "assertionResults": [], + "status": "failed", + "message": "Cannot read properties of null (reading 'useState')", + "name": "src/06-advanced-hooks/45-tuple-return-type.solution.1.ts" + }, + { + "assertionResults": [], + "status": "failed", + "message": "Cannot read properties of null (reading 'useState')", + "name": "src/06-advanced-hooks/45-tuple-return-type.solution.2.ts" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/06-advanced-hooks/46-required-context.problem.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/06-advanced-hooks/46-required-context.solution.1.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/06-advanced-hooks/46-required-context.solution.2.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/06-advanced-hooks/47-unions-in-usestate.problem.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/06-advanced-hooks/47-unions-in-usestate.solution.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/06-advanced-hooks/48-discriminated-unions-in-usestate.problem.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/06-advanced-hooks/48-discriminated-unions-in-usestate.solution.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/06-advanced-hooks/49-discriminated-tuples-from-custom-hooks.problem.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/06-advanced-hooks/49-discriminated-tuples-from-custom-hooks.solution.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/06-advanced-hooks/50-use-state-overloads.problem.ts" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/06-advanced-hooks/50-use-state-overloads.solution.1.ts" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/06-advanced-hooks/50-use-state-overloads.solution.2.ts" + }, + { + "assertionResults": [], + "status": "failed", + "message": "Cannot read properties of null (reading 'useState')", + "name": "src/06-advanced-hooks/51-function-overloads-in-hooks.problem.ts" + }, + { + "assertionResults": [], + "status": "failed", + "message": "Cannot read properties of null (reading 'useState')", + "name": "src/06-advanced-hooks/51-function-overloads-in-hooks.solution.1.ts" + }, + { + "assertionResults": [], + "status": "failed", + "message": "Cannot read properties of null (reading 'useState')", + "name": "src/06-advanced-hooks/51-function-overloads-in-hooks.solution.2.ts" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/06-advanced-hooks/52-currying-hooks.problem.ts" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/06-advanced-hooks/52-currying-hooks.solution.ts" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/07-types-deep-dive/53-understand-react-namespace-export.problem.ts" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/07-types-deep-dive/53-understand-react-namespace-export.solution.ts" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/07-types-deep-dive/54-understanding-jsx-element.problem.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/07-types-deep-dive/54-understanding-jsx-element.solution.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/07-types-deep-dive/55-strongly-typing-children.problem.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/07-types-deep-dive/55-strongly-typing-children.solution.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/07-types-deep-dive/56-understanding-jsx-intrinsic-elements.problem.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/07-types-deep-dive/56-understanding-jsx-intrinsic-elements.solution.tsx" + }, + { + "assertionResults": [], + "status": "failed", + "message": "React is not defined", + "name": "src/07-types-deep-dive/57-react-component-type.explainer.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/07-types-deep-dive/58-appending-to-global-namespace.problem.ts" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/07-types-deep-dive/58-appending-to-global-namespace.solution.ts" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/07-types-deep-dive/59-declaration-merging-in-global-namespace.problem.ts" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/07-types-deep-dive/59-declaration-merging-in-global-namespace.solution.ts" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/07-types-deep-dive/60-add-new-global-element.problem.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/07-types-deep-dive/60-add-new-global-element.solution.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/07-types-deep-dive/61-html-attributes.problem.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/07-types-deep-dive/61-html-attributes.solution.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/07-types-deep-dive/62-add-attribute-to-all-elements.problem.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/07-types-deep-dive/62-add-attribute-to-all-elements.solution.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/08-advanced-patterns/63-lazy-load-component.problem.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/08-advanced-patterns/63-lazy-load-component.solution.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/08-advanced-patterns/64-render-props.problem.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/08-advanced-patterns/64-render-props.solution.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/08-advanced-patterns/64.5-record-of-components-with-same-props.problem.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/08-advanced-patterns/64.5-record-of-components-with-same-props.solution.1.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/08-advanced-patterns/64.5-record-of-components-with-same-props.solution.2.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/08-advanced-patterns/65-forward-ref-with-generics.explainer.1.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/08-advanced-patterns/65-forward-ref-with-generics.explainer.2.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/08-advanced-patterns/65-forward-ref-with-generics.explainer.3.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/08-advanced-patterns/66-forward-ref-as-local-function.problem.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/08-advanced-patterns/66-forward-ref-as-local-function.solution.1.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/08-advanced-patterns/66-forward-ref-as-local-function.solution.2.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/08-advanced-patterns/67-hoc.problem.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/08-advanced-patterns/67-hoc.solution.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/08-advanced-patterns/67.5-hoc-for-generic-components.problem.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/08-advanced-patterns/67.5-hoc-for-generic-components.solution.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/08-advanced-patterns/69-as-prop.problem.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/08-advanced-patterns/69-as-prop.solution.1.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/08-advanced-patterns/69-as-prop.solution.2.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/08-advanced-patterns/70-as-prop-with-custom-components.problem.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/08-advanced-patterns/70-as-prop-with-custom-components.solution.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/08-advanced-patterns/71-as-prop-with-default.problem.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/08-advanced-patterns/71-as-prop-with-default.solution.1.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/08-advanced-patterns/71-as-prop-with-default.solution.2.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/08-advanced-patterns/72-as-prop-with-forward-ref.problem.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/08-advanced-patterns/72-as-prop-with-forward-ref.solution.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/09-external-libraries/73-react-hook-form.problem.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/09-external-libraries/73-react-hook-form.solution.tsx" + }, + { + "assertionResults": [], + "status": "failed", + "message": "Cannot read properties of null (reading 'useRef')", + "name": "src/09-external-libraries/74-react-hook-form-wrapper.problem.tsx" + }, + { + "assertionResults": [], + "status": "failed", + "message": "Cannot read properties of null (reading 'useRef')", + "name": "src/09-external-libraries/74-react-hook-form-wrapper.solution.1.tsx" + }, + { + "assertionResults": [], + "status": "failed", + "message": "Cannot read properties of null (reading 'useRef')", + "name": "src/09-external-libraries/74-react-hook-form-wrapper.solution.2.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/09-external-libraries/75-react-select.problem.tsx" + }, + { + "assertionResults": [], + "status": "passed", + "message": "", + "name": "src/09-external-libraries/75-react-select.solution.tsx" + }, + { + "assertionResults": [], + "status": "failed", + "message": "Cannot read properties of null (reading 'useContext')", + "name": "src/09-external-libraries/76-react-query.problem.ts" + }, + { + "assertionResults": [], + "status": "failed", + "message": "Cannot read properties of null (reading 'useContext')", + "name": "src/09-external-libraries/76-react-query.solution.ts" + }, + { + "assertionResults": [], + "status": "failed", + "message": "Cannot read properties of null (reading 'useContext')", + "name": "src/09-external-libraries/77-react-query-wrapper.problem.ts" + }, + { + "assertionResults": [], + "status": "failed", + "message": "Cannot read properties of null (reading 'useContext')", + "name": "src/09-external-libraries/77-react-query-wrapper.solution.ts" + } + ] +} +``` \ No newline at end of file From a2a98e4ac35a5457b8807261b6d34ad8b5d4e99d Mon Sep 17 00:00:00 2001 From: Matt Pocock Date: Sun, 5 May 2024 09:52:57 +0100 Subject: [PATCH 03/36] Upgrade --- package-lock.json | 1635 +++++++++++++++++++++++++++++++-------------- package.json | 28 +- 2 files changed, 1148 insertions(+), 515 deletions(-) diff --git a/package-lock.json b/package-lock.json index 5cd5ac5..df881f6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -21,13 +21,13 @@ "zod": "^3.21.4" }, "devDependencies": { - "@total-typescript/exercise-cli": "^0.4.0", + "@total-typescript/exercise-cli": "^0.5.1", "cross-fetch": "^3.1.5", "jsdom": "^21.1.1", "prettier": "^2.8.7", - "typescript": "^5.2.2", + "typescript": "^5.4.5", "vite-tsconfig-paths": "^4.0.7", - "vitest": "^0.34.4" + "vitest": "^1.6.0" } }, "node_modules/@babel/code-frame": { @@ -217,9 +217,9 @@ "integrity": "sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==" }, "node_modules/@esbuild/android-arm": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.19.tgz", - "integrity": "sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==", + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.8.tgz", + "integrity": "sha512-31E2lxlGM1KEfivQl8Yf5aYU/mflz9g06H6S15ITUFQueMFtFjESRMoDSkvMo8thYvLBax+VKTPlpnx+sPicOA==", "cpu": [ "arm" ], @@ -233,9 +233,9 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz", - "integrity": "sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==", + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.8.tgz", + "integrity": "sha512-B8JbS61bEunhfx8kasogFENgQfr/dIp+ggYXwTqdbMAgGDhRa3AaPpQMuQU0rNxDLECj6FhDzk1cF9WHMVwrtA==", "cpu": [ "arm64" ], @@ -249,9 +249,9 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.19.tgz", - "integrity": "sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==", + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.8.tgz", + "integrity": "sha512-rdqqYfRIn4jWOp+lzQttYMa2Xar3OK9Yt2fhOhzFXqg0rVWEfSclJvZq5fZslnz6ypHvVf3CT7qyf0A5pM682A==", "cpu": [ "x64" ], @@ -265,9 +265,9 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz", - "integrity": "sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==", + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.8.tgz", + "integrity": "sha512-RQw9DemMbIq35Bprbboyf8SmOr4UXsRVxJ97LgB55VKKeJOOdvsIPy0nFyF2l8U+h4PtBx/1kRf0BelOYCiQcw==", "cpu": [ "arm64" ], @@ -281,9 +281,9 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz", - "integrity": "sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==", + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.8.tgz", + "integrity": "sha512-3sur80OT9YdeZwIVgERAysAbwncom7b4bCI2XKLjMfPymTud7e/oY4y+ci1XVp5TfQp/bppn7xLw1n/oSQY3/Q==", "cpu": [ "x64" ], @@ -297,9 +297,9 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz", - "integrity": "sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==", + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.8.tgz", + "integrity": "sha512-WAnPJSDattvS/XtPCTj1tPoTxERjcTpH6HsMr6ujTT+X6rylVe8ggxk8pVxzf5U1wh5sPODpawNicF5ta/9Tmw==", "cpu": [ "arm64" ], @@ -313,9 +313,9 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz", - "integrity": "sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==", + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.8.tgz", + "integrity": "sha512-ICvZyOplIjmmhjd6mxi+zxSdpPTKFfyPPQMQTK/w+8eNK6WV01AjIztJALDtwNNfFhfZLux0tZLC+U9nSyA5Zg==", "cpu": [ "x64" ], @@ -329,9 +329,9 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz", - "integrity": "sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==", + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.8.tgz", + "integrity": "sha512-H4vmI5PYqSvosPaTJuEppU9oz1dq2A7Mr2vyg5TF9Ga+3+MGgBdGzcyBP7qK9MrwFQZlvNyJrvz6GuCaj3OukQ==", "cpu": [ "arm" ], @@ -345,9 +345,9 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz", - "integrity": "sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==", + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.8.tgz", + "integrity": "sha512-z1zMZivxDLHWnyGOctT9JP70h0beY54xDDDJt4VpTX+iwA77IFsE1vCXWmprajJGa+ZYSqkSbRQ4eyLCpCmiCQ==", "cpu": [ "arm64" ], @@ -361,9 +361,9 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz", - "integrity": "sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==", + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.8.tgz", + "integrity": "sha512-1a8suQiFJmZz1khm/rDglOc8lavtzEMRo0v6WhPgxkrjcU0LkHj+TwBrALwoz/OtMExvsqbbMI0ChyelKabSvQ==", "cpu": [ "ia32" ], @@ -377,9 +377,9 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz", - "integrity": "sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==", + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.8.tgz", + "integrity": "sha512-fHZWS2JJxnXt1uYJsDv9+b60WCc2RlvVAy1F76qOLtXRO+H4mjt3Tr6MJ5l7Q78X8KgCFudnTuiQRBhULUyBKQ==", "cpu": [ "loong64" ], @@ -393,9 +393,9 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz", - "integrity": "sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==", + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.8.tgz", + "integrity": "sha512-Wy/z0EL5qZYLX66dVnEg9riiwls5IYnziwuju2oUiuxVc+/edvqXa04qNtbrs0Ukatg5HEzqT94Zs7J207dN5Q==", "cpu": [ "mips64el" ], @@ -409,9 +409,9 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz", - "integrity": "sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==", + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.8.tgz", + "integrity": "sha512-ETaW6245wK23YIEufhMQ3HSeHO7NgsLx8gygBVldRHKhOlD1oNeNy/P67mIh1zPn2Hr2HLieQrt6tWrVwuqrxg==", "cpu": [ "ppc64" ], @@ -425,9 +425,9 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz", - "integrity": "sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==", + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.8.tgz", + "integrity": "sha512-T2DRQk55SgoleTP+DtPlMrxi/5r9AeFgkhkZ/B0ap99zmxtxdOixOMI570VjdRCs9pE4Wdkz7JYrsPvsl7eESg==", "cpu": [ "riscv64" ], @@ -441,9 +441,9 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz", - "integrity": "sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==", + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.8.tgz", + "integrity": "sha512-NPxbdmmo3Bk7mbNeHmcCd7R7fptJaczPYBaELk6NcXxy7HLNyWwCyDJ/Xx+/YcNH7Im5dHdx9gZ5xIwyliQCbg==", "cpu": [ "s390x" ], @@ -457,9 +457,9 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz", - "integrity": "sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==", + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.8.tgz", + "integrity": "sha512-lytMAVOM3b1gPypL2TRmZ5rnXl7+6IIk8uB3eLsV1JwcizuolblXRrc5ShPrO9ls/b+RTp+E6gbsuLWHWi2zGg==", "cpu": [ "x64" ], @@ -473,9 +473,9 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz", - "integrity": "sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==", + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.8.tgz", + "integrity": "sha512-hvWVo2VsXz/8NVt1UhLzxwAfo5sioj92uo0bCfLibB0xlOmimU/DeAEsQILlBQvkhrGjamP0/el5HU76HAitGw==", "cpu": [ "x64" ], @@ -489,9 +489,9 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz", - "integrity": "sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==", + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.8.tgz", + "integrity": "sha512-/7Y7u77rdvmGTxR83PgaSvSBJCC2L3Kb1M/+dmSIvRvQPXXCuC97QAwMugBNG0yGcbEGfFBH7ojPzAOxfGNkwQ==", "cpu": [ "x64" ], @@ -505,9 +505,9 @@ } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz", - "integrity": "sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==", + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.8.tgz", + "integrity": "sha512-9Lc4s7Oi98GqFA4HzA/W2JHIYfnXbUYgekUP/Sm4BG9sfLjyv6GKKHKKVs83SMicBF2JwAX6A1PuOLMqpD001w==", "cpu": [ "x64" ], @@ -521,9 +521,9 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz", - "integrity": "sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==", + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.8.tgz", + "integrity": "sha512-rq6WzBGjSzihI9deW3fC2Gqiak68+b7qo5/3kmB6Gvbh/NYPA0sJhrnp7wgV4bNwjqM+R2AApXGxMO7ZoGhIJg==", "cpu": [ "arm64" ], @@ -537,9 +537,9 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz", - "integrity": "sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==", + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.8.tgz", + "integrity": "sha512-AIAbverbg5jMvJznYiGhrd3sumfwWs8572mIJL5NQjJa06P8KfCPWZQ0NwZbPQnbQi9OWSZhFVSUWjjIrn4hSw==", "cpu": [ "ia32" ], @@ -553,9 +553,9 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz", - "integrity": "sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==", + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.8.tgz", + "integrity": "sha512-bfZ0cQ1uZs2PqpulNL5j/3w+GDhP36k1K5c38QdQg+Swy51jFZWWeIkteNsufkQxp986wnqRRsb/bHbY1WQ7TA==", "cpu": [ "x64" ], @@ -634,6 +634,162 @@ "node": ">= 8" } }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.6.1.tgz", + "integrity": "sha512-0WQ0ouLejaUCRsL93GD4uft3rOmB8qoQMU05Kb8CmMtMBe7XUDLAltxVZI1q6byNqEtU7N1ZX1Vw5lIpgulLQA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.6.1.tgz", + "integrity": "sha512-1TKm25Rn20vr5aTGGZqo6E4mzPicCUD79k17EgTLAsXc1zysyi4xXKACfUbwyANEPAEIxkzwue6JZ+stYzWUTA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.6.1.tgz", + "integrity": "sha512-cEXJQY/ZqMACb+nxzDeX9IPLAg7S94xouJJCNVE5BJM8JUEP4HeTF+ti3cmxWeSJo+5D+o8Tc0UAWUkfENdeyw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.6.1.tgz", + "integrity": "sha512-LoSU9Xu56isrkV2jLldcKspJ7sSXmZWkAxg7sW/RfF7GS4F5/v4EiqKSMCFbZtDu2Nc1gxxFdQdKwkKS4rwxNg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.6.1.tgz", + "integrity": "sha512-EfI3hzYAy5vFNDqpXsNxXcgRDcFHUWSx5nnRSCKwXuQlI5J9dD84g2Usw81n3FLBNsGCegKGwwTVsSKK9cooSQ==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.6.1.tgz", + "integrity": "sha512-9lhc4UZstsegbNLhH0Zu6TqvDfmhGzuCWtcTFXY10VjLLUe4Mr0Ye2L3rrtHaDd/J5+tFMEuo5LTCSCMXWfUKw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.6.1.tgz", + "integrity": "sha512-FfoOK1yP5ksX3wwZ4Zk1NgyGHZyuRhf99j64I5oEmirV8EFT7+OhUZEnP+x17lcP/QHJNWGsoJwrz4PJ9fBEXw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.6.1.tgz", + "integrity": "sha512-DNGZvZDO5YF7jN5fX8ZqmGLjZEXIJRdJEdTFMhiyXqyXubBa0WVLDWSNlQ5JR2PNgDbEV1VQowhVRUh+74D+RA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.6.1.tgz", + "integrity": "sha512-RkJVNVRM+piYy87HrKmhbexCHg3A6Z6MU0W9GHnJwBQNBeyhCJG9KDce4SAMdicQnpURggSvtbGo9xAWOfSvIQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.6.1.tgz", + "integrity": "sha512-v2FVT6xfnnmTe3W9bJXl6r5KwJglMK/iRlkKiIFfO6ysKs0rDgz7Cwwf3tjldxQUrHL9INT/1r4VA0n9L/F1vQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.6.1.tgz", + "integrity": "sha512-YEeOjxRyEjqcWphH9dyLbzgkF8wZSKAKUkldRY6dgNR5oKs2LZazqGB41cWJ4Iqqcy9/zqYgmzBkRoVz3Q9MLw==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.6.1.tgz", + "integrity": "sha512-0zfTlFAIhgz8V2G8STq8toAjsYYA6eci1hnXuyOTUFnymrtJwnS6uGKiv3v5UrPZkBlamLvrLV2iiaeqCKzb0A==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, "node_modules/@sinclair/typebox": { "version": "0.27.8", "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", @@ -685,9 +841,9 @@ } }, "node_modules/@total-typescript/exercise-cli": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@total-typescript/exercise-cli/-/exercise-cli-0.4.0.tgz", - "integrity": "sha512-iSliKtEM1nShevoVQbEsnuT2D9s74taI2GIuUmIziReROUHRfj1TSQ16X0WMGPZsWp/XxX5ZvkoM4h1Eg21uLw==", + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@total-typescript/exercise-cli/-/exercise-cli-0.5.1.tgz", + "integrity": "sha512-6r7UUYyxJY4rkAeq98jW80gSAivhq9h32X3vhlehecWeVDNRZnZJyBN3U+YKmJUZccwO3d4yWXy50mvdU9M0BA==", "dev": true, "dependencies": { "chokidar": "^3.5.3", @@ -701,8 +857,8 @@ "tt-cli": "dist/bin.js" }, "peerDependencies": { - "typescript": "^5.2.2", - "vitest": "^0.34.4" + "typescript": "^5", + "vitest": "^1" } }, "node_modules/@types/body-parser": { @@ -714,21 +870,6 @@ "@types/node": "*" } }, - "node_modules/@types/chai": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.5.tgz", - "integrity": "sha512-mEo1sAde+UCE6b2hxn332f1g1E8WfYRu6p5SvTKr2ZKC1f7gFJXk4h5PyGP9Dt6gCaG8y8XhwnXWC6Iy2cmBng==", - "dev": true - }, - "node_modules/@types/chai-subset": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@types/chai-subset/-/chai-subset-1.3.3.tgz", - "integrity": "sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==", - "dev": true, - "dependencies": { - "@types/chai": "*" - } - }, "node_modules/@types/connect": { "version": "3.4.35", "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", @@ -737,6 +878,12 @@ "@types/node": "*" } }, + "node_modules/@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", + "dev": true + }, "node_modules/@types/express": { "version": "4.17.17", "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz", @@ -839,27 +986,27 @@ } }, "node_modules/@vitest/expect": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-0.34.4.tgz", - "integrity": "sha512-XlMKX8HyYUqB8dsY8Xxrc64J2Qs9pKMt2Z8vFTL4mBWXJsg4yoALHzJfDWi8h5nkO4Zua4zjqtapQ/IluVkSnA==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-1.6.0.tgz", + "integrity": "sha512-ixEvFVQjycy/oNgHjqsL6AZCDduC+tflRluaHIzKIsdbzkLn2U/iBnVeJwB6HsIjQBdfMR8Z0tRxKUsvFJEeWQ==", "dev": true, "dependencies": { - "@vitest/spy": "0.34.4", - "@vitest/utils": "0.34.4", - "chai": "^4.3.7" + "@vitest/spy": "1.6.0", + "@vitest/utils": "1.6.0", + "chai": "^4.3.10" }, "funding": { "url": "https://opencollective.com/vitest" } }, "node_modules/@vitest/runner": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-0.34.4.tgz", - "integrity": "sha512-hwwdB1StERqUls8oV8YcpmTIpVeJMe4WgYuDongVzixl5hlYLT2G8afhcdADeDeqCaAmZcSgLTLtqkjPQF7x+w==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-1.6.0.tgz", + "integrity": "sha512-P4xgwPjwesuBiHisAVz/LSSZtDjOTPYZVmNAnpHHSR6ONrf8eCJOFRvUwdHn30F5M1fxhqtl7QZQUk2dprIXAg==", "dev": true, "dependencies": { - "@vitest/utils": "0.34.4", - "p-limit": "^4.0.0", + "@vitest/utils": "1.6.0", + "p-limit": "^5.0.0", "pathe": "^1.1.1" }, "funding": { @@ -867,40 +1014,41 @@ } }, "node_modules/@vitest/snapshot": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-0.34.4.tgz", - "integrity": "sha512-GCsh4coc3YUSL/o+BPUo7lHQbzpdttTxL6f4q0jRx2qVGoYz/cyTRDJHbnwks6TILi6560bVWoBpYC10PuTLHw==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-1.6.0.tgz", + "integrity": "sha512-+Hx43f8Chus+DCmygqqfetcAZrDJwvTj0ymqjQq4CvmpKFSTVteEOBzCusu1x2tt4OJcvBflyHUE0DZSLgEMtQ==", "dev": true, "dependencies": { - "magic-string": "^0.30.1", + "magic-string": "^0.30.5", "pathe": "^1.1.1", - "pretty-format": "^29.5.0" + "pretty-format": "^29.7.0" }, "funding": { "url": "https://opencollective.com/vitest" } }, "node_modules/@vitest/spy": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-0.34.4.tgz", - "integrity": "sha512-PNU+fd7DUPgA3Ya924b1qKuQkonAW6hL7YUjkON3wmBwSTIlhOSpy04SJ0NrRsEbrXgMMj6Morh04BMf8k+w0g==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-1.6.0.tgz", + "integrity": "sha512-leUTap6B/cqi/bQkXUu6bQV5TZPx7pmMBKBQiI0rJA8c3pB56ZsaTbREnF7CJfmvAS4V2cXIBAh/3rVwrrCYgw==", "dev": true, "dependencies": { - "tinyspy": "^2.1.1" + "tinyspy": "^2.2.0" }, "funding": { "url": "https://opencollective.com/vitest" } }, "node_modules/@vitest/utils": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-0.34.4.tgz", - "integrity": "sha512-yR2+5CHhp/K4ySY0Qtd+CAL9f5Yh1aXrKfAT42bq6CtlGPh92jIDDDSg7ydlRow1CP+dys4TrOrbELOyNInHSg==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-1.6.0.tgz", + "integrity": "sha512-21cPiuGMoMZwiOHa2i4LXkMkMkCGzA+MVFV70jRwHo95dL4x/ts5GZhML1QWuy7yfp3WzK3lRvZi3JnXTYqrBw==", "dev": true, "dependencies": { - "diff-sequences": "^29.4.3", - "loupe": "^2.3.6", - "pretty-format": "^29.5.0" + "diff-sequences": "^29.6.3", + "estree-walker": "^3.0.3", + "loupe": "^2.3.7", + "pretty-format": "^29.7.0" }, "funding": { "url": "https://opencollective.com/vitest" @@ -947,9 +1095,9 @@ } }, "node_modules/acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.2.tgz", + "integrity": "sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==", "dev": true, "engines": { "node": ">=0.4.0" @@ -1131,18 +1279,18 @@ } }, "node_modules/chai": { - "version": "4.3.8", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.8.tgz", - "integrity": "sha512-vX4YvVVtxlfSZ2VecZgFUTU5qPCYsobVI2O9FmwEXBhDigYGQA6jRXCycIs1yJnnWbZ6/+a2zNIF5DfVCcJBFQ==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.4.1.tgz", + "integrity": "sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==", "dev": true, "dependencies": { "assertion-error": "^1.1.0", - "check-error": "^1.0.2", - "deep-eql": "^4.1.2", - "get-func-name": "^2.0.0", - "loupe": "^2.3.1", + "check-error": "^1.0.3", + "deep-eql": "^4.1.3", + "get-func-name": "^2.0.2", + "loupe": "^2.3.6", "pathval": "^1.1.1", - "type-detect": "^4.0.5" + "type-detect": "^4.0.8" }, "engines": { "node": ">=4" @@ -1181,10 +1329,13 @@ } }, "node_modules/check-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", - "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", + "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", "dev": true, + "dependencies": { + "get-func-name": "^2.0.2" + }, "engines": { "node": "*" } @@ -1320,6 +1471,20 @@ "node-fetch": "^2.6.11" } }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, "node_modules/cssstyle": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-3.0.0.tgz", @@ -1473,9 +1638,9 @@ } }, "node_modules/esbuild": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.19.tgz", - "integrity": "sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==", + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.8.tgz", + "integrity": "sha512-l7iffQpT2OrZfH2rXIp7/FkmaeZM0vxbxN9KfiCwGYuZqzMg/JdvX26R31Zxn/Pxvsrg3Y9N6XTcnknqDyyv4w==", "dev": true, "hasInstallScript": true, "bin": { @@ -1485,28 +1650,28 @@ "node": ">=12" }, "optionalDependencies": { - "@esbuild/android-arm": "0.17.19", - "@esbuild/android-arm64": "0.17.19", - "@esbuild/android-x64": "0.17.19", - "@esbuild/darwin-arm64": "0.17.19", - "@esbuild/darwin-x64": "0.17.19", - "@esbuild/freebsd-arm64": "0.17.19", - "@esbuild/freebsd-x64": "0.17.19", - "@esbuild/linux-arm": "0.17.19", - "@esbuild/linux-arm64": "0.17.19", - "@esbuild/linux-ia32": "0.17.19", - "@esbuild/linux-loong64": "0.17.19", - "@esbuild/linux-mips64el": "0.17.19", - "@esbuild/linux-ppc64": "0.17.19", - "@esbuild/linux-riscv64": "0.17.19", - "@esbuild/linux-s390x": "0.17.19", - "@esbuild/linux-x64": "0.17.19", - "@esbuild/netbsd-x64": "0.17.19", - "@esbuild/openbsd-x64": "0.17.19", - "@esbuild/sunos-x64": "0.17.19", - "@esbuild/win32-arm64": "0.17.19", - "@esbuild/win32-ia32": "0.17.19", - "@esbuild/win32-x64": "0.17.19" + "@esbuild/android-arm": "0.19.8", + "@esbuild/android-arm64": "0.19.8", + "@esbuild/android-x64": "0.19.8", + "@esbuild/darwin-arm64": "0.19.8", + "@esbuild/darwin-x64": "0.19.8", + "@esbuild/freebsd-arm64": "0.19.8", + "@esbuild/freebsd-x64": "0.19.8", + "@esbuild/linux-arm": "0.19.8", + "@esbuild/linux-arm64": "0.19.8", + "@esbuild/linux-ia32": "0.19.8", + "@esbuild/linux-loong64": "0.19.8", + "@esbuild/linux-mips64el": "0.19.8", + "@esbuild/linux-ppc64": "0.19.8", + "@esbuild/linux-riscv64": "0.19.8", + "@esbuild/linux-s390x": "0.19.8", + "@esbuild/linux-x64": "0.19.8", + "@esbuild/netbsd-x64": "0.19.8", + "@esbuild/openbsd-x64": "0.19.8", + "@esbuild/sunos-x64": "0.19.8", + "@esbuild/win32-arm64": "0.19.8", + "@esbuild/win32-ia32": "0.19.8", + "@esbuild/win32-x64": "0.19.8" } }, "node_modules/escape-html": { @@ -1569,6 +1734,15 @@ "node": ">=4.0" } }, + "node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dev": true, + "dependencies": { + "@types/estree": "^1.0.0" + } + }, "node_modules/esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", @@ -1586,6 +1760,29 @@ "node": ">= 0.6" } }, + "node_modules/execa": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", + "dev": true, + "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" + }, + "engines": { + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, "node_modules/express": { "version": "4.18.2", "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", @@ -1723,9 +1920,9 @@ } }, "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "dev": true, "hasInstallScript": true, "optional": true, @@ -1742,9 +1939,9 @@ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, "node_modules/get-func-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", - "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", + "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", "dev": true, "engines": { "node": "*" @@ -1764,6 +1961,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/get-stream": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "dev": true, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/glob-parent": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", @@ -1936,6 +2145,15 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, + "node_modules/human-signals": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", + "dev": true, + "engines": { + "node": ">=16.17.0" + } + }, "node_modules/iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", @@ -2039,6 +2257,24 @@ "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", "dev": true }, + "node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -2128,10 +2364,14 @@ "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" }, "node_modules/local-pkg": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.4.3.tgz", - "integrity": "sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.5.0.tgz", + "integrity": "sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==", "dev": true, + "dependencies": { + "mlly": "^1.4.2", + "pkg-types": "^1.0.3" + }, "engines": { "node": ">=14" }, @@ -2151,24 +2391,21 @@ } }, "node_modules/loupe": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz", - "integrity": "sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==", + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", + "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", "dev": true, "dependencies": { - "get-func-name": "^2.0.0" + "get-func-name": "^2.0.1" } }, "node_modules/magic-string": { - "version": "0.30.3", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.3.tgz", - "integrity": "sha512-B7xGbll2fG/VjP+SWg4sX3JynwIU0mjoTc6MPpKNuIvftk6u6vqhDnk1R80b8C2GBR6ywqy+1DcKBrevBg+bmw==", + "version": "0.30.10", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.10.tgz", + "integrity": "sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==", "dev": true, "dependencies": { "@jridgewell/sourcemap-codec": "^1.4.15" - }, - "engines": { - "node": ">=12" } }, "node_modules/media-typer": { @@ -2189,6 +2426,12 @@ "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", @@ -2249,6 +2492,18 @@ "node": ">= 0.6" } }, + "node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/mlly": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.4.2.tgz", @@ -2267,9 +2522,9 @@ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, "node_modules/nanoid": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", - "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", "dev": true, "funding": [ { @@ -2343,6 +2598,33 @@ "node": ">=0.10.0" } }, + "node_modules/npm-run-path": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", + "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", + "dev": true, + "dependencies": { + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-run-path/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/nwsapi": { "version": "2.2.4", "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.4.tgz", @@ -2376,6 +2658,21 @@ "node": ">= 0.8" } }, + "node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dev": true, + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/optionator": { "version": "0.8.3", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", @@ -2394,15 +2691,15 @@ } }, "node_modules/p-limit": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", - "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-5.0.0.tgz", + "integrity": "sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==", "dev": true, "dependencies": { "yocto-queue": "^1.0.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -2456,6 +2753,15 @@ "node": ">= 0.8" } }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/path-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", @@ -2519,9 +2825,9 @@ } }, "node_modules/postcss": { - "version": "8.4.23", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.23.tgz", - "integrity": "sha512-bQ3qMcpF6A/YjR55xtoTr0jGOlnPOKAIMdOWiv0EIT6HVPEaJiJB4NLljSbiHoC2RX7DN5Uvjtpbg1NPdwv1oA==", + "version": "8.4.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.32.tgz", + "integrity": "sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==", "dev": true, "funding": [ { @@ -2538,7 +2844,7 @@ } ], "dependencies": { - "nanoid": "^3.3.6", + "nanoid": "^3.3.7", "picocolors": "^1.0.0", "source-map-js": "^1.0.2" }, @@ -2740,9 +3046,9 @@ } }, "node_modules/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", "dev": true }, "node_modules/react-select": { @@ -2838,18 +3144,30 @@ } }, "node_modules/rollup": { - "version": "3.23.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.23.0.tgz", - "integrity": "sha512-h31UlwEi7FHihLe1zbk+3Q7z1k/84rb9BSwmBSr/XjOCEaBJ2YyedQDuM0t/kfOS0IxM+vk1/zI9XxYj9V+NJQ==", + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.6.1.tgz", + "integrity": "sha512-jZHaZotEHQaHLgKr8JnQiDT1rmatjgKlMekyksz+yk9jt/8z9quNjnKNRoaM0wd9DC2QKXjmWWuDYtM3jfF8pQ==", "dev": true, "bin": { "rollup": "dist/bin/rollup" }, "engines": { - "node": ">=14.18.0", + "node": ">=18.0.0", "npm": ">=8.0.0" }, "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.6.1", + "@rollup/rollup-android-arm64": "4.6.1", + "@rollup/rollup-darwin-arm64": "4.6.1", + "@rollup/rollup-darwin-x64": "4.6.1", + "@rollup/rollup-linux-arm-gnueabihf": "4.6.1", + "@rollup/rollup-linux-arm64-gnu": "4.6.1", + "@rollup/rollup-linux-arm64-musl": "4.6.1", + "@rollup/rollup-linux-x64-gnu": "4.6.1", + "@rollup/rollup-linux-x64-musl": "4.6.1", + "@rollup/rollup-win32-arm64-msvc": "4.6.1", + "@rollup/rollup-win32-ia32-msvc": "4.6.1", + "@rollup/rollup-win32-x64-msvc": "4.6.1", "fsevents": "~2.3.2" } }, @@ -2973,6 +3291,27 @@ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/side-channel": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", @@ -2992,6 +3331,18 @@ "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", "dev": true }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/sisteransi": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", @@ -3032,23 +3383,41 @@ } }, "node_modules/std-env": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.3.3.tgz", - "integrity": "sha512-Rz6yejtVyWnVjC1RFvNmYL10kgjC49EOghxWn0RFqlCHGFpQx+Xe7yW3I4ceK1SGrWIGMjD5Kbue8W/udkbMJg==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.6.0.tgz", + "integrity": "sha512-aFZ19IgVmhdB2uX599ve2kE6BIE3YMnQ6Gp6BURhW/oIzpXGKr878TQfAQZn1+i0Flcc/UKUy1gOlcfaUBCryg==", "dev": true }, + "node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/strip-literal": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-1.0.1.tgz", - "integrity": "sha512-QZTsipNpa2Ppr6v1AmJHESqJ3Uz247MUS0OjrnnZjFAvEoWqxuyFuXn2xLgMtRnijJShAa1HL0gtJyUs7u7n3Q==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-2.1.0.tgz", + "integrity": "sha512-Op+UycaUt/8FbN/Z2TWPBLge3jWrP3xj10f3fnYxf052bKuS3EKs1ZQcVGjnEMdsNVAM+plXRdmjrZ/KgG3Skw==", "dev": true, "dependencies": { - "acorn": "^8.8.2" + "js-tokens": "^9.0.0" }, "funding": { "url": "https://github.com/sponsors/antfu" } }, + "node_modules/strip-literal/node_modules/js-tokens": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.0.tgz", + "integrity": "sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==", + "dev": true + }, "node_modules/stylis": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz", @@ -3083,24 +3452,24 @@ "dev": true }, "node_modules/tinybench": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.5.0.tgz", - "integrity": "sha512-kRwSG8Zx4tjF9ZiyH4bhaebu+EDz1BOx9hOigYHlUW4xxI/wKIUQUqo018UlU4ar6ATPBsaMrdbKZ+tmPdohFA==", + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.5.1.tgz", + "integrity": "sha512-65NKvSuAVDP/n4CqH+a9w2kTlLReS9vhsAP06MWx+/89nMinJyB2icyl58RIcqCmIggpojIGeuJGhjU1aGMBSg==", "dev": true }, "node_modules/tinypool": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-0.7.0.tgz", - "integrity": "sha512-zSYNUlYSMhJ6Zdou4cJwo/p7w5nmAH17GRfU/ui3ctvjXFErXXkruT4MWW6poDeXgCaIBlGLrfU6TbTXxyGMww==", + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-0.8.4.tgz", + "integrity": "sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==", "dev": true, "engines": { "node": ">=14.0.0" } }, "node_modules/tinyspy": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-2.1.1.tgz", - "integrity": "sha512-XPJL2uSzcOyBMky6OFrusqWlzfFrXtE0hPuMgW8A2HmaqrPo4ZQHRN/V0QXN3FSjKxpsbRrFc5LI7KOwBsT1/w==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-2.2.1.tgz", + "integrity": "sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==", "dev": true, "engines": { "node": ">=14.0.0" @@ -3215,9 +3584,9 @@ } }, "node_modules/typescript": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", - "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", + "version": "5.4.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", + "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -3228,9 +3597,9 @@ } }, "node_modules/ufo": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.3.0.tgz", - "integrity": "sha512-bRn3CsoojyNStCZe0BG0Mt4Nr/4KF+rhFlnNXybgqt5pXHNFRlqinSoQaTrGyzE4X8aHplSb+TorH+COin9Yxw==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.3.2.tgz", + "integrity": "sha512-o+ORpgGwaYQXgqGDwd+hkS4PuZ3QnmqMMxRuajK/a38L6fTpcE5GPIfrf+L/KemFzfUpeUQc1rRS1iDBozvnFA==", "dev": true }, "node_modules/universalify": { @@ -3298,27 +3667,31 @@ } }, "node_modules/vite": { - "version": "4.3.8", - "resolved": "https://registry.npmjs.org/vite/-/vite-4.3.8.tgz", - "integrity": "sha512-uYB8PwN7hbMrf4j1xzGDk/lqjsZvCDbt/JC5dyfxc19Pg8kRm14LinK/uq+HSLNswZEoKmweGdtpbnxRtrAXiQ==", + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.0.6.tgz", + "integrity": "sha512-MD3joyAEBtV7QZPl2JVVUai6zHms3YOmLR+BpMzLlX2Yzjfcc4gTgNi09d/Rua3F4EtC8zdwPU8eQYyib4vVMQ==", "dev": true, "dependencies": { - "esbuild": "^0.17.5", - "postcss": "^8.4.23", - "rollup": "^3.21.0" + "esbuild": "^0.19.3", + "postcss": "^8.4.32", + "rollup": "^4.2.0" }, "bin": { "vite": "bin/vite.js" }, "engines": { - "node": "^14.18.0 || >=16.0.0" + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" }, "optionalDependencies": { - "fsevents": "~2.3.2" + "fsevents": "~2.3.3" }, "peerDependencies": { - "@types/node": ">= 14", + "@types/node": "^18.0.0 || >=20.0.0", "less": "*", + "lightningcss": "^1.21.0", "sass": "*", "stylus": "*", "sugarss": "*", @@ -3331,6 +3704,9 @@ "less": { "optional": true }, + "lightningcss": { + "optional": true + }, "sass": { "optional": true }, @@ -3346,23 +3722,22 @@ } }, "node_modules/vite-node": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-0.34.4.tgz", - "integrity": "sha512-ho8HtiLc+nsmbwZMw8SlghESEE3KxJNp04F/jPUCLVvaURwt0d+r9LxEqCX5hvrrOQ0GSyxbYr5ZfRYhQ0yVKQ==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-1.6.0.tgz", + "integrity": "sha512-de6HJgzC+TFzOu0NTC4RAIsyf/DY/ibWDYQUcuEA84EMHhcefTUGkjFHKKEJhQN4A+6I0u++kr3l36ZF2d7XRw==", "dev": true, "dependencies": { "cac": "^6.7.14", "debug": "^4.3.4", - "mlly": "^1.4.0", "pathe": "^1.1.1", "picocolors": "^1.0.0", - "vite": "^3.0.0 || ^4.0.0" + "vite": "^5.0.0" }, "bin": { "vite-node": "vite-node.mjs" }, "engines": { - "node": ">=v14.18.0" + "node": "^18.0.0 || >=20.0.0" }, "funding": { "url": "https://opencollective.com/vitest" @@ -3434,59 +3809,56 @@ "dev": true }, "node_modules/vitest": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-0.34.4.tgz", - "integrity": "sha512-SE/laOsB6995QlbSE6BtkpXDeVNLJc1u2LHRG/OpnN4RsRzM3GQm4nm3PQCK5OBtrsUqnhzLdnT7se3aeNGdlw==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-1.6.0.tgz", + "integrity": "sha512-H5r/dN06swuFnzNFhq/dnz37bPXnq8xB2xB5JOVk8K09rUtoeNN+LHWkoQ0A/i3hvbUKKcCei9KpbxqHMLhLLA==", "dev": true, "dependencies": { - "@types/chai": "^4.3.5", - "@types/chai-subset": "^1.3.3", - "@types/node": "*", - "@vitest/expect": "0.34.4", - "@vitest/runner": "0.34.4", - "@vitest/snapshot": "0.34.4", - "@vitest/spy": "0.34.4", - "@vitest/utils": "0.34.4", - "acorn": "^8.9.0", - "acorn-walk": "^8.2.0", - "cac": "^6.7.14", - "chai": "^4.3.7", + "@vitest/expect": "1.6.0", + "@vitest/runner": "1.6.0", + "@vitest/snapshot": "1.6.0", + "@vitest/spy": "1.6.0", + "@vitest/utils": "1.6.0", + "acorn-walk": "^8.3.2", + "chai": "^4.3.10", "debug": "^4.3.4", - "local-pkg": "^0.4.3", - "magic-string": "^0.30.1", + "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.3.3", - "strip-literal": "^1.0.1", - "tinybench": "^2.5.0", - "tinypool": "^0.7.0", - "vite": "^3.1.0 || ^4.0.0 || ^5.0.0-0", - "vite-node": "0.34.4", + "std-env": "^3.5.0", + "strip-literal": "^2.0.0", + "tinybench": "^2.5.1", + "tinypool": "^0.8.3", + "vite": "^5.0.0", + "vite-node": "1.6.0", "why-is-node-running": "^2.2.2" }, "bin": { "vitest": "vitest.mjs" }, "engines": { - "node": ">=v14.18.0" + "node": "^18.0.0 || >=20.0.0" }, "funding": { "url": "https://opencollective.com/vitest" }, "peerDependencies": { "@edge-runtime/vm": "*", - "@vitest/browser": "*", - "@vitest/ui": "*", + "@types/node": "^18.0.0 || >=20.0.0", + "@vitest/browser": "1.6.0", + "@vitest/ui": "1.6.0", "happy-dom": "*", - "jsdom": "*", - "playwright": "*", - "safaridriver": "*", - "webdriverio": "*" + "jsdom": "*" }, "peerDependenciesMeta": { "@edge-runtime/vm": { "optional": true }, + "@types/node": { + "optional": true + }, "@vitest/browser": { "optional": true }, @@ -3498,15 +3870,6 @@ }, "jsdom": { "optional": true - }, - "playwright": { - "optional": true - }, - "safaridriver": { - "optional": true - }, - "webdriverio": { - "optional": true } } }, @@ -3600,6 +3963,21 @@ "node": ">=14" } }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, "node_modules/why-is-node-running": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.2.2.tgz", @@ -3846,156 +4224,156 @@ "integrity": "sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==" }, "@esbuild/android-arm": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.19.tgz", - "integrity": "sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==", + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.8.tgz", + "integrity": "sha512-31E2lxlGM1KEfivQl8Yf5aYU/mflz9g06H6S15ITUFQueMFtFjESRMoDSkvMo8thYvLBax+VKTPlpnx+sPicOA==", "dev": true, "optional": true }, "@esbuild/android-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz", - "integrity": "sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==", + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.8.tgz", + "integrity": "sha512-B8JbS61bEunhfx8kasogFENgQfr/dIp+ggYXwTqdbMAgGDhRa3AaPpQMuQU0rNxDLECj6FhDzk1cF9WHMVwrtA==", "dev": true, "optional": true }, "@esbuild/android-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.19.tgz", - "integrity": "sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==", + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.8.tgz", + "integrity": "sha512-rdqqYfRIn4jWOp+lzQttYMa2Xar3OK9Yt2fhOhzFXqg0rVWEfSclJvZq5fZslnz6ypHvVf3CT7qyf0A5pM682A==", "dev": true, "optional": true }, "@esbuild/darwin-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz", - "integrity": "sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==", + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.8.tgz", + "integrity": "sha512-RQw9DemMbIq35Bprbboyf8SmOr4UXsRVxJ97LgB55VKKeJOOdvsIPy0nFyF2l8U+h4PtBx/1kRf0BelOYCiQcw==", "dev": true, "optional": true }, "@esbuild/darwin-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz", - "integrity": "sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==", + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.8.tgz", + "integrity": "sha512-3sur80OT9YdeZwIVgERAysAbwncom7b4bCI2XKLjMfPymTud7e/oY4y+ci1XVp5TfQp/bppn7xLw1n/oSQY3/Q==", "dev": true, "optional": true }, "@esbuild/freebsd-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz", - "integrity": "sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==", + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.8.tgz", + "integrity": "sha512-WAnPJSDattvS/XtPCTj1tPoTxERjcTpH6HsMr6ujTT+X6rylVe8ggxk8pVxzf5U1wh5sPODpawNicF5ta/9Tmw==", "dev": true, "optional": true }, "@esbuild/freebsd-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz", - "integrity": "sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==", + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.8.tgz", + "integrity": "sha512-ICvZyOplIjmmhjd6mxi+zxSdpPTKFfyPPQMQTK/w+8eNK6WV01AjIztJALDtwNNfFhfZLux0tZLC+U9nSyA5Zg==", "dev": true, "optional": true }, "@esbuild/linux-arm": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz", - "integrity": "sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==", + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.8.tgz", + "integrity": "sha512-H4vmI5PYqSvosPaTJuEppU9oz1dq2A7Mr2vyg5TF9Ga+3+MGgBdGzcyBP7qK9MrwFQZlvNyJrvz6GuCaj3OukQ==", "dev": true, "optional": true }, "@esbuild/linux-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz", - "integrity": "sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==", + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.8.tgz", + "integrity": "sha512-z1zMZivxDLHWnyGOctT9JP70h0beY54xDDDJt4VpTX+iwA77IFsE1vCXWmprajJGa+ZYSqkSbRQ4eyLCpCmiCQ==", "dev": true, "optional": true }, "@esbuild/linux-ia32": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz", - "integrity": "sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==", + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.8.tgz", + "integrity": "sha512-1a8suQiFJmZz1khm/rDglOc8lavtzEMRo0v6WhPgxkrjcU0LkHj+TwBrALwoz/OtMExvsqbbMI0ChyelKabSvQ==", "dev": true, "optional": true }, "@esbuild/linux-loong64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz", - "integrity": "sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==", + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.8.tgz", + "integrity": "sha512-fHZWS2JJxnXt1uYJsDv9+b60WCc2RlvVAy1F76qOLtXRO+H4mjt3Tr6MJ5l7Q78X8KgCFudnTuiQRBhULUyBKQ==", "dev": true, "optional": true }, "@esbuild/linux-mips64el": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz", - "integrity": "sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==", + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.8.tgz", + "integrity": "sha512-Wy/z0EL5qZYLX66dVnEg9riiwls5IYnziwuju2oUiuxVc+/edvqXa04qNtbrs0Ukatg5HEzqT94Zs7J207dN5Q==", "dev": true, "optional": true }, "@esbuild/linux-ppc64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz", - "integrity": "sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==", + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.8.tgz", + "integrity": "sha512-ETaW6245wK23YIEufhMQ3HSeHO7NgsLx8gygBVldRHKhOlD1oNeNy/P67mIh1zPn2Hr2HLieQrt6tWrVwuqrxg==", "dev": true, "optional": true }, "@esbuild/linux-riscv64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz", - "integrity": "sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==", + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.8.tgz", + "integrity": "sha512-T2DRQk55SgoleTP+DtPlMrxi/5r9AeFgkhkZ/B0ap99zmxtxdOixOMI570VjdRCs9pE4Wdkz7JYrsPvsl7eESg==", "dev": true, "optional": true }, "@esbuild/linux-s390x": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz", - "integrity": "sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==", + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.8.tgz", + "integrity": "sha512-NPxbdmmo3Bk7mbNeHmcCd7R7fptJaczPYBaELk6NcXxy7HLNyWwCyDJ/Xx+/YcNH7Im5dHdx9gZ5xIwyliQCbg==", "dev": true, "optional": true }, "@esbuild/linux-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz", - "integrity": "sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==", + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.8.tgz", + "integrity": "sha512-lytMAVOM3b1gPypL2TRmZ5rnXl7+6IIk8uB3eLsV1JwcizuolblXRrc5ShPrO9ls/b+RTp+E6gbsuLWHWi2zGg==", "dev": true, "optional": true }, "@esbuild/netbsd-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz", - "integrity": "sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==", + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.8.tgz", + "integrity": "sha512-hvWVo2VsXz/8NVt1UhLzxwAfo5sioj92uo0bCfLibB0xlOmimU/DeAEsQILlBQvkhrGjamP0/el5HU76HAitGw==", "dev": true, "optional": true }, "@esbuild/openbsd-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz", - "integrity": "sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==", + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.8.tgz", + "integrity": "sha512-/7Y7u77rdvmGTxR83PgaSvSBJCC2L3Kb1M/+dmSIvRvQPXXCuC97QAwMugBNG0yGcbEGfFBH7ojPzAOxfGNkwQ==", "dev": true, "optional": true }, "@esbuild/sunos-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz", - "integrity": "sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==", + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.8.tgz", + "integrity": "sha512-9Lc4s7Oi98GqFA4HzA/W2JHIYfnXbUYgekUP/Sm4BG9sfLjyv6GKKHKKVs83SMicBF2JwAX6A1PuOLMqpD001w==", "dev": true, "optional": true }, "@esbuild/win32-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz", - "integrity": "sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==", + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.8.tgz", + "integrity": "sha512-rq6WzBGjSzihI9deW3fC2Gqiak68+b7qo5/3kmB6Gvbh/NYPA0sJhrnp7wgV4bNwjqM+R2AApXGxMO7ZoGhIJg==", "dev": true, "optional": true }, "@esbuild/win32-ia32": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz", - "integrity": "sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==", + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.8.tgz", + "integrity": "sha512-AIAbverbg5jMvJznYiGhrd3sumfwWs8572mIJL5NQjJa06P8KfCPWZQ0NwZbPQnbQi9OWSZhFVSUWjjIrn4hSw==", "dev": true, "optional": true }, "@esbuild/win32-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz", - "integrity": "sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==", + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.8.tgz", + "integrity": "sha512-bfZ0cQ1uZs2PqpulNL5j/3w+GDhP36k1K5c38QdQg+Swy51jFZWWeIkteNsufkQxp986wnqRRsb/bHbY1WQ7TA==", "dev": true, "optional": true }, @@ -4053,6 +4431,90 @@ "fastq": "^1.6.0" } }, + "@rollup/rollup-android-arm-eabi": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.6.1.tgz", + "integrity": "sha512-0WQ0ouLejaUCRsL93GD4uft3rOmB8qoQMU05Kb8CmMtMBe7XUDLAltxVZI1q6byNqEtU7N1ZX1Vw5lIpgulLQA==", + "dev": true, + "optional": true + }, + "@rollup/rollup-android-arm64": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.6.1.tgz", + "integrity": "sha512-1TKm25Rn20vr5aTGGZqo6E4mzPicCUD79k17EgTLAsXc1zysyi4xXKACfUbwyANEPAEIxkzwue6JZ+stYzWUTA==", + "dev": true, + "optional": true + }, + "@rollup/rollup-darwin-arm64": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.6.1.tgz", + "integrity": "sha512-cEXJQY/ZqMACb+nxzDeX9IPLAg7S94xouJJCNVE5BJM8JUEP4HeTF+ti3cmxWeSJo+5D+o8Tc0UAWUkfENdeyw==", + "dev": true, + "optional": true + }, + "@rollup/rollup-darwin-x64": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.6.1.tgz", + "integrity": "sha512-LoSU9Xu56isrkV2jLldcKspJ7sSXmZWkAxg7sW/RfF7GS4F5/v4EiqKSMCFbZtDu2Nc1gxxFdQdKwkKS4rwxNg==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.6.1.tgz", + "integrity": "sha512-EfI3hzYAy5vFNDqpXsNxXcgRDcFHUWSx5nnRSCKwXuQlI5J9dD84g2Usw81n3FLBNsGCegKGwwTVsSKK9cooSQ==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-arm64-gnu": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.6.1.tgz", + "integrity": "sha512-9lhc4UZstsegbNLhH0Zu6TqvDfmhGzuCWtcTFXY10VjLLUe4Mr0Ye2L3rrtHaDd/J5+tFMEuo5LTCSCMXWfUKw==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-arm64-musl": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.6.1.tgz", + "integrity": "sha512-FfoOK1yP5ksX3wwZ4Zk1NgyGHZyuRhf99j64I5oEmirV8EFT7+OhUZEnP+x17lcP/QHJNWGsoJwrz4PJ9fBEXw==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-x64-gnu": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.6.1.tgz", + "integrity": "sha512-DNGZvZDO5YF7jN5fX8ZqmGLjZEXIJRdJEdTFMhiyXqyXubBa0WVLDWSNlQ5JR2PNgDbEV1VQowhVRUh+74D+RA==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-x64-musl": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.6.1.tgz", + "integrity": "sha512-RkJVNVRM+piYy87HrKmhbexCHg3A6Z6MU0W9GHnJwBQNBeyhCJG9KDce4SAMdicQnpURggSvtbGo9xAWOfSvIQ==", + "dev": true, + "optional": true + }, + "@rollup/rollup-win32-arm64-msvc": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.6.1.tgz", + "integrity": "sha512-v2FVT6xfnnmTe3W9bJXl6r5KwJglMK/iRlkKiIFfO6ysKs0rDgz7Cwwf3tjldxQUrHL9INT/1r4VA0n9L/F1vQ==", + "dev": true, + "optional": true + }, + "@rollup/rollup-win32-ia32-msvc": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.6.1.tgz", + "integrity": "sha512-YEeOjxRyEjqcWphH9dyLbzgkF8wZSKAKUkldRY6dgNR5oKs2LZazqGB41cWJ4Iqqcy9/zqYgmzBkRoVz3Q9MLw==", + "dev": true, + "optional": true + }, + "@rollup/rollup-win32-x64-msvc": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.6.1.tgz", + "integrity": "sha512-0zfTlFAIhgz8V2G8STq8toAjsYYA6eci1hnXuyOTUFnymrtJwnS6uGKiv3v5UrPZkBlamLvrLV2iiaeqCKzb0A==", + "dev": true, + "optional": true + }, "@sinclair/typebox": { "version": "0.27.8", "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", @@ -4080,9 +4542,9 @@ "dev": true }, "@total-typescript/exercise-cli": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@total-typescript/exercise-cli/-/exercise-cli-0.4.0.tgz", - "integrity": "sha512-iSliKtEM1nShevoVQbEsnuT2D9s74taI2GIuUmIziReROUHRfj1TSQ16X0WMGPZsWp/XxX5ZvkoM4h1Eg21uLw==", + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@total-typescript/exercise-cli/-/exercise-cli-0.5.1.tgz", + "integrity": "sha512-6r7UUYyxJY4rkAeq98jW80gSAivhq9h32X3vhlehecWeVDNRZnZJyBN3U+YKmJUZccwO3d4yWXy50mvdU9M0BA==", "dev": true, "requires": { "chokidar": "^3.5.3", @@ -4102,21 +4564,6 @@ "@types/node": "*" } }, - "@types/chai": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.5.tgz", - "integrity": "sha512-mEo1sAde+UCE6b2hxn332f1g1E8WfYRu6p5SvTKr2ZKC1f7gFJXk4h5PyGP9Dt6gCaG8y8XhwnXWC6Iy2cmBng==", - "dev": true - }, - "@types/chai-subset": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@types/chai-subset/-/chai-subset-1.3.3.tgz", - "integrity": "sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==", - "dev": true, - "requires": { - "@types/chai": "*" - } - }, "@types/connect": { "version": "3.4.35", "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", @@ -4125,6 +4572,12 @@ "@types/node": "*" } }, + "@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", + "dev": true + }, "@types/express": { "version": "4.17.17", "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz", @@ -4227,56 +4680,57 @@ } }, "@vitest/expect": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-0.34.4.tgz", - "integrity": "sha512-XlMKX8HyYUqB8dsY8Xxrc64J2Qs9pKMt2Z8vFTL4mBWXJsg4yoALHzJfDWi8h5nkO4Zua4zjqtapQ/IluVkSnA==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-1.6.0.tgz", + "integrity": "sha512-ixEvFVQjycy/oNgHjqsL6AZCDduC+tflRluaHIzKIsdbzkLn2U/iBnVeJwB6HsIjQBdfMR8Z0tRxKUsvFJEeWQ==", "dev": true, "requires": { - "@vitest/spy": "0.34.4", - "@vitest/utils": "0.34.4", - "chai": "^4.3.7" + "@vitest/spy": "1.6.0", + "@vitest/utils": "1.6.0", + "chai": "^4.3.10" } }, "@vitest/runner": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-0.34.4.tgz", - "integrity": "sha512-hwwdB1StERqUls8oV8YcpmTIpVeJMe4WgYuDongVzixl5hlYLT2G8afhcdADeDeqCaAmZcSgLTLtqkjPQF7x+w==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-1.6.0.tgz", + "integrity": "sha512-P4xgwPjwesuBiHisAVz/LSSZtDjOTPYZVmNAnpHHSR6ONrf8eCJOFRvUwdHn30F5M1fxhqtl7QZQUk2dprIXAg==", "dev": true, "requires": { - "@vitest/utils": "0.34.4", - "p-limit": "^4.0.0", + "@vitest/utils": "1.6.0", + "p-limit": "^5.0.0", "pathe": "^1.1.1" } }, "@vitest/snapshot": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-0.34.4.tgz", - "integrity": "sha512-GCsh4coc3YUSL/o+BPUo7lHQbzpdttTxL6f4q0jRx2qVGoYz/cyTRDJHbnwks6TILi6560bVWoBpYC10PuTLHw==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-1.6.0.tgz", + "integrity": "sha512-+Hx43f8Chus+DCmygqqfetcAZrDJwvTj0ymqjQq4CvmpKFSTVteEOBzCusu1x2tt4OJcvBflyHUE0DZSLgEMtQ==", "dev": true, "requires": { - "magic-string": "^0.30.1", + "magic-string": "^0.30.5", "pathe": "^1.1.1", - "pretty-format": "^29.5.0" + "pretty-format": "^29.7.0" } }, "@vitest/spy": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-0.34.4.tgz", - "integrity": "sha512-PNU+fd7DUPgA3Ya924b1qKuQkonAW6hL7YUjkON3wmBwSTIlhOSpy04SJ0NrRsEbrXgMMj6Morh04BMf8k+w0g==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-1.6.0.tgz", + "integrity": "sha512-leUTap6B/cqi/bQkXUu6bQV5TZPx7pmMBKBQiI0rJA8c3pB56ZsaTbREnF7CJfmvAS4V2cXIBAh/3rVwrrCYgw==", "dev": true, "requires": { - "tinyspy": "^2.1.1" + "tinyspy": "^2.2.0" } }, "@vitest/utils": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-0.34.4.tgz", - "integrity": "sha512-yR2+5CHhp/K4ySY0Qtd+CAL9f5Yh1aXrKfAT42bq6CtlGPh92jIDDDSg7ydlRow1CP+dys4TrOrbELOyNInHSg==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-1.6.0.tgz", + "integrity": "sha512-21cPiuGMoMZwiOHa2i4LXkMkMkCGzA+MVFV70jRwHo95dL4x/ts5GZhML1QWuy7yfp3WzK3lRvZi3JnXTYqrBw==", "dev": true, "requires": { - "diff-sequences": "^29.4.3", - "loupe": "^2.3.6", - "pretty-format": "^29.5.0" + "diff-sequences": "^29.6.3", + "estree-walker": "^3.0.3", + "loupe": "^2.3.7", + "pretty-format": "^29.7.0" } }, "abab": { @@ -4311,9 +4765,9 @@ } }, "acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.2.tgz", + "integrity": "sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==", "dev": true }, "agent-base": { @@ -4445,18 +4899,18 @@ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" }, "chai": { - "version": "4.3.8", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.8.tgz", - "integrity": "sha512-vX4YvVVtxlfSZ2VecZgFUTU5qPCYsobVI2O9FmwEXBhDigYGQA6jRXCycIs1yJnnWbZ6/+a2zNIF5DfVCcJBFQ==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.4.1.tgz", + "integrity": "sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==", "dev": true, "requires": { "assertion-error": "^1.1.0", - "check-error": "^1.0.2", - "deep-eql": "^4.1.2", - "get-func-name": "^2.0.0", - "loupe": "^2.3.1", + "check-error": "^1.0.3", + "deep-eql": "^4.1.3", + "get-func-name": "^2.0.2", + "loupe": "^2.3.6", "pathval": "^1.1.1", - "type-detect": "^4.0.5" + "type-detect": "^4.0.8" } }, "chalk": { @@ -4485,10 +4939,13 @@ } }, "check-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", - "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==", - "dev": true + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", + "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", + "dev": true, + "requires": { + "get-func-name": "^2.0.2" + } }, "chokidar": { "version": "3.5.3", @@ -4589,6 +5046,17 @@ "node-fetch": "^2.6.11" } }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, "cssstyle": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-3.0.0.tgz", @@ -4708,33 +5176,33 @@ } }, "esbuild": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.19.tgz", - "integrity": "sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==", - "dev": true, - "requires": { - "@esbuild/android-arm": "0.17.19", - "@esbuild/android-arm64": "0.17.19", - "@esbuild/android-x64": "0.17.19", - "@esbuild/darwin-arm64": "0.17.19", - "@esbuild/darwin-x64": "0.17.19", - "@esbuild/freebsd-arm64": "0.17.19", - "@esbuild/freebsd-x64": "0.17.19", - "@esbuild/linux-arm": "0.17.19", - "@esbuild/linux-arm64": "0.17.19", - "@esbuild/linux-ia32": "0.17.19", - "@esbuild/linux-loong64": "0.17.19", - "@esbuild/linux-mips64el": "0.17.19", - "@esbuild/linux-ppc64": "0.17.19", - "@esbuild/linux-riscv64": "0.17.19", - "@esbuild/linux-s390x": "0.17.19", - "@esbuild/linux-x64": "0.17.19", - "@esbuild/netbsd-x64": "0.17.19", - "@esbuild/openbsd-x64": "0.17.19", - "@esbuild/sunos-x64": "0.17.19", - "@esbuild/win32-arm64": "0.17.19", - "@esbuild/win32-ia32": "0.17.19", - "@esbuild/win32-x64": "0.17.19" + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.8.tgz", + "integrity": "sha512-l7iffQpT2OrZfH2rXIp7/FkmaeZM0vxbxN9KfiCwGYuZqzMg/JdvX26R31Zxn/Pxvsrg3Y9N6XTcnknqDyyv4w==", + "dev": true, + "requires": { + "@esbuild/android-arm": "0.19.8", + "@esbuild/android-arm64": "0.19.8", + "@esbuild/android-x64": "0.19.8", + "@esbuild/darwin-arm64": "0.19.8", + "@esbuild/darwin-x64": "0.19.8", + "@esbuild/freebsd-arm64": "0.19.8", + "@esbuild/freebsd-x64": "0.19.8", + "@esbuild/linux-arm": "0.19.8", + "@esbuild/linux-arm64": "0.19.8", + "@esbuild/linux-ia32": "0.19.8", + "@esbuild/linux-loong64": "0.19.8", + "@esbuild/linux-mips64el": "0.19.8", + "@esbuild/linux-ppc64": "0.19.8", + "@esbuild/linux-riscv64": "0.19.8", + "@esbuild/linux-s390x": "0.19.8", + "@esbuild/linux-x64": "0.19.8", + "@esbuild/netbsd-x64": "0.19.8", + "@esbuild/openbsd-x64": "0.19.8", + "@esbuild/sunos-x64": "0.19.8", + "@esbuild/win32-arm64": "0.19.8", + "@esbuild/win32-ia32": "0.19.8", + "@esbuild/win32-x64": "0.19.8" } }, "escape-html": { @@ -4772,6 +5240,15 @@ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true }, + "estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dev": true, + "requires": { + "@types/estree": "^1.0.0" + } + }, "esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", @@ -4783,6 +5260,23 @@ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==" }, + "execa": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", + "dev": true, + "requires": { + "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" + } + }, "express": { "version": "4.18.2", "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", @@ -4899,9 +5393,9 @@ "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==" }, "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "dev": true, "optional": true }, @@ -4911,9 +5405,9 @@ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, "get-func-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", - "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", + "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", "dev": true }, "get-intrinsic": { @@ -4927,6 +5421,12 @@ "has-symbols": "^1.0.3" } }, + "get-stream": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "dev": true + }, "glob-parent": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", @@ -5056,6 +5556,12 @@ } } }, + "human-signals": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", + "dev": true + }, "iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", @@ -5132,6 +5638,18 @@ "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", "dev": true }, + "is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -5204,10 +5722,14 @@ "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" }, "local-pkg": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.4.3.tgz", - "integrity": "sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==", - "dev": true + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.5.0.tgz", + "integrity": "sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==", + "dev": true, + "requires": { + "mlly": "^1.4.2", + "pkg-types": "^1.0.3" + } }, "loose-envify": { "version": "1.4.0", @@ -5218,18 +5740,18 @@ } }, "loupe": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz", - "integrity": "sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==", + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", + "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", "dev": true, "requires": { - "get-func-name": "^2.0.0" + "get-func-name": "^2.0.1" } }, "magic-string": { - "version": "0.30.3", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.3.tgz", - "integrity": "sha512-B7xGbll2fG/VjP+SWg4sX3JynwIU0mjoTc6MPpKNuIvftk6u6vqhDnk1R80b8C2GBR6ywqy+1DcKBrevBg+bmw==", + "version": "0.30.10", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.10.tgz", + "integrity": "sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==", "dev": true, "requires": { "@jridgewell/sourcemap-codec": "^1.4.15" @@ -5250,6 +5772,12 @@ "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, "merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", @@ -5289,6 +5817,12 @@ "mime-db": "1.52.0" } }, + "mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "dev": true + }, "mlly": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.4.2.tgz", @@ -5307,9 +5841,9 @@ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, "nanoid": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", - "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", "dev": true }, "negotiator": { @@ -5356,6 +5890,23 @@ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true }, + "npm-run-path": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", + "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", + "dev": true, + "requires": { + "path-key": "^4.0.0" + }, + "dependencies": { + "path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true + } + } + }, "nwsapi": { "version": "2.2.4", "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.4.tgz", @@ -5380,6 +5931,15 @@ "ee-first": "1.1.1" } }, + "onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dev": true, + "requires": { + "mimic-fn": "^4.0.0" + } + }, "optionator": { "version": "0.8.3", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", @@ -5395,9 +5955,9 @@ } }, "p-limit": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", - "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-5.0.0.tgz", + "integrity": "sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==", "dev": true, "requires": { "yocto-queue": "^1.0.0" @@ -5436,6 +5996,12 @@ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, "path-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", @@ -5487,12 +6053,12 @@ } }, "postcss": { - "version": "8.4.23", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.23.tgz", - "integrity": "sha512-bQ3qMcpF6A/YjR55xtoTr0jGOlnPOKAIMdOWiv0EIT6HVPEaJiJB4NLljSbiHoC2RX7DN5Uvjtpbg1NPdwv1oA==", + "version": "8.4.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.32.tgz", + "integrity": "sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==", "dev": true, "requires": { - "nanoid": "^3.3.6", + "nanoid": "^3.3.7", "picocolors": "^1.0.0", "source-map-js": "^1.0.2" } @@ -5628,9 +6194,9 @@ "requires": {} }, "react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", "dev": true }, "react-select": { @@ -5702,11 +6268,23 @@ "dev": true }, "rollup": { - "version": "3.23.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.23.0.tgz", - "integrity": "sha512-h31UlwEi7FHihLe1zbk+3Q7z1k/84rb9BSwmBSr/XjOCEaBJ2YyedQDuM0t/kfOS0IxM+vk1/zI9XxYj9V+NJQ==", + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.6.1.tgz", + "integrity": "sha512-jZHaZotEHQaHLgKr8JnQiDT1rmatjgKlMekyksz+yk9jt/8z9quNjnKNRoaM0wd9DC2QKXjmWWuDYtM3jfF8pQ==", "dev": true, "requires": { + "@rollup/rollup-android-arm-eabi": "4.6.1", + "@rollup/rollup-android-arm64": "4.6.1", + "@rollup/rollup-darwin-arm64": "4.6.1", + "@rollup/rollup-darwin-x64": "4.6.1", + "@rollup/rollup-linux-arm-gnueabihf": "4.6.1", + "@rollup/rollup-linux-arm64-gnu": "4.6.1", + "@rollup/rollup-linux-arm64-musl": "4.6.1", + "@rollup/rollup-linux-x64-gnu": "4.6.1", + "@rollup/rollup-linux-x64-musl": "4.6.1", + "@rollup/rollup-win32-arm64-msvc": "4.6.1", + "@rollup/rollup-win32-ia32-msvc": "4.6.1", + "@rollup/rollup-win32-x64-msvc": "4.6.1", "fsevents": "~2.3.2" } }, @@ -5795,6 +6373,21 @@ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, "side-channel": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", @@ -5811,6 +6404,12 @@ "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", "dev": true }, + "signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true + }, "sisteransi": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", @@ -5842,18 +6441,32 @@ "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" }, "std-env": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.3.3.tgz", - "integrity": "sha512-Rz6yejtVyWnVjC1RFvNmYL10kgjC49EOghxWn0RFqlCHGFpQx+Xe7yW3I4ceK1SGrWIGMjD5Kbue8W/udkbMJg==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.6.0.tgz", + "integrity": "sha512-aFZ19IgVmhdB2uX599ve2kE6BIE3YMnQ6Gp6BURhW/oIzpXGKr878TQfAQZn1+i0Flcc/UKUy1gOlcfaUBCryg==", + "dev": true + }, + "strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", "dev": true }, "strip-literal": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-1.0.1.tgz", - "integrity": "sha512-QZTsipNpa2Ppr6v1AmJHESqJ3Uz247MUS0OjrnnZjFAvEoWqxuyFuXn2xLgMtRnijJShAa1HL0gtJyUs7u7n3Q==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-2.1.0.tgz", + "integrity": "sha512-Op+UycaUt/8FbN/Z2TWPBLge3jWrP3xj10f3fnYxf052bKuS3EKs1ZQcVGjnEMdsNVAM+plXRdmjrZ/KgG3Skw==", "dev": true, "requires": { - "acorn": "^8.8.2" + "js-tokens": "^9.0.0" + }, + "dependencies": { + "js-tokens": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.0.tgz", + "integrity": "sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==", + "dev": true + } } }, "stylis": { @@ -5881,21 +6494,21 @@ "dev": true }, "tinybench": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.5.0.tgz", - "integrity": "sha512-kRwSG8Zx4tjF9ZiyH4bhaebu+EDz1BOx9hOigYHlUW4xxI/wKIUQUqo018UlU4ar6ATPBsaMrdbKZ+tmPdohFA==", + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.5.1.tgz", + "integrity": "sha512-65NKvSuAVDP/n4CqH+a9w2kTlLReS9vhsAP06MWx+/89nMinJyB2icyl58RIcqCmIggpojIGeuJGhjU1aGMBSg==", "dev": true }, "tinypool": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-0.7.0.tgz", - "integrity": "sha512-zSYNUlYSMhJ6Zdou4cJwo/p7w5nmAH17GRfU/ui3ctvjXFErXXkruT4MWW6poDeXgCaIBlGLrfU6TbTXxyGMww==", + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-0.8.4.tgz", + "integrity": "sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==", "dev": true }, "tinyspy": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-2.1.1.tgz", - "integrity": "sha512-XPJL2uSzcOyBMky6OFrusqWlzfFrXtE0hPuMgW8A2HmaqrPo4ZQHRN/V0QXN3FSjKxpsbRrFc5LI7KOwBsT1/w==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-2.2.1.tgz", + "integrity": "sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==", "dev": true }, "to-fast-properties": { @@ -5970,15 +6583,15 @@ } }, "typescript": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", - "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", + "version": "5.4.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", + "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", "dev": true }, "ufo": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.3.0.tgz", - "integrity": "sha512-bRn3CsoojyNStCZe0BG0Mt4Nr/4KF+rhFlnNXybgqt5pXHNFRlqinSoQaTrGyzE4X8aHplSb+TorH+COin9Yxw==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.3.2.tgz", + "integrity": "sha512-o+ORpgGwaYQXgqGDwd+hkS4PuZ3QnmqMMxRuajK/a38L6fTpcE5GPIfrf+L/KemFzfUpeUQc1rRS1iDBozvnFA==", "dev": true }, "universalify": { @@ -6025,29 +6638,28 @@ "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==" }, "vite": { - "version": "4.3.8", - "resolved": "https://registry.npmjs.org/vite/-/vite-4.3.8.tgz", - "integrity": "sha512-uYB8PwN7hbMrf4j1xzGDk/lqjsZvCDbt/JC5dyfxc19Pg8kRm14LinK/uq+HSLNswZEoKmweGdtpbnxRtrAXiQ==", + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.0.6.tgz", + "integrity": "sha512-MD3joyAEBtV7QZPl2JVVUai6zHms3YOmLR+BpMzLlX2Yzjfcc4gTgNi09d/Rua3F4EtC8zdwPU8eQYyib4vVMQ==", "dev": true, "requires": { - "esbuild": "^0.17.5", - "fsevents": "~2.3.2", - "postcss": "^8.4.23", - "rollup": "^3.21.0" + "esbuild": "^0.19.3", + "fsevents": "~2.3.3", + "postcss": "^8.4.32", + "rollup": "^4.2.0" } }, "vite-node": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-0.34.4.tgz", - "integrity": "sha512-ho8HtiLc+nsmbwZMw8SlghESEE3KxJNp04F/jPUCLVvaURwt0d+r9LxEqCX5hvrrOQ0GSyxbYr5ZfRYhQ0yVKQ==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-1.6.0.tgz", + "integrity": "sha512-de6HJgzC+TFzOu0NTC4RAIsyf/DY/ibWDYQUcuEA84EMHhcefTUGkjFHKKEJhQN4A+6I0u++kr3l36ZF2d7XRw==", "dev": true, "requires": { "cac": "^6.7.14", "debug": "^4.3.4", - "mlly": "^1.4.0", "pathe": "^1.1.1", "picocolors": "^1.0.0", - "vite": "^3.0.0 || ^4.0.0" + "vite": "^5.0.0" }, "dependencies": { "debug": { @@ -6096,34 +6708,30 @@ } }, "vitest": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-0.34.4.tgz", - "integrity": "sha512-SE/laOsB6995QlbSE6BtkpXDeVNLJc1u2LHRG/OpnN4RsRzM3GQm4nm3PQCK5OBtrsUqnhzLdnT7se3aeNGdlw==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-1.6.0.tgz", + "integrity": "sha512-H5r/dN06swuFnzNFhq/dnz37bPXnq8xB2xB5JOVk8K09rUtoeNN+LHWkoQ0A/i3hvbUKKcCei9KpbxqHMLhLLA==", "dev": true, "requires": { - "@types/chai": "^4.3.5", - "@types/chai-subset": "^1.3.3", - "@types/node": "*", - "@vitest/expect": "0.34.4", - "@vitest/runner": "0.34.4", - "@vitest/snapshot": "0.34.4", - "@vitest/spy": "0.34.4", - "@vitest/utils": "0.34.4", - "acorn": "^8.9.0", - "acorn-walk": "^8.2.0", - "cac": "^6.7.14", - "chai": "^4.3.7", + "@vitest/expect": "1.6.0", + "@vitest/runner": "1.6.0", + "@vitest/snapshot": "1.6.0", + "@vitest/spy": "1.6.0", + "@vitest/utils": "1.6.0", + "acorn-walk": "^8.3.2", + "chai": "^4.3.10", "debug": "^4.3.4", - "local-pkg": "^0.4.3", - "magic-string": "^0.30.1", + "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.3.3", - "strip-literal": "^1.0.1", - "tinybench": "^2.5.0", - "tinypool": "^0.7.0", - "vite": "^3.1.0 || ^4.0.0 || ^5.0.0-0", - "vite-node": "0.34.4", + "std-env": "^3.5.0", + "strip-literal": "^2.0.0", + "tinybench": "^2.5.1", + "tinypool": "^0.8.3", + "vite": "^5.0.0", + "vite-node": "1.6.0", "why-is-node-running": "^2.2.2" }, "dependencies": { @@ -6195,6 +6803,15 @@ "webidl-conversions": "^7.0.0" } }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, "why-is-node-running": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.2.2.tgz", diff --git a/package.json b/package.json index 91fb7bc..f02e972 100644 --- a/package.json +++ b/package.json @@ -5,13 +5,13 @@ "author": "Matt Pocock ", "license": "GPL", "devDependencies": { - "@total-typescript/exercise-cli": "^0.4.0", + "@total-typescript/exercise-cli": "^0.5.1", "cross-fetch": "^3.1.5", "jsdom": "^21.1.1", "prettier": "^2.8.7", - "typescript": "^5.2.2", + "typescript": "^5.4.5", "vite-tsconfig-paths": "^4.0.7", - "vitest": "^0.34.4" + "vitest": "^1.6.0" }, "scripts": { "exercise": "tt-cli run", @@ -25,8 +25,8 @@ "s-09": "tt-cli run 09 --solution", "e-10": "tt-cli run 10", "s-10": "tt-cli run 10 --solution", - "e-18": "npm run exercise -- 18", - "s-18": "npm run solution -- 18", + "e-18": "tt-cli run 18", + "s-18": "tt-cli run 18 --solution", "e-19": "tt-cli run 19", "s-19": "tt-cli run 19 --solution", "e-20": "tt-cli run 20", @@ -162,7 +162,23 @@ "e-74": "tt-cli run 74", "s-74": "tt-cli run 74 --solution", "e-76": "tt-cli run 76", - "s-76": "tt-cli run 76 --solution" + "s-76": "tt-cli run 76 --solution", + "e-01": "tt-cli run 01", + "s-01": "tt-cli run 01 --solution", + "e-02": "tt-cli run 02", + "s-02": "tt-cli run 02 --solution", + "e-53": "tt-cli run 53", + "s-53": "tt-cli run 53 --solution", + "e-64.5": "tt-cli run 64.5", + "s-64.5": "tt-cli run 64.5 --solution", + "e-67.5": "tt-cli run 67.5", + "s-67.5": "tt-cli run 67.5 --solution", + "e-72": "tt-cli run 72", + "s-72": "tt-cli run 72 --solution", + "e-75": "tt-cli run 75", + "s-75": "tt-cli run 75 --solution", + "e-77": "tt-cli run 77", + "s-77": "tt-cli run 77 --solution" }, "dependencies": { "@tanstack/react-query": "^4.29.12", From 6074eb4c3109d56e4caee8a2155bb2f0bbe5b186 Mon Sep 17 00:00:00 2001 From: Matt Pocock Date: Mon, 6 May 2024 11:48:28 +0100 Subject: [PATCH 04/36] Added renovate --- .github/workflows/renovate-checks.yml | 31 +++++++++++++++++++++++++++ renovate.json | 17 +++++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 .github/workflows/renovate-checks.yml create mode 100644 renovate.json diff --git a/.github/workflows/renovate-checks.yml b/.github/workflows/renovate-checks.yml new file mode 100644 index 0000000..670845f --- /dev/null +++ b/.github/workflows/renovate-checks.yml @@ -0,0 +1,31 @@ +name: Renovate Checks +on: + push: + branches: + - "renovate/**" + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Checkout Main + uses: actions/checkout@v4 + with: + ref: main + path: main + + - name: Checkout Branch + uses: actions/checkout@v4 + with: + path: branch + + - name: Install Dependencies in Main + run: (cd main && pnpm install) + - name: Install Dependencies in Branch + run: (cd branch && pnpm install) + - name: Create Snapshot In Main + run: (cd main && npx tt-cli take-snapshot ./snap.md) + - name: Copy Snapshot To Branch + run: cp main/snap.md branch/snap.md + - name: Compare Snapshot In Branch + run: (cd branch && npx tt-cli compare-snapshot ./snap.md) diff --git a/renovate.json b/renovate.json new file mode 100644 index 0000000..1c0166f --- /dev/null +++ b/renovate.json @@ -0,0 +1,17 @@ +{ + "$schema": "https://docs.renovatebot.com/renovate-schema.json", + "extends": ["config:base"], + "packageRules": [ + { + "packagePatterns": ["*"], + "excludePackagePatterns": [ + "typescript", + "vitest", + "react", + "@types/react", + "@total-typescript/exercise-cli" + ], + "enabled": false + } + ] +} From 3ec6af2ecc80a6a2c8b2e6ea4ff71631ef297953 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 6 May 2024 10:49:30 +0000 Subject: [PATCH 05/36] Update dependency @total-typescript/exercise-cli to ^0.6.0 --- package-lock.json | 18 +++++++++--------- package.json | 2 +- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/package-lock.json b/package-lock.json index df881f6..cdd013a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -21,7 +21,7 @@ "zod": "^3.21.4" }, "devDependencies": { - "@total-typescript/exercise-cli": "^0.5.1", + "@total-typescript/exercise-cli": "^0.6.0", "cross-fetch": "^3.1.5", "jsdom": "^21.1.1", "prettier": "^2.8.7", @@ -841,9 +841,9 @@ } }, "node_modules/@total-typescript/exercise-cli": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/@total-typescript/exercise-cli/-/exercise-cli-0.5.1.tgz", - "integrity": "sha512-6r7UUYyxJY4rkAeq98jW80gSAivhq9h32X3vhlehecWeVDNRZnZJyBN3U+YKmJUZccwO3d4yWXy50mvdU9M0BA==", + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@total-typescript/exercise-cli/-/exercise-cli-0.6.0.tgz", + "integrity": "sha512-lsXWyD7Gam5g1GcPPaxSdKI5b+xMcWD9/a+rD6+HCXo0/5g0Fj8tZLl7285ujCZ8Yf99KKcoT5sQEz5L1UPNyw==", "dev": true, "dependencies": { "chokidar": "^3.5.3", @@ -857,8 +857,8 @@ "tt-cli": "dist/bin.js" }, "peerDependencies": { - "typescript": "^5", - "vitest": "^1" + "typescript": "*", + "vitest": "*" } }, "node_modules/@types/body-parser": { @@ -4542,9 +4542,9 @@ "dev": true }, "@total-typescript/exercise-cli": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/@total-typescript/exercise-cli/-/exercise-cli-0.5.1.tgz", - "integrity": "sha512-6r7UUYyxJY4rkAeq98jW80gSAivhq9h32X3vhlehecWeVDNRZnZJyBN3U+YKmJUZccwO3d4yWXy50mvdU9M0BA==", + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@total-typescript/exercise-cli/-/exercise-cli-0.6.0.tgz", + "integrity": "sha512-lsXWyD7Gam5g1GcPPaxSdKI5b+xMcWD9/a+rD6+HCXo0/5g0Fj8tZLl7285ujCZ8Yf99KKcoT5sQEz5L1UPNyw==", "dev": true, "requires": { "chokidar": "^3.5.3", diff --git a/package.json b/package.json index f02e972..f97b1b4 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "author": "Matt Pocock ", "license": "GPL", "devDependencies": { - "@total-typescript/exercise-cli": "^0.5.1", + "@total-typescript/exercise-cli": "^0.6.0", "cross-fetch": "^3.1.5", "jsdom": "^21.1.1", "prettier": "^2.8.7", From 66273543f9ed825f1ae359e3002b5ed681822cdd Mon Sep 17 00:00:00 2001 From: Matt Pocock Date: Mon, 6 May 2024 17:02:00 +0100 Subject: [PATCH 06/36] Fixed CI --- .github/workflows/renovate-checks.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/renovate-checks.yml b/.github/workflows/renovate-checks.yml index 670845f..d56979c 100644 --- a/.github/workflows/renovate-checks.yml +++ b/.github/workflows/renovate-checks.yml @@ -20,9 +20,9 @@ jobs: path: branch - name: Install Dependencies in Main - run: (cd main && pnpm install) + run: (cd main && npm install) - name: Install Dependencies in Branch - run: (cd branch && pnpm install) + run: (cd branch && npm install) - name: Create Snapshot In Main run: (cd main && npx tt-cli take-snapshot ./snap.md) - name: Copy Snapshot To Branch From 2907e8ed66e04b22af9d3ade14d8e26a4eea15ec Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 6 May 2024 16:02:49 +0000 Subject: [PATCH 07/36] Update react monorepo --- package-lock.json | 78 ++++++++++++++++++++--------------------------- 1 file changed, 33 insertions(+), 45 deletions(-) diff --git a/package-lock.json b/package-lock.json index cdd013a..58fafb3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -937,19 +937,18 @@ "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==" }, "node_modules/@types/react": { - "version": "18.2.8", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.8.tgz", - "integrity": "sha512-lTyWUNrd8ntVkqycEEplasWy2OxNlShj3zqS0LuB1ENUGis5HodmhM7DtCoUGbxj3VW/WsGA0DUhpG6XrM7gPA==", + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.1.tgz", + "integrity": "sha512-V0kuGBX3+prX+DQ/7r2qsv1NsdfnCLnTgnRJ1pYnxykBhGMz+qj+box5lq7XsO5mtZsBqpjwwTu/7wszPfMBcw==", "dependencies": { "@types/prop-types": "*", - "@types/scheduler": "*", "csstype": "^3.0.2" } }, "node_modules/@types/react-dom": { - "version": "18.2.4", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.4.tgz", - "integrity": "sha512-G2mHoTMTL4yoydITgOGwWdWMVd8sNgyEP85xVmMKAPUBwQWm9wBPQUmvbeF4V3WBY1P7mmL4BkjQ0SqUpf1snw==", + "version": "18.3.0", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.0.tgz", + "integrity": "sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==", "dependencies": { "@types/react": "*" } @@ -962,11 +961,6 @@ "@types/react": "*" } }, - "node_modules/@types/scheduler": { - "version": "0.16.3", - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.3.tgz", - "integrity": "sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==" - }, "node_modules/@types/send": { "version": "0.17.1", "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.1.tgz", @@ -3008,9 +3002,9 @@ } }, "node_modules/react": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", - "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", + "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", "dependencies": { "loose-envify": "^1.1.0" }, @@ -3019,15 +3013,15 @@ } }, "node_modules/react-dom": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", - "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", "dependencies": { "loose-envify": "^1.1.0", - "scheduler": "^0.23.0" + "scheduler": "^0.23.2" }, "peerDependencies": { - "react": "^18.2.0" + "react": "^18.3.1" } }, "node_modules/react-hook-form": { @@ -3237,9 +3231,9 @@ } }, "node_modules/scheduler": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", - "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", "dependencies": { "loose-envify": "^1.1.0" } @@ -4631,19 +4625,18 @@ "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==" }, "@types/react": { - "version": "18.2.8", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.8.tgz", - "integrity": "sha512-lTyWUNrd8ntVkqycEEplasWy2OxNlShj3zqS0LuB1ENUGis5HodmhM7DtCoUGbxj3VW/WsGA0DUhpG6XrM7gPA==", + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.1.tgz", + "integrity": "sha512-V0kuGBX3+prX+DQ/7r2qsv1NsdfnCLnTgnRJ1pYnxykBhGMz+qj+box5lq7XsO5mtZsBqpjwwTu/7wszPfMBcw==", "requires": { "@types/prop-types": "*", - "@types/scheduler": "*", "csstype": "^3.0.2" } }, "@types/react-dom": { - "version": "18.2.4", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.4.tgz", - "integrity": "sha512-G2mHoTMTL4yoydITgOGwWdWMVd8sNgyEP85xVmMKAPUBwQWm9wBPQUmvbeF4V3WBY1P7mmL4BkjQ0SqUpf1snw==", + "version": "18.3.0", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.0.tgz", + "integrity": "sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==", "requires": { "@types/react": "*" } @@ -4656,11 +4649,6 @@ "@types/react": "*" } }, - "@types/scheduler": { - "version": "0.16.3", - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.3.tgz", - "integrity": "sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==" - }, "@types/send": { "version": "0.17.1", "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.1.tgz", @@ -6171,20 +6159,20 @@ } }, "react": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", - "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", + "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", "requires": { "loose-envify": "^1.1.0" } }, "react-dom": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", - "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", "requires": { "loose-envify": "^1.1.0", - "scheduler": "^0.23.0" + "scheduler": "^0.23.2" } }, "react-hook-form": { @@ -6323,9 +6311,9 @@ } }, "scheduler": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", - "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", "requires": { "loose-envify": "^1.1.0" } From 6b2489a43ea7e0be7917779e334c272da8d51271 Mon Sep 17 00:00:00 2001 From: Matt Pocock Date: Tue, 7 May 2024 08:09:29 +0100 Subject: [PATCH 08/36] Upgrade dependencies --- package-lock.json | 14 +- package.json | 2 +- snap.md | 1397 --------------------------------------------- 3 files changed, 8 insertions(+), 1405 deletions(-) delete mode 100644 snap.md diff --git a/package-lock.json b/package-lock.json index cdd013a..f59a352 100644 --- a/package-lock.json +++ b/package-lock.json @@ -21,7 +21,7 @@ "zod": "^3.21.4" }, "devDependencies": { - "@total-typescript/exercise-cli": "^0.6.0", + "@total-typescript/exercise-cli": "^0.6.1", "cross-fetch": "^3.1.5", "jsdom": "^21.1.1", "prettier": "^2.8.7", @@ -841,9 +841,9 @@ } }, "node_modules/@total-typescript/exercise-cli": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/@total-typescript/exercise-cli/-/exercise-cli-0.6.0.tgz", - "integrity": "sha512-lsXWyD7Gam5g1GcPPaxSdKI5b+xMcWD9/a+rD6+HCXo0/5g0Fj8tZLl7285ujCZ8Yf99KKcoT5sQEz5L1UPNyw==", + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/@total-typescript/exercise-cli/-/exercise-cli-0.6.1.tgz", + "integrity": "sha512-6s/zzQ1LomYt3tlnHkTTZfavmn23Ye6p1ixgir08A9buDiKHnSxwpx1ErthJokyPhDsKZg5kK4OgE5gxI6znOQ==", "dev": true, "dependencies": { "chokidar": "^3.5.3", @@ -4542,9 +4542,9 @@ "dev": true }, "@total-typescript/exercise-cli": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/@total-typescript/exercise-cli/-/exercise-cli-0.6.0.tgz", - "integrity": "sha512-lsXWyD7Gam5g1GcPPaxSdKI5b+xMcWD9/a+rD6+HCXo0/5g0Fj8tZLl7285ujCZ8Yf99KKcoT5sQEz5L1UPNyw==", + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/@total-typescript/exercise-cli/-/exercise-cli-0.6.1.tgz", + "integrity": "sha512-6s/zzQ1LomYt3tlnHkTTZfavmn23Ye6p1ixgir08A9buDiKHnSxwpx1ErthJokyPhDsKZg5kK4OgE5gxI6znOQ==", "dev": true, "requires": { "chokidar": "^3.5.3", diff --git a/package.json b/package.json index f97b1b4..728c316 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "author": "Matt Pocock ", "license": "GPL", "devDependencies": { - "@total-typescript/exercise-cli": "^0.6.0", + "@total-typescript/exercise-cli": "^0.6.1", "cross-fetch": "^3.1.5", "jsdom": "^21.1.1", "prettier": "^2.8.7", diff --git a/snap.md b/snap.md deleted file mode 100644 index 50a7aa0..0000000 --- a/snap.md +++ /dev/null @@ -1,1397 +0,0 @@ -# Root TSConfig Snapshot - -```txt -,src/01-introduction/03-navigating-jsx-types.problem.tsx(5,21): error TS17000: JSX attributes must only be assigned a non-empty 'expression'. -src/02-components/04-typing-components.problem.tsx(4,29): error TS18046: 'props' is of type 'unknown'. -src/02-components/04-typing-components.problem.tsx(10,8): error TS2578: Unused '@ts-expect-error' directive. -src/02-components/04-typing-components.problem.tsx(13,15): error TS2322: Type '{ className: string; }' is not assignable to type 'IntrinsicAttributes'. - Property 'className' does not exist on type 'IntrinsicAttributes'. -src/02-components/05-typing-components-as-functions.problem.tsx(7,1): error TS2578: Unused '@ts-expect-error' directive. -src/02-components/05-typing-components-as-functions.problem.tsx(17,8): error TS2786: 'Button' cannot be used as a JSX component. - Its type '(props: Props) => { ohDear: string; }' is not a valid JSX element type. - Type '(props: Props) => { ohDear: string; }' is not assignable to type '(props: any, deprecatedLegacyContext?: any) => ReactNode'. - Type '{ ohDear: string; }' is not assignable to type 'ReactNode'. -src/02-components/06-typing-children.problem.tsx(4,25): error TS2339: Property 'children' does not exist on type '{}'. -src/02-components/06-typing-children.problem.tsx(10,8): error TS2578: Unused '@ts-expect-error' directive. -src/02-components/06-typing-children.problem.tsx(12,8): error TS2559: Type '{ children: string; }' has no properties in common with type 'IntrinsicAttributes'. -src/02-components/07-typing-onclick-handlers.problem.tsx(8,47): error TS2339: Property 'onClick' does not exist on type 'ButtonProps'. -src/02-components/08-using-html-props.problem.tsx(3,26): error TS2339: Property 'className' does not exist on type '{}'. -src/02-components/08-using-html-props.problem.tsx(10,18): error TS2322: Type '{ onClick: () => void; type: string; }' is not assignable to type 'IntrinsicAttributes'. - Property 'onClick' does not exist on type 'IntrinsicAttributes'. -src/02-components/09-html-props-with-one-changed.problem.tsx(23,28): error TS2344: Type 'false' does not satisfy the constraint 'true'. -src/02-components/10-extracting-props-from-custom-components.problem.tsx(18,3): error TS2344: Type 'false' does not satisfy the constraint 'true'. -src/03-hooks/11-use-state.problem.tsx(8,30): error TS2339: Property 'id' does not exist on type 'never'. -src/03-hooks/11-use-state.problem.tsx(8,39): error TS2339: Property 'value' does not exist on type 'never'. -src/03-hooks/11-use-state.problem.tsx(13,13): error TS2322: Type '{ id: number; value: string; }' is not assignable to type 'never'. -src/03-hooks/11-use-state.problem.tsx(14,13): error TS2322: Type '{ id: number; value: string; }' is not assignable to type 'never'. -src/03-hooks/12-use-state-with-undefined.problem.ts(18,15): error TS2345: Argument of type '{ id: number; name: string; }' is not assignable to parameter of type 'SetStateAction'. - Type '{ id: number; name: string; }' provides no match for the signature '(prevState: undefined): undefined'. -src/03-hooks/12-use-state-with-undefined.problem.ts(22,23): error TS2344: Type 'false' does not satisfy the constraint 'true'. -src/03-hooks/13-use-state-excess-properties.problem.tsx(22,17): error TS2578: Unused '@ts-expect-error' directive. -src/03-hooks/13-use-state-excess-properties.problem.tsx(40,17): error TS2578: Unused '@ts-expect-error' directive. -src/03-hooks/14-use-effect.problem.ts(6,7): error TS2322: Type 'Timeout' is not assignable to type 'void | Destructor'. -src/03-hooks/15-use-callback.problem.tsx(5,31): error TS2344: Type 'string' does not satisfy the constraint 'Function'. -src/03-hooks/15-use-callback.problem.tsx(6,6): error TS7006: Parameter 'buttonName' implicitly has an 'any' type. -src/03-hooks/15-use-callback.problem.tsx(12,22): error TS2344: Type 'false' does not satisfy the constraint 'true'. -src/03-hooks/15-use-callback.problem.tsx(16,30): error TS2349: This expression is not callable. - Type 'String' has no call signatures. -src/03-hooks/15-use-callback.problem.tsx(17,30): error TS2349: This expression is not callable. - Type 'String' has no call signatures. -src/03-hooks/15-use-callback.problem.tsx(18,30): error TS2349: This expression is not callable. - Type 'String' has no call signatures. -src/03-hooks/16-use-memo.problem.tsx(5,52): error TS2345: Argument of type '() => string[]' is not assignable to parameter of type '() => () => string[]'. - Type 'string[]' is not assignable to type '() => string[]'. - Type 'string[]' provides no match for the signature '(): string[]'. -src/03-hooks/16-use-memo.problem.tsx(12,22): error TS2344: Type 'false' does not satisfy the constraint 'true'. -src/03-hooks/17-use-ref-basics.problem.tsx(7,5): error TS2322: Type '"Random value!"' is not assignable to type 'undefined'. -src/03-hooks/18-element-refs.explainer.tsx(19,7): error TS2322: Type 'undefined' is not assignable to type 'HTMLDivElement | null'. -src/03-hooks/19-use-ref-with-elements.problem.tsx(6,15): error TS2322: Type 'MutableRefObject' is not assignable to type 'LegacyRef | undefined'. - Type 'MutableRefObject' is not assignable to type 'RefObject'. - Types of property 'current' are incompatible. - Type 'HTMLDivElement | undefined' is not assignable to type 'HTMLDivElement | null'. - Type 'undefined' is not assignable to type 'HTMLDivElement | null'. -src/03-hooks/20-why-is-my-ref-readonly.problem.tsx(7,7): error TS2540: Cannot assign to 'current' because it is a read-only property. -src/03-hooks/20-why-is-my-ref-readonly.solution.tsx(10,18): error TS2540: Cannot assign to 'current' because it is a read-only property. -src/03-hooks/21-use-reducer.problem.ts(5,11): error TS18046: 'action' is of type 'unknown'. -src/03-hooks/21-use-reducer.problem.ts(7,23): error TS18046: 'state' is of type 'unknown'. -src/03-hooks/21-use-reducer.problem.ts(7,37): error TS18046: 'action' is of type 'unknown'. -src/03-hooks/21-use-reducer.problem.ts(9,23): error TS18046: 'state' is of type 'unknown'. -src/03-hooks/21-use-reducer.problem.ts(9,37): error TS18046: 'action' is of type 'unknown'. -src/03-hooks/21-use-reducer.problem.ts(21,1): error TS2578: Unused '@ts-expect-error' directive. -src/03-hooks/21-use-reducer.problem.ts(24,1): error TS2578: Unused '@ts-expect-error' directive. -src/03-hooks/21-use-reducer.problem.ts(27,1): error TS2578: Unused '@ts-expect-error' directive. -src/04-advanced-props/22-discriminated-union-props.problem.tsx(34,9): error TS2578: Unused '@ts-expect-error' directive. -src/04-advanced-props/23-destructuring-discriminated-unions.problem.tsx(19,34): error TS2339: Property 'title' does not exist on type 'ModalProps'. -src/04-advanced-props/23-destructuring-discriminated-unions.solution.1.tsx(18,31): error TS2339: Property 'title' does not exist on type '{} | { title: string; }'. - Property 'title' does not exist on type '{}'. -src/04-advanced-props/24-discriminated-union-with-other-props.problem.tsx(21,36): error TS2339: Property 'buttonColor' does not exist on type '{ variant: "no-title"; }'. -src/04-advanced-props/24-discriminated-union-with-other-props.problem.tsx(34,36): error TS2339: Property 'buttonColor' does not exist on type '{ variant: "title"; title: string; }'. -src/04-advanced-props/24-discriminated-union-with-other-props.problem.tsx(50,9): error TS2322: Type '{ buttonColor: string; variant: "no-title"; title: string; }' is not assignable to type 'IntrinsicAttributes & ModalProps'. - Property 'buttonColor' does not exist on type 'IntrinsicAttributes & { variant: "no-title"; }'. -src/04-advanced-props/24-discriminated-union-with-other-props.problem.tsx(52,9): error TS2578: Unused '@ts-expect-error' directive. -src/04-advanced-props/24-discriminated-union-with-other-props.problem.tsx(55,44): error TS2322: Type '{ variant: "title"; title: string; buttonColor: string; }' is not assignable to type 'IntrinsicAttributes & ModalProps'. - Property 'buttonColor' does not exist on type 'IntrinsicAttributes & { variant: "title"; title: string; }'. -src/04-advanced-props/25-toggle-props.problem.tsx(38,5): error TS2578: Unused '@ts-expect-error' directive. -src/04-advanced-props/25-toggle-props.problem.tsx(42,4): error TS2578: Unused '@ts-expect-error' directive. -src/04-advanced-props/27-either-all-these-props-or-none.problem.tsx(40,8): error TS2578: Unused '@ts-expect-error' directive. -src/04-advanced-props/27-either-all-these-props-or-none.problem.tsx(43,8): error TS2578: Unused '@ts-expect-error' directive. -src/04-advanced-props/28-passing-react-components-vs-passing-react-nodes.problem.tsx(15,30): error TS2345: Argument of type 'ReactNode' is not assignable to parameter of type '(value: number, index: number, array: number[]) => ReactNode'. - Type 'undefined' is not assignable to type '(value: number, index: number, array: number[]) => ReactNode'. -src/04-advanced-props/28-passing-react-components-vs-passing-react-nodes.problem.tsx(22,19): error TS2322: Type '(index: any) => Element' is not assignable to type 'ReactNode'. -src/04-advanced-props/28-passing-react-components-vs-passing-react-nodes.problem.tsx(22,21): error TS7006: Parameter 'index' implicitly has an 'any' type. -src/04-advanced-props/28-passing-react-components-vs-passing-react-nodes.problem.tsx(23,30): error TS2344: Type 'false' does not satisfy the constraint 'true'. -src/04-advanced-props/28-passing-react-components-vs-passing-react-nodes.problem.tsx(28,19): error TS2322: Type '(index: any) => null' is not assignable to type 'ReactNode'. -src/04-advanced-props/28-passing-react-components-vs-passing-react-nodes.problem.tsx(28,21): error TS7006: Parameter 'index' implicitly has an 'any' type. -src/04-advanced-props/28-passing-react-components-vs-passing-react-nodes.problem.tsx(33,9): error TS2578: Unused '@ts-expect-error' directive. -src/04-advanced-props/28-passing-react-components-vs-passing-react-nodes.problem.tsx(37,9): error TS2322: Type '(index: any) => any' is not assignable to type 'ReactNode'. -src/04-advanced-props/28-passing-react-components-vs-passing-react-nodes.problem.tsx(37,21): error TS7006: Parameter 'index' implicitly has an 'any' type. -src/04-advanced-props/31-as-const.problem.ts(13,10): error TS2344: Type 'false' does not satisfy the constraint 'true'. -src/04-advanced-props/31-as-const.problem.ts(14,10): error TS2344: Type 'false' does not satisfy the constraint 'true'. -src/04-advanced-props/32-satisfies-vs-annotation-vs-as.problem.tsx(6,3): error TS2578: Unused '@ts-expect-error' directive. -src/04-advanced-props/32-satisfies-vs-annotation-vs-as.problem.tsx(11,4): error TS2322: Type '{ children: string; type: string; illegalProperty: string; }' is not assignable to type 'DetailedHTMLProps, HTMLButtonElement>'. - Type '{ children: string; type: string; illegalProperty: string; }' is not assignable to type 'ButtonHTMLAttributes'. - Types of property 'type' are incompatible. - Type 'string' is not assignable to type '"button" | "submit" | "reset" | undefined'. -src/04-advanced-props/32-satisfies-vs-annotation-vs-as.problem.tsx(16,20): error TS2344: Type 'false' does not satisfy the constraint 'true'. -src/04-advanced-props/33-prop-groups-with-variants.problem.tsx(7,5): error TS2578: Unused '@ts-expect-error' directive. -src/04-advanced-props/33-prop-groups-with-variants.problem.tsx(13,5): error TS2578: Unused '@ts-expect-error' directive. -src/04-advanced-props/33-prop-groups-with-variants.problem.tsx(19,5): error TS2578: Unused '@ts-expect-error' directive. -src/04-advanced-props/33-prop-groups-with-variants.problem.tsx(48,11): error TS2322: Type '{ children: string; className: string; type: string; illegalProperty: string; } | { children: string; className: string; type: string; illegalProperty: string; } | { children: string; className: string; type: string; illegalProperty: string; }' is not assignable to type 'DetailedHTMLProps, HTMLButtonElement>'. - Type '{ children: string; className: string; type: string; illegalProperty: string; }' is not assignable to type 'DetailedHTMLProps, HTMLButtonElement>'. - Type '{ children: string; className: string; type: string; illegalProperty: string; }' is not assignable to type 'ButtonHTMLAttributes'. - Types of property 'type' are incompatible. - Type 'string' is not assignable to type '"button" | "submit" | "reset" | undefined'. -src/05-generics/36-type-helpers-with-constraints.problem.tsx(14,3): error TS2578: Unused '@ts-expect-error' directive. -src/05-generics/36-type-helpers-with-constraints.problem.tsx(16,3): error TS2578: Unused '@ts-expect-error' directive. -src/05-generics/36-type-helpers-with-constraints.problem.tsx(18,3): error TS2578: Unused '@ts-expect-error' directive. -src/05-generics/37-generic-localstorage-hook.problem.ts(28,30): error TS2558: Expected 0 type arguments, but got 1. -src/05-generics/37-generic-localstorage-hook.problem.ts(35,24): error TS2344: Type 'false' does not satisfy the constraint 'true'. -src/05-generics/37-generic-localstorage-hook.problem.ts(41,5): error TS2578: Unused '@ts-expect-error' directive. -src/05-generics/38-generic-hooks.problem.ts(23,10): error TS2344: Type 'false' does not satisfy the constraint 'true'. -src/05-generics/38-generic-hooks.problem.ts(25,5): error TS2344: Type 'false' does not satisfy the constraint 'true'. -src/05-generics/38-generic-hooks.problem.ts(35,10): error TS2344: Type 'false' does not satisfy the constraint 'true'. -src/05-generics/38-generic-hooks.problem.ts(36,10): error TS2344: Type 'false' does not satisfy the constraint 'true'. -src/05-generics/39-generic-props.problem.tsx(41,30): error TS2344: Type 'false' does not satisfy the constraint 'true'. -src/05-generics/39-generic-props.problem.tsx(45,17): error TS2578: Unused '@ts-expect-error' directive. -src/05-generics/40-generic-class-components.problem.tsx(37,30): error TS2344: Type 'false' does not satisfy the constraint 'true'. -src/05-generics/40-generic-class-components.problem.tsx(41,17): error TS2578: Unused '@ts-expect-error' directive. -src/05-generics/41-passing-types-to-components.problem.tsx(29,5): error TS2578: Unused '@ts-expect-error' directive. -src/05-generics/41-passing-types-to-components.problem.tsx(32,26): error TS2344: Type 'false' does not satisfy the constraint 'true'. -src/05-generics/41-passing-types-to-components.problem.tsx(33,23): error TS2339: Property 'name' does not exist on type 'number'. -src/05-generics/41-passing-types-to-components.problem.tsx(44,9): error TS2578: Unused '@ts-expect-error' directive. -src/05-generics/41-passing-types-to-components.problem.tsx(51,26): error TS2344: Type 'false' does not satisfy the constraint 'true'. -src/05-generics/42-generic-inference-through-multiple-helpers.problem.tsx(44,26): error TS2344: Type 'false' does not satisfy the constraint 'true'. -src/05-generics/43-inference-flow-with-constraints.problem.ts(42,1): error TS2578: Unused '@ts-expect-error' directive. -src/05-generics/43-inference-flow-with-constraints.problem.ts(52,5): error TS2578: Unused '@ts-expect-error' directive. -src/05-generics/43-inference-flow-with-constraints.problem.ts(60,5): error TS2344: Type 'false' does not satisfy the constraint 'true'. -src/06-advanced-hooks/45-tuple-return-type.problem.ts(23,10): error TS2344: Type 'false' does not satisfy the constraint 'true'. -src/06-advanced-hooks/45-tuple-return-type.problem.ts(24,10): error TS2344: Type 'false' does not satisfy the constraint 'true'. -src/06-advanced-hooks/46-required-context.problem.tsx(33,55): error TS2558: Expected 0 type arguments, but got 1. -src/06-advanced-hooks/46-required-context.problem.tsx(37,57): error TS2558: Expected 0 type arguments, but got 1. -src/06-advanced-hooks/46-required-context.problem.tsx(42,16): error TS2554: Expected 1 arguments, but got 0. -src/06-advanced-hooks/46-required-context.problem.tsx(45,5): error TS2344: Type 'false' does not satisfy the constraint 'true'. -src/06-advanced-hooks/46-required-context.problem.tsx(53,17): error TS2554: Expected 1 arguments, but got 0. -src/06-advanced-hooks/46-required-context.problem.tsx(56,5): error TS2344: Type 'false' does not satisfy the constraint 'true'. -src/06-advanced-hooks/46-required-context.problem.tsx(70,21): error TS2322: Type '{ name: string; }' is not assignable to type 'null'. -src/06-advanced-hooks/46-required-context.problem.tsx(72,11): error TS2322: Type '{ primaryColor: string; }' is not assignable to type 'null'. -src/06-advanced-hooks/47-unions-in-usestate.problem.tsx(45,3): error TS2578: Unused '@ts-expect-error' directive. -src/06-advanced-hooks/47-unions-in-usestate.problem.tsx(62,22): error TS2344: Type 'false' does not satisfy the constraint 'true'. -src/06-advanced-hooks/48-discriminated-unions-in-usestate.problem.tsx(28,37): error TS2353: Object literal may only specify known properties, and 'error' does not exist in type 'SetStateAction<{ status: string; }>'. -src/06-advanced-hooks/48-discriminated-unions-in-usestate.problem.tsx(36,3): error TS2578: Unused '@ts-expect-error' directive. -src/06-advanced-hooks/48-discriminated-unions-in-usestate.problem.tsx(46,25): error TS2339: Property 'error' does not exist on type '{ status: string; }'. -src/06-advanced-hooks/49-discriminated-tuples-from-custom-hooks.problem.tsx(46,25): error TS18048: 'value' is possibly 'undefined'. -src/06-advanced-hooks/49-discriminated-tuples-from-custom-hooks.problem.tsx(46,31): error TS2339: Property 'message' does not exist on type 'Error | { title: string; }'. - Property 'message' does not exist on type '{ title: string; }'. -src/06-advanced-hooks/49-discriminated-tuples-from-custom-hooks.problem.tsx(49,16): error TS18048: 'value' is possibly 'undefined'. -src/06-advanced-hooks/49-discriminated-tuples-from-custom-hooks.problem.tsx(49,22): error TS2339: Property 'title' does not exist on type 'Error | { title: string; }'. - Property 'title' does not exist on type 'Error'. -src/06-advanced-hooks/50-use-state-overloads.problem.ts(36,10): error TS2344: Type 'false' does not satisfy the constraint 'true'. -src/06-advanced-hooks/51-function-overloads-in-hooks.problem.ts(37,22): error TS2554: Expected 1 arguments, but got 0. -src/06-advanced-hooks/51-function-overloads-in-hooks.problem.ts(40,10): error TS2344: Type 'false' does not satisfy the constraint 'true'. -src/06-advanced-hooks/51-function-overloads-in-hooks.problem.ts(42,5): error TS2344: Type 'false' does not satisfy the constraint 'true'. -src/06-advanced-hooks/52-currying-hooks.problem.ts(38,22): error TS2344: Type 'false' does not satisfy the constraint 'true'. -src/07-types-deep-dive/54-understanding-jsx-element.problem.tsx(52,3): error TS2322: Type 'string' is not assignable to type 'ReactElement>'. -src/07-types-deep-dive/54-understanding-jsx-element.solution.tsx(52,3): error TS2322: Type 'string' is not assignable to type 'ReactElement>'. -src/07-types-deep-dive/55-strongly-typing-children.problem.tsx(32,3): error TS2322: Type 'Element' is not assignable to type 'OptionType'. - Type 'ReactElement' is not assignable to type '{ __brand: "OPTION_TYPE"; } & ReactPortal'. - Property '__brand' is missing in type 'ReactElement' but required in type '{ __brand: "OPTION_TYPE"; }'. -src/07-types-deep-dive/55-strongly-typing-children.solution.tsx(32,3): error TS2322: Type 'Element' is not assignable to type 'OptionType'. - Type 'ReactElement' is not assignable to type '{ __brand: "OPTION_TYPE"; } & ReactPortal'. - Property '__brand' is missing in type 'ReactElement' but required in type '{ __brand: "OPTION_TYPE"; }'. -src/07-types-deep-dive/56-understanding-jsx-intrinsic-elements.problem.tsx(30,1): error TS2339: Property 'myNewElement' does not exist on type 'JSX.IntrinsicElements'. -src/07-types-deep-dive/56-understanding-jsx-intrinsic-elements.solution.tsx(30,1): error TS2339: Property 'myNewElement' does not exist on type 'JSX.IntrinsicElements'. -src/07-types-deep-dive/58-appending-to-global-namespace.problem.ts(15,20): error TS2344: Type 'false' does not satisfy the constraint 'true'. -src/07-types-deep-dive/58-appending-to-global-namespace.problem.ts(15,32): error TS2694: Namespace 'React' has no exported member 'MyInterface'. -src/07-types-deep-dive/59-declaration-merging-in-global-namespace.problem.ts(25,3): error TS2344: Type 'false' does not satisfy the constraint 'true'. -src/07-types-deep-dive/60-add-new-global-element.problem.tsx(14,3): error TS2339: Property 'something' does not exist on type 'JSX.IntrinsicElements'. -src/07-types-deep-dive/60-add-new-global-element.problem.tsx(14,23): error TS2339: Property 'something' does not exist on type 'JSX.IntrinsicElements'. -src/07-types-deep-dive/62-add-attribute-to-all-elements.problem.tsx(10,8): error TS2322: Type '{ testId: string; }' is not assignable to type 'DetailedHTMLProps, HTMLDivElement>'. - Property 'testId' does not exist on type 'DetailedHTMLProps, HTMLDivElement>'. -src/07-types-deep-dive/62-add-attribute-to-all-elements.problem.tsx(11,10): error TS2322: Type '{ testId: string; }' is not assignable to type 'DetailedHTMLProps, HTMLAudioElement>'. - Property 'testId' does not exist on type 'DetailedHTMLProps, HTMLAudioElement>'. -src/07-types-deep-dive/62-add-attribute-to-all-elements.problem.tsx(12,10): error TS2322: Type '{ testId: string; }' is not assignable to type 'DetailedHTMLProps, HTMLVideoElement>'. - Property 'testId' does not exist on type 'DetailedHTMLProps, HTMLVideoElement>'. -src/07-types-deep-dive/62-add-attribute-to-all-elements.problem.tsx(13,6): error TS2322: Type '{ testId: string; }' is not assignable to type 'DetailedHTMLProps, HTMLAnchorElement>'. - Property 'testId' does not exist on type 'DetailedHTMLProps, HTMLAnchorElement>'. -src/07-types-deep-dive/62-add-attribute-to-all-elements.problem.tsx(14,9): error TS2322: Type '{ testId: string; }' is not assignable to type 'DetailedHTMLProps, HTMLElement>'. - Property 'testId' does not exist on type 'DetailedHTMLProps, HTMLElement>'. -src/07-types-deep-dive/62-add-attribute-to-all-elements.problem.tsx(15,12): error TS2322: Type '{ testId: string; }' is not assignable to type 'DetailedHTMLProps, HTMLElement>'. - Property 'testId' does not exist on type 'DetailedHTMLProps, HTMLElement>'. -src/08-advanced-patterns/63-lazy-load-component.problem.tsx(20,44): error TS2345: Argument of type 'unknown' is not assignable to parameter of type '() => Promise<{ default: ComponentType; }>'. -src/08-advanced-patterns/63-lazy-load-component.problem.tsx(30,62): error TS2322: Type '{ loader: () => Promise; id: string; }' is not assignable to type 'IntrinsicAttributes & Props'. - Property 'id' does not exist on type 'IntrinsicAttributes & Props'. -src/08-advanced-patterns/63-lazy-load-component.problem.tsx(38,4): error TS2578: Unused '@ts-expect-error' directive. -src/08-advanced-patterns/64-render-props.problem.tsx(43,9): error TS7006: Parameter 'props' implicitly has an 'any' type. -src/08-advanced-patterns/64-render-props.problem.tsx(44,28): error TS2344: Type 'false' does not satisfy the constraint 'true'. -src/08-advanced-patterns/64.5-record-of-components-with-same-props.problem.tsx(16,10): error TS7006: Parameter 'props' implicitly has an 'any' type. -src/08-advanced-patterns/64.5-record-of-components-with-same-props.problem.tsx(19,12): error TS7006: Parameter 'props' implicitly has an 'any' type. -src/08-advanced-patterns/64.5-record-of-components-with-same-props.problem.tsx(22,14): error TS7006: Parameter 'props' implicitly has an 'any' type. -src/08-advanced-patterns/64.5-record-of-components-with-same-props.problem.tsx(28,21): error TS7053: Element implicitly has an 'any' type because expression of type 'any' can't be used to index type '{ text: (props: any) => Element; number: (props: any) => Element; password: (props: any) => Element; }'. -src/08-advanced-patterns/64.5-record-of-components-with-same-props.problem.tsx(28,32): error TS18046: 'props' is of type 'unknown'. -src/08-advanced-patterns/64.5-record-of-components-with-same-props.problem.tsx(29,25): error TS2698: Spread types may only be created from object types. -src/08-advanced-patterns/64.5-record-of-components-with-same-props.problem.tsx(34,5): error TS2322: Type '{ type: string; onChange: (e: any) => void; }' is not assignable to type 'IntrinsicAttributes'. - Property 'type' does not exist on type 'IntrinsicAttributes'. -src/08-advanced-patterns/64.5-record-of-components-with-same-props.problem.tsx(35,16): error TS7006: Parameter 'e' implicitly has an 'any' type. -src/08-advanced-patterns/64.5-record-of-components-with-same-props.problem.tsx(37,26): error TS2344: Type 'false' does not satisfy the constraint 'true'. -src/08-advanced-patterns/64.5-record-of-components-with-same-props.problem.tsx(40,10): error TS2322: Type '{ type: string; }' is not assignable to type 'IntrinsicAttributes'. - Property 'type' does not exist on type 'IntrinsicAttributes'. -src/08-advanced-patterns/64.5-record-of-components-with-same-props.problem.tsx(41,10): error TS2322: Type '{ type: string; }' is not assignable to type 'IntrinsicAttributes'. - Property 'type' does not exist on type 'IntrinsicAttributes'. -src/08-advanced-patterns/65-forward-ref-with-generics.explainer.1.tsx(52,30): error TS2344: Type 'false' does not satisfy the constraint 'true'. -src/08-advanced-patterns/65-forward-ref-with-generics.explainer.2.tsx(26,28): error TS2344: Type 'false' does not satisfy the constraint 'true'. -src/08-advanced-patterns/65-forward-ref-with-generics.explainer.3.tsx(31,30): error TS2344: Type 'false' does not satisfy the constraint 'true'. -src/08-advanced-patterns/66-forward-ref-as-local-function.problem.tsx(37,21): error TS7006: Parameter 'row' implicitly has an 'any' type. -src/08-advanced-patterns/66-forward-ref-as-local-function.problem.tsx(38,30): error TS2344: Type 'false' does not satisfy the constraint 'true'. -src/08-advanced-patterns/66-forward-ref-as-local-function.problem.tsx(43,9): error TS2578: Unused '@ts-expect-error' directive. -src/08-advanced-patterns/66-forward-ref-as-local-function.problem.tsx(46,21): error TS7006: Parameter 'row' implicitly has an 'any' type. -src/08-advanced-patterns/67-hoc.problem.tsx(28,5): error TS2578: Unused '@ts-expect-error' directive. -src/08-advanced-patterns/67.5-hoc-for-generic-components.problem.tsx(40,26): error TS2344: Type 'false' does not satisfy the constraint 'true'. -src/08-advanced-patterns/67.5-hoc-for-generic-components.problem.tsx(48,26): error TS2344: Type 'false' does not satisfy the constraint 'true'. -src/08-advanced-patterns/69-as-prop.problem.tsx(41,9): error TS2578: Unused '@ts-expect-error' directive. -src/08-advanced-patterns/69-as-prop.problem.tsx(48,19): error TS7006: Parameter 'e' implicitly has an 'any' type. -src/08-advanced-patterns/69-as-prop.problem.tsx(50,13): error TS2344: Type 'false' does not satisfy the constraint 'true'. -src/08-advanced-patterns/69-as-prop.problem.tsx(67,9): error TS2578: Unused '@ts-expect-error' directive. -src/08-advanced-patterns/69-as-prop.problem.tsx(74,19): error TS7006: Parameter 'e' implicitly has an 'any' type. -src/08-advanced-patterns/69-as-prop.problem.tsx(75,30): error TS2344: Type 'false' does not satisfy the constraint 'true'. -src/08-advanced-patterns/69-as-prop.solution.1.tsx(12,32): error TS2304: Cannot find name 'AsProps'. -src/08-advanced-patterns/69-as-prop.solution.1.tsx(26,9): error TS2578: Unused '@ts-expect-error' directive. -src/08-advanced-patterns/69-as-prop.solution.1.tsx(33,19): error TS7006: Parameter 'e' implicitly has an 'any' type. -src/08-advanced-patterns/69-as-prop.solution.1.tsx(35,13): error TS2344: Type 'false' does not satisfy the constraint 'true'. -src/08-advanced-patterns/69-as-prop.solution.1.tsx(52,9): error TS2578: Unused '@ts-expect-error' directive. -src/08-advanced-patterns/69-as-prop.solution.1.tsx(59,19): error TS7006: Parameter 'e' implicitly has an 'any' type. -src/08-advanced-patterns/69-as-prop.solution.1.tsx(60,30): error TS2344: Type 'false' does not satisfy the constraint 'true'. -src/08-advanced-patterns/70-as-prop-with-custom-components.problem.tsx(67,16): error TS2322: Type '(props: { thisIsRequired: boolean;}) => JSX.Element' is not assignable to type 'keyof IntrinsicElements'. -src/08-advanced-patterns/70-as-prop-with-custom-components.problem.tsx(69,9): error TS2322: Type '(props: { thisIsRequired: boolean;}) => JSX.Element' is not assignable to type 'keyof IntrinsicElements'. -src/08-advanced-patterns/70-as-prop-with-custom-components.problem.tsx(70,9): error TS2578: Unused '@ts-expect-error' directive. -src/08-advanced-patterns/71-as-prop-with-default.problem.tsx(20,8): error TS2741: Property 'as' is missing in type '{ doesNotExist: true; }' but required in type '{ as: ElementType; }'. -src/08-advanced-patterns/71-as-prop-with-default.problem.tsx(21,9): error TS2578: Unused '@ts-expect-error' directive. -src/08-advanced-patterns/71-as-prop-with-default.problem.tsx(25,8): error TS2741: Property 'as' is missing in type '{ onClick: (e: any) => void; }' but required in type '{ as: ElementType; }'. -src/08-advanced-patterns/71-as-prop-with-default.problem.tsx(27,19): error TS7006: Parameter 'e' implicitly has an 'any' type. -src/08-advanced-patterns/71-as-prop-with-default.problem.tsx(29,13): error TS2344: Type 'false' does not satisfy the constraint 'true'. -src/08-advanced-patterns/71-as-prop-with-default.solution.2.tsx(12,11): error TS2322: Type 'Omit<{ as?: T | undefined; } & ComponentPropsWithoutRef, "as">' is not assignable to type 'IntrinsicAttributes & ((ClassAttributes & AnchorHTMLAttributes & ClassAttributes<...> & LabelHTMLAttributes<...> & ClassAttributes<...> & HTMLAttributes<...>) | LibraryManagedAttributes<...>)'. - Type 'Omit<{ as?: T | undefined; } & ComponentPropsWithoutRef, "as">' is not assignable to type 'IntrinsicAttributes & LibraryManagedAttributes & AnchorHTMLAttributes & ClassAttributes<...> & LabelHTMLAttributes<...> & ClassAttributes<...> & HTMLAttributes<...>>'. - Type 'Omit<{ as?: T | undefined; } & ComponentPropsWithoutRef, "as">' is not assignable to type 'LibraryManagedAttributes & AnchorHTMLAttributes & ClassAttributes<...> & LabelHTMLAttributes<...> & ClassAttributes<...> & HTMLAttributes<...>>'. -src/08-advanced-patterns/71-as-prop-with-default.solution.2.tsx(29,19): error TS7006: Parameter 'e' implicitly has an 'any' type. -src/08-advanced-patterns/71-as-prop-with-default.solution.2.tsx(31,13): error TS2344: Type 'false' does not satisfy the constraint 'true'. -src/08-advanced-patterns/71-as-prop-with-default.solution.2.tsx(47,9): error TS2322: Type '"button"' is not assignable to type 'PermittedElements | undefined'. -src/08-advanced-patterns/71-as-prop-with-default.solution.2.tsx(48,9): error TS2578: Unused '@ts-expect-error' directive. -src/08-advanced-patterns/71-as-prop-with-default.solution.2.tsx(53,9): error TS2322: Type '"button"' is not assignable to type 'PermittedElements | undefined'. -src/08-advanced-patterns/71-as-prop-with-default.solution.2.tsx(57,13): error TS2344: Type 'false' does not satisfy the constraint 'true'. -src/08-advanced-patterns/71-as-prop-with-default.solution.2.tsx(79,19): error TS2322: Type '(props: { thisIsRequired: boolean;}, ref: React.ForwardedRef) => JSX.Element' is not assignable to type 'PermittedElements | undefined'. -src/08-advanced-patterns/71-as-prop-with-default.solution.2.tsx(81,9): error TS2322: Type '(props: { thisIsRequired: boolean;}, ref: React.ForwardedRef) => JSX.Element' is not assignable to type 'PermittedElements | undefined'. -src/08-advanced-patterns/71-as-prop-with-default.solution.2.tsx(82,9): error TS2578: Unused '@ts-expect-error' directive. -src/08-advanced-patterns/72-as-prop-with-forward-ref.problem.tsx(42,9): error TS2578: Unused '@ts-expect-error' directive. -src/08-advanced-patterns/72-as-prop-with-forward-ref.problem.tsx(80,9): error TS2578: Unused '@ts-expect-error' directive. -src/08-advanced-patterns/72-as-prop-with-forward-ref.problem.tsx(95,13): error TS2344: Type 'false' does not satisfy the constraint 'true'. -src/08-advanced-patterns/72-as-prop-with-forward-ref.problem.tsx(121,25): error TS2322: Type '{ as: ForwardRefExoticComponent<{ thisIsRequired: boolean; } & RefAttributes>; thisIsRequired: true; }' is not assignable to type 'IntrinsicAttributes & { as?: ElementType | undefined; } & Omit, HTMLAnchorElement>, "ref"> & RefAttributes<...>'. - Property 'thisIsRequired' does not exist on type 'IntrinsicAttributes & { as?: ElementType | undefined; } & Omit, HTMLAnchorElement>, "ref"> & RefAttributes<...>'. -src/08-advanced-patterns/72-as-prop-with-forward-ref.problem.tsx(128,8): error TS2578: Unused '@ts-expect-error' directive. -src/08-advanced-patterns/72-as-prop-with-forward-ref.problem.tsx(131,35): error TS2322: Type '{ as: ForwardRefExoticComponent<{ thisIsRequired: boolean; } & RefAttributes>; ref: RefObject; thisIsRequired: true; }' is not assignable to type 'IntrinsicAttributes & { as?: ElementType | undefined; } & Omit, HTMLAnchorElement>, "ref"> & RefAttributes<...>'. - Property 'thisIsRequired' does not exist on type 'IntrinsicAttributes & { as?: ElementType | undefined; } & Omit, HTMLAnchorElement>, "ref"> & RefAttributes<...>'. -src/08-advanced-patterns/72-as-prop-with-forward-ref.problem.tsx(135,9): error TS2578: Unused '@ts-expect-error' directive. -src/08-advanced-patterns/72-as-prop-with-forward-ref.problem.tsx(137,9): error TS2322: Type '{ as: ForwardRefExoticComponent<{ thisIsRequired: boolean; } & RefAttributes>; ref: RefObject; thisIsRequired: true; }' is not assignable to type 'IntrinsicAttributes & { as?: ElementType | undefined; } & Omit, HTMLAnchorElement>, "ref"> & RefAttributes<...>'. - Property 'thisIsRequired' does not exist on type 'IntrinsicAttributes & { as?: ElementType | undefined; } & Omit, HTMLAnchorElement>, "ref"> & RefAttributes<...>'. -src/09-external-libraries/73-react-hook-form.problem.tsx(70,28): error TS2344: Type 'false' does not satisfy the constraint 'true'. -src/09-external-libraries/73-react-hook-form.problem.tsx(75,8): error TS2578: Unused '@ts-expect-error' directive. -src/09-external-libraries/74-react-hook-form-wrapper.problem.tsx(33,3): error TS2578: Unused '@ts-expect-error' directive. -src/09-external-libraries/74-react-hook-form-wrapper.problem.tsx(46,5): error TS2344: Type 'boolean' does not satisfy the constraint 'true'. -src/09-external-libraries/75-react-select.problem.tsx(10,24): error TS7006: Parameter 'props' implicitly has an 'any' type. -src/09-external-libraries/75-react-select.problem.tsx(33,16): error TS7006: Parameter 'option' implicitly has an 'any' type. -src/09-external-libraries/75-react-select.problem.tsx(36,26): error TS2344: Type 'false' does not satisfy the constraint 'true'. -src/09-external-libraries/75-react-select.problem.tsx(43,16): error TS7006: Parameter 'option' implicitly has an 'any' type. -src/09-external-libraries/75-react-select.problem.tsx(45,26): error TS2344: Type 'false' does not satisfy the constraint 'true'. -src/09-external-libraries/77-react-query-wrapper.problem.ts(30,12): error TS2344: Type 'false' does not satisfy the constraint 'true'. -src/09-external-libraries/77-react-query-wrapper.problem.ts(44,10): error TS2344: Type 'false' does not satisfy the constraint 'true'. -src/09-external-libraries/77-react-query-wrapper.problem.ts(51,12): error TS2344: Type 'false' does not satisfy the constraint 'true'. -, -``` - - - -# Vitest Snapshot - -```json -{ - "success": false, - "testResults": [ - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/01-introduction/01-react-in-typescript.explainer.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/01-introduction/02-typescript-in-react-frameworks.explainer.ts" - }, - { - "assertionResults": [], - "status": "failed", - "message": "Transform failed with 1 error:\n/Users/matt/repos/total-typescript/react-typescript-tutorial/src/01-introduction/03-navigating-jsx-types.problem.tsx:5:21: ERROR: Unexpected \"}\"", - "name": "src/01-introduction/03-navigating-jsx-types.problem.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/01-introduction/03-navigating-jsx-types.solution.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/02-components/04-typing-components.problem.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/02-components/04-typing-components.solution.1.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/02-components/04-typing-components.solution.2.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/02-components/04-typing-components.solution.3.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/02-components/04-typing-components.solution.4.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/02-components/05-typing-components-as-functions.problem.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/02-components/05-typing-components-as-functions.solution.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/02-components/06-typing-children.problem.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/02-components/06-typing-children.solution.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/02-components/07-typing-onclick-handlers.problem.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/02-components/07-typing-onclick-handlers.solution.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/02-components/08-using-html-props.problem.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/02-components/08-using-html-props.solution.1.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/02-components/08-using-html-props.solution.2.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/02-components/09-html-props-with-one-changed.problem.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/02-components/09-html-props-with-one-changed.solution.1.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/02-components/09-html-props-with-one-changed.solution.2.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/02-components/09-html-props-with-one-changed.solution.3.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/02-components/09-html-props-with-one-changed.solution.4.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/02-components/10-extracting-props-from-custom-components.problem.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/02-components/10-extracting-props-from-custom-components.solution.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/03-hooks/11-use-state.problem.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/03-hooks/11-use-state.solution.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/03-hooks/12-use-state-with-undefined.problem.ts" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/03-hooks/12-use-state-with-undefined.solution.1.ts" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/03-hooks/12-use-state-with-undefined.solution.2.ts" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/03-hooks/13-use-state-excess-properties.problem.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/03-hooks/13-use-state-excess-properties.solution.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/03-hooks/14-use-effect.problem.ts" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/03-hooks/14-use-effect.solution.ts" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/03-hooks/15-use-callback.problem.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/03-hooks/15-use-callback.solution.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/03-hooks/16-use-memo.problem.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/03-hooks/16-use-memo.solution.1.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/03-hooks/16-use-memo.solution.2.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/03-hooks/16-use-memo.solution.3.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/03-hooks/17-use-ref-basics.problem.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/03-hooks/17-use-ref-basics.solution.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/03-hooks/18-element-refs.explainer.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/03-hooks/19-use-ref-with-elements.problem.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/03-hooks/19-use-ref-with-elements.solution.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/03-hooks/20-why-is-my-ref-readonly.problem.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/03-hooks/20-why-is-my-ref-readonly.solution.tsx" - }, - { - "assertionResults": [], - "status": "failed", - "message": "Cannot read properties of null (reading 'useReducer')", - "name": "src/03-hooks/21-use-reducer.problem.ts" - }, - { - "assertionResults": [], - "status": "failed", - "message": "Cannot read properties of null (reading 'useReducer')", - "name": "src/03-hooks/21-use-reducer.solution.1.ts" - }, - { - "assertionResults": [], - "status": "failed", - "message": "Cannot read properties of null (reading 'useReducer')", - "name": "src/03-hooks/21-use-reducer.solution.2.ts" - }, - { - "assertionResults": [], - "status": "failed", - "message": "Cannot read properties of null (reading 'useReducer')", - "name": "src/03-hooks/21-use-reducer.solution.3.ts" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/04-advanced-props/22-discriminated-union-props.problem.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/04-advanced-props/22-discriminated-union-props.solution.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/04-advanced-props/23-destructuring-discriminated-unions.problem.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/04-advanced-props/23-destructuring-discriminated-unions.solution.1.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/04-advanced-props/23-destructuring-discriminated-unions.solution.2.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/04-advanced-props/24-discriminated-union-with-other-props.problem.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/04-advanced-props/24-discriminated-union-with-other-props.solution.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/04-advanced-props/25-toggle-props.problem.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/04-advanced-props/25-toggle-props.solution.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/04-advanced-props/26-empty-object-type.explainer.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/04-advanced-props/27-either-all-these-props-or-none.problem.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/04-advanced-props/27-either-all-these-props-or-none.solution.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/04-advanced-props/28-passing-react-components-vs-passing-react-nodes.problem.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/04-advanced-props/28-passing-react-components-vs-passing-react-nodes.solution.1.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/04-advanced-props/28-passing-react-components-vs-passing-react-nodes.solution.2.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/04-advanced-props/29-variants-with-classnames.problem.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/04-advanced-props/29-variants-with-classnames.solution.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/04-advanced-props/30-partial-autocomplete.problem.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/04-advanced-props/30-partial-autocomplete.solution.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/04-advanced-props/31-as-const.problem.ts" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/04-advanced-props/31-as-const.solution.ts" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/04-advanced-props/32-satisfies-vs-annotation-vs-as.problem.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/04-advanced-props/32-satisfies-vs-annotation-vs-as.solution.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/04-advanced-props/33-prop-groups-with-variants.problem.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/04-advanced-props/33-prop-groups-with-variants.solution.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/05-generics/34-type-helpers.problem.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/05-generics/34-type-helpers.solution.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/05-generics/35-type-helpers-2.problem.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/05-generics/35-type-helpers-2.solution.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/05-generics/36-type-helpers-with-constraints.problem.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/05-generics/36-type-helpers-with-constraints.solution.1.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/05-generics/36-type-helpers-with-constraints.solution.2.tsx" - }, - { - "assertionResults": [ - { - "ancestorTitles": [ - "" - ], - "fullName": " Should let you set and get values", - "status": "passed", - "title": "Should let you set and get values", - "failureMessages": [] - }, - { - "ancestorTitles": [ - "" - ], - "fullName": " Should not let you set a value that is not the same type as the type argument passed", - "status": "passed", - "title": "Should not let you set a value that is not the same type as the type argument passed", - "failureMessages": [] - } - ], - "status": "passed", - "message": "", - "name": "src/05-generics/37-generic-localstorage-hook.problem.ts" - }, - { - "assertionResults": [ - { - "ancestorTitles": [ - "" - ], - "fullName": " Should let you set and get values", - "status": "passed", - "title": "Should let you set and get values", - "failureMessages": [] - }, - { - "ancestorTitles": [ - "" - ], - "fullName": " Should not let you set a value that is not the same type as the type argument passed", - "status": "passed", - "title": "Should not let you set a value that is not the same type as the type argument passed", - "failureMessages": [] - } - ], - "status": "passed", - "message": "", - "name": "src/05-generics/37-generic-localstorage-hook.solution.ts" - }, - { - "assertionResults": [], - "status": "failed", - "message": "Cannot read properties of null (reading 'useState')", - "name": "src/05-generics/38-generic-hooks.problem.ts" - }, - { - "assertionResults": [], - "status": "failed", - "message": "Cannot read properties of null (reading 'useState')", - "name": "src/05-generics/38-generic-hooks.solution.1.ts" - }, - { - "assertionResults": [], - "status": "failed", - "message": "Cannot read properties of null (reading 'useState')", - "name": "src/05-generics/38-generic-hooks.solution.2.ts" - }, - { - "assertionResults": [], - "status": "failed", - "message": "Cannot read properties of null (reading 'useState')", - "name": "src/05-generics/38-generic-hooks.solution.3.ts" - }, - { - "assertionResults": [], - "status": "failed", - "message": "Cannot read properties of null (reading 'useState')", - "name": "src/05-generics/38-generic-hooks.solution.4.ts" - }, - { - "assertionResults": [], - "status": "failed", - "message": "Cannot read properties of null (reading 'useState')", - "name": "src/05-generics/38-generic-hooks.solution.5.ts" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/05-generics/39-generic-props.problem.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/05-generics/39-generic-props.solution.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/05-generics/40-generic-class-components.problem.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/05-generics/40-generic-class-components.solution.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/05-generics/41-passing-types-to-components.problem.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/05-generics/41-passing-types-to-components.solution.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/05-generics/42-generic-inference-through-multiple-helpers.problem.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/05-generics/42-generic-inference-through-multiple-helpers.solution.tsx" - }, - { - "assertionResults": [], - "status": "failed", - "message": "Cannot read properties of null (reading 'useState')", - "name": "src/05-generics/43-inference-flow-with-constraints.problem.ts" - }, - { - "assertionResults": [], - "status": "failed", - "message": "Cannot read properties of null (reading 'useState')", - "name": "src/05-generics/43-inference-flow-with-constraints.solution.ts" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/05-generics/44-generics-vs-discriminated-unions.problem.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/05-generics/44-generics-vs-discriminated-unions.solution.tsx" - }, - { - "assertionResults": [], - "status": "failed", - "message": "Cannot read properties of null (reading 'useState')", - "name": "src/06-advanced-hooks/45-tuple-return-type.problem.ts" - }, - { - "assertionResults": [], - "status": "failed", - "message": "Cannot read properties of null (reading 'useState')", - "name": "src/06-advanced-hooks/45-tuple-return-type.solution.1.ts" - }, - { - "assertionResults": [], - "status": "failed", - "message": "Cannot read properties of null (reading 'useState')", - "name": "src/06-advanced-hooks/45-tuple-return-type.solution.2.ts" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/06-advanced-hooks/46-required-context.problem.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/06-advanced-hooks/46-required-context.solution.1.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/06-advanced-hooks/46-required-context.solution.2.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/06-advanced-hooks/47-unions-in-usestate.problem.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/06-advanced-hooks/47-unions-in-usestate.solution.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/06-advanced-hooks/48-discriminated-unions-in-usestate.problem.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/06-advanced-hooks/48-discriminated-unions-in-usestate.solution.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/06-advanced-hooks/49-discriminated-tuples-from-custom-hooks.problem.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/06-advanced-hooks/49-discriminated-tuples-from-custom-hooks.solution.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/06-advanced-hooks/50-use-state-overloads.problem.ts" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/06-advanced-hooks/50-use-state-overloads.solution.1.ts" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/06-advanced-hooks/50-use-state-overloads.solution.2.ts" - }, - { - "assertionResults": [], - "status": "failed", - "message": "Cannot read properties of null (reading 'useState')", - "name": "src/06-advanced-hooks/51-function-overloads-in-hooks.problem.ts" - }, - { - "assertionResults": [], - "status": "failed", - "message": "Cannot read properties of null (reading 'useState')", - "name": "src/06-advanced-hooks/51-function-overloads-in-hooks.solution.1.ts" - }, - { - "assertionResults": [], - "status": "failed", - "message": "Cannot read properties of null (reading 'useState')", - "name": "src/06-advanced-hooks/51-function-overloads-in-hooks.solution.2.ts" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/06-advanced-hooks/52-currying-hooks.problem.ts" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/06-advanced-hooks/52-currying-hooks.solution.ts" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/07-types-deep-dive/53-understand-react-namespace-export.problem.ts" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/07-types-deep-dive/53-understand-react-namespace-export.solution.ts" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/07-types-deep-dive/54-understanding-jsx-element.problem.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/07-types-deep-dive/54-understanding-jsx-element.solution.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/07-types-deep-dive/55-strongly-typing-children.problem.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/07-types-deep-dive/55-strongly-typing-children.solution.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/07-types-deep-dive/56-understanding-jsx-intrinsic-elements.problem.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/07-types-deep-dive/56-understanding-jsx-intrinsic-elements.solution.tsx" - }, - { - "assertionResults": [], - "status": "failed", - "message": "React is not defined", - "name": "src/07-types-deep-dive/57-react-component-type.explainer.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/07-types-deep-dive/58-appending-to-global-namespace.problem.ts" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/07-types-deep-dive/58-appending-to-global-namespace.solution.ts" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/07-types-deep-dive/59-declaration-merging-in-global-namespace.problem.ts" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/07-types-deep-dive/59-declaration-merging-in-global-namespace.solution.ts" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/07-types-deep-dive/60-add-new-global-element.problem.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/07-types-deep-dive/60-add-new-global-element.solution.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/07-types-deep-dive/61-html-attributes.problem.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/07-types-deep-dive/61-html-attributes.solution.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/07-types-deep-dive/62-add-attribute-to-all-elements.problem.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/07-types-deep-dive/62-add-attribute-to-all-elements.solution.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/08-advanced-patterns/63-lazy-load-component.problem.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/08-advanced-patterns/63-lazy-load-component.solution.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/08-advanced-patterns/64-render-props.problem.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/08-advanced-patterns/64-render-props.solution.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/08-advanced-patterns/64.5-record-of-components-with-same-props.problem.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/08-advanced-patterns/64.5-record-of-components-with-same-props.solution.1.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/08-advanced-patterns/64.5-record-of-components-with-same-props.solution.2.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/08-advanced-patterns/65-forward-ref-with-generics.explainer.1.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/08-advanced-patterns/65-forward-ref-with-generics.explainer.2.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/08-advanced-patterns/65-forward-ref-with-generics.explainer.3.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/08-advanced-patterns/66-forward-ref-as-local-function.problem.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/08-advanced-patterns/66-forward-ref-as-local-function.solution.1.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/08-advanced-patterns/66-forward-ref-as-local-function.solution.2.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/08-advanced-patterns/67-hoc.problem.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/08-advanced-patterns/67-hoc.solution.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/08-advanced-patterns/67.5-hoc-for-generic-components.problem.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/08-advanced-patterns/67.5-hoc-for-generic-components.solution.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/08-advanced-patterns/69-as-prop.problem.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/08-advanced-patterns/69-as-prop.solution.1.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/08-advanced-patterns/69-as-prop.solution.2.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/08-advanced-patterns/70-as-prop-with-custom-components.problem.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/08-advanced-patterns/70-as-prop-with-custom-components.solution.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/08-advanced-patterns/71-as-prop-with-default.problem.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/08-advanced-patterns/71-as-prop-with-default.solution.1.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/08-advanced-patterns/71-as-prop-with-default.solution.2.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/08-advanced-patterns/72-as-prop-with-forward-ref.problem.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/08-advanced-patterns/72-as-prop-with-forward-ref.solution.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/09-external-libraries/73-react-hook-form.problem.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/09-external-libraries/73-react-hook-form.solution.tsx" - }, - { - "assertionResults": [], - "status": "failed", - "message": "Cannot read properties of null (reading 'useRef')", - "name": "src/09-external-libraries/74-react-hook-form-wrapper.problem.tsx" - }, - { - "assertionResults": [], - "status": "failed", - "message": "Cannot read properties of null (reading 'useRef')", - "name": "src/09-external-libraries/74-react-hook-form-wrapper.solution.1.tsx" - }, - { - "assertionResults": [], - "status": "failed", - "message": "Cannot read properties of null (reading 'useRef')", - "name": "src/09-external-libraries/74-react-hook-form-wrapper.solution.2.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/09-external-libraries/75-react-select.problem.tsx" - }, - { - "assertionResults": [], - "status": "passed", - "message": "", - "name": "src/09-external-libraries/75-react-select.solution.tsx" - }, - { - "assertionResults": [], - "status": "failed", - "message": "Cannot read properties of null (reading 'useContext')", - "name": "src/09-external-libraries/76-react-query.problem.ts" - }, - { - "assertionResults": [], - "status": "failed", - "message": "Cannot read properties of null (reading 'useContext')", - "name": "src/09-external-libraries/76-react-query.solution.ts" - }, - { - "assertionResults": [], - "status": "failed", - "message": "Cannot read properties of null (reading 'useContext')", - "name": "src/09-external-libraries/77-react-query-wrapper.problem.ts" - }, - { - "assertionResults": [], - "status": "failed", - "message": "Cannot read properties of null (reading 'useContext')", - "name": "src/09-external-libraries/77-react-query-wrapper.solution.ts" - } - ] -} -``` \ No newline at end of file From 3e2f203b498b384c7f1676bb24a57a65a2296dbb Mon Sep 17 00:00:00 2001 From: Matt Pocock Date: Wed, 8 May 2024 12:14:50 +0100 Subject: [PATCH 09/36] Updated the renovate CI --- .github/workflows/renovate-checks.yml | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/.github/workflows/renovate-checks.yml b/.github/workflows/renovate-checks.yml index d56979c..fa3c642 100644 --- a/.github/workflows/renovate-checks.yml +++ b/.github/workflows/renovate-checks.yml @@ -12,20 +12,23 @@ jobs: uses: actions/checkout@v4 with: ref: main - path: main + path: repo + - name: Install Dependencies in Main + run: (cd repo && npm install) + - name: Create Snapshot In Main + run: (cd repo && npx tt-cli take-snapshot ./snap.md) + - name: Copy Snapshot To Outer Directory + run: mv repo/snap.md ./snap.md + - name: Delete Main Directory + run: rm -rf repo - name: Checkout Branch uses: actions/checkout@v4 with: - path: branch - - - name: Install Dependencies in Main - run: (cd main && npm install) + path: repo - name: Install Dependencies in Branch - run: (cd branch && npm install) - - name: Create Snapshot In Main - run: (cd main && npx tt-cli take-snapshot ./snap.md) - - name: Copy Snapshot To Branch - run: cp main/snap.md branch/snap.md + run: (cd repo && npm install) + - name: Move Snapshot To Branch + run: mv ./snap.md repo/snap.md - name: Compare Snapshot In Branch - run: (cd branch && npx tt-cli compare-snapshot ./snap.md) + run: (cd repo && npx tt-cli compare-snapshot ./snap.md) From 54289eecead4071eb2bec1b030d04e161ba0fd3a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 5 Jun 2024 15:24:10 +0000 Subject: [PATCH 10/36] chore(deps): update dependency @total-typescript/exercise-cli to ^0.7.0 --- package-lock.json | 32 ++++++++++++++++---------------- package.json | 2 +- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/package-lock.json b/package-lock.json index 4f4ba3f..a18afe4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -21,7 +21,7 @@ "zod": "^3.21.4" }, "devDependencies": { - "@total-typescript/exercise-cli": "^0.6.1", + "@total-typescript/exercise-cli": "^0.7.0", "cross-fetch": "^3.1.5", "jsdom": "^21.1.1", "prettier": "^2.8.7", @@ -841,14 +841,14 @@ } }, "node_modules/@total-typescript/exercise-cli": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/@total-typescript/exercise-cli/-/exercise-cli-0.6.1.tgz", - "integrity": "sha512-6s/zzQ1LomYt3tlnHkTTZfavmn23Ye6p1ixgir08A9buDiKHnSxwpx1ErthJokyPhDsKZg5kK4OgE5gxI6znOQ==", + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@total-typescript/exercise-cli/-/exercise-cli-0.7.0.tgz", + "integrity": "sha512-AOkIQqZZkYoydhoKmhYvENSbWlk3D8zvuEnrMF68HMyKWYpvBWL8ZscZ8d3RZbULgjYDhwfSehNHW0HSmxKTjg==", "dev": true, "dependencies": { "chokidar": "^3.5.3", "colors": "^1.4.0", - "commander": "^10.0.1", + "commander": "^12.0.0", "fast-glob": "^3.2.12", "jsonc-parser": "^3.2.0", "prompts": "^2.4.2" @@ -1396,12 +1396,12 @@ } }, "node_modules/commander": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", - "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", + "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", "dev": true, "engines": { - "node": ">=14" + "node": ">=18" } }, "node_modules/content-disposition": { @@ -4536,14 +4536,14 @@ "dev": true }, "@total-typescript/exercise-cli": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/@total-typescript/exercise-cli/-/exercise-cli-0.6.1.tgz", - "integrity": "sha512-6s/zzQ1LomYt3tlnHkTTZfavmn23Ye6p1ixgir08A9buDiKHnSxwpx1ErthJokyPhDsKZg5kK4OgE5gxI6znOQ==", + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@total-typescript/exercise-cli/-/exercise-cli-0.7.0.tgz", + "integrity": "sha512-AOkIQqZZkYoydhoKmhYvENSbWlk3D8zvuEnrMF68HMyKWYpvBWL8ZscZ8d3RZbULgjYDhwfSehNHW0HSmxKTjg==", "dev": true, "requires": { "chokidar": "^3.5.3", "colors": "^1.4.0", - "commander": "^10.0.1", + "commander": "^12.0.0", "fast-glob": "^3.2.12", "jsonc-parser": "^3.2.0", "prompts": "^2.4.2" @@ -4980,9 +4980,9 @@ } }, "commander": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", - "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", + "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", "dev": true }, "content-disposition": { diff --git a/package.json b/package.json index 728c316..b87f68b 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "author": "Matt Pocock ", "license": "GPL", "devDependencies": { - "@total-typescript/exercise-cli": "^0.6.1", + "@total-typescript/exercise-cli": "^0.7.0", "cross-fetch": "^3.1.5", "jsdom": "^21.1.1", "prettier": "^2.8.7", From f31d14aa0ad8e39cbfb4819ea88f0642129706a3 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 20 Jun 2024 19:31:53 +0000 Subject: [PATCH 11/36] chore(deps): update dependency typescript to v5.5.2 --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index a18afe4..621be84 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3578,9 +3578,9 @@ } }, "node_modules/typescript": { - "version": "5.4.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", - "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.2.tgz", + "integrity": "sha512-NcRtPEOsPFFWjobJEtfihkLCZCXZt/os3zf8nTxjVH3RvTSxjrCamJpbExGvYOF+tFHc3pA65qpdwPbzjohhew==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -6571,9 +6571,9 @@ } }, "typescript": { - "version": "5.4.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", - "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.2.tgz", + "integrity": "sha512-NcRtPEOsPFFWjobJEtfihkLCZCXZt/os3zf8nTxjVH3RvTSxjrCamJpbExGvYOF+tFHc3pA65qpdwPbzjohhew==", "dev": true }, "ufo": { From 2ecd8fde6952aec3ead7105e66ec4d2fd12f1afd Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 1 Jul 2024 22:03:07 +0000 Subject: [PATCH 12/36] chore(deps): update dependency typescript to v5.5.3 --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 621be84..08b3a39 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3578,9 +3578,9 @@ } }, "node_modules/typescript": { - "version": "5.5.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.2.tgz", - "integrity": "sha512-NcRtPEOsPFFWjobJEtfihkLCZCXZt/os3zf8nTxjVH3RvTSxjrCamJpbExGvYOF+tFHc3pA65qpdwPbzjohhew==", + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.3.tgz", + "integrity": "sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -6571,9 +6571,9 @@ } }, "typescript": { - "version": "5.5.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.2.tgz", - "integrity": "sha512-NcRtPEOsPFFWjobJEtfihkLCZCXZt/os3zf8nTxjVH3RvTSxjrCamJpbExGvYOF+tFHc3pA65qpdwPbzjohhew==", + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.3.tgz", + "integrity": "sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ==", "dev": true }, "ufo": { From 8f6c58e3b60137b0483b7a8903975eaf0c50b891 Mon Sep 17 00:00:00 2001 From: Matt Pocock Date: Sat, 6 Jul 2024 07:52:52 +0100 Subject: [PATCH 13/36] Added section repos workflow --- .github/workflows/section-repos.yml | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 .github/workflows/section-repos.yml diff --git a/.github/workflows/section-repos.yml b/.github/workflows/section-repos.yml new file mode 100644 index 0000000..9802d04 --- /dev/null +++ b/.github/workflows/section-repos.yml @@ -0,0 +1,20 @@ +name: Create Section Repos +on: + push: + branches: + - "main" + +jobs: + run: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version: 20.x + - run: git config --global user.email "total-typescript@bot.com" + - run: git config --global user.name "Total TypeScript Bot" + - run: npx @total-typescript/exercise-cli@latest create-section-repos + env: + GITHUB_TOKEN: ${{ secrets.MY_GITHUB_TOKEN }} + GH_TOKEN: ${{ secrets.MY_GITHUB_TOKEN }} From 840c1cb4d7dce3c15e25b3e8408e1b8417a5b773 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 7 Jul 2024 14:17:21 +0000 Subject: [PATCH 14/36] chore(deps): update dependency @total-typescript/exercise-cli to ^0.10.0 --- package-lock.json | 50 ++++++++++++++++++++++++----------------------- package.json | 2 +- 2 files changed, 27 insertions(+), 25 deletions(-) diff --git a/package-lock.json b/package-lock.json index 08b3a39..3001581 100644 --- a/package-lock.json +++ b/package-lock.json @@ -21,7 +21,7 @@ "zod": "^3.21.4" }, "devDependencies": { - "@total-typescript/exercise-cli": "^0.7.0", + "@total-typescript/exercise-cli": "^0.10.0", "cross-fetch": "^3.1.5", "jsdom": "^21.1.1", "prettier": "^2.8.7", @@ -841,14 +841,14 @@ } }, "node_modules/@total-typescript/exercise-cli": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@total-typescript/exercise-cli/-/exercise-cli-0.7.0.tgz", - "integrity": "sha512-AOkIQqZZkYoydhoKmhYvENSbWlk3D8zvuEnrMF68HMyKWYpvBWL8ZscZ8d3RZbULgjYDhwfSehNHW0HSmxKTjg==", + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@total-typescript/exercise-cli/-/exercise-cli-0.10.0.tgz", + "integrity": "sha512-0itd7iIPPTtzvWEEz4a9b0m2tJLyHnfTfiJZESwoiMxy7XhUJ6sskhuBrY+xiWytYHW8HtMk9DVNDs7qZBgDgQ==", "dev": true, "dependencies": { "chokidar": "^3.5.3", "colors": "^1.4.0", - "commander": "^12.0.0", + "commander": "^10.0.1", "fast-glob": "^3.2.12", "jsonc-parser": "^3.2.0", "prompts": "^2.4.2" @@ -861,6 +861,15 @@ "vitest": "*" } }, + "node_modules/@total-typescript/exercise-cli/node_modules/commander": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "dev": true, + "engines": { + "node": ">=14" + } + }, "node_modules/@types/body-parser": { "version": "1.19.2", "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", @@ -1395,15 +1404,6 @@ "node": ">= 0.8" } }, - "node_modules/commander": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", - "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", - "dev": true, - "engines": { - "node": ">=18" - } - }, "node_modules/content-disposition": { "version": "0.5.4", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", @@ -4536,17 +4536,25 @@ "dev": true }, "@total-typescript/exercise-cli": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@total-typescript/exercise-cli/-/exercise-cli-0.7.0.tgz", - "integrity": "sha512-AOkIQqZZkYoydhoKmhYvENSbWlk3D8zvuEnrMF68HMyKWYpvBWL8ZscZ8d3RZbULgjYDhwfSehNHW0HSmxKTjg==", + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@total-typescript/exercise-cli/-/exercise-cli-0.10.0.tgz", + "integrity": "sha512-0itd7iIPPTtzvWEEz4a9b0m2tJLyHnfTfiJZESwoiMxy7XhUJ6sskhuBrY+xiWytYHW8HtMk9DVNDs7qZBgDgQ==", "dev": true, "requires": { "chokidar": "^3.5.3", "colors": "^1.4.0", - "commander": "^12.0.0", + "commander": "^10.0.1", "fast-glob": "^3.2.12", "jsonc-parser": "^3.2.0", "prompts": "^2.4.2" + }, + "dependencies": { + "commander": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "dev": true + } } }, "@types/body-parser": { @@ -4979,12 +4987,6 @@ "delayed-stream": "~1.0.0" } }, - "commander": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", - "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", - "dev": true - }, "content-disposition": { "version": "0.5.4", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", diff --git a/package.json b/package.json index b87f68b..4bed5b6 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "author": "Matt Pocock ", "license": "GPL", "devDependencies": { - "@total-typescript/exercise-cli": "^0.7.0", + "@total-typescript/exercise-cli": "^0.10.0", "cross-fetch": "^3.1.5", "jsdom": "^21.1.1", "prettier": "^2.8.7", From 5e2f2cfdf9b2468ffa3c8b98985a13cf160b0a35 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 8 Jul 2024 14:07:20 +0000 Subject: [PATCH 15/36] chore(deps): update dependency vitest to v2 --- package-lock.json | 704 ++++++++++++++++++++-------------------------- package.json | 2 +- 2 files changed, 303 insertions(+), 403 deletions(-) diff --git a/package-lock.json b/package-lock.json index 08b3a39..4f58364 100644 --- a/package-lock.json +++ b/package-lock.json @@ -27,7 +27,20 @@ "prettier": "^2.8.7", "typescript": "^5.4.5", "vite-tsconfig-paths": "^4.0.7", - "vitest": "^1.6.0" + "vitest": "^2.0.0" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" } }, "node_modules/@babel/code-frame": { @@ -593,12 +606,54 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/@jridgewell/sourcemap-codec": { "version": "1.4.15", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", "dev": true }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -980,41 +1035,40 @@ } }, "node_modules/@vitest/expect": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-1.6.0.tgz", - "integrity": "sha512-ixEvFVQjycy/oNgHjqsL6AZCDduC+tflRluaHIzKIsdbzkLn2U/iBnVeJwB6HsIjQBdfMR8Z0tRxKUsvFJEeWQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-2.0.0.tgz", + "integrity": "sha512-5BSfZ0+dAVmC6uPF7s+TcKx0i7oyYHb1WQQL5gg6G2c+Qkaa5BNrdRM74sxDfUIZUgYCr6bfCqmJp+X5bfcNxQ==", "dev": true, "dependencies": { - "@vitest/spy": "1.6.0", - "@vitest/utils": "1.6.0", - "chai": "^4.3.10" + "@vitest/spy": "2.0.0", + "@vitest/utils": "2.0.0", + "chai": "^5.1.1" }, "funding": { "url": "https://opencollective.com/vitest" } }, "node_modules/@vitest/runner": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-1.6.0.tgz", - "integrity": "sha512-P4xgwPjwesuBiHisAVz/LSSZtDjOTPYZVmNAnpHHSR6ONrf8eCJOFRvUwdHn30F5M1fxhqtl7QZQUk2dprIXAg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-2.0.0.tgz", + "integrity": "sha512-OovFmlkfRmdhevbWImBUtn9IEM+CKac8O+m9p6W9jTATGVBnDJQ6/jb1gpHyWxsu0ALi5f+TLi+Uyst7AAimMw==", "dev": true, "dependencies": { - "@vitest/utils": "1.6.0", - "p-limit": "^5.0.0", - "pathe": "^1.1.1" + "@vitest/utils": "2.0.0", + "pathe": "^1.1.2" }, "funding": { "url": "https://opencollective.com/vitest" } }, "node_modules/@vitest/snapshot": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-1.6.0.tgz", - "integrity": "sha512-+Hx43f8Chus+DCmygqqfetcAZrDJwvTj0ymqjQq4CvmpKFSTVteEOBzCusu1x2tt4OJcvBflyHUE0DZSLgEMtQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-2.0.0.tgz", + "integrity": "sha512-B520cSAQwtWgocPpARadnNLslHCxFs5tf7SG2TT96qz+SZgsXqcB1xI3w3/S9kUzdqykEKrMLvW+sIIpMcuUdw==", "dev": true, "dependencies": { - "magic-string": "^0.30.5", - "pathe": "^1.1.1", + "magic-string": "^0.30.10", + "pathe": "^1.1.2", "pretty-format": "^29.7.0" }, "funding": { @@ -1022,26 +1076,26 @@ } }, "node_modules/@vitest/spy": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-1.6.0.tgz", - "integrity": "sha512-leUTap6B/cqi/bQkXUu6bQV5TZPx7pmMBKBQiI0rJA8c3pB56ZsaTbREnF7CJfmvAS4V2cXIBAh/3rVwrrCYgw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-2.0.0.tgz", + "integrity": "sha512-0g7ho4wBK09wq8iNZFtUcQZcUcbPmbLWFotL0GXel0fvk5yPi4nTEKpIvZ+wA5eRyqPUCIfIUl10AWzLr67cmA==", "dev": true, "dependencies": { - "tinyspy": "^2.2.0" + "tinyspy": "^3.0.0" }, "funding": { "url": "https://opencollective.com/vitest" } }, "node_modules/@vitest/utils": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-1.6.0.tgz", - "integrity": "sha512-21cPiuGMoMZwiOHa2i4LXkMkMkCGzA+MVFV70jRwHo95dL4x/ts5GZhML1QWuy7yfp3WzK3lRvZi3JnXTYqrBw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-2.0.0.tgz", + "integrity": "sha512-t0jbx8VugWEP6A29NbyfQKVU68Vo6oUw0iX3a8BwO3nrZuivfHcFO4Y5UsqXlplX+83P9UaqEvC2YQhspC0JSA==", "dev": true, "dependencies": { "diff-sequences": "^29.6.3", "estree-walker": "^3.0.3", - "loupe": "^2.3.7", + "loupe": "^3.1.1", "pretty-format": "^29.7.0" }, "funding": { @@ -1163,12 +1217,12 @@ "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" }, "node_modules/assertion-error": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", + "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", "dev": true, "engines": { - "node": "*" + "node": ">=12" } }, "node_modules/asynckit": { @@ -1273,21 +1327,19 @@ } }, "node_modules/chai": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.4.1.tgz", - "integrity": "sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/chai/-/chai-5.1.1.tgz", + "integrity": "sha512-pT1ZgP8rPNqUgieVaEY+ryQr6Q4HXNg8Ei9UnLUrjN4IA7dvQC5JB+/kxVcPNDHyBcc/26CXPkbNzq3qwrOEKA==", "dev": true, "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", - "pathval": "^1.1.1", - "type-detect": "^4.0.8" + "assertion-error": "^2.0.1", + "check-error": "^2.1.1", + "deep-eql": "^5.0.1", + "loupe": "^3.1.0", + "pathval": "^2.0.0" }, "engines": { - "node": ">=4" + "node": ">=12" } }, "node_modules/chalk": { @@ -1323,15 +1375,12 @@ } }, "node_modules/check-error": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", - "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz", + "integrity": "sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==", "dev": true, - "dependencies": { - "get-func-name": "^2.0.2" - }, "engines": { - "node": "*" + "node": ">= 16" } }, "node_modules/chokidar": { @@ -1525,13 +1574,10 @@ "dev": true }, "node_modules/deep-eql": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", - "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz", + "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==", "dev": true, - "dependencies": { - "type-detect": "^4.0.0" - }, "engines": { "node": ">=6" } @@ -2357,22 +2403,6 @@ "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" }, - "node_modules/local-pkg": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.5.0.tgz", - "integrity": "sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==", - "dev": true, - "dependencies": { - "mlly": "^1.4.2", - "pkg-types": "^1.0.3" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, "node_modules/loose-envify": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", @@ -2385,9 +2415,9 @@ } }, "node_modules/loupe": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", - "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.1.tgz", + "integrity": "sha512-edNu/8D5MKVfGVFRhFf8aAxiTM6Wumfz5XsaatSxlD3w4R1d/WEKUTydCdPGbl9K7QG/Ca3GnDV2sIKIpXRQcw==", "dev": true, "dependencies": { "get-func-name": "^2.0.1" @@ -2498,18 +2528,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/mlly": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.4.2.tgz", - "integrity": "sha512-i/Ykufi2t1EZ6NaPLdfnZk2AX8cs0d+mTzVKuPfqPKPatxLApaBoxJQ9x1/uckXtrS/U5oisPMDkNs0yQTaBRg==", - "dev": true, - "dependencies": { - "acorn": "^8.10.0", - "pathe": "^1.1.1", - "pkg-types": "^1.0.3", - "ufo": "^1.3.0" - } - }, "node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -2684,21 +2702,6 @@ "node": ">= 0.8.0" } }, - "node_modules/p-limit": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-5.0.0.tgz", - "integrity": "sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^1.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -2775,24 +2778,24 @@ } }, "node_modules/pathe": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.1.tgz", - "integrity": "sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", + "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==", "dev": true }, "node_modules/pathval": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", - "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.0.tgz", + "integrity": "sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==", "dev": true, "engines": { - "node": "*" + "node": ">= 14.16" } }, "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", + "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", "dev": true }, "node_modules/picomatch": { @@ -2807,17 +2810,6 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/pkg-types": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.0.3.tgz", - "integrity": "sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==", - "dev": true, - "dependencies": { - "jsonc-parser": "^3.2.0", - "mlly": "^1.2.0", - "pathe": "^1.1.0" - } - }, "node_modules/postcss": { "version": "8.4.32", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.32.tgz", @@ -3377,9 +3369,9 @@ } }, "node_modules/std-env": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.6.0.tgz", - "integrity": "sha512-aFZ19IgVmhdB2uX599ve2kE6BIE3YMnQ6Gp6BURhW/oIzpXGKr878TQfAQZn1+i0Flcc/UKUy1gOlcfaUBCryg==", + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.7.0.tgz", + "integrity": "sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==", "dev": true }, "node_modules/strip-final-newline": { @@ -3394,24 +3386,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/strip-literal": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-2.1.0.tgz", - "integrity": "sha512-Op+UycaUt/8FbN/Z2TWPBLge3jWrP3xj10f3fnYxf052bKuS3EKs1ZQcVGjnEMdsNVAM+plXRdmjrZ/KgG3Skw==", - "dev": true, - "dependencies": { - "js-tokens": "^9.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/strip-literal/node_modules/js-tokens": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.0.tgz", - "integrity": "sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==", - "dev": true - }, "node_modules/stylis": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz", @@ -3446,24 +3420,24 @@ "dev": true }, "node_modules/tinybench": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.5.1.tgz", - "integrity": "sha512-65NKvSuAVDP/n4CqH+a9w2kTlLReS9vhsAP06MWx+/89nMinJyB2icyl58RIcqCmIggpojIGeuJGhjU1aGMBSg==", + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.8.0.tgz", + "integrity": "sha512-1/eK7zUnIklz4JUUlL+658n58XO2hHLQfSk1Zf2LKieUjxidN16eKFEoDEfjHc3ohofSSqK3X5yO6VGb6iW8Lw==", "dev": true }, "node_modules/tinypool": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-0.8.4.tgz", - "integrity": "sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.0.0.tgz", + "integrity": "sha512-KIKExllK7jp3uvrNtvRBYBWBOAXSX8ZvoaD8T+7KB/QHIuoJW3Pmr60zucywjAlMb5TeXUkcs/MWeWLu0qvuAQ==", "dev": true, "engines": { - "node": ">=14.0.0" + "node": "^18.0.0 || >=20.0.0" } }, "node_modules/tinyspy": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-2.2.1.tgz", - "integrity": "sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-3.0.0.tgz", + "integrity": "sha512-q5nmENpTHgiPVd1cJDDc9cVoYN5x4vCvwT3FMilvKPKneCBZAxn2YWQjDF0UMcE9k0Cay1gBiDfTMU0g+mPMQA==", "dev": true, "engines": { "node": ">=14.0.0" @@ -3556,15 +3530,6 @@ "node": ">= 0.8.0" } }, - "node_modules/type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/type-is": { "version": "1.6.18", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", @@ -3590,12 +3555,6 @@ "node": ">=14.17" } }, - "node_modules/ufo": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.3.2.tgz", - "integrity": "sha512-o+ORpgGwaYQXgqGDwd+hkS4PuZ3QnmqMMxRuajK/a38L6fTpcE5GPIfrf+L/KemFzfUpeUQc1rRS1iDBozvnFA==", - "dev": true - }, "node_modules/universalify": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", @@ -3716,15 +3675,15 @@ } }, "node_modules/vite-node": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-1.6.0.tgz", - "integrity": "sha512-de6HJgzC+TFzOu0NTC4RAIsyf/DY/ibWDYQUcuEA84EMHhcefTUGkjFHKKEJhQN4A+6I0u++kr3l36ZF2d7XRw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-2.0.0.tgz", + "integrity": "sha512-jZtezmjcgZTkMisIi68TdY8w/PqPTxK2pbfTU9/4Gqus1K3AVZqkwH0z7Vshe3CD6mq9rJq8SpqmuefDMIqkfQ==", "dev": true, "dependencies": { "cac": "^6.7.14", - "debug": "^4.3.4", - "pathe": "^1.1.1", - "picocolors": "^1.0.0", + "debug": "^4.3.5", + "pathe": "^1.1.2", + "picocolors": "^1.0.1", "vite": "^5.0.0" }, "bin": { @@ -3738,9 +3697,9 @@ } }, "node_modules/vite-node/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", + "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", "dev": true, "dependencies": { "ms": "2.1.2" @@ -3803,30 +3762,28 @@ "dev": true }, "node_modules/vitest": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-1.6.0.tgz", - "integrity": "sha512-H5r/dN06swuFnzNFhq/dnz37bPXnq8xB2xB5JOVk8K09rUtoeNN+LHWkoQ0A/i3hvbUKKcCei9KpbxqHMLhLLA==", - "dev": true, - "dependencies": { - "@vitest/expect": "1.6.0", - "@vitest/runner": "1.6.0", - "@vitest/snapshot": "1.6.0", - "@vitest/spy": "1.6.0", - "@vitest/utils": "1.6.0", - "acorn-walk": "^8.3.2", - "chai": "^4.3.10", - "debug": "^4.3.4", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-2.0.0.tgz", + "integrity": "sha512-NvccE2tZhIoPSq3o3AoTBmItwhHNjzIxvOgfdzILIscyzSGOtw2+A1d/JJbS86HDVbc6TS5HnckQuCgTfp0HDQ==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.3.0", + "@vitest/expect": "2.0.0", + "@vitest/runner": "2.0.0", + "@vitest/snapshot": "2.0.0", + "@vitest/spy": "2.0.0", + "@vitest/utils": "2.0.0", + "chai": "^5.1.1", + "debug": "^4.3.5", "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.3", + "magic-string": "^0.30.10", + "pathe": "^1.1.2", + "picocolors": "^1.0.1", + "std-env": "^3.7.0", + "tinybench": "^2.8.0", + "tinypool": "^1.0.0", "vite": "^5.0.0", - "vite-node": "1.6.0", + "vite-node": "2.0.0", "why-is-node-running": "^2.2.2" }, "bin": { @@ -3841,8 +3798,8 @@ "peerDependencies": { "@edge-runtime/vm": "*", "@types/node": "^18.0.0 || >=20.0.0", - "@vitest/browser": "1.6.0", - "@vitest/ui": "1.6.0", + "@vitest/browser": "2.0.0", + "@vitest/ui": "2.0.0", "happy-dom": "*", "jsdom": "*" }, @@ -3868,9 +3825,9 @@ } }, "node_modules/vitest/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", + "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", "dev": true, "dependencies": { "ms": "2.1.2" @@ -4041,18 +3998,6 @@ "node": ">= 6" } }, - "node_modules/yocto-queue": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", - "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", - "dev": true, - "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/zod": { "version": "3.21.4", "resolved": "https://registry.npmjs.org/zod/-/zod-3.21.4.tgz", @@ -4063,6 +4008,16 @@ } }, "dependencies": { + "@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "dev": true, + "requires": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, "@babel/code-frame": { "version": "7.21.4", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.21.4.tgz", @@ -4393,12 +4348,45 @@ "@sinclair/typebox": "^0.27.8" } }, + "@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true + }, + "@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "dev": true + }, "@jridgewell/sourcemap-codec": { "version": "1.4.15", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", "dev": true }, + "@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, "@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -4668,56 +4656,55 @@ } }, "@vitest/expect": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-1.6.0.tgz", - "integrity": "sha512-ixEvFVQjycy/oNgHjqsL6AZCDduC+tflRluaHIzKIsdbzkLn2U/iBnVeJwB6HsIjQBdfMR8Z0tRxKUsvFJEeWQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-2.0.0.tgz", + "integrity": "sha512-5BSfZ0+dAVmC6uPF7s+TcKx0i7oyYHb1WQQL5gg6G2c+Qkaa5BNrdRM74sxDfUIZUgYCr6bfCqmJp+X5bfcNxQ==", "dev": true, "requires": { - "@vitest/spy": "1.6.0", - "@vitest/utils": "1.6.0", - "chai": "^4.3.10" + "@vitest/spy": "2.0.0", + "@vitest/utils": "2.0.0", + "chai": "^5.1.1" } }, "@vitest/runner": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-1.6.0.tgz", - "integrity": "sha512-P4xgwPjwesuBiHisAVz/LSSZtDjOTPYZVmNAnpHHSR6ONrf8eCJOFRvUwdHn30F5M1fxhqtl7QZQUk2dprIXAg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-2.0.0.tgz", + "integrity": "sha512-OovFmlkfRmdhevbWImBUtn9IEM+CKac8O+m9p6W9jTATGVBnDJQ6/jb1gpHyWxsu0ALi5f+TLi+Uyst7AAimMw==", "dev": true, "requires": { - "@vitest/utils": "1.6.0", - "p-limit": "^5.0.0", - "pathe": "^1.1.1" + "@vitest/utils": "2.0.0", + "pathe": "^1.1.2" } }, "@vitest/snapshot": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-1.6.0.tgz", - "integrity": "sha512-+Hx43f8Chus+DCmygqqfetcAZrDJwvTj0ymqjQq4CvmpKFSTVteEOBzCusu1x2tt4OJcvBflyHUE0DZSLgEMtQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-2.0.0.tgz", + "integrity": "sha512-B520cSAQwtWgocPpARadnNLslHCxFs5tf7SG2TT96qz+SZgsXqcB1xI3w3/S9kUzdqykEKrMLvW+sIIpMcuUdw==", "dev": true, "requires": { - "magic-string": "^0.30.5", - "pathe": "^1.1.1", + "magic-string": "^0.30.10", + "pathe": "^1.1.2", "pretty-format": "^29.7.0" } }, "@vitest/spy": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-1.6.0.tgz", - "integrity": "sha512-leUTap6B/cqi/bQkXUu6bQV5TZPx7pmMBKBQiI0rJA8c3pB56ZsaTbREnF7CJfmvAS4V2cXIBAh/3rVwrrCYgw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-2.0.0.tgz", + "integrity": "sha512-0g7ho4wBK09wq8iNZFtUcQZcUcbPmbLWFotL0GXel0fvk5yPi4nTEKpIvZ+wA5eRyqPUCIfIUl10AWzLr67cmA==", "dev": true, "requires": { - "tinyspy": "^2.2.0" + "tinyspy": "^3.0.0" } }, "@vitest/utils": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-1.6.0.tgz", - "integrity": "sha512-21cPiuGMoMZwiOHa2i4LXkMkMkCGzA+MVFV70jRwHo95dL4x/ts5GZhML1QWuy7yfp3WzK3lRvZi3JnXTYqrBw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-2.0.0.tgz", + "integrity": "sha512-t0jbx8VugWEP6A29NbyfQKVU68Vo6oUw0iX3a8BwO3nrZuivfHcFO4Y5UsqXlplX+83P9UaqEvC2YQhspC0JSA==", "dev": true, "requires": { "diff-sequences": "^29.6.3", "estree-walker": "^3.0.3", - "loupe": "^2.3.7", + "loupe": "^3.1.1", "pretty-format": "^29.7.0" } }, @@ -4806,9 +4793,9 @@ "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" }, "assertion-error": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", + "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", "dev": true }, "asynckit": { @@ -4887,18 +4874,16 @@ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" }, "chai": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.4.1.tgz", - "integrity": "sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/chai/-/chai-5.1.1.tgz", + "integrity": "sha512-pT1ZgP8rPNqUgieVaEY+ryQr6Q4HXNg8Ei9UnLUrjN4IA7dvQC5JB+/kxVcPNDHyBcc/26CXPkbNzq3qwrOEKA==", "dev": true, "requires": { - "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", - "pathval": "^1.1.1", - "type-detect": "^4.0.8" + "assertion-error": "^2.0.1", + "check-error": "^2.1.1", + "deep-eql": "^5.0.1", + "loupe": "^3.1.0", + "pathval": "^2.0.0" } }, "chalk": { @@ -4927,13 +4912,10 @@ } }, "check-error": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", - "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", - "dev": true, - "requires": { - "get-func-name": "^2.0.2" - } + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz", + "integrity": "sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==", + "dev": true }, "chokidar": { "version": "3.5.3", @@ -5085,13 +5067,10 @@ "dev": true }, "deep-eql": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", - "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==", - "dev": true, - "requires": { - "type-detect": "^4.0.0" - } + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz", + "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==", + "dev": true }, "deep-is": { "version": "0.1.4", @@ -5709,16 +5688,6 @@ "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" }, - "local-pkg": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.5.0.tgz", - "integrity": "sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==", - "dev": true, - "requires": { - "mlly": "^1.4.2", - "pkg-types": "^1.0.3" - } - }, "loose-envify": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", @@ -5728,9 +5697,9 @@ } }, "loupe": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", - "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.1.tgz", + "integrity": "sha512-edNu/8D5MKVfGVFRhFf8aAxiTM6Wumfz5XsaatSxlD3w4R1d/WEKUTydCdPGbl9K7QG/Ca3GnDV2sIKIpXRQcw==", "dev": true, "requires": { "get-func-name": "^2.0.1" @@ -5811,18 +5780,6 @@ "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", "dev": true }, - "mlly": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.4.2.tgz", - "integrity": "sha512-i/Ykufi2t1EZ6NaPLdfnZk2AX8cs0d+mTzVKuPfqPKPatxLApaBoxJQ9x1/uckXtrS/U5oisPMDkNs0yQTaBRg==", - "dev": true, - "requires": { - "acorn": "^8.10.0", - "pathe": "^1.1.1", - "pkg-types": "^1.0.3", - "ufo": "^1.3.0" - } - }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -5942,15 +5899,6 @@ "word-wrap": "~1.2.3" } }, - "p-limit": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-5.0.0.tgz", - "integrity": "sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==", - "dev": true, - "requires": { - "yocto-queue": "^1.0.0" - } - }, "parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -6006,21 +5954,21 @@ "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" }, "pathe": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.1.tgz", - "integrity": "sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", + "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==", "dev": true }, "pathval": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", - "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.0.tgz", + "integrity": "sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==", "dev": true }, "picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", + "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", "dev": true }, "picomatch": { @@ -6029,17 +5977,6 @@ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true }, - "pkg-types": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.0.3.tgz", - "integrity": "sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==", - "dev": true, - "requires": { - "jsonc-parser": "^3.2.0", - "mlly": "^1.2.0", - "pathe": "^1.1.0" - } - }, "postcss": { "version": "8.4.32", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.32.tgz", @@ -6429,9 +6366,9 @@ "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" }, "std-env": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.6.0.tgz", - "integrity": "sha512-aFZ19IgVmhdB2uX599ve2kE6BIE3YMnQ6Gp6BURhW/oIzpXGKr878TQfAQZn1+i0Flcc/UKUy1gOlcfaUBCryg==", + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.7.0.tgz", + "integrity": "sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==", "dev": true }, "strip-final-newline": { @@ -6440,23 +6377,6 @@ "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", "dev": true }, - "strip-literal": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-2.1.0.tgz", - "integrity": "sha512-Op+UycaUt/8FbN/Z2TWPBLge3jWrP3xj10f3fnYxf052bKuS3EKs1ZQcVGjnEMdsNVAM+plXRdmjrZ/KgG3Skw==", - "dev": true, - "requires": { - "js-tokens": "^9.0.0" - }, - "dependencies": { - "js-tokens": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.0.tgz", - "integrity": "sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==", - "dev": true - } - } - }, "stylis": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz", @@ -6482,21 +6402,21 @@ "dev": true }, "tinybench": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.5.1.tgz", - "integrity": "sha512-65NKvSuAVDP/n4CqH+a9w2kTlLReS9vhsAP06MWx+/89nMinJyB2icyl58RIcqCmIggpojIGeuJGhjU1aGMBSg==", + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.8.0.tgz", + "integrity": "sha512-1/eK7zUnIklz4JUUlL+658n58XO2hHLQfSk1Zf2LKieUjxidN16eKFEoDEfjHc3ohofSSqK3X5yO6VGb6iW8Lw==", "dev": true }, "tinypool": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-0.8.4.tgz", - "integrity": "sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.0.0.tgz", + "integrity": "sha512-KIKExllK7jp3uvrNtvRBYBWBOAXSX8ZvoaD8T+7KB/QHIuoJW3Pmr60zucywjAlMb5TeXUkcs/MWeWLu0qvuAQ==", "dev": true }, "tinyspy": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-2.2.1.tgz", - "integrity": "sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-3.0.0.tgz", + "integrity": "sha512-q5nmENpTHgiPVd1cJDDc9cVoYN5x4vCvwT3FMilvKPKneCBZAxn2YWQjDF0UMcE9k0Cay1gBiDfTMU0g+mPMQA==", "dev": true }, "to-fast-properties": { @@ -6555,12 +6475,6 @@ "prelude-ls": "~1.1.2" } }, - "type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true - }, "type-is": { "version": "1.6.18", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", @@ -6576,12 +6490,6 @@ "integrity": "sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ==", "dev": true }, - "ufo": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.3.2.tgz", - "integrity": "sha512-o+ORpgGwaYQXgqGDwd+hkS4PuZ3QnmqMMxRuajK/a38L6fTpcE5GPIfrf+L/KemFzfUpeUQc1rRS1iDBozvnFA==", - "dev": true - }, "universalify": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", @@ -6638,22 +6546,22 @@ } }, "vite-node": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-1.6.0.tgz", - "integrity": "sha512-de6HJgzC+TFzOu0NTC4RAIsyf/DY/ibWDYQUcuEA84EMHhcefTUGkjFHKKEJhQN4A+6I0u++kr3l36ZF2d7XRw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-2.0.0.tgz", + "integrity": "sha512-jZtezmjcgZTkMisIi68TdY8w/PqPTxK2pbfTU9/4Gqus1K3AVZqkwH0z7Vshe3CD6mq9rJq8SpqmuefDMIqkfQ==", "dev": true, "requires": { "cac": "^6.7.14", - "debug": "^4.3.4", - "pathe": "^1.1.1", - "picocolors": "^1.0.0", + "debug": "^4.3.5", + "pathe": "^1.1.2", + "picocolors": "^1.0.1", "vite": "^5.0.0" }, "dependencies": { "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", + "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", "dev": true, "requires": { "ms": "2.1.2" @@ -6696,37 +6604,35 @@ } }, "vitest": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-1.6.0.tgz", - "integrity": "sha512-H5r/dN06swuFnzNFhq/dnz37bPXnq8xB2xB5JOVk8K09rUtoeNN+LHWkoQ0A/i3hvbUKKcCei9KpbxqHMLhLLA==", - "dev": true, - "requires": { - "@vitest/expect": "1.6.0", - "@vitest/runner": "1.6.0", - "@vitest/snapshot": "1.6.0", - "@vitest/spy": "1.6.0", - "@vitest/utils": "1.6.0", - "acorn-walk": "^8.3.2", - "chai": "^4.3.10", - "debug": "^4.3.4", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-2.0.0.tgz", + "integrity": "sha512-NvccE2tZhIoPSq3o3AoTBmItwhHNjzIxvOgfdzILIscyzSGOtw2+A1d/JJbS86HDVbc6TS5HnckQuCgTfp0HDQ==", + "dev": true, + "requires": { + "@ampproject/remapping": "^2.3.0", + "@vitest/expect": "2.0.0", + "@vitest/runner": "2.0.0", + "@vitest/snapshot": "2.0.0", + "@vitest/spy": "2.0.0", + "@vitest/utils": "2.0.0", + "chai": "^5.1.1", + "debug": "^4.3.5", "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.3", + "magic-string": "^0.30.10", + "pathe": "^1.1.2", + "picocolors": "^1.0.1", + "std-env": "^3.7.0", + "tinybench": "^2.8.0", + "tinypool": "^1.0.0", "vite": "^5.0.0", - "vite-node": "1.6.0", + "vite-node": "2.0.0", "why-is-node-running": "^2.2.2" }, "dependencies": { "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", + "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", "dev": true, "requires": { "ms": "2.1.2" @@ -6840,12 +6746,6 @@ "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==" }, - "yocto-queue": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", - "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", - "dev": true - }, "zod": { "version": "3.21.4", "resolved": "https://registry.npmjs.org/zod/-/zod-3.21.4.tgz", diff --git a/package.json b/package.json index b87f68b..0b45b6c 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,7 @@ "prettier": "^2.8.7", "typescript": "^5.4.5", "vite-tsconfig-paths": "^4.0.7", - "vitest": "^1.6.0" + "vitest": "^2.0.0" }, "scripts": { "exercise": "tt-cli run", From b02d62eb091b4bfe352ff704939d6340a669e3df Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 19 Jul 2024 06:57:15 +0000 Subject: [PATCH 16/36] chore(deps): update dependency @total-typescript/exercise-cli to v0.10.1 --- package-lock.json | 44 +++++++++++++++++++++----------------------- 1 file changed, 21 insertions(+), 23 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3001581..419a4f1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -841,9 +841,9 @@ } }, "node_modules/@total-typescript/exercise-cli": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/@total-typescript/exercise-cli/-/exercise-cli-0.10.0.tgz", - "integrity": "sha512-0itd7iIPPTtzvWEEz4a9b0m2tJLyHnfTfiJZESwoiMxy7XhUJ6sskhuBrY+xiWytYHW8HtMk9DVNDs7qZBgDgQ==", + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/@total-typescript/exercise-cli/-/exercise-cli-0.10.1.tgz", + "integrity": "sha512-1gSFgd0bacbz6kTeXD4j75uG1WQdzy3tQ66wH89MPyGDV//DrTYq5kXGghzjJLCzM5e4hFZ0NRCWCaogiB59wg==", "dev": true, "dependencies": { "chokidar": "^3.5.3", @@ -861,15 +861,6 @@ "vitest": "*" } }, - "node_modules/@total-typescript/exercise-cli/node_modules/commander": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", - "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", - "dev": true, - "engines": { - "node": ">=14" - } - }, "node_modules/@types/body-parser": { "version": "1.19.2", "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", @@ -1404,6 +1395,15 @@ "node": ">= 0.8" } }, + "node_modules/commander": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "dev": true, + "engines": { + "node": ">=14" + } + }, "node_modules/content-disposition": { "version": "0.5.4", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", @@ -4536,9 +4536,9 @@ "dev": true }, "@total-typescript/exercise-cli": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/@total-typescript/exercise-cli/-/exercise-cli-0.10.0.tgz", - "integrity": "sha512-0itd7iIPPTtzvWEEz4a9b0m2tJLyHnfTfiJZESwoiMxy7XhUJ6sskhuBrY+xiWytYHW8HtMk9DVNDs7qZBgDgQ==", + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/@total-typescript/exercise-cli/-/exercise-cli-0.10.1.tgz", + "integrity": "sha512-1gSFgd0bacbz6kTeXD4j75uG1WQdzy3tQ66wH89MPyGDV//DrTYq5kXGghzjJLCzM5e4hFZ0NRCWCaogiB59wg==", "dev": true, "requires": { "chokidar": "^3.5.3", @@ -4547,14 +4547,6 @@ "fast-glob": "^3.2.12", "jsonc-parser": "^3.2.0", "prompts": "^2.4.2" - }, - "dependencies": { - "commander": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", - "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", - "dev": true - } } }, "@types/body-parser": { @@ -4987,6 +4979,12 @@ "delayed-stream": "~1.0.0" } }, + "commander": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "dev": true + }, "content-disposition": { "version": "0.5.4", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", From 2f369b6b53b639148d4704ea54027ce5891a19b5 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 23 Jul 2024 00:27:38 +0000 Subject: [PATCH 17/36] chore(deps): update dependency typescript to v5.5.4 --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3001581..9a033c4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3578,9 +3578,9 @@ } }, "node_modules/typescript": { - "version": "5.5.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.3.tgz", - "integrity": "sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ==", + "version": "5.5.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz", + "integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -6573,9 +6573,9 @@ } }, "typescript": { - "version": "5.5.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.3.tgz", - "integrity": "sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ==", + "version": "5.5.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz", + "integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==", "dev": true }, "ufo": { From 92d3d8ef5deae6761aa4fa1628efa44992d57c84 Mon Sep 17 00:00:00 2001 From: Matt Pocock Date: Tue, 23 Jul 2024 07:56:55 +0100 Subject: [PATCH 18/36] Fixed renovate --- out | 1 + renovate.json | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) create mode 160000 out diff --git a/out b/out new file mode 160000 index 0000000..0e24cea --- /dev/null +++ b/out @@ -0,0 +1 @@ +Subproject commit 0e24ceae5f210474095ed4f30375444e59e1b04d diff --git a/renovate.json b/renovate.json index 1c0166f..1c54d17 100644 --- a/renovate.json +++ b/renovate.json @@ -4,7 +4,7 @@ "packageRules": [ { "packagePatterns": ["*"], - "excludePackagePatterns": [ + "excludeDepNames": [ "typescript", "vitest", "react", From 2b8c165db3d6427828fe694f01fc01f43687faab Mon Sep 17 00:00:00 2001 From: Matt Pocock Date: Tue, 23 Jul 2024 07:57:19 +0100 Subject: [PATCH 19/36] Removed out file --- out | 1 - 1 file changed, 1 deletion(-) delete mode 160000 out diff --git a/out b/out deleted file mode 160000 index 0e24cea..0000000 --- a/out +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 0e24ceae5f210474095ed4f30375444e59e1b04d From b7deaf294a2fdfaf875715657cf31931650854d6 Mon Sep 17 00:00:00 2001 From: Matt Pocock Date: Tue, 23 Jul 2024 07:58:06 +0100 Subject: [PATCH 20/36] Added concurrency to section repo creation --- .github/workflows/section-repos.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/section-repos.yml b/.github/workflows/section-repos.yml index 9802d04..81f5e36 100644 --- a/.github/workflows/section-repos.yml +++ b/.github/workflows/section-repos.yml @@ -4,6 +4,10 @@ on: branches: - "main" +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + jobs: run: runs-on: ubuntu-latest From 40895212b98534fd9628b4c49c3ab25891bc9d4f Mon Sep 17 00:00:00 2001 From: Matt Pocock Date: Tue, 23 Jul 2024 09:51:58 +0100 Subject: [PATCH 21/36] Added name to renovate checks --- .github/workflows/renovate-checks.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/renovate-checks.yml b/.github/workflows/renovate-checks.yml index fa3c642..f3219f8 100644 --- a/.github/workflows/renovate-checks.yml +++ b/.github/workflows/renovate-checks.yml @@ -6,6 +6,7 @@ on: jobs: build: + name: Check Snapshot runs-on: ubuntu-latest steps: - name: Checkout Main From c788e282993da7c45fbde398fad7f225902d00a9 Mon Sep 17 00:00:00 2001 From: Matt Pocock Date: Tue, 23 Jul 2024 10:16:32 +0100 Subject: [PATCH 22/36] Fixed renovate checks --- .github/workflows/renovate-checks.yml | 29 +++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/.github/workflows/renovate-checks.yml b/.github/workflows/renovate-checks.yml index f3219f8..71ce34f 100644 --- a/.github/workflows/renovate-checks.yml +++ b/.github/workflows/renovate-checks.yml @@ -2,34 +2,59 @@ name: Renovate Checks on: push: branches: - - "renovate/**" + - "**" jobs: build: name: Check Snapshot runs-on: ubuntu-latest steps: + - name: Determine if branch starts with renovate/ + id: check_branch + run: | + if [[ "${GITHUB_REF##*/}" == renovate/* ]]; then + echo "should_skip=false" >> $GITHUB_ENV + else + echo "should_skip=true" >> $GITHUB_ENV + fi + - name: Checkout Main uses: actions/checkout@v4 + if: ${{ env.should_skip == 'false' }} with: ref: main path: repo - + - name: Install Dependencies in Main + if: ${{ env.should_skip == 'false' }} run: (cd repo && npm install) + - name: Create Snapshot In Main + if: ${{ env.should_skip == 'false' }} run: (cd repo && npx tt-cli take-snapshot ./snap.md) + - name: Copy Snapshot To Outer Directory + if: ${{ env.should_skip == 'false' }} run: mv repo/snap.md ./snap.md + - name: Delete Main Directory + if: ${{ env.should_skip == 'false' }} run: rm -rf repo + - name: Checkout Branch + if: ${{ env.should_skip == 'false' }} uses: actions/checkout@v4 with: path: repo + - name: Install Dependencies in Branch + if: ${{ env.should_skip == 'false' }} run: (cd repo && npm install) + - name: Move Snapshot To Branch + if: ${{ env.should_skip == 'false' }} run: mv ./snap.md repo/snap.md + - name: Compare Snapshot In Branch + if: ${{ env.should_skip == 'false' }} run: (cd repo && npx tt-cli compare-snapshot ./snap.md) From 83a25933a3cfa6140136465479aac9b89538d2da Mon Sep 17 00:00:00 2001 From: Matt Pocock Date: Tue, 23 Jul 2024 10:18:07 +0100 Subject: [PATCH 23/36] Removed notes --- notes/FUTURE.md | 7 ------- 1 file changed, 7 deletions(-) delete mode 100644 notes/FUTURE.md diff --git a/notes/FUTURE.md b/notes/FUTURE.md deleted file mode 100644 index fc208d4..0000000 --- a/notes/FUTURE.md +++ /dev/null @@ -1,7 +0,0 @@ -## Things to add - -Function overloads in custom hooks? -function overloads in components? -Omit, Pick, interface extends with props -Picking props from external libraries -Running TypeScript on CI From 207043aa50c352d93d7087b14e387bdd01785c55 Mon Sep 17 00:00:00 2001 From: Matt Pocock Date: Tue, 23 Jul 2024 10:19:49 +0100 Subject: [PATCH 24/36] Changed renovate setup --- renovate.json | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/renovate.json b/renovate.json index 1c54d17..5ed14e1 100644 --- a/renovate.json +++ b/renovate.json @@ -1,17 +1,16 @@ { "$schema": "https://docs.renovatebot.com/renovate-schema.json", - "extends": ["config:base"], "packageRules": [ { - "packagePatterns": ["*"], - "excludeDepNames": [ + "matchDepNames": [ "typescript", "vitest", "react", "@types/react", "@total-typescript/exercise-cli" ], - "enabled": false + "enabled": true, + "automerge": true } ] } From db7b6518779436ef4633153cd2e4acc64f38819e Mon Sep 17 00:00:00 2001 From: Matt Pocock Date: Tue, 23 Jul 2024 10:24:09 +0100 Subject: [PATCH 25/36] Fixed renovate again --- renovate.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/renovate.json b/renovate.json index 5ed14e1..8f3144e 100644 --- a/renovate.json +++ b/renovate.json @@ -1,6 +1,11 @@ { "$schema": "https://docs.renovatebot.com/renovate-schema.json", + "extends": ["config:base"], "packageRules": [ + { + "packagePatterns": ["*"], + "enabled": false + }, { "matchDepNames": [ "typescript", From 6c1f2367f8b7170510dd5e96a126855e3d790735 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 23 Jul 2024 09:42:51 +0000 Subject: [PATCH 26/36] chore(deps): update dependency vitest to v2.0.4 --- package-lock.json | 311 ++++++++++++++++++---------------------------- 1 file changed, 124 insertions(+), 187 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0a45e58..6f34f29 100644 --- a/package-lock.json +++ b/package-lock.json @@ -594,18 +594,6 @@ "@floating-ui/core": "^1.2.6" } }, - "node_modules/@jest/schemas": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", - "dev": true, - "dependencies": { - "@sinclair/typebox": "^0.27.8" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.5", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", @@ -845,12 +833,6 @@ "win32" ] }, - "node_modules/@sinclair/typebox": { - "version": "0.27.8", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", - "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", - "dev": true - }, "node_modules/@tanstack/query-core": { "version": "4.29.11", "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-4.29.11.tgz", @@ -1035,26 +1017,39 @@ } }, "node_modules/@vitest/expect": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-2.0.0.tgz", - "integrity": "sha512-5BSfZ0+dAVmC6uPF7s+TcKx0i7oyYHb1WQQL5gg6G2c+Qkaa5BNrdRM74sxDfUIZUgYCr6bfCqmJp+X5bfcNxQ==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-2.0.4.tgz", + "integrity": "sha512-39jr5EguIoanChvBqe34I8m1hJFI4+jxvdOpD7gslZrVQBKhh8H9eD7J/LJX4zakrw23W+dITQTDqdt43xVcJw==", "dev": true, "dependencies": { - "@vitest/spy": "2.0.0", - "@vitest/utils": "2.0.0", - "chai": "^5.1.1" + "@vitest/spy": "2.0.4", + "@vitest/utils": "2.0.4", + "chai": "^5.1.1", + "tinyrainbow": "^1.2.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/pretty-format": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.0.4.tgz", + "integrity": "sha512-RYZl31STbNGqf4l2eQM1nvKPXE0NhC6Eq0suTTePc4mtMQ1Fn8qZmjV4emZdEdG2NOWGKSCrHZjmTqDCDoeFBw==", + "dev": true, + "dependencies": { + "tinyrainbow": "^1.2.0" }, "funding": { "url": "https://opencollective.com/vitest" } }, "node_modules/@vitest/runner": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-2.0.0.tgz", - "integrity": "sha512-OovFmlkfRmdhevbWImBUtn9IEM+CKac8O+m9p6W9jTATGVBnDJQ6/jb1gpHyWxsu0ALi5f+TLi+Uyst7AAimMw==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-2.0.4.tgz", + "integrity": "sha512-Gk+9Su/2H2zNfNdeJR124gZckd5st4YoSuhF1Rebi37qTXKnqYyFCd9KP4vl2cQHbtuVKjfEKrNJxHHCW8thbQ==", "dev": true, "dependencies": { - "@vitest/utils": "2.0.0", + "@vitest/utils": "2.0.4", "pathe": "^1.1.2" }, "funding": { @@ -1062,23 +1057,23 @@ } }, "node_modules/@vitest/snapshot": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-2.0.0.tgz", - "integrity": "sha512-B520cSAQwtWgocPpARadnNLslHCxFs5tf7SG2TT96qz+SZgsXqcB1xI3w3/S9kUzdqykEKrMLvW+sIIpMcuUdw==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-2.0.4.tgz", + "integrity": "sha512-or6Mzoz/pD7xTvuJMFYEtso1vJo1S5u6zBTinfl+7smGUhqybn6VjzCDMhmTyVOFWwkCMuNjmNNxnyXPgKDoPw==", "dev": true, "dependencies": { + "@vitest/pretty-format": "2.0.4", "magic-string": "^0.30.10", - "pathe": "^1.1.2", - "pretty-format": "^29.7.0" + "pathe": "^1.1.2" }, "funding": { "url": "https://opencollective.com/vitest" } }, "node_modules/@vitest/spy": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-2.0.0.tgz", - "integrity": "sha512-0g7ho4wBK09wq8iNZFtUcQZcUcbPmbLWFotL0GXel0fvk5yPi4nTEKpIvZ+wA5eRyqPUCIfIUl10AWzLr67cmA==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-2.0.4.tgz", + "integrity": "sha512-uTXU56TNoYrTohb+6CseP8IqNwlNdtPwEO0AWl+5j7NelS6x0xZZtP0bDWaLvOfUbaYwhhWp1guzXUxkC7mW7Q==", "dev": true, "dependencies": { "tinyspy": "^3.0.0" @@ -1088,15 +1083,15 @@ } }, "node_modules/@vitest/utils": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-2.0.0.tgz", - "integrity": "sha512-t0jbx8VugWEP6A29NbyfQKVU68Vo6oUw0iX3a8BwO3nrZuivfHcFO4Y5UsqXlplX+83P9UaqEvC2YQhspC0JSA==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-2.0.4.tgz", + "integrity": "sha512-Zc75QuuoJhOBnlo99ZVUkJIuq4Oj0zAkrQ2VzCqNCx6wAwViHEh5Fnp4fiJTE9rA+sAoXRf00Z9xGgfEzV6fzQ==", "dev": true, "dependencies": { - "diff-sequences": "^29.6.3", + "@vitest/pretty-format": "2.0.4", "estree-walker": "^3.0.3", "loupe": "^3.1.1", - "pretty-format": "^29.7.0" + "tinyrainbow": "^1.2.0" }, "funding": { "url": "https://opencollective.com/vitest" @@ -1186,18 +1181,6 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, - "node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/anymatch": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", @@ -1614,15 +1597,6 @@ "npm": "1.2.8000 || >= 1.4.16" } }, - "node_modules/diff-sequences": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", - "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", - "dev": true, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, "node_modules/dom-helpers": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", @@ -2862,20 +2836,6 @@ "url": "https://github.com/prettier/prettier?sponsor=1" } }, - "node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", - "dev": true, - "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, "node_modules/prompts": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", @@ -3031,12 +2991,6 @@ "react": "^16.8.0 || ^17 || ^18" } }, - "node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "dev": true - }, "node_modules/react-select": { "version": "5.7.3", "resolved": "https://registry.npmjs.org/react-select/-/react-select-5.7.3.tgz", @@ -3434,6 +3388,15 @@ "node": "^18.0.0 || >=20.0.0" } }, + "node_modules/tinyrainbow": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-1.2.0.tgz", + "integrity": "sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==", + "dev": true, + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/tinyspy": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-3.0.0.tgz", @@ -3675,15 +3638,15 @@ } }, "node_modules/vite-node": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-2.0.0.tgz", - "integrity": "sha512-jZtezmjcgZTkMisIi68TdY8w/PqPTxK2pbfTU9/4Gqus1K3AVZqkwH0z7Vshe3CD6mq9rJq8SpqmuefDMIqkfQ==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-2.0.4.tgz", + "integrity": "sha512-ZpJVkxcakYtig5iakNeL7N3trufe3M6vGuzYAr4GsbCTwobDeyPJpE4cjDhhPluv8OvQCFzu2LWp6GkoKRITXA==", "dev": true, "dependencies": { "cac": "^6.7.14", "debug": "^4.3.5", "pathe": "^1.1.2", - "picocolors": "^1.0.1", + "tinyrainbow": "^1.2.0", "vite": "^5.0.0" }, "bin": { @@ -3762,29 +3725,30 @@ "dev": true }, "node_modules/vitest": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-2.0.0.tgz", - "integrity": "sha512-NvccE2tZhIoPSq3o3AoTBmItwhHNjzIxvOgfdzILIscyzSGOtw2+A1d/JJbS86HDVbc6TS5HnckQuCgTfp0HDQ==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-2.0.4.tgz", + "integrity": "sha512-luNLDpfsnxw5QSW4bISPe6tkxVvv5wn2BBs/PuDRkhXZ319doZyLOBr1sjfB5yCEpTiU7xCAdViM8TNVGPwoog==", "dev": true, "dependencies": { "@ampproject/remapping": "^2.3.0", - "@vitest/expect": "2.0.0", - "@vitest/runner": "2.0.0", - "@vitest/snapshot": "2.0.0", - "@vitest/spy": "2.0.0", - "@vitest/utils": "2.0.0", + "@vitest/expect": "2.0.4", + "@vitest/pretty-format": "^2.0.4", + "@vitest/runner": "2.0.4", + "@vitest/snapshot": "2.0.4", + "@vitest/spy": "2.0.4", + "@vitest/utils": "2.0.4", "chai": "^5.1.1", "debug": "^4.3.5", "execa": "^8.0.1", "magic-string": "^0.30.10", "pathe": "^1.1.2", - "picocolors": "^1.0.1", "std-env": "^3.7.0", "tinybench": "^2.8.0", "tinypool": "^1.0.0", + "tinyrainbow": "^1.2.0", "vite": "^5.0.0", - "vite-node": "2.0.0", - "why-is-node-running": "^2.2.2" + "vite-node": "2.0.4", + "why-is-node-running": "^2.3.0" }, "bin": { "vitest": "vitest.mjs" @@ -3798,8 +3762,8 @@ "peerDependencies": { "@edge-runtime/vm": "*", "@types/node": "^18.0.0 || >=20.0.0", - "@vitest/browser": "2.0.0", - "@vitest/ui": "2.0.0", + "@vitest/browser": "2.0.4", + "@vitest/ui": "2.0.4", "happy-dom": "*", "jsdom": "*" }, @@ -3930,9 +3894,9 @@ } }, "node_modules/why-is-node-running": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.2.2.tgz", - "integrity": "sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz", + "integrity": "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==", "dev": true, "dependencies": { "siginfo": "^2.0.0", @@ -4339,15 +4303,6 @@ "@floating-ui/core": "^1.2.6" } }, - "@jest/schemas": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", - "dev": true, - "requires": { - "@sinclair/typebox": "^0.27.8" - } - }, "@jridgewell/gen-mapping": { "version": "0.3.5", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", @@ -4497,12 +4452,6 @@ "dev": true, "optional": true }, - "@sinclair/typebox": { - "version": "0.27.8", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", - "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", - "dev": true - }, "@tanstack/query-core": { "version": "4.29.11", "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-4.29.11.tgz", @@ -4656,56 +4605,66 @@ } }, "@vitest/expect": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-2.0.0.tgz", - "integrity": "sha512-5BSfZ0+dAVmC6uPF7s+TcKx0i7oyYHb1WQQL5gg6G2c+Qkaa5BNrdRM74sxDfUIZUgYCr6bfCqmJp+X5bfcNxQ==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-2.0.4.tgz", + "integrity": "sha512-39jr5EguIoanChvBqe34I8m1hJFI4+jxvdOpD7gslZrVQBKhh8H9eD7J/LJX4zakrw23W+dITQTDqdt43xVcJw==", "dev": true, "requires": { - "@vitest/spy": "2.0.0", - "@vitest/utils": "2.0.0", - "chai": "^5.1.1" + "@vitest/spy": "2.0.4", + "@vitest/utils": "2.0.4", + "chai": "^5.1.1", + "tinyrainbow": "^1.2.0" + } + }, + "@vitest/pretty-format": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.0.4.tgz", + "integrity": "sha512-RYZl31STbNGqf4l2eQM1nvKPXE0NhC6Eq0suTTePc4mtMQ1Fn8qZmjV4emZdEdG2NOWGKSCrHZjmTqDCDoeFBw==", + "dev": true, + "requires": { + "tinyrainbow": "^1.2.0" } }, "@vitest/runner": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-2.0.0.tgz", - "integrity": "sha512-OovFmlkfRmdhevbWImBUtn9IEM+CKac8O+m9p6W9jTATGVBnDJQ6/jb1gpHyWxsu0ALi5f+TLi+Uyst7AAimMw==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-2.0.4.tgz", + "integrity": "sha512-Gk+9Su/2H2zNfNdeJR124gZckd5st4YoSuhF1Rebi37qTXKnqYyFCd9KP4vl2cQHbtuVKjfEKrNJxHHCW8thbQ==", "dev": true, "requires": { - "@vitest/utils": "2.0.0", + "@vitest/utils": "2.0.4", "pathe": "^1.1.2" } }, "@vitest/snapshot": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-2.0.0.tgz", - "integrity": "sha512-B520cSAQwtWgocPpARadnNLslHCxFs5tf7SG2TT96qz+SZgsXqcB1xI3w3/S9kUzdqykEKrMLvW+sIIpMcuUdw==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-2.0.4.tgz", + "integrity": "sha512-or6Mzoz/pD7xTvuJMFYEtso1vJo1S5u6zBTinfl+7smGUhqybn6VjzCDMhmTyVOFWwkCMuNjmNNxnyXPgKDoPw==", "dev": true, "requires": { + "@vitest/pretty-format": "2.0.4", "magic-string": "^0.30.10", - "pathe": "^1.1.2", - "pretty-format": "^29.7.0" + "pathe": "^1.1.2" } }, "@vitest/spy": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-2.0.0.tgz", - "integrity": "sha512-0g7ho4wBK09wq8iNZFtUcQZcUcbPmbLWFotL0GXel0fvk5yPi4nTEKpIvZ+wA5eRyqPUCIfIUl10AWzLr67cmA==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-2.0.4.tgz", + "integrity": "sha512-uTXU56TNoYrTohb+6CseP8IqNwlNdtPwEO0AWl+5j7NelS6x0xZZtP0bDWaLvOfUbaYwhhWp1guzXUxkC7mW7Q==", "dev": true, "requires": { "tinyspy": "^3.0.0" } }, "@vitest/utils": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-2.0.0.tgz", - "integrity": "sha512-t0jbx8VugWEP6A29NbyfQKVU68Vo6oUw0iX3a8BwO3nrZuivfHcFO4Y5UsqXlplX+83P9UaqEvC2YQhspC0JSA==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-2.0.4.tgz", + "integrity": "sha512-Zc75QuuoJhOBnlo99ZVUkJIuq4Oj0zAkrQ2VzCqNCx6wAwViHEh5Fnp4fiJTE9rA+sAoXRf00Z9xGgfEzV6fzQ==", "dev": true, "requires": { - "diff-sequences": "^29.6.3", + "@vitest/pretty-format": "2.0.4", "estree-walker": "^3.0.3", "loupe": "^3.1.1", - "pretty-format": "^29.7.0" + "tinyrainbow": "^1.2.0" } }, "abab": { @@ -4771,12 +4730,6 @@ } } }, - "ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true - }, "anymatch": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", @@ -5094,12 +5047,6 @@ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==" }, - "diff-sequences": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", - "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", - "dev": true - }, "dom-helpers": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", @@ -6000,17 +5947,6 @@ "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", "dev": true }, - "pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", - "dev": true, - "requires": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - } - }, "prompts": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", @@ -6118,12 +6054,6 @@ "integrity": "sha512-/tHId6p2ViAka1wECMw8FEPn/oz/w226zehHrJyQ1oIzCBNMIJCaj6ZkQcv+MjDxYh9MWR7RQic7Qqwe4a5nkw==", "requires": {} }, - "react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "dev": true - }, "react-select": { "version": "5.7.3", "resolved": "https://registry.npmjs.org/react-select/-/react-select-5.7.3.tgz", @@ -6413,6 +6343,12 @@ "integrity": "sha512-KIKExllK7jp3uvrNtvRBYBWBOAXSX8ZvoaD8T+7KB/QHIuoJW3Pmr60zucywjAlMb5TeXUkcs/MWeWLu0qvuAQ==", "dev": true }, + "tinyrainbow": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-1.2.0.tgz", + "integrity": "sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==", + "dev": true + }, "tinyspy": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-3.0.0.tgz", @@ -6546,15 +6482,15 @@ } }, "vite-node": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-2.0.0.tgz", - "integrity": "sha512-jZtezmjcgZTkMisIi68TdY8w/PqPTxK2pbfTU9/4Gqus1K3AVZqkwH0z7Vshe3CD6mq9rJq8SpqmuefDMIqkfQ==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-2.0.4.tgz", + "integrity": "sha512-ZpJVkxcakYtig5iakNeL7N3trufe3M6vGuzYAr4GsbCTwobDeyPJpE4cjDhhPluv8OvQCFzu2LWp6GkoKRITXA==", "dev": true, "requires": { "cac": "^6.7.14", "debug": "^4.3.5", "pathe": "^1.1.2", - "picocolors": "^1.0.1", + "tinyrainbow": "^1.2.0", "vite": "^5.0.0" }, "dependencies": { @@ -6604,29 +6540,30 @@ } }, "vitest": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-2.0.0.tgz", - "integrity": "sha512-NvccE2tZhIoPSq3o3AoTBmItwhHNjzIxvOgfdzILIscyzSGOtw2+A1d/JJbS86HDVbc6TS5HnckQuCgTfp0HDQ==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-2.0.4.tgz", + "integrity": "sha512-luNLDpfsnxw5QSW4bISPe6tkxVvv5wn2BBs/PuDRkhXZ319doZyLOBr1sjfB5yCEpTiU7xCAdViM8TNVGPwoog==", "dev": true, "requires": { "@ampproject/remapping": "^2.3.0", - "@vitest/expect": "2.0.0", - "@vitest/runner": "2.0.0", - "@vitest/snapshot": "2.0.0", - "@vitest/spy": "2.0.0", - "@vitest/utils": "2.0.0", + "@vitest/expect": "2.0.4", + "@vitest/pretty-format": "^2.0.4", + "@vitest/runner": "2.0.4", + "@vitest/snapshot": "2.0.4", + "@vitest/spy": "2.0.4", + "@vitest/utils": "2.0.4", "chai": "^5.1.1", "debug": "^4.3.5", "execa": "^8.0.1", "magic-string": "^0.30.10", "pathe": "^1.1.2", - "picocolors": "^1.0.1", "std-env": "^3.7.0", "tinybench": "^2.8.0", "tinypool": "^1.0.0", + "tinyrainbow": "^1.2.0", "vite": "^5.0.0", - "vite-node": "2.0.0", - "why-is-node-running": "^2.2.2" + "vite-node": "2.0.4", + "why-is-node-running": "^2.3.0" }, "dependencies": { "debug": { @@ -6707,9 +6644,9 @@ } }, "why-is-node-running": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.2.2.tgz", - "integrity": "sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz", + "integrity": "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==", "dev": true, "requires": { "siginfo": "^2.0.0", From b89a4420c2e6ac6f1e3d48710a45a596b42e9c34 Mon Sep 17 00:00:00 2001 From: Matt Pocock Date: Tue, 30 Jul 2024 11:38:28 +0100 Subject: [PATCH 27/36] Fixed package.json --- package.json | 124 +++++++++++++++++++++++++-------------------------- 1 file changed, 61 insertions(+), 63 deletions(-) diff --git a/package.json b/package.json index 8595b7e..29e95cb 100644 --- a/package.json +++ b/package.json @@ -21,42 +21,10 @@ "ci": "(cd scripts/tests && npx vitest run)", "update-snapshots": "(cd scripts/tests && npx vitest run -u)", "prepare": "tt-cli prepare-stackblitz", - "e-09": "tt-cli run 09", - "s-09": "tt-cli run 09 --solution", - "e-10": "tt-cli run 10", - "s-10": "tt-cli run 10 --solution", - "e-18": "tt-cli run 18", - "s-18": "tt-cli run 18 --solution", - "e-19": "tt-cli run 19", - "s-19": "tt-cli run 19 --solution", - "e-20": "tt-cli run 20", - "s-20": "tt-cli run 20 --solution", - "e-21": "tt-cli run 21", - "s-21": "tt-cli run 21 --solution", - "e-22": "tt-cli run 22", - "s-22": "tt-cli run 22 --solution", - "e-26": "tt-cli run 26", - "s-26": "tt-cli run 26 --solution", - "e-28": "tt-cli run 28", - "s-28": "tt-cli run 28 --solution", - "e-12": "tt-cli run 12", - "s-12": "tt-cli run 12 --solution", - "e-14": "tt-cli run 14", - "s-14": "tt-cli run 14 --solution", - "e-32": "tt-cli run 32", - "s-32": "tt-cli run 32 --solution", - "e-33": "tt-cli run 33", - "s-33": "tt-cli run 33 --solution", - "e-34": "tt-cli run 34", - "s-34": "tt-cli run 34 --solution", - "e-35": "tt-cli run 35", - "s-35": "tt-cli run 35 --solution", - "e-39": "tt-cli run 39", - "s-39": "tt-cli run 39 --solution", - "e-36": "tt-cli run 36", - "s-36": "tt-cli run 36 --solution", - "e-40": "tt-cli run 40", - "s-40": "tt-cli run 40 --solution", + "e-01": "tt-cli run 01", + "s-01": "tt-cli run 01 --solution", + "e-02": "tt-cli run 02", + "s-02": "tt-cli run 02 --solution", "e-03": "tt-cli run 03", "s-03": "tt-cli run 03 --solution", "e-04": "tt-cli run 04", @@ -69,38 +37,80 @@ "s-07": "tt-cli run 07 --solution", "e-08": "tt-cli run 08", "s-08": "tt-cli run 08 --solution", + "e-09": "tt-cli run 09", + "s-09": "tt-cli run 09 --solution", + "e-10": "tt-cli run 10", + "s-10": "tt-cli run 10 --solution", "e-11": "tt-cli run 11", "s-11": "tt-cli run 11 --solution", + "e-12": "tt-cli run 12", + "s-12": "tt-cli run 12 --solution", "e-13": "tt-cli run 13", "s-13": "tt-cli run 13 --solution", + "e-14": "tt-cli run 14", + "s-14": "tt-cli run 14 --solution", "e-15": "tt-cli run 15", "s-15": "tt-cli run 15 --solution", "e-16": "tt-cli run 16", "s-16": "tt-cli run 16 --solution", "e-17": "tt-cli run 17", "s-17": "tt-cli run 17 --solution", + "e-18": "tt-cli run 18", + "s-18": "tt-cli run 18 --solution", + "e-19": "tt-cli run 19", + "s-19": "tt-cli run 19 --solution", + "e-20": "tt-cli run 20", + "s-20": "tt-cli run 20 --solution", + "e-21": "tt-cli run 21", + "s-21": "tt-cli run 21 --solution", + "e-22": "tt-cli run 22", + "s-22": "tt-cli run 22 --solution", "e-23": "tt-cli run 23", "s-23": "tt-cli run 23 --solution", "e-24": "tt-cli run 24", "s-24": "tt-cli run 24 --solution", "e-25": "tt-cli run 25", "s-25": "tt-cli run 25 --solution", + "e-26": "tt-cli run 26", + "s-26": "tt-cli run 26 --solution", "e-27": "tt-cli run 27", "s-27": "tt-cli run 27 --solution", + "e-28": "tt-cli run 28", + "s-28": "tt-cli run 28 --solution", "e-29": "tt-cli run 29", "s-29": "tt-cli run 29 --solution", "e-30": "tt-cli run 30", "s-30": "tt-cli run 30 --solution", "e-31": "tt-cli run 31", "s-31": "tt-cli run 31 --solution", + "e-32": "tt-cli run 32", + "s-32": "tt-cli run 32 --solution", + "e-33": "tt-cli run 33", + "s-33": "tt-cli run 33 --solution", + "e-34": "tt-cli run 34", + "s-34": "tt-cli run 34 --solution", + "e-35": "tt-cli run 35", + "s-35": "tt-cli run 35 --solution", + "e-36": "tt-cli run 36", + "s-36": "tt-cli run 36 --solution", "e-37": "tt-cli run 37", "s-37": "tt-cli run 37 --solution", "e-38": "tt-cli run 38", "s-38": "tt-cli run 38 --solution", + "e-39": "tt-cli run 39", + "s-39": "tt-cli run 39 --solution", + "e-40": "tt-cli run 40", + "s-40": "tt-cli run 40 --solution", "e-41": "tt-cli run 41", "s-41": "tt-cli run 41 --solution", + "e-42": "tt-cli run 42", + "s-42": "tt-cli run 42 --solution", + "e-43": "tt-cli run 43", + "s-43": "tt-cli run 43 --solution", "e-44": "tt-cli run 44", "s-44": "tt-cli run 44 --solution", + "e-45": "tt-cli run 45", + "s-45": "tt-cli run 45 --solution", "e-46": "tt-cli run 46", "s-46": "tt-cli run 46 --solution", "e-47": "tt-cli run 47", @@ -113,6 +123,10 @@ "s-50": "tt-cli run 50 --solution", "e-51": "tt-cli run 51", "s-51": "tt-cli run 51 --solution", + "e-52": "tt-cli run 52", + "s-52": "tt-cli run 52 --solution", + "e-53": "tt-cli run 53", + "s-53": "tt-cli run 53 --solution", "e-54": "tt-cli run 54", "s-54": "tt-cli run 54 --solution", "e-55": "tt-cli run 55", @@ -133,50 +147,34 @@ "s-62": "tt-cli run 62 --solution", "e-63": "tt-cli run 63", "s-63": "tt-cli run 63 --solution", - "e-42": "tt-cli run 42", - "s-42": "tt-cli run 42 --solution", - "e-45": "tt-cli run 45", - "s-45": "tt-cli run 45 --solution", - "e-52": "tt-cli run 52", - "s-52": "tt-cli run 52 --solution", "e-64": "tt-cli run 64", "s-64": "tt-cli run 64 --solution", + "e-64.5": "tt-cli run 64.5", + "s-64.5": "tt-cli run 64.5 --solution", "e-65": "tt-cli run 65", "s-65": "tt-cli run 65 --solution", "e-66": "tt-cli run 66", "s-66": "tt-cli run 66 --solution", - "e-43": "tt-cli run 43", - "s-43": "tt-cli run 43 --solution", "e-67": "tt-cli run 67", "s-67": "tt-cli run 67 --solution", - "e-68": "tt-cli run 68", - "s-68": "tt-cli run 68 --solution", + "e-67.5": "tt-cli run 67.5", + "s-67.5": "tt-cli run 67.5 --solution", + "e-69": "tt-cli run 69", + "s-69": "tt-cli run 69 --solution", "e-70": "tt-cli run 70", "s-70": "tt-cli run 70 --solution", "e-71": "tt-cli run 71", "s-71": "tt-cli run 71 --solution", + "e-72": "tt-cli run 72", + "s-72": "tt-cli run 72 --solution", "e-73": "tt-cli run 73", "s-73": "tt-cli run 73 --solution", - "e-69": "tt-cli run 69", - "s-69": "tt-cli run 69 --solution", "e-74": "tt-cli run 74", "s-74": "tt-cli run 74 --solution", - "e-76": "tt-cli run 76", - "s-76": "tt-cli run 76 --solution", - "e-01": "tt-cli run 01", - "s-01": "tt-cli run 01 --solution", - "e-02": "tt-cli run 02", - "s-02": "tt-cli run 02 --solution", - "e-53": "tt-cli run 53", - "s-53": "tt-cli run 53 --solution", - "e-64.5": "tt-cli run 64.5", - "s-64.5": "tt-cli run 64.5 --solution", - "e-67.5": "tt-cli run 67.5", - "s-67.5": "tt-cli run 67.5 --solution", - "e-72": "tt-cli run 72", - "s-72": "tt-cli run 72 --solution", "e-75": "tt-cli run 75", "s-75": "tt-cli run 75 --solution", + "e-76": "tt-cli run 76", + "s-76": "tt-cli run 76 --solution", "e-77": "tt-cli run 77", "s-77": "tt-cli run 77 --solution" }, @@ -192,4 +190,4 @@ "react-select": "^5.7.3", "zod": "^3.21.4" } -} +} \ No newline at end of file From 7d531e3030be51defebedaedca84e7eb296329f2 Mon Sep 17 00:00:00 2001 From: Matt Pocock Date: Tue, 30 Jul 2024 11:39:54 +0100 Subject: [PATCH 28/36] Fixed renovate --- renovate.json | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/renovate.json b/renovate.json index 8f3144e..1c0166f 100644 --- a/renovate.json +++ b/renovate.json @@ -4,18 +4,14 @@ "packageRules": [ { "packagePatterns": ["*"], - "enabled": false - }, - { - "matchDepNames": [ + "excludePackagePatterns": [ "typescript", "vitest", "react", "@types/react", "@total-typescript/exercise-cli" ], - "enabled": true, - "automerge": true + "enabled": false } ] } From 3981de6c1983a57b6697a3705380ff5f7ff922d2 Mon Sep 17 00:00:00 2001 From: Matt Pocock Date: Tue, 30 Jul 2024 11:40:25 +0100 Subject: [PATCH 29/36] Removed email --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 29e95cb..9ae6a9d 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "react-typescript-tutorial", "version": "1.0.0", "main": "index.js", - "author": "Matt Pocock ", + "author": "Matt Pocock ", "license": "GPL", "devDependencies": { "@total-typescript/exercise-cli": "^0.10.0", @@ -190,4 +190,4 @@ "react-select": "^5.7.3", "zod": "^3.21.4" } -} \ No newline at end of file +} From 7f4cb1862987f2686338c6e7079cb847f608ca77 Mon Sep 17 00:00:00 2001 From: Matt Pocock Date: Tue, 30 Jul 2024 11:42:55 +0100 Subject: [PATCH 30/36] Fixed renovate checks --- .github/workflows/renovate-checks.yml | 30 ++------------------------- 1 file changed, 2 insertions(+), 28 deletions(-) diff --git a/.github/workflows/renovate-checks.yml b/.github/workflows/renovate-checks.yml index 71ce34f..fa3c642 100644 --- a/.github/workflows/renovate-checks.yml +++ b/.github/workflows/renovate-checks.yml @@ -2,59 +2,33 @@ name: Renovate Checks on: push: branches: - - "**" + - "renovate/**" jobs: build: - name: Check Snapshot runs-on: ubuntu-latest steps: - - name: Determine if branch starts with renovate/ - id: check_branch - run: | - if [[ "${GITHUB_REF##*/}" == renovate/* ]]; then - echo "should_skip=false" >> $GITHUB_ENV - else - echo "should_skip=true" >> $GITHUB_ENV - fi - - name: Checkout Main uses: actions/checkout@v4 - if: ${{ env.should_skip == 'false' }} with: ref: main path: repo - + - name: Install Dependencies in Main - if: ${{ env.should_skip == 'false' }} run: (cd repo && npm install) - - name: Create Snapshot In Main - if: ${{ env.should_skip == 'false' }} run: (cd repo && npx tt-cli take-snapshot ./snap.md) - - name: Copy Snapshot To Outer Directory - if: ${{ env.should_skip == 'false' }} run: mv repo/snap.md ./snap.md - - name: Delete Main Directory - if: ${{ env.should_skip == 'false' }} run: rm -rf repo - - name: Checkout Branch - if: ${{ env.should_skip == 'false' }} uses: actions/checkout@v4 with: path: repo - - name: Install Dependencies in Branch - if: ${{ env.should_skip == 'false' }} run: (cd repo && npm install) - - name: Move Snapshot To Branch - if: ${{ env.should_skip == 'false' }} run: mv ./snap.md repo/snap.md - - name: Compare Snapshot In Branch - if: ${{ env.should_skip == 'false' }} run: (cd repo && npx tt-cli compare-snapshot ./snap.md) From 4b95b2c6b027a970fc7bf1e2cad196e7134ec29e Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 9 Sep 2024 18:23:27 +0000 Subject: [PATCH 31/36] chore(deps): update dependency typescript to v5.6.2 --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6f34f29..e3bcb72 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3506,9 +3506,9 @@ } }, "node_modules/typescript": { - "version": "5.5.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz", - "integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==", + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.2.tgz", + "integrity": "sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -6421,9 +6421,9 @@ } }, "typescript": { - "version": "5.5.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz", - "integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==", + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.2.tgz", + "integrity": "sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw==", "dev": true }, "universalify": { From 7a94cf840e44b787b3494b645d50af7717b79f32 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 13 Sep 2024 09:23:10 +0000 Subject: [PATCH 32/36] chore(deps): update dependency @total-typescript/exercise-cli to ^0.11.0 --- package-lock.json | 14 +++++++------- package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index e3bcb72..fd2b131 100644 --- a/package-lock.json +++ b/package-lock.json @@ -21,7 +21,7 @@ "zod": "^3.21.4" }, "devDependencies": { - "@total-typescript/exercise-cli": "^0.10.0", + "@total-typescript/exercise-cli": "^0.11.0", "cross-fetch": "^3.1.5", "jsdom": "^21.1.1", "prettier": "^2.8.7", @@ -878,9 +878,9 @@ } }, "node_modules/@total-typescript/exercise-cli": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/@total-typescript/exercise-cli/-/exercise-cli-0.10.1.tgz", - "integrity": "sha512-1gSFgd0bacbz6kTeXD4j75uG1WQdzy3tQ66wH89MPyGDV//DrTYq5kXGghzjJLCzM5e4hFZ0NRCWCaogiB59wg==", + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@total-typescript/exercise-cli/-/exercise-cli-0.11.0.tgz", + "integrity": "sha512-VTRT1UTedPEburo5uQZLDchnbUAciOKsnO89y7DAKJS3/NMAObi6gr1/SNlCcEmCRa/Rya2mLG+iYBYhnmYsYA==", "dev": true, "dependencies": { "chokidar": "^3.5.3", @@ -4473,9 +4473,9 @@ "dev": true }, "@total-typescript/exercise-cli": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/@total-typescript/exercise-cli/-/exercise-cli-0.10.1.tgz", - "integrity": "sha512-1gSFgd0bacbz6kTeXD4j75uG1WQdzy3tQ66wH89MPyGDV//DrTYq5kXGghzjJLCzM5e4hFZ0NRCWCaogiB59wg==", + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@total-typescript/exercise-cli/-/exercise-cli-0.11.0.tgz", + "integrity": "sha512-VTRT1UTedPEburo5uQZLDchnbUAciOKsnO89y7DAKJS3/NMAObi6gr1/SNlCcEmCRa/Rya2mLG+iYBYhnmYsYA==", "dev": true, "requires": { "chokidar": "^3.5.3", diff --git a/package.json b/package.json index 9ae6a9d..e2895e9 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "author": "Matt Pocock ", "license": "GPL", "devDependencies": { - "@total-typescript/exercise-cli": "^0.10.0", + "@total-typescript/exercise-cli": "^0.11.0", "cross-fetch": "^3.1.5", "jsdom": "^21.1.1", "prettier": "^2.8.7", From 8583943b547640cf1760c6e25b972566a1d33c23 Mon Sep 17 00:00:00 2001 From: Matt Pocock Date: Fri, 13 Sep 2024 16:03:25 +0200 Subject: [PATCH 33/36] Upgrades --- .gitignore | 7 +++- .vscode/settings.json | 8 ++++ plan.json | 70 ------------------------------- renovate.json | 6 ++- scripts/setup.ts | 3 -- vite.config.ts => vite.config.mts | 2 - 6 files changed, 18 insertions(+), 78 deletions(-) create mode 100644 .vscode/settings.json delete mode 100644 plan.json delete mode 100644 scripts/setup.ts rename vite.config.ts => vite.config.mts (76%) diff --git a/.gitignore b/.gitignore index 59ecb4b..bd2eb9d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,6 @@ node_modules -.vscode -tsconfig.temp.json \ No newline at end of file +tsconfig.temp.json +dist +*.tsbuildinfo +*.prompt.* +.vscode/*.code-snippets \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..b6621bd --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,8 @@ +{ + "typescript.tsdk": "node_modules/typescript/lib", + "typescript.enablePromptUseWorkspaceTsdk": true, + "github.copilot.enable": { + "*": false, + }, + "explorer.sortOrder": "mixed", +} \ No newline at end of file diff --git a/plan.json b/plan.json deleted file mode 100644 index 6aa33f7..0000000 --- a/plan.json +++ /dev/null @@ -1,70 +0,0 @@ -[ - { - "text": "Typing components", - "deps": [] - }, - { - "text": "Typing children", - "deps": ["Typing components"] - }, - { - "text": "Typing components which inherit from native components", - "deps": ["Typing components"] - }, - { - "text": "Typing onChange handlers", - "deps": [] - }, - { - "text": "Typing hooks", - "deps": [] - }, - { - "text": "Tuple return types from custom hooks", - "deps": [] - }, - { - "text": "useReducer", - "deps": [] - }, - { - "text": "Typing createContext", - "deps": [] - }, - { - "text": "useState overloads", - "deps": [] - }, - { - "text": "useRef overloads - For HTML elements - For values", - "deps": [] - }, - { - "text": "forwardRef", - "deps": [] - }, - { - "text": "Discriminated union props", - "deps": [] - }, - { - "text": "Generic components", - "deps": ["Typing components"] - }, - { - "text": "Generic custom hooks", - "deps": ["Typing hooks"] - }, - { - "text": "useState with a generic", - "deps": ["Generic custom hooks"] - }, - { - "text": "Function overloads in custom hooks", - "deps": ["Generic custom hooks"] - }, - { - "text": "Higher-order components", - "deps": [] - } -] diff --git a/renovate.json b/renovate.json index 1c0166f..29b50a8 100644 --- a/renovate.json +++ b/renovate.json @@ -7,9 +7,13 @@ "excludePackagePatterns": [ "typescript", "vitest", + "jsdom", + "prettier", + "vite-tsconfig-paths", "react", "@types/react", - "@total-typescript/exercise-cli" + "@total-typescript/exercise-cli", + "zod" ], "enabled": false } diff --git a/scripts/setup.ts b/scripts/setup.ts deleted file mode 100644 index 354d20d..0000000 --- a/scripts/setup.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { fetch } from "cross-fetch"; - -global.fetch = fetch; diff --git a/vite.config.ts b/vite.config.mts similarity index 76% rename from vite.config.ts rename to vite.config.mts index 251dac0..c5cfc0c 100644 --- a/vite.config.ts +++ b/vite.config.mts @@ -1,11 +1,9 @@ import { defineConfig } from "vitest/config"; import tsconfigPaths from "vite-tsconfig-paths"; -import path from "path"; export default defineConfig({ test: { include: ["src/**/*{problem,solution,explainer}*.{ts,tsx}"], - setupFiles: [path.resolve(__dirname, "scripts/setup.ts")], passWithNoTests: true, environment: "jsdom", }, From d9eae975fbaa0abf07b0063fd900adfc1b4acf48 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 13 Sep 2024 14:03:54 +0000 Subject: [PATCH 34/36] fix(deps): update dependency zod to v3.22.3 [security] --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index fd2b131..0307588 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3963,9 +3963,9 @@ } }, "node_modules/zod": { - "version": "3.21.4", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.21.4.tgz", - "integrity": "sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==", + "version": "3.22.3", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.22.3.tgz", + "integrity": "sha512-EjIevzuJRiRPbVH4mGc8nApb/lVLKVpmUhAaR5R5doKGfAnGJ6Gr3CViAVjP+4FWSxCsybeWQdcgCtbX+7oZug==", "funding": { "url": "https://github.com/sponsors/colinhacks" } @@ -6684,9 +6684,9 @@ "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==" }, "zod": { - "version": "3.21.4", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.21.4.tgz", - "integrity": "sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==" + "version": "3.22.3", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.22.3.tgz", + "integrity": "sha512-EjIevzuJRiRPbVH4mGc8nApb/lVLKVpmUhAaR5R5doKGfAnGJ6Gr3CViAVjP+4FWSxCsybeWQdcgCtbX+7oZug==" } } } From d9443c5444b505b9046910bac98980e607a92af2 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 13 Sep 2024 14:04:04 +0000 Subject: [PATCH 35/36] chore(deps): update dependency vite-tsconfig-paths to v4.3.2 --- package-lock.json | 60 +++++++++++++++++++++++------------------------ 1 file changed, 30 insertions(+), 30 deletions(-) diff --git a/package-lock.json b/package-lock.json index fd2b131..f2d50e8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3462,18 +3462,18 @@ } }, "node_modules/tsconfck": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/tsconfck/-/tsconfck-2.1.1.tgz", - "integrity": "sha512-ZPCkJBKASZBmBUNqGHmRhdhM8pJYDdOXp4nRgj/O0JwUwsMq50lCDRQP/M5GBNAA0elPrq4gAeu4dkaVCuKWww==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/tsconfck/-/tsconfck-3.1.3.tgz", + "integrity": "sha512-ulNZP1SVpRDesxeMLON/LtWM8HIgAJEIVpVVhBM6gsmvQ8+Rh+ZG7FWGvHh7Ah3pRABwVJWklWCr/BTZSv0xnQ==", "dev": true, "bin": { "tsconfck": "bin/tsconfck.js" }, "engines": { - "node": "^14.13.1 || ^16 || >=18" + "node": "^18 || >=20" }, "peerDependencies": { - "typescript": "^4.3.5 || ^5.0.0" + "typescript": "^5.0.0" }, "peerDependenciesMeta": { "typescript": { @@ -3683,14 +3683,14 @@ "dev": true }, "node_modules/vite-tsconfig-paths": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/vite-tsconfig-paths/-/vite-tsconfig-paths-4.2.0.tgz", - "integrity": "sha512-jGpus0eUy5qbbMVGiTxCL1iB9ZGN6Bd37VGLJU39kTDD6ZfULTTb1bcc5IeTWqWJKiWV5YihCaibeASPiGi8kw==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/vite-tsconfig-paths/-/vite-tsconfig-paths-4.3.2.tgz", + "integrity": "sha512-0Vd/a6po6Q+86rPlntHye7F31zA2URZMbH8M3saAZ/xR9QoGN/L21bxEGfXdWmFdNkqPpRdxFT7nmNe12e9/uA==", "dev": true, "dependencies": { "debug": "^4.1.1", "globrex": "^0.1.2", - "tsconfck": "^2.1.0" + "tsconfck": "^3.0.3" }, "peerDependencies": { "vite": "*" @@ -3702,12 +3702,12 @@ } }, "node_modules/vite-tsconfig-paths/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", "dev": true, "dependencies": { - "ms": "2.1.2" + "ms": "^2.1.3" }, "engines": { "node": ">=6.0" @@ -3719,9 +3719,9 @@ } }, "node_modules/vite-tsconfig-paths/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true }, "node_modules/vitest": { @@ -6396,9 +6396,9 @@ } }, "tsconfck": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/tsconfck/-/tsconfck-2.1.1.tgz", - "integrity": "sha512-ZPCkJBKASZBmBUNqGHmRhdhM8pJYDdOXp4nRgj/O0JwUwsMq50lCDRQP/M5GBNAA0elPrq4gAeu4dkaVCuKWww==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/tsconfck/-/tsconfck-3.1.3.tgz", + "integrity": "sha512-ulNZP1SVpRDesxeMLON/LtWM8HIgAJEIVpVVhBM6gsmvQ8+Rh+ZG7FWGvHh7Ah3pRABwVJWklWCr/BTZSv0xnQ==", "dev": true, "requires": {} }, @@ -6512,29 +6512,29 @@ } }, "vite-tsconfig-paths": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/vite-tsconfig-paths/-/vite-tsconfig-paths-4.2.0.tgz", - "integrity": "sha512-jGpus0eUy5qbbMVGiTxCL1iB9ZGN6Bd37VGLJU39kTDD6ZfULTTb1bcc5IeTWqWJKiWV5YihCaibeASPiGi8kw==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/vite-tsconfig-paths/-/vite-tsconfig-paths-4.3.2.tgz", + "integrity": "sha512-0Vd/a6po6Q+86rPlntHye7F31zA2URZMbH8M3saAZ/xR9QoGN/L21bxEGfXdWmFdNkqPpRdxFT7nmNe12e9/uA==", "dev": true, "requires": { "debug": "^4.1.1", "globrex": "^0.1.2", - "tsconfck": "^2.1.0" + "tsconfck": "^3.0.3" }, "dependencies": { "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", "dev": true, "requires": { - "ms": "2.1.2" + "ms": "^2.1.3" } }, "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true } } From 9e62b9e07ac5e05d096772b62fc02f5cfcafba16 Mon Sep 17 00:00:00 2001 From: Matt Pocock Date: Fri, 13 Sep 2024 18:01:47 +0200 Subject: [PATCH 36/36] chore: add files --- package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index e2895e9..44ae77c 100644 --- a/package.json +++ b/package.json @@ -189,5 +189,6 @@ "react-hook-form": "^7.44.3", "react-select": "^5.7.3", "zod": "^3.21.4" - } + }, + "type": "module" }