From 54652ee674b36084ac4a53de8b56d3462191aa38 Mon Sep 17 00:00:00 2001 From: Corbin Crutchley Date: Wed, 18 Oct 2023 02:22:05 -0700 Subject: [PATCH] feat: Add Yup and Zod validator support (#462) * chore: first pass * chore: onto something I think * chore: closer but no cigar * chore: infer validator * chore: infer zod * feat: add validation transformer logic * chore: fix typings for react adapter * chore: fix issue with `this` not being defined properly * chore: mostly update FieldInfo types from Vue * chore: work on fixing type inferencing * fix: make ValidatorType optional * chore: make TName restriction easier to grok * chore: fix React types * chore: fix Vue types * chore: fix typing issues * chore: fix various linting items * chore: fix ESlint and validation logic * chore: fix inferencing from formdata * chore: fix form inferencing * chore: fix React TS types to match form validator logic * chore: fix Vue types * chore: migrate zod validation to dedicated package * chore: add first integration test for zod adapter * chore: enable non-validator types to be passed to validator * feat: add yup 1.x adapter * chore: add functionality and tests for form-wide validators * chore: fix typings of async validation types * fix: async validation should now run as-expected more often * chore: add async tests for Yup validator * chore: rename packages to match naming schema better * chore: add Zod examples for React and Vue * chore: add React and Vue Yup support * chore: fix formatting * chore: fix CI types * chore: initial work to drastically improve docs * docs: improve docs for validation * docs: add adapter validation docs --- docs/config.json | 24 +- docs/guides/basic-concepts.md | 38 +- docs/guides/important-defaults.md | 21 - docs/guides/validation.md | 280 ++ docs/installation.md | 13 +- docs/reference/fieldApi.md | 134 +- docs/reference/formApi.md | 14 +- examples/react/simple/package.json | 4 +- examples/react/simple/src/index.tsx | 2 +- examples/react/yup/.eslintrc.cjs | 15 + examples/react/yup/.gitignore | 27 + examples/react/yup/.prettierrc | 1 + examples/react/yup/README.md | 6 + examples/react/yup/index.html | 16 + examples/react/yup/package.json | 49 + examples/react/yup/public/emblem-light.svg | 13 + examples/react/yup/src/index.tsx | 114 + examples/react/yup/tsconfig.json | 7 + examples/react/zod/.eslintrc.cjs | 15 + examples/react/zod/.gitignore | 27 + examples/react/zod/.prettierrc | 1 + examples/react/zod/README.md | 6 + examples/react/zod/index.html | 16 + examples/react/zod/package.json | 49 + examples/react/zod/public/emblem-light.svg | 13 + examples/react/zod/src/index.tsx | 113 + examples/react/zod/tsconfig.json | 7 + examples/vue/simple/index.html | 2 +- examples/vue/simple/package.json | 3 +- examples/vue/simple/src/App.vue | 2 +- examples/vue/simple/src/FieldInfo.vue | 2 +- examples/vue/yup/.gitignore | 9 + examples/vue/yup/README.md | 6 + examples/vue/yup/index.html | 12 + examples/vue/yup/package.json | 38 + examples/vue/yup/src/App.vue | 87 + examples/vue/yup/src/FieldInfo.vue | 12 + examples/vue/yup/src/main.ts | 5 + examples/vue/yup/src/shims-vue.d.ts | 5 + examples/vue/yup/src/types.d.ts | 6 + examples/vue/yup/tsconfig.json | 15 + examples/vue/yup/vite.config.ts | 10 + examples/vue/zod/.gitignore | 9 + examples/vue/zod/README.md | 6 + examples/vue/zod/index.html | 12 + examples/vue/zod/package.json | 38 + examples/vue/zod/src/App.vue | 90 + examples/vue/zod/src/FieldInfo.vue | 12 + examples/vue/zod/src/main.ts | 5 + examples/vue/zod/src/shims-vue.d.ts | 5 + examples/vue/zod/src/types.d.ts | 6 + examples/vue/zod/tsconfig.json | 15 + examples/vue/zod/vite.config.ts | 10 + package.json | 9 +- packages/form-core/src/FieldApi.ts | 215 +- packages/form-core/src/FormApi.ts | 107 +- packages/form-core/src/index.ts | 1 + packages/form-core/src/tests/FieldApi.spec.ts | 2 +- .../form-core/src/tests/FieldApi.test-d.ts | 37 +- packages/form-core/src/tests/FormApi.spec.ts | 2 +- packages/form-core/src/types.ts | 7 + packages/react-form/src/createFormFactory.ts | 16 +- packages/react-form/src/formContext.ts | 2 +- .../src/tests/createFormFactory.test.tsx | 2 +- .../react-form/src/tests/useField.test.tsx | 16 +- .../react-form/src/tests/useForm.test.tsx | 4 +- packages/react-form/src/types.ts | 6 +- packages/react-form/src/useField.tsx | 95 +- packages/react-form/src/useForm.tsx | 8 +- packages/vue-form/src/createFormFactory.ts | 18 +- packages/vue-form/src/formContext.ts | 2 +- packages/vue-form/src/tests/useField.test.tsx | 40 +- packages/vue-form/src/tests/useForm.test.tsx | 51 +- packages/vue-form/src/types.ts | 6 +- packages/vue-form/src/useField.tsx | 81 +- packages/vue-form/src/useForm.tsx | 16 +- packages/yup-form-adapter/.eslintrc.cjs | 11 + packages/yup-form-adapter/package.json | 62 + packages/yup-form-adapter/src/index.ts | 1 + .../src/tests/FieldApi.spec.ts | 112 + .../src/tests/FieldApi.test-d.ts | 82 + .../src/tests/FormApi.spec.ts | 55 + .../src/tests/FormApi.test-d.ts | 77 + packages/yup-form-adapter/src/tests/utils.ts | 5 + packages/yup-form-adapter/src/validator.ts | 25 + .../yup-form-adapter/tsconfig.eslint.json | 7 + packages/yup-form-adapter/tsconfig.json | 9 + packages/yup-form-adapter/tsup.config.js | 9 + packages/yup-form-adapter/vitest.config.ts | 12 + packages/zod-form-adapter/.eslintrc.cjs | 11 + packages/zod-form-adapter/package.json | 62 + packages/zod-form-adapter/src/index.ts | 1 + .../src/tests/FieldApi.spec.ts | 110 + .../src/tests/FieldApi.test-d.ts | 97 + .../src/tests/FormApi.spec.ts | 55 + .../src/tests/FormApi.test-d.ts | 92 + packages/zod-form-adapter/src/tests/utils.ts | 5 + packages/zod-form-adapter/src/validator.ts | 23 + .../zod-form-adapter/tsconfig.eslint.json | 7 + packages/zod-form-adapter/tsconfig.json | 9 + packages/zod-form-adapter/tsup.config.js | 9 + packages/zod-form-adapter/vitest.config.ts | 12 + patches/tsup@7.2.0.patch | 14 + pnpm-lock.yaml | 3079 ++++++++--------- 104 files changed, 4311 insertions(+), 1932 deletions(-) delete mode 100644 docs/guides/important-defaults.md create mode 100644 docs/guides/validation.md create mode 100644 examples/react/yup/.eslintrc.cjs create mode 100644 examples/react/yup/.gitignore create mode 100644 examples/react/yup/.prettierrc create mode 100644 examples/react/yup/README.md create mode 100644 examples/react/yup/index.html create mode 100644 examples/react/yup/package.json create mode 100644 examples/react/yup/public/emblem-light.svg create mode 100644 examples/react/yup/src/index.tsx create mode 100644 examples/react/yup/tsconfig.json create mode 100644 examples/react/zod/.eslintrc.cjs create mode 100644 examples/react/zod/.gitignore create mode 100644 examples/react/zod/.prettierrc create mode 100644 examples/react/zod/README.md create mode 100644 examples/react/zod/index.html create mode 100644 examples/react/zod/package.json create mode 100644 examples/react/zod/public/emblem-light.svg create mode 100644 examples/react/zod/src/index.tsx create mode 100644 examples/react/zod/tsconfig.json create mode 100644 examples/vue/yup/.gitignore create mode 100644 examples/vue/yup/README.md create mode 100644 examples/vue/yup/index.html create mode 100644 examples/vue/yup/package.json create mode 100644 examples/vue/yup/src/App.vue create mode 100644 examples/vue/yup/src/FieldInfo.vue create mode 100644 examples/vue/yup/src/main.ts create mode 100644 examples/vue/yup/src/shims-vue.d.ts create mode 100644 examples/vue/yup/src/types.d.ts create mode 100644 examples/vue/yup/tsconfig.json create mode 100644 examples/vue/yup/vite.config.ts create mode 100644 examples/vue/zod/.gitignore create mode 100644 examples/vue/zod/README.md create mode 100644 examples/vue/zod/index.html create mode 100644 examples/vue/zod/package.json create mode 100644 examples/vue/zod/src/App.vue create mode 100644 examples/vue/zod/src/FieldInfo.vue create mode 100644 examples/vue/zod/src/main.ts create mode 100644 examples/vue/zod/src/shims-vue.d.ts create mode 100644 examples/vue/zod/src/types.d.ts create mode 100644 examples/vue/zod/tsconfig.json create mode 100644 examples/vue/zod/vite.config.ts create mode 100644 packages/form-core/src/types.ts create mode 100644 packages/yup-form-adapter/.eslintrc.cjs create mode 100644 packages/yup-form-adapter/package.json create mode 100644 packages/yup-form-adapter/src/index.ts create mode 100644 packages/yup-form-adapter/src/tests/FieldApi.spec.ts create mode 100644 packages/yup-form-adapter/src/tests/FieldApi.test-d.ts create mode 100644 packages/yup-form-adapter/src/tests/FormApi.spec.ts create mode 100644 packages/yup-form-adapter/src/tests/FormApi.test-d.ts create mode 100644 packages/yup-form-adapter/src/tests/utils.ts create mode 100644 packages/yup-form-adapter/src/validator.ts create mode 100644 packages/yup-form-adapter/tsconfig.eslint.json create mode 100644 packages/yup-form-adapter/tsconfig.json create mode 100644 packages/yup-form-adapter/tsup.config.js create mode 100644 packages/yup-form-adapter/vitest.config.ts create mode 100644 packages/zod-form-adapter/.eslintrc.cjs create mode 100644 packages/zod-form-adapter/package.json create mode 100644 packages/zod-form-adapter/src/index.ts create mode 100644 packages/zod-form-adapter/src/tests/FieldApi.spec.ts create mode 100644 packages/zod-form-adapter/src/tests/FieldApi.test-d.ts create mode 100644 packages/zod-form-adapter/src/tests/FormApi.spec.ts create mode 100644 packages/zod-form-adapter/src/tests/FormApi.test-d.ts create mode 100644 packages/zod-form-adapter/src/tests/utils.ts create mode 100644 packages/zod-form-adapter/src/validator.ts create mode 100644 packages/zod-form-adapter/tsconfig.eslint.json create mode 100644 packages/zod-form-adapter/tsconfig.json create mode 100644 packages/zod-form-adapter/tsup.config.js create mode 100644 packages/zod-form-adapter/vitest.config.ts create mode 100644 patches/tsup@7.2.0.patch diff --git a/docs/config.json b/docs/config.json index e5d3199..37a38b0 100644 --- a/docs/config.json +++ b/docs/config.json @@ -30,8 +30,12 @@ "label": "Guides", "children": [ { - "label": "Important Defaults", - "to": "guides/important-defaults" + "label": "Basic Concepts", + "to": "guides/basic-concepts" + }, + { + "label": "Form Validation", + "to": "guides/validation" } ] }, @@ -89,6 +93,14 @@ { "label": "Simple", "to": "framework/react/examples/simple" + }, + { + "label": "Yup", + "to": "framework/react/examples/yup" + }, + { + "label": "Zod", + "to": "framework/react/examples/zod" } ] } @@ -133,6 +145,14 @@ { "label": "Simple", "to": "framework/vue/examples/simple" + }, + { + "label": "Yup", + "to": "framework/vue/examples/yup" + }, + { + "label": "Zod", + "to": "framework/vue/examples/zod" } ] } diff --git a/docs/guides/basic-concepts.md b/docs/guides/basic-concepts.md index ed891ea..d849205 100644 --- a/docs/guides/basic-concepts.md +++ b/docs/guides/basic-concepts.md @@ -5,9 +5,7 @@ title: Basic Concepts and Terminology # Basic Concepts and Terminology -> Some of these docs may be inaccurate due to an API shift in `0.11.0`. If you're interested in helping us fix these issues, please [join our Discord](https://tlinz.com/discord) and reach out in the `#form` channel. - -This page introduces the basic concepts and terminology used in the @tanstack/react-form library. Familiarizing yourself with these concepts will help you better understand and work with the library. +This page introduces the basic concepts and terminology used in the `@tanstack/react-form` library. Familiarizing yourself with these concepts will help you better understand and work with the library. ## Form Factory @@ -86,7 +84,7 @@ Example: ## Validation -@tanstack/react-form provides both synchronous and asynchronous validation out of the box. Validation functions can be passed to the form.Field component using the validate and validateAsync props. +`@tanstack/react-form` provides both synchronous and asynchronous validation out of the box. Validation functions can be passed to the form.Field component using the validate and validateAsync props. Example: @@ -111,9 +109,34 @@ Example: /> ``` +## Validation Adapters + +In addition to hand-rolled validation options, we also provide adapters like `@tanstack/zod-form-adapter` and `@tanstack/yup-form-adapter` to enable usage with common schema validation tools like [Yup](https://github.com/jquense/yup) and [Zod](https://zod.dev/). + +Example: + +```tsx + { + await new Promise((resolve) => setTimeout(resolve, 1000)); + return !value.includes("error"); + }, + { + message: "No 'error' allowed in first name", + }, + )} +/> +``` + ## Reactivity -@tanstack/react-form offers various ways to subscribe to form and field state changes, such as the form.useStore hook, the form.Subscribe component, and the form.useField hook. These methods allow you to optimize your form's rendering performance by only updating components when necessary. +`@tanstack/react-form` offers various ways to subscribe to form and field state changes, such as the `form.useStore` hook, the `form.Subscribe` component, and the `form.useField` hook. These methods allow you to optimize your form's rendering performance by only updating components when necessary. Example: @@ -240,8 +263,5 @@ Example: /> ``` -These are the basic concepts and terminology used in the @tanstack/react-form library. Understanding these concepts will help you work more effectively with the library and create complex forms with ease. +These are the basic concepts and terminology used in the `@tanstack/react-form` library. Understanding these concepts will help you work more effectively with the library and create complex forms with ease. -``` - -``` diff --git a/docs/guides/important-defaults.md b/docs/guides/important-defaults.md deleted file mode 100644 index d958531..0000000 --- a/docs/guides/important-defaults.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -id: important-defaults -title: Important Defaults ---- - -> Some of these docs may be inaccurate due to an API shift in `0.11.0`. If you're interested in helping us fix these issues, please [join our Discord](https://tlinz.com/discord) and reach out in the `#form` channel. - -Out of the box, TanStack Form is configured with **aggressive but sane** defaults. **Sometimes these defaults can catch new users off guard or make learning/debugging difficult if they are unknown by the user.** Keep them in mind as you continue to learn and use TanStack Form: - -- Core - - Validation - - By default, only touched, dirty fields are validated on blur and submit. This means that if you have a field that is required, it will not show an error until the user has blurred the field (focused and unfocused) or submitted the form. You can change this to include field `change` events or only the `submit` event with a form default or on a per field basis with the `defaultValidateOn` and `validateOn` options. `validatePristine` can also be used to validate pristine fields. - - By default, TanStack async validation will only run if synchronous validation succeeds. This is to prevent unnecessary async validation which usually are powered by network requests. - - By default, TanStack Form will not validate fields that are not registered. This is to prevent unnecessary validation of fields that are not in the DOM. This can be changed with the `validateUnregistered` option. -- React - - Reactivity - - The `useForm` hook and `form.Form` component are not reactive, which means that as _any_ form state changes, they will not rerender. If they did, you would likely run into performance problems very quickly. Instead, use: - - `form.useStore` to subscribe and rerender when form state changes. Selectors are supported. - - `form.Subscribe` to render a specific sub-tree of UI that is subscribed to the form state. Selectors are supported. - - `form.useField` to subscribe to a specific field's state changes. - - `form.Field` **is reactive** to all state changes that happen within a field. This means that as a field's value, error, touched, etc. changes, the component you use it in will rerender. This is a good thing because it means you don't have to worry about manually subscribing to a field's state changes. diff --git a/docs/guides/validation.md b/docs/guides/validation.md new file mode 100644 index 0000000..6abd829 --- /dev/null +++ b/docs/guides/validation.md @@ -0,0 +1,280 @@ +--- +id: form-validation +title: Form and Field Validation +--- + +# Form and Field Validation + +At the core of TanStack Form's functionalities is the concept of validation. We currently support three mechanisms of validation: + +- Synchronous functional validation +- Asynchronous functional validation +- Adapter-based validation + +Let's take a look at each and see how they're built. + +## Synchronous Functional Validation + +With Form, you can pass a function to a field and, if it returns a string, said string will be used as the error: + +```tsx + val < 13 ? "You must be 13 to make an account" : undefined} + children={(field) => { + return ( + <> + + field.handleChange(e.target.valueAsNumber)} + /> + {field.state.meta.touchedErrors ? ( + {field.state.meta.touchedErrors} + ) : null} + + ); + }} +/> +``` + +### Displaying Errors + +Once you have your validation in place, you can map the errors from an array to be displayed in your UI: + +```tsx + val < 13 ? "You must be 13 to make an account" : undefined} + children={(field) => { + return ( + <> + {/* ... */} + {field.state.meta.errors ? ( + {field.state.meta.errors} + ) : null} + + ); + }} +/> +``` + +Or use the `errorMap` property to access the specific error you're looking for: + +```tsx + val < 13 ? "You must be 13 to make an account" : undefined} + children={(field) => { + return ( + <> + {/* ... */} + {field.state.meta.errorMap['onChange'] ? ( + {field.state.meta.errorMap['onChange']} + ) : null} + + ); + }} +/> +``` + +### Using Alternative Validation Steps + +One of the great benefits of using TanStack Form is that you're not locked into a specific method of validation. For example, if you want to validate a specific field on blur rather than on text change, you can change `onChange` to `onBlur`: + +```tsx + val < 13 ? "You must be 13 to make an account" : undefined} + children={(field) => { + return ( + <> + {/* ... */} + + ); + }} +/> +``` + +## Asynchronous Functional Validation + +While we suspect most validations will be synchronous, there's many instances where a network call or some other async operation would be useful to validate against. + +To do this, we have dedicated `onChangeAsync`, `onBlurAsync`, and other methods that can be used to validate against: + +```tsx + { + await new Promise((resolve) => setTimeout(resolve, 1000)); + return ( + value.includes("error") && 'No "error" allowed in first name' + ); + }} + children={(field) => { + return ( + <> + + field.handleChange(e.target.value)} + /> + + + ); + }} +/> +``` + +This can be combined with the respective synchronous properties as well: + +``` tsx + + !value + ? "A first name is required" + : value.length < 3 + ? "First name must be at least 3 characters" + : undefined + } + onChangeAsync={async (value) => { + await new Promise((resolve) => setTimeout(resolve, 1000)); + return ( + value.includes("error") && 'No "error" allowed in first name' + ); + }} + children={(field) => { + return ( + <> + {/* ... */} + + ); + }} +/> +``` + +### Built-in Debouncing + +While async calls are the way to go when validating against the database, running a network request on every keystroke is a good way to DDOS your database. + +Instead, we enable an easy method for debouncing your `async` calls by adding a single property: + +```tsx + { + // ... + }} + children={(field) => { + return ( + <> + {/* ... */} + + ); + }} +/> +``` + +This will debounce every async call with a 500ms delay. You can even override this property on a per-validation property: + +```tsx + { + // ... + }} + onBlurAsync={async (value) => { + // ... + }} + children={(field) => { + return ( + <> + {/* ... */} + + ); + }} +/> +``` + +> This will run `onChangeAsync` every 1500ms while `onBlurAsync` will run every 500ms. + + +## Adapter-Based Validation + +While functions provide more flexibility and customization over your validation, they can be a bit verbose. To help solve this, there are libraries like [Yup](https://github.com/jquense/yup) and [Zod](https://zod.dev/) that provide schema-based validation to make shorthand and type-strict validation substantially easier. + +Luckily, we support both of these libraries through official adapters: + +```bash +$ npm install @tanstack/zod-form-adapter zod +# or +$ npm install @tanstack/yup-form-adapter yup +``` + +Once done, we can add the adapter to the `validator` property on the form or field: + +```tsx +import { zodValidator } from "@tanstack/zod-form-adapter"; +import { z } from "zod"; + +// ... + +const form = useForm({ + // Either add the validator here or on `Field` + validator: zodValidator, + // ... +}); + + { + return ( + <> + {/* ... */} + + ); + }} +/> +``` + +These adapters also support async operations using the proper property names: + +```tsx + { + await new Promise((resolve) => setTimeout(resolve, 1000)); + return !value.includes("error"); + }, + { + message: "No 'error' allowed in first name", + }, + )} + children={(field) => { + return ( + <> + {/* ... */} + + ); + }} +/> +``` + diff --git a/docs/installation.md b/docs/installation.md index b2c090b..ec50d39 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -3,11 +3,20 @@ id: installation title: Installation --- -While the core of TanStack Form is framework-agnostic and will be compatible with various front-end frameworks in the future, we only support React today. -To use TanStack Form with React, install the adapter via NPM +TanStack Form is compatible with various front-end frameworks, including React and Vue. To use TanStack Form with your desired framework, install the corresponding adapter via NPM: ```bash $ npm i @tanstack/react-form +# or +$ pnpm add @tanstack/vue-form ``` > Depending on your environment, you might need to add polyfills. If you want to support older browsers, you need to transpile the library from `node_modules` yourselves. + +In addition, we support both Zod and Yup as validators through official validator packages: + +```bash +$ yarn add @tanstack/zod-form-adapter zod +# or +$ npm i @tanstack/yup-form-adapter yup +``` diff --git a/docs/reference/fieldApi.md b/docs/reference/fieldApi.md index 9934fa4..78ca185 100644 --- a/docs/reference/fieldApi.md +++ b/docs/reference/fieldApi.md @@ -11,24 +11,44 @@ Normally, you will not need to create a new `FieldApi` instance directly. Instea const fieldApi: FieldApi = new FieldApi(formOptions: Field Options) ``` -### `FieldOptions` +### `FieldOptions` An object type representing the options for a field in a form. - ```tsx - name + name: TName ``` - - The field name. If `TParentData` is `unknown`, the type will be `string`. Otherwise, it will be `DeepKeys`. + - The field name. The type will be `DeepKeys` to ensure your name is a deep key of the parent dataset. + - ```tsx defaultValue?: TData ``` - An optional default value for the field. + - ```tsx defaultMeta?: Partial ``` - An optional object with default metadata for the field. +- ```tsx + asyncDebounceMs?: number + ``` + + - The default time to debounce async validation if there is not a more specific debounce time passed. + +- ```tsx + asyncAlways?: boolean + ``` + + - If `true`, always run async validation, even if there are errors emitted during synchronous validation. + +- ```typescript + validator?: ValidatorType + ``` + + - A validator provided by an extension, like `yupValidator` from `@tanstack/yup-form-adapter` + - ```tsx onMount?: (formApi: FieldApi) => void ``` @@ -36,35 +56,35 @@ An object type representing the options for a field in a form. - An optional function that takes a param of `formApi` which is a generic type of `TData` and `TParentData` - ```tsx - onChange?: ValidateFn + onChange?: ValidateFn ``` - - An optional property that takes a `ValidateFn` which is a generic of `TData` and `TParentData` + - An optional property that takes a `ValidateFn` which is a generic of `TData` and `TParentData`. If `validator` is passed, this may also accept a property from the respective validator (IE: `z.string().min(1)` if `zodAdapter` is passed) - ```tsx - onChangeAsync?: ValidateAsyncFn + onChangeAsync?: ValidateAsyncFn ``` - - An optional property similar to `onChange` but async validation + - An optional property similar to `onChange` but async validation. If `validator` is passed, this may also accept a property from the respective validator (IE: `z.string().refine(async (val) => val.length > 3, { message: 'Testing 123' })` if `zodAdapter` is passed) - ```tsx - onChangeAsyncDebounceMs?: number + onChangeAsyncDebounceMs?: number ``` - An optional number to represent how long the `onChangeAsync` should wait before running - If set to a number larger than 0, will debounce the async validation event by this length of time in milliseconds - ```tsx - onBlur?: ValidateFn + onBlur?: ValidateFn ``` - - An optional function, when that run when subscribing to blur event of input + - An optional function, when that run when subscribing to blur event of input. If `validator` is passed, this may also accept a property from the respective validator (IE: `z.string().min(1)` if `zodAdapter` is passed) - ```tsx - onBlurAsync?: ValidateAsyncFn + onBlurAsync?: ValidateAsyncFn ``` - - An optional function that takes a `ValidateFn` which is a generic of `TData` and `TParentData` happens async + - An optional function that takes a `ValidateFn` which is a generic of `TData` and `TParentData` happens async. If `validator` is passed, this may also accept a property from the respective validator (IE: `z.string().refine(async (val) => val.length > 3, { message: 'Testing 123' })` if `zodAdapter` is passed) ```tsx onBlurAsyncDebounceMs?: number @@ -77,13 +97,15 @@ An object type representing the options for a field in a form. onSubmitAsync?: number ``` - - If set to a number larger than 0, will debounce the async validation event by this length of time in milliseconds + - If set to a number larger than 0, will debounce the async validation event by this length of time in milliseconds. If `validator` is passed, this may also accept a property from the respective validator (IE: `z.string().refine(async (val) => val.length > 3, { message: 'Testing 123' })` if `zodAdapter` is passed) ### `ValidationCause` A type representing the cause of a validation event. -- 'change' | 'blur' | 'submit' | 'mount' +- ```tsx + 'change' | 'blur' | 'submit' | 'mount' + ``` ### `FieldMeta` @@ -127,7 +149,7 @@ A class representing the API for managing a form field. ``` - A unique identifier for the field instance. - ```tsx - form: FormApi + form: FormApi ``` - A reference to the form API instance. - ```tsx @@ -153,66 +175,77 @@ A class representing the API for managing a form field. constructor(opts: FieldApiOptions) ``` - Initializes a new `FieldApi` instance. + - ```tsx mount(): () => void ``` - Mounts the field instance to the form. -- ```tsx - updateStore(): void - ``` - - Updates the field store with the latest form state. + - ```tsx update(opts: FieldApiOptions): void ``` - Updates the field instance with new options. + - ```tsx getValue(): TData ``` - Gets the current field value. + - ```tsx setValue(updater: Updater, options?: { touch?: boolean; notify?: boolean }): void ``` - - Sets the field value. + - Sets the field value and run the `change` validator. + - ```tsx getMeta(): FieldMeta ``` - Gets the current field metadata. + - ```tsx setMeta(updater: Updater): void ``` - Sets the field metadata. + - ```tsx getInfo(): any ``` - Gets the field information object. + - ```tsx pushValue(value: TData): void ``` - Pushes a new value to the field. + - ```tsx insertValue(index: number, value: TData): void ``` - Inserts a value at the specified index. + - ```tsx removeValue(index: number): void ``` - Removes a value at the specified index. + - ```tsx swapValues(aIndex: number, bIndex: number): void ``` - Swaps the values at the specified indices. + - ```tsx - getSubField>(name: TName): FieldApi, TParentData> + getSubField(name: TName): FieldApi ``` - Gets a subfield instance. + - ```tsx validate(): Promise ``` - Validates the field value. + - ```tsx handleBlur(): void; ``` - Handles the blur event. + - ```tsx handleChange(value: TData): void ``` @@ -231,62 +264,3 @@ An object type representing the state of a field. ``` - The current metadata of the field. -### `UserChangeProps` - -An object type representing the change and blur event handlers for a field. - -- ```tsx - onChange?: (value: TData) => void - ``` - - An optional function to further handle the change event. -- ```tsx - onBlur?: (event: any) => void - ``` - - An optional function to further handle the blur event. - -### `UserInputProps` - -An object type representing the input event handlers for a field. - -- ```tsx - onChange?: (event: any) => void - ``` - - An optional function to further handle the change event. -- ```tsx - onBlur?: (event: any) => void - ``` - - An optional function to further handle the blur event. - -### `ChangeProps` - -An object type representing the change and blur event handlers for a field. - -- ```tsx - value: TData - ``` - - The current value of the field. -- ```tsx - onChange: (value: TData) => void - ``` - - A function to handle the change event. -- ```tsx - onBlur: (event: any) => void - ``` - - A function to handle the blur event. - -### `InputProps` - -An object type representing the input event handlers for a field. - -- ```tsx - value: string - ``` - - The current value of the field, coerced to a string. -- ```tsx - onChange: (event: any) => void - ``` - - A function to handle the change event. -- ```tsx - onBlur: (event: any) => void - ``` - - A function to handle the blur event. diff --git a/docs/reference/formApi.md b/docs/reference/formApi.md index e6cbc62..84b5bcd 100644 --- a/docs/reference/formApi.md +++ b/docs/reference/formApi.md @@ -13,14 +13,14 @@ Normally, you will not need to create a new `FormApi` instance directly. Instead const formApi: FormApi = new FormApi(formOptions: FormOptions) ``` -### `FormOptions` +### `FormOptions` An object representing the options for a form. - ```tsx defaultValues?: TData ``` - - Set initial values for you form. + - Set initial values for yonu form. - ```tsx defaultState?: Partial> ``` @@ -32,7 +32,7 @@ An object representing the options for a form. - Optional time in milliseconds if you want to introduce a delay before firing off an async action. - ```tsx - onMount?: (values: TData, formApi: FormApi) => ValidationError + onMount?: (values: TData, formApi: FormApi) => ValidationError ``` - Optional function that fires as soon as the component mounts. - ```tsx @@ -75,7 +75,7 @@ An object representing the options for a form. - The default time in milliseconds that if set to a number larger than 0, will debounce the async validation event by this length of time in milliseconds. - ```tsx - onSubmit?: (values: TData, formApi: FormApi) => any | Promise + onSubmit?: (values: TData, formApi: FormApi) => any | Promise ``` - A function to be called when the form is submitted, what should happen once the user submits a valid form returns `any` or a promise `Promise` @@ -85,7 +85,7 @@ An object representing the options for a form. - Specify an action for scenarios where the user tries to submit an invalid form. -### `FormApi` +### `FormApi` A class representing the Form API. It handles the logic and interactions with the form state. @@ -136,9 +136,9 @@ A class representing the Form API. It handles the logic and interactions with th - Validates all fields in the form. - ```tsx - handleSubmit(e: FormSubmitEvent) + handleSubmit() ``` - - Handles the form submission event, performs validation, and calls the appropriate onSubmit or onInvalidSubmit callbacks. + - Handles the form submission, performs validation, and calls the appropriate onSubmit or onInvalidSubmit callbacks. - ```tsx getFieldValue>(field: TField) ``` diff --git a/examples/react/simple/package.json b/examples/react/simple/package.json index 4848925..8f19f77 100644 --- a/examples/react/simple/package.json +++ b/examples/react/simple/package.json @@ -12,9 +12,7 @@ "axios": "^0.26.1", "react": "^18.0.0", "react-dom": "^18.0.0", - "zod": "^3.21.4", - "@tanstack/form-core": "0.3.7", - "@tanstack/vue-form": "0.3.7" + "@tanstack/form-core": "0.3.7" }, "devDependencies": { "@vitejs/plugin-react": "^4.0.4", diff --git a/examples/react/simple/src/index.tsx b/examples/react/simple/src/index.tsx index 920f9cf..295009d 100644 --- a/examples/react/simple/src/index.tsx +++ b/examples/react/simple/src/index.tsx @@ -3,7 +3,7 @@ import { createRoot } from "react-dom/client"; import { useForm } from "@tanstack/react-form"; import type { FieldApi } from "@tanstack/react-form"; -function FieldInfo({ field }: { field: FieldApi }) { +function FieldInfo({ field }: { field: FieldApi }) { return ( <> {field.state.meta.touchedErrors ? ( diff --git a/examples/react/yup/.eslintrc.cjs b/examples/react/yup/.eslintrc.cjs new file mode 100644 index 0000000..201e653 --- /dev/null +++ b/examples/react/yup/.eslintrc.cjs @@ -0,0 +1,15 @@ +// @ts-check + +/** @type {import('eslint').Linter.Config} */ +const config = { + extends: ["plugin:react/recommended", "plugin:react-hooks/recommended"], + parserOptions: { + tsconfigRootDir: __dirname, + project: "./tsconfig.json", + }, + rules: { + "react/no-children-prop": "off", + }, +}; + +module.exports = config; diff --git a/examples/react/yup/.gitignore b/examples/react/yup/.gitignore new file mode 100644 index 0000000..4673b02 --- /dev/null +++ b/examples/react/yup/.gitignore @@ -0,0 +1,27 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.js + +# testing +/coverage + +# production +/build + +pnpm-lock.yaml +yarn.lock +package-lock.json + +# misc +.DS_Store +.env.local +.env.development.local +.env.test.local +.env.production.local + +npm-debug.log* +yarn-debug.log* +yarn-error.log* diff --git a/examples/react/yup/.prettierrc b/examples/react/yup/.prettierrc new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/examples/react/yup/.prettierrc @@ -0,0 +1 @@ +{} diff --git a/examples/react/yup/README.md b/examples/react/yup/README.md new file mode 100644 index 0000000..1cf8892 --- /dev/null +++ b/examples/react/yup/README.md @@ -0,0 +1,6 @@ +# Example + +To run this example: + +- `npm install` +- `npm run dev` diff --git a/examples/react/yup/index.html b/examples/react/yup/index.html new file mode 100644 index 0000000..d717e9d --- /dev/null +++ b/examples/react/yup/index.html @@ -0,0 +1,16 @@ + + + + + + + + + TanStack Form React Yup Example App + + + +
+ + + diff --git a/examples/react/yup/package.json b/examples/react/yup/package.json new file mode 100644 index 0000000..8266279 --- /dev/null +++ b/examples/react/yup/package.json @@ -0,0 +1,49 @@ +{ + "name": "@tanstack/form-example-react-yup", + "version": "0.0.1", + "main": "src/index.jsx", + "scripts": { + "dev": "vite --port=3001", + "build": "vite build", + "preview": "vite preview" + }, + "dependencies": { + "@tanstack/react-form": "0.3.7", + "axios": "^0.26.1", + "react": "^18.0.0", + "react-dom": "^18.0.0", + "yup": "^1.3.2", + "@tanstack/form-core": "0.3.7", + "@tanstack/yup-form-adapter": "0.3.7" + }, + "devDependencies": { + "@vitejs/plugin-react": "^4.0.4", + "vite": "^4.4.9" + }, + "browserslist": { + "production": [ + ">0.2%", + "not dead", + "not op_mini all" + ], + "development": [ + "last 1 chrome version", + "last 1 firefox version", + "last 1 safari version" + ] + }, + "nx": { + "implicitDependencies": [ + "@tanstack/form-core", + "@tanstack/react-form", + "@tanstack/yup-form-adapter" + ], + "targets": { + "test:types": { + "dependsOn": [ + "build" + ] + } + } + } +} diff --git a/examples/react/yup/public/emblem-light.svg b/examples/react/yup/public/emblem-light.svg new file mode 100644 index 0000000..a58e69a --- /dev/null +++ b/examples/react/yup/public/emblem-light.svg @@ -0,0 +1,13 @@ + + + + emblem-light + Created with Sketch. + + + + + + + + \ No newline at end of file diff --git a/examples/react/yup/src/index.tsx b/examples/react/yup/src/index.tsx new file mode 100644 index 0000000..38d15e7 --- /dev/null +++ b/examples/react/yup/src/index.tsx @@ -0,0 +1,114 @@ +import * as React from "react"; +import { createRoot } from "react-dom/client"; +import { useForm } from "@tanstack/react-form"; +import { yupValidator } from "@tanstack/yup-form-adapter"; +import * as yup from "yup"; +import type { FieldApi } from "@tanstack/react-form"; + +function FieldInfo({ field }: { field: FieldApi }) { + return ( + <> + {field.state.meta.touchedErrors ? ( + {field.state.meta.touchedErrors} + ) : null} + {field.state.meta.isValidating ? "Validating..." : null} + + ); +} + +export default function App() { + const form = useForm({ + // Memoize your default values to prevent re-renders + defaultValues: { + firstName: "", + lastName: "", + }, + onSubmit: async (values) => { + // Do something with form data + console.log(values); + }, + // Add a validator to support Yup usage in Form and Field + validator: yupValidator, + }); + + return ( +
+

Simple Form Example

+ {/* A pre-bound form component */} + +
{ + e.preventDefault(); + e.stopPropagation(); + void form.handleSubmit(); + }} + > +
+ {/* A type-safe and pre-bound field component*/} + { + await new Promise((resolve) => setTimeout(resolve, 1000)); + return !value.includes("error"); + }, + )} + children={(field) => { + // Avoid hasty abstractions. Render props are great! + return ( + <> + + field.handleChange(e.target.value)} + /> + + + ); + }} + /> +
+
+ ( + <> + + field.handleChange(e.target.value)} + /> + + + )} + /> +
+ [state.canSubmit, state.isSubmitting]} + children={([canSubmit, isSubmitting]) => ( + + )} + /> + +
+
+ ); +} + +const rootElement = document.getElementById("root")!; + +createRoot(rootElement).render(); diff --git a/examples/react/yup/tsconfig.json b/examples/react/yup/tsconfig.json new file mode 100644 index 0000000..a306172 --- /dev/null +++ b/examples/react/yup/tsconfig.json @@ -0,0 +1,7 @@ +{ + "compilerOptions": { + "jsx": "react", + "noEmit": true, + "lib": ["DOM", "DOM.Iterable", "ES2020"] + } +} diff --git a/examples/react/zod/.eslintrc.cjs b/examples/react/zod/.eslintrc.cjs new file mode 100644 index 0000000..201e653 --- /dev/null +++ b/examples/react/zod/.eslintrc.cjs @@ -0,0 +1,15 @@ +// @ts-check + +/** @type {import('eslint').Linter.Config} */ +const config = { + extends: ["plugin:react/recommended", "plugin:react-hooks/recommended"], + parserOptions: { + tsconfigRootDir: __dirname, + project: "./tsconfig.json", + }, + rules: { + "react/no-children-prop": "off", + }, +}; + +module.exports = config; diff --git a/examples/react/zod/.gitignore b/examples/react/zod/.gitignore new file mode 100644 index 0000000..4673b02 --- /dev/null +++ b/examples/react/zod/.gitignore @@ -0,0 +1,27 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.js + +# testing +/coverage + +# production +/build + +pnpm-lock.yaml +yarn.lock +package-lock.json + +# misc +.DS_Store +.env.local +.env.development.local +.env.test.local +.env.production.local + +npm-debug.log* +yarn-debug.log* +yarn-error.log* diff --git a/examples/react/zod/.prettierrc b/examples/react/zod/.prettierrc new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/examples/react/zod/.prettierrc @@ -0,0 +1 @@ +{} diff --git a/examples/react/zod/README.md b/examples/react/zod/README.md new file mode 100644 index 0000000..1cf8892 --- /dev/null +++ b/examples/react/zod/README.md @@ -0,0 +1,6 @@ +# Example + +To run this example: + +- `npm install` +- `npm run dev` diff --git a/examples/react/zod/index.html b/examples/react/zod/index.html new file mode 100644 index 0000000..d8b732d --- /dev/null +++ b/examples/react/zod/index.html @@ -0,0 +1,16 @@ + + + + + + + + + TanStack Form React Zod Example App + + + +
+ + + diff --git a/examples/react/zod/package.json b/examples/react/zod/package.json new file mode 100644 index 0000000..da33dc6 --- /dev/null +++ b/examples/react/zod/package.json @@ -0,0 +1,49 @@ +{ + "name": "@tanstack/form-example-react-zod", + "version": "0.0.1", + "main": "src/index.jsx", + "scripts": { + "dev": "vite --port=3001", + "build": "vite build", + "preview": "vite preview" + }, + "dependencies": { + "@tanstack/react-form": "0.3.7", + "axios": "^0.26.1", + "react": "^18.0.0", + "react-dom": "^18.0.0", + "zod": "^3.21.4", + "@tanstack/form-core": "0.3.7", + "@tanstack/zod-form-adapter": "0.3.7" + }, + "devDependencies": { + "@vitejs/plugin-react": "^4.0.4", + "vite": "^4.4.9" + }, + "browserslist": { + "production": [ + ">0.2%", + "not dead", + "not op_mini all" + ], + "development": [ + "last 1 chrome version", + "last 1 firefox version", + "last 1 safari version" + ] + }, + "nx": { + "implicitDependencies": [ + "@tanstack/form-core", + "@tanstack/react-form", + "@tanstack/zod-form-adapter" + ], + "targets": { + "test:types": { + "dependsOn": [ + "build" + ] + } + } + } +} diff --git a/examples/react/zod/public/emblem-light.svg b/examples/react/zod/public/emblem-light.svg new file mode 100644 index 0000000..a58e69a --- /dev/null +++ b/examples/react/zod/public/emblem-light.svg @@ -0,0 +1,13 @@ + + + + emblem-light + Created with Sketch. + + + + + + + + \ No newline at end of file diff --git a/examples/react/zod/src/index.tsx b/examples/react/zod/src/index.tsx new file mode 100644 index 0000000..cdddba4 --- /dev/null +++ b/examples/react/zod/src/index.tsx @@ -0,0 +1,113 @@ +import * as React from "react"; +import { createRoot } from "react-dom/client"; +import { useForm } from "@tanstack/react-form"; +import { zodValidator } from "@tanstack/zod-form-adapter"; +import { z } from "zod"; +import type { FieldApi } from "@tanstack/react-form"; + +function FieldInfo({ field }: { field: FieldApi }) { + return ( + <> + {field.state.meta.touchedErrors ? ( + {field.state.meta.touchedErrors} + ) : null} + {field.state.meta.isValidating ? "Validating..." : null} + + ); +} + +export default function App() { + const form = useForm({ + // Memoize your default values to prevent re-renders + defaultValues: { + firstName: "", + lastName: "", + }, + onSubmit: async (values) => { + // Do something with form data + console.log(values); + }, + // Add a validator to support Zod usage in Form and Field + validator: zodValidator, + }); + + return ( +
+

Simple Form Example

+ {/* A pre-bound form component */} + +
{ + e.preventDefault(); + e.stopPropagation(); + void form.handleSubmit(); + }} + > +
+ {/* A type-safe and pre-bound field component*/} + { + await new Promise((resolve) => setTimeout(resolve, 1000)); + return !value.includes("error"); + }, + { + message: "No 'error' allowed in first name", + }, + )} + children={(field) => { + // Avoid hasty abstractions. Render props are great! + return ( + <> + + field.handleChange(e.target.value)} + /> + + + ); + }} + /> +
+
+ ( + <> + + field.handleChange(e.target.value)} + /> + + + )} + /> +
+ [state.canSubmit, state.isSubmitting]} + children={([canSubmit, isSubmitting]) => ( + + )} + /> + +
+
+ ); +} + +const rootElement = document.getElementById("root")!; + +createRoot(rootElement).render(); diff --git a/examples/react/zod/tsconfig.json b/examples/react/zod/tsconfig.json new file mode 100644 index 0000000..a306172 --- /dev/null +++ b/examples/react/zod/tsconfig.json @@ -0,0 +1,7 @@ +{ + "compilerOptions": { + "jsx": "react", + "noEmit": true, + "lib": ["DOM", "DOM.Iterable", "ES2020"] + } +} diff --git a/examples/vue/simple/index.html b/examples/vue/simple/index.html index 37e0b73..6d49c19 100644 --- a/examples/vue/simple/index.html +++ b/examples/vue/simple/index.html @@ -3,7 +3,7 @@ - Vue Form Example + TanStack Form Vue Simple Example App
diff --git a/examples/vue/simple/package.json b/examples/vue/simple/package.json index f680a3c..4834987 100644 --- a/examples/vue/simple/package.json +++ b/examples/vue/simple/package.json @@ -11,8 +11,7 @@ "dependencies": { "@tanstack/form-core": "0.3.7", "@tanstack/vue-form": "0.3.7", - "vue": "^3.3.4", - "@tanstack/react-form": "0.3.7" + "vue": "^3.3.4" }, "devDependencies": { "@vitejs/plugin-vue": "^4.3.4", diff --git a/examples/vue/simple/src/App.vue b/examples/vue/simple/src/App.vue index c2ab636..10415e5 100644 --- a/examples/vue/simple/src/App.vue +++ b/examples/vue/simple/src/App.vue @@ -34,7 +34,7 @@ async function onChangeFirstName(value: string) {
!value ? `A first name is required` diff --git a/examples/vue/simple/src/FieldInfo.vue b/examples/vue/simple/src/FieldInfo.vue index a0f7541..997fd5b 100644 --- a/examples/vue/simple/src/FieldInfo.vue +++ b/examples/vue/simple/src/FieldInfo.vue @@ -2,7 +2,7 @@ import { FieldApi } from '@tanstack/vue-form' const props = defineProps<{ - state: FieldApi['state'] + state: FieldApi['state'] }>() diff --git a/examples/vue/yup/.gitignore b/examples/vue/yup/.gitignore new file mode 100644 index 0000000..449e809 --- /dev/null +++ b/examples/vue/yup/.gitignore @@ -0,0 +1,9 @@ +node_modules +.DS_Store +dist +dist-ssr +*.local + +package-lock.json +yarn.lock +pnpm-lock.yaml diff --git a/examples/vue/yup/README.md b/examples/vue/yup/README.md new file mode 100644 index 0000000..28462a4 --- /dev/null +++ b/examples/vue/yup/README.md @@ -0,0 +1,6 @@ +# Basic example + +To run this example: + +- `npm install` or `yarn` or `pnpm i` +- `npm run dev` or `yarn dev` or `pnpm dev` diff --git a/examples/vue/yup/index.html b/examples/vue/yup/index.html new file mode 100644 index 0000000..22909ec --- /dev/null +++ b/examples/vue/yup/index.html @@ -0,0 +1,12 @@ + + + + + + TanStack Form Vue Yup Example App + + +
+ + + diff --git a/examples/vue/yup/package.json b/examples/vue/yup/package.json new file mode 100644 index 0000000..1098107 --- /dev/null +++ b/examples/vue/yup/package.json @@ -0,0 +1,38 @@ +{ + "name": "@tanstack/form-example-vue-yup", + "private": true, + "scripts": { + "dev": "vite", + "build": "vite build", + "build:dev": "vite build -m development", + "test:types": "vue-tsc --noEmit", + "serve": "vite preview" + }, + "dependencies": { + "@tanstack/form-core": "0.3.7", + "@tanstack/vue-form": "0.3.7", + "@tanstack/yup-form-adapter": "0.3.7", + "vue": "^3.3.4", + "yup": "^1.3.2" + }, + "devDependencies": { + "@vitejs/plugin-vue": "^4.3.4", + "typescript": "^5.0.4", + "vite": "^4.4.9", + "vue-tsc": "^1.8.10" + }, + "nx": { + "implicitDependencies": [ + "@tanstack/form-core", + "@tanstack/vue-form", + "@tanstack/yup-form-adapter" + ], + "targets": { + "test:types": { + "dependsOn": [ + "build" + ] + } + } + } +} diff --git a/examples/vue/yup/src/App.vue b/examples/vue/yup/src/App.vue new file mode 100644 index 0000000..44b30fb --- /dev/null +++ b/examples/vue/yup/src/App.vue @@ -0,0 +1,87 @@ + + + diff --git a/examples/vue/yup/src/FieldInfo.vue b/examples/vue/yup/src/FieldInfo.vue new file mode 100644 index 0000000..997fd5b --- /dev/null +++ b/examples/vue/yup/src/FieldInfo.vue @@ -0,0 +1,12 @@ + + + diff --git a/examples/vue/yup/src/main.ts b/examples/vue/yup/src/main.ts new file mode 100644 index 0000000..912d54f --- /dev/null +++ b/examples/vue/yup/src/main.ts @@ -0,0 +1,5 @@ +import { createApp } from 'vue' + +import App from './App.vue' + +createApp(App).mount('#app') diff --git a/examples/vue/yup/src/shims-vue.d.ts b/examples/vue/yup/src/shims-vue.d.ts new file mode 100644 index 0000000..ac1ded7 --- /dev/null +++ b/examples/vue/yup/src/shims-vue.d.ts @@ -0,0 +1,5 @@ +declare module '*.vue' { + import { DefineComponent } from 'vue' + const component: DefineComponent<{}, {}, any> + export default component +} diff --git a/examples/vue/yup/src/types.d.ts b/examples/vue/yup/src/types.d.ts new file mode 100644 index 0000000..4851e81 --- /dev/null +++ b/examples/vue/yup/src/types.d.ts @@ -0,0 +1,6 @@ +export interface Post { + userId: number + id: number + title: string + body: string +} diff --git a/examples/vue/yup/tsconfig.json b/examples/vue/yup/tsconfig.json new file mode 100644 index 0000000..7ca59bc --- /dev/null +++ b/examples/vue/yup/tsconfig.json @@ -0,0 +1,15 @@ +{ + "compilerOptions": { + "target": "esnext", + "module": "esnext", + "moduleResolution": "node", + "strict": true, + "jsx": "preserve", + "sourceMap": true, + "resolveJsonModule": true, + "esModuleInterop": true, + "lib": ["esnext", "dom"], + "types": ["vite/client"] + }, + "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.vue"] +} diff --git a/examples/vue/yup/vite.config.ts b/examples/vue/yup/vite.config.ts new file mode 100644 index 0000000..e2529e6 --- /dev/null +++ b/examples/vue/yup/vite.config.ts @@ -0,0 +1,10 @@ +import { defineConfig } from 'vite' +import createVuePlugin from '@vitejs/plugin-vue' + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [createVuePlugin()], + optimizeDeps: { + exclude: ['@tanstack/vue-query', 'vue-demi'], + }, +}) diff --git a/examples/vue/zod/.gitignore b/examples/vue/zod/.gitignore new file mode 100644 index 0000000..449e809 --- /dev/null +++ b/examples/vue/zod/.gitignore @@ -0,0 +1,9 @@ +node_modules +.DS_Store +dist +dist-ssr +*.local + +package-lock.json +yarn.lock +pnpm-lock.yaml diff --git a/examples/vue/zod/README.md b/examples/vue/zod/README.md new file mode 100644 index 0000000..28462a4 --- /dev/null +++ b/examples/vue/zod/README.md @@ -0,0 +1,6 @@ +# Basic example + +To run this example: + +- `npm install` or `yarn` or `pnpm i` +- `npm run dev` or `yarn dev` or `pnpm dev` diff --git a/examples/vue/zod/index.html b/examples/vue/zod/index.html new file mode 100644 index 0000000..0fd1027 --- /dev/null +++ b/examples/vue/zod/index.html @@ -0,0 +1,12 @@ + + + + + + TanStack Form Vue Zod Example App + + +
+ + + diff --git a/examples/vue/zod/package.json b/examples/vue/zod/package.json new file mode 100644 index 0000000..a175074 --- /dev/null +++ b/examples/vue/zod/package.json @@ -0,0 +1,38 @@ +{ + "name": "@tanstack/form-example-vue-zod", + "private": true, + "scripts": { + "dev": "vite", + "build": "vite build", + "build:dev": "vite build -m development", + "test:types": "vue-tsc --noEmit", + "serve": "vite preview" + }, + "dependencies": { + "@tanstack/form-core": "0.3.7", + "@tanstack/vue-form": "0.3.7", + "@tanstack/zod-form-adapter": "0.3.7", + "vue": "^3.3.4", + "zod": "^3.21.4" + }, + "devDependencies": { + "@vitejs/plugin-vue": "^4.3.4", + "typescript": "^5.0.4", + "vite": "^4.4.9", + "vue-tsc": "^1.8.10" + }, + "nx": { + "implicitDependencies": [ + "@tanstack/form-core", + "@tanstack/vue-form", + "@tanstack/zod-form-adapter" + ], + "targets": { + "test:types": { + "dependsOn": [ + "build" + ] + } + } + } +} diff --git a/examples/vue/zod/src/App.vue b/examples/vue/zod/src/App.vue new file mode 100644 index 0000000..30d59b3 --- /dev/null +++ b/examples/vue/zod/src/App.vue @@ -0,0 +1,90 @@ + + + diff --git a/examples/vue/zod/src/FieldInfo.vue b/examples/vue/zod/src/FieldInfo.vue new file mode 100644 index 0000000..997fd5b --- /dev/null +++ b/examples/vue/zod/src/FieldInfo.vue @@ -0,0 +1,12 @@ + + + diff --git a/examples/vue/zod/src/main.ts b/examples/vue/zod/src/main.ts new file mode 100644 index 0000000..912d54f --- /dev/null +++ b/examples/vue/zod/src/main.ts @@ -0,0 +1,5 @@ +import { createApp } from 'vue' + +import App from './App.vue' + +createApp(App).mount('#app') diff --git a/examples/vue/zod/src/shims-vue.d.ts b/examples/vue/zod/src/shims-vue.d.ts new file mode 100644 index 0000000..ac1ded7 --- /dev/null +++ b/examples/vue/zod/src/shims-vue.d.ts @@ -0,0 +1,5 @@ +declare module '*.vue' { + import { DefineComponent } from 'vue' + const component: DefineComponent<{}, {}, any> + export default component +} diff --git a/examples/vue/zod/src/types.d.ts b/examples/vue/zod/src/types.d.ts new file mode 100644 index 0000000..4851e81 --- /dev/null +++ b/examples/vue/zod/src/types.d.ts @@ -0,0 +1,6 @@ +export interface Post { + userId: number + id: number + title: string + body: string +} diff --git a/examples/vue/zod/tsconfig.json b/examples/vue/zod/tsconfig.json new file mode 100644 index 0000000..7ca59bc --- /dev/null +++ b/examples/vue/zod/tsconfig.json @@ -0,0 +1,15 @@ +{ + "compilerOptions": { + "target": "esnext", + "module": "esnext", + "moduleResolution": "node", + "strict": true, + "jsx": "preserve", + "sourceMap": true, + "resolveJsonModule": true, + "esModuleInterop": true, + "lib": ["esnext", "dom"], + "types": ["vite/client"] + }, + "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.vue"] +} diff --git a/examples/vue/zod/vite.config.ts b/examples/vue/zod/vite.config.ts new file mode 100644 index 0000000..e2529e6 --- /dev/null +++ b/examples/vue/zod/vite.config.ts @@ -0,0 +1,10 @@ +import { defineConfig } from 'vite' +import createVuePlugin from '@vitejs/plugin-vue' + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [createVuePlugin()], + optimizeDeps: { + exclude: ['@tanstack/vue-query', 'vue-demi'], + }, +}) diff --git a/package.json b/package.json index 51566c9..50a4236 100644 --- a/package.json +++ b/package.json @@ -93,7 +93,7 @@ "solid-js": "^1.6.13", "stream-to-array": "^2.3.0", "ts-node": "^10.9.1", - "tsup": "^7.2.0", + "tsup": "7.2.0", "type-fest": "^3.11.0", "typescript": "^5.2.2", "vitest": "^0.34.3", @@ -108,12 +108,15 @@ }, "pnpm": { "patchedDependencies": { - "@types/testing-library__jest-dom@5.14.5": "patches/@types__testing-library__jest-dom@5.14.5.patch" + "@types/testing-library__jest-dom@5.14.5": "patches/@types__testing-library__jest-dom@5.14.5.patch", + "tsup@7.2.0": "patches/tsup@7.2.0.patch" }, "overrides": { "@tanstack/form-core": "workspace:*", "@tanstack/react-form": "workspace:*", - "@tanstack/vue-form": "workspace:*" + "@tanstack/vue-form": "workspace:*", + "@tanstack/yup-form-adapter": "workspace:*", + "@tanstack/zod-form-adapter": "workspace:*" } } } diff --git a/packages/form-core/src/FieldApi.ts b/packages/form-core/src/FieldApi.ts index c3b7411..9cfa564 100644 --- a/packages/form-core/src/FieldApi.ts +++ b/packages/form-core/src/FieldApi.ts @@ -1,57 +1,126 @@ import { type DeepKeys, type DeepValue, type Updater } from './utils' -import type { FormApi, ValidationError, ValidationErrorMap } from './FormApi' +import type { FormApi, ValidationErrorMap } from './FormApi' import { Store } from '@tanstack/store' +import type { Validator, ValidationError } from './types' export type ValidationCause = 'change' | 'blur' | 'submit' | 'mount' -type ValidateFn, TData> = ( +type ValidateFn< + TParentData, + TName extends DeepKeys, + ValidatorType, + TData extends DeepValue = DeepValue, +> = ( value: TData, - fieldApi: FieldApi, + fieldApi: FieldApi, ) => ValidationError +type ValidateOrFn< + TParentData, + TName extends DeepKeys, + ValidatorType, + FormValidator, + TData extends DeepValue = DeepValue, +> = ValidatorType extends Validator + ? + | Parameters['validate']>[1] + | ValidateFn + : FormValidator extends Validator + ? + | Parameters['validate']>[1] + | ValidateFn + : ValidateFn + type ValidateAsyncFn< TParentData, TName extends DeepKeys, - TData, + ValidatorType, + TData extends DeepValue = DeepValue, > = ( value: TData, - fieldApi: FieldApi, + fieldApi: FieldApi, ) => ValidationError | Promise +type AsyncValidateOrFn< + TParentData, + TName extends DeepKeys, + ValidatorType, + FormValidator, + TData extends DeepValue = DeepValue, +> = ValidatorType extends Validator + ? + | Parameters['validate']>[1] + | ValidateAsyncFn + : FormValidator extends Validator + ? + | Parameters['validate']>[1] + | ValidateAsyncFn + : ValidateAsyncFn + export interface FieldOptions< TParentData, - /** - * This allows us to restrict the name to only be a valid field name while - * also assigning it to a generic - */ TName extends DeepKeys, - /** - * If TData is unknown, we can use the TName generic to determine the type - */ - TData = DeepValue, + ValidatorType, + FormValidator, + TData extends DeepValue = DeepValue, > { - name: DeepKeys + name: TName index?: TData extends any[] ? number : never defaultValue?: TData asyncDebounceMs?: number asyncAlways?: boolean - onMount?: (formApi: FieldApi) => void - onChange?: ValidateFn - onChangeAsync?: ValidateAsyncFn + validator?: ValidatorType + onMount?: ( + formApi: FieldApi, + ) => void + onChange?: ValidateOrFn< + TParentData, + TName, + ValidatorType, + FormValidator, + TData + > + onChangeAsync?: AsyncValidateOrFn< + TParentData, + TName, + ValidatorType, + FormValidator, + TData + > onChangeAsyncDebounceMs?: number - onBlur?: ValidateFn - onBlurAsync?: ValidateAsyncFn + onBlur?: ValidateOrFn + onBlurAsync?: AsyncValidateOrFn< + TParentData, + TName, + ValidatorType, + FormValidator, + TData + > onBlurAsyncDebounceMs?: number - onSubmitAsync?: ValidateAsyncFn + onSubmitAsync?: AsyncValidateOrFn< + TParentData, + TName, + ValidatorType, + FormValidator, + TData + > defaultMeta?: Partial } export interface FieldApiOptions< TParentData, TName extends DeepKeys, - TData = DeepValue, -> extends FieldOptions { - form: FormApi + ValidatorType, + FormValidator, + TData extends DeepValue = DeepValue, +> extends FieldOptions< + TParentData, + TName, + ValidatorType, + FormValidator, + TData + > { + form: FormApi } export type FieldMeta = { @@ -76,22 +145,28 @@ export type ResolveName = unknown extends TParentData export class FieldApi< TParentData, TName extends DeepKeys, - TData = DeepValue, + ValidatorType, + FormValidator, + TData extends DeepValue = DeepValue, > { uid: number - form: FieldApiOptions['form'] + form: FieldApiOptions['form'] name!: DeepKeys - options: FieldApiOptions = {} as any + options: FieldApiOptions = {} as any store!: Store> state!: FieldState prevState!: FieldState constructor( - opts: FieldApiOptions & { - form: FormApi - }, + opts: FieldApiOptions< + TParentData, + TName, + ValidatorType, + FormValidator, + TData + >, ) { - this.form = opts.form + this.form = opts.form as never this.uid = uid++ // Support field prefixing from FieldScope // let fieldPrefix = '' @@ -99,7 +174,7 @@ export class FieldApi< // fieldPrefix = `${this.form.fieldName}.` // } - this.name = opts.name as any + this.name = opts.name as never if (opts.defaultValue !== undefined) { this.form.setFieldValue(this.name, opts.defaultValue as never) @@ -167,12 +242,14 @@ export class FieldApi< unsubscribe() delete info.instances[this.uid] if (!Object.keys(info.instances).length) { - delete this.form.fieldInfo[this.name] + delete this.form.fieldInfo[this.name as never] } } } - update = (opts: FieldApiOptions) => { + update = ( + opts: FieldApiOptions, + ) => { // Default Value // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition if (this.state.value === undefined) { @@ -238,10 +315,10 @@ export class FieldApi< getSubField = < TSubName extends DeepKeys, - TSubData = DeepValue, + TSubData extends DeepValue = DeepValue, >( name: TSubName, - ): FieldApi => + ): FieldApi => new FieldApi({ name: `${this.name}.${name}` as never, form: this.form, @@ -251,13 +328,36 @@ export class FieldApi< const { onChange, onBlur } = this.options const validate = cause === 'submit' ? undefined : cause === 'change' ? onChange : onBlur + if (!validate) return // Use the validationCount for all field instances to // track freshness of the validation const validationCount = (this.getInfo().validationCount || 0) + 1 this.getInfo().validationCount = validationCount - const error = normalizeError(validate(value as never, this as never)) + + const doValidate = () => { + if (this.options.validator && typeof validate !== 'function') { + return (this.options.validator as Validator)().validate( + value, + validate, + ) + } + + if (this.form.options.validator && typeof validate !== 'function') { + return (this.form.options.validator as Validator)().validate( + value, + validate, + ) + } + + return (validate as ValidateFn)( + value, + this as never, + ) + } + + const error = normalizeError(doValidate()) const errorMapKey = getErrorMapKey(cause) if (this.state.meta.errorMap[errorMapKey] !== error) { this.setMeta((prev) => ({ @@ -275,7 +375,7 @@ export class FieldApi< } } - #leaseValidateAsync = () => { + __leaseValidateAsync = () => { const count = (this.getInfo().validationAsyncCount || 0) + 1 this.getInfo().validationAsyncCount = count return count @@ -283,7 +383,7 @@ export class FieldApi< cancelValidateAsync = () => { // Lease a new validation count to ignore any pending validations - this.#leaseValidateAsync() + this.__leaseValidateAsync() // Cancel any pending validation state this.setMeta((prev) => ({ ...prev, @@ -317,12 +417,13 @@ export class FieldApi< asyncDebounceMs ?? 0 - if (this.state.meta.isValidating !== true) + if (this.state.meta.isValidating !== true) { this.setMeta((prev) => ({ ...prev, isValidating: true })) + } // Use the validationCount for all field instances to // track freshness of the validation - const validationAsyncCount = this.#leaseValidateAsync() + const validationAsyncCount = this.__leaseValidateAsync() const checkLatest = () => validationAsyncCount === this.getInfo().validationAsyncCount @@ -338,11 +439,31 @@ export class FieldApi< await new Promise((r) => setTimeout(r, debounceMs)) } + const doValidate = () => { + if (this.options.validator && typeof validate !== 'function') { + return (this.options.validator as Validator)().validateAsync( + value, + validate, + ) + } + + if (this.form.options.validator && typeof validate !== 'function') { + return ( + this.form.options.validator as Validator + )().validateAsync(value, validate) + } + + return (validate as ValidateFn)( + value, + this as never, + ) + } + // Only kick off validation if this validation is the latest attempt if (checkLatest()) { const prevErrors = this.getMeta().errors try { - const rawError = await validate(value as never, this as never) + const rawError = await doValidate() if (checkLatest()) { const error = normalizeError(rawError) this.setMeta((prev) => ({ @@ -378,12 +499,18 @@ export class FieldApi< ): ValidationError[] | Promise => { // If the field is pristine and validatePristine is false, do not validate if (!this.state.meta.isTouched) return [] + + // Store the previous error for the errorMapKey (eg. onChange, onBlur, onSubmit) + const errorMapKey = getErrorMapKey(cause) + const prevError = this.getMeta().errorMap[errorMapKey] + // Attempt to sync validate first this.validateSync(value, cause) - const errorMapKey = getErrorMapKey(cause) - // If there is an error mapped to the errorMapKey (eg. onChange, onBlur, onSubmit), return the errors array, do not attempt async validation - if (this.getMeta().errorMap[errorMapKey]) { + // If there is a new error mapped to the errorMapKey (eg. onChange, onBlur, onSubmit), return the errors array, do not attempt async validation + const newError = this.getMeta().errorMap[errorMapKey] + + if (prevError !== newError) { if (!this.options.asyncAlways) { return this.state.meta.errors } diff --git a/packages/form-core/src/FormApi.ts b/packages/form-core/src/FormApi.ts index be5b452..862e2fa 100644 --- a/packages/form-core/src/FormApi.ts +++ b/packages/form-core/src/FormApi.ts @@ -1,37 +1,49 @@ import { Store } from '@tanstack/store' -// import type { DeepKeys, DeepValue, Updater } from './utils' import { functionalUpdate, getBy, isNonEmptyArray, setBy } from './utils' import type { FieldApi, FieldMeta, ValidationCause } from './FieldApi' +import type { ValidationError, Validator } from './types' -export type FormOptions = { +type ValidateFn = ( + values: TData, + formApi: FormApi, +) => ValidationError + +type ValidateOrFn = ValidatorType extends Validator + ? Parameters['validate']>[1] + : ValidateFn + +type ValidateAsyncFn = ( + value: TData, + fieldApi: FormApi, +) => ValidationError | Promise + +export type FormOptions = { defaultValues?: TData defaultState?: Partial> asyncDebounceMs?: number - onMount?: (values: TData, formApi: FormApi) => ValidationError - onMountAsync?: ( - values: TData, - formApi: FormApi, - ) => ValidationError | Promise + validator?: ValidatorType + onMount?: ValidateOrFn + onMountAsync?: ValidateAsyncFn onMountAsyncDebounceMs?: number - onChange?: (values: TData, formApi: FormApi) => ValidationError - onChangeAsync?: ( - values: TData, - formApi: FormApi, - ) => ValidationError | Promise + onChange?: ValidateOrFn + onChangeAsync?: ValidateAsyncFn onChangeAsyncDebounceMs?: number - onBlur?: (values: TData, formApi: FormApi) => ValidationError - onBlurAsync?: ( - values: TData, - formApi: FormApi, - ) => ValidationError | Promise + onBlur?: ValidateOrFn + onBlurAsync?: ValidateAsyncFn onBlurAsyncDebounceMs?: number - onSubmit?: (values: TData, formApi: FormApi) => any | Promise - onSubmitInvalid?: (values: TData, formApi: FormApi) => void + onSubmit?: ( + values: TData, + formApi: FormApi, + ) => any | Promise + onSubmitInvalid?: ( + values: TData, + formApi: FormApi, + ) => void } -export type FieldInfo = { - instances: Record> +export type FieldInfo = { + instances: Record> } & ValidationMeta export type ValidationMeta = { @@ -42,8 +54,6 @@ export type ValidationMeta = { validationReject?: (errors: unknown) => void } -export type ValidationError = undefined | false | null | string - export type ValidationErrorMapKeys = `on${Capitalize}` export type ValidationErrorMap = { @@ -92,18 +102,19 @@ function getDefaultFormState( } } -export class FormApi { +export class FormApi { // // This carries the context for nested fields - options: FormOptions = {} + options: FormOptions = {} store!: Store> // Do not use __state directly, as it is not reactive. // Please use form.useStore() utility to subscribe to state state!: FormState - fieldInfo: Record, FieldInfo> = {} as any + fieldInfo: Record, FieldInfo> = + {} as any fieldName?: string validationMeta: ValidationMeta = {} - constructor(opts?: FormOptions) { + constructor(opts?: FormOptions) { this.store = new Store>( getDefaultFormState({ ...(opts?.defaultState as any), @@ -157,7 +168,7 @@ export class FormApi { this.update(opts || {}) } - update = (options?: FormOptions) => { + update = (options?: FormOptions) => { if (!options) return this.store.batch(() => { @@ -202,21 +213,21 @@ export class FormApi { validateAllFields = async (cause: ValidationCause) => { const fieldValidationPromises: Promise[] = [] as any this.store.batch(() => { - void (Object.values(this.fieldInfo) as FieldInfo[]).forEach( - (field) => { - Object.values(field.instances).forEach((instance) => { - // If any fields are not touched - if (!instance.state.meta.isTouched) { - // Mark them as touched - instance.setMeta((prev) => ({ ...prev, isTouched: true })) - // Validate the field - fieldValidationPromises.push( - Promise.resolve().then(() => instance.validate(cause)), - ) - } - }) - }, - ) + void ( + Object.values(this.fieldInfo) as FieldInfo[] + ).forEach((field) => { + Object.values(field.instances).forEach((instance) => { + // If any fields are not touched + if (!instance.state.meta.isTouched) { + // Mark them as touched + instance.setMeta((prev) => ({ ...prev, isTouched: true })) + // Validate the field + fieldValidationPromises.push( + Promise.resolve().then(() => instance.validate(cause)), + ) + } + }) + }) }) return Promise.all(fieldValidationPromises) @@ -290,7 +301,7 @@ export class FormApi { getFieldInfo = >( field: TField, - ): FieldInfo => { + ): FieldInfo => { // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition return (this.fieldInfo[field] ||= { instances: {}, @@ -338,7 +349,9 @@ export class FormApi { pushFieldValue = >( field: TField, - value: DeepValue[number], + value: DeepValue extends any[] + ? DeepValue[number] + : never, opts?: { touch?: boolean }, ) => { return this.setFieldValue( @@ -351,7 +364,9 @@ export class FormApi { insertFieldValue = >( field: TField, index: number, - value: DeepValue[number], + value: DeepValue extends any[] + ? DeepValue[number] + : never, opts?: { touch?: boolean }, ) => { this.setFieldValue( diff --git a/packages/form-core/src/index.ts b/packages/form-core/src/index.ts index 5d993d7..a061a58 100644 --- a/packages/form-core/src/index.ts +++ b/packages/form-core/src/index.ts @@ -1,3 +1,4 @@ export * from './FormApi' export * from './FieldApi' export * from './utils' +export * from './types' diff --git a/packages/form-core/src/tests/FieldApi.spec.ts b/packages/form-core/src/tests/FieldApi.spec.ts index 78dd32b..718b66a 100644 --- a/packages/form-core/src/tests/FieldApi.spec.ts +++ b/packages/form-core/src/tests/FieldApi.spec.ts @@ -551,7 +551,7 @@ describe('field api', () => { interface Form { name: string } - const form = new FormApi
() + const form = new FormApi() const field = new FieldApi({ form, diff --git a/packages/form-core/src/tests/FieldApi.test-d.ts b/packages/form-core/src/tests/FieldApi.test-d.ts index 959b0a2..32ac0d7 100644 --- a/packages/form-core/src/tests/FieldApi.test-d.ts +++ b/packages/form-core/src/tests/FieldApi.test-d.ts @@ -2,24 +2,21 @@ import { assertType } from 'vitest' import { FormApi } from '../FormApi' import { FieldApi } from '../FieldApi' -it('should type a subfield properly', () => { +it('should type value properly', () => { const form = new FormApi({ defaultValues: { - names: { - first: 'one', - second: 'two', - }, - } as const, - }) + name: 'test', + }, + } as const) const field = new FieldApi({ form, - name: 'names', + name: 'name', }) - const subfield = field.getSubField('first') - - assertType<'one'>(subfield.getValue()) + assertType<'test'>(field.state.value) + assertType<'name'>(field.options.name) + assertType<'test'>(field.getValue()) }) it('should type onChange properly', () => { @@ -39,3 +36,21 @@ it('should type onChange properly', () => { }, }) }) + +it('should type onChangeAsync properly', () => { + const form = new FormApi({ + defaultValues: { + name: 'test', + }, + } as const) + + const field = new FieldApi({ + form, + name: 'name', + onChangeAsync: async (value) => { + assertType<'test'>(value) + + return undefined + }, + }) +}) diff --git a/packages/form-core/src/tests/FormApi.spec.ts b/packages/form-core/src/tests/FormApi.spec.ts index 7e15ea3..9d8fdaf 100644 --- a/packages/form-core/src/tests/FormApi.spec.ts +++ b/packages/form-core/src/tests/FormApi.spec.ts @@ -119,7 +119,7 @@ describe('form api', () => { }, }) - form.pushFieldValue('name', 'other') + form.setFieldValue('name', 'other') form.state.submissionAttempts = 300 form.reset() diff --git a/packages/form-core/src/types.ts b/packages/form-core/src/types.ts new file mode 100644 index 0000000..54bae73 --- /dev/null +++ b/packages/form-core/src/types.ts @@ -0,0 +1,7 @@ +export type ValidationError = undefined | false | null | string + +// If/when TypeScript supports higher-kinded types, this should not be `unknown` anymore +export type Validator = () => { + validate(value: Type, fn: Fn): ValidationError + validateAsync(value: Type, fn: Fn): Promise +} diff --git a/packages/react-form/src/createFormFactory.ts b/packages/react-form/src/createFormFactory.ts index 44113cc..3003574 100644 --- a/packages/react-form/src/createFormFactory.ts +++ b/packages/react-form/src/createFormFactory.ts @@ -3,19 +3,21 @@ import type { FormApi, FormOptions } from '@tanstack/form-core' import { type UseField, type FieldComponent, Field, useField } from './useField' import { useForm } from './useForm' -export type FormFactory = { - useForm: (opts?: FormOptions) => FormApi +export type FormFactory = { + useForm: ( + opts?: FormOptions, + ) => FormApi useField: UseField - Field: FieldComponent + Field: FieldComponent } -export function createFormFactory( - defaultOpts?: FormOptions, -): FormFactory { +export function createFormFactory( + defaultOpts?: FormOptions, +): FormFactory { return { useForm: (opts) => { const formOptions = Object.assign({}, defaultOpts, opts) - return useForm(formOptions) + return useForm(formOptions) }, useField: useField as any, Field: Field as any, diff --git a/packages/react-form/src/formContext.ts b/packages/react-form/src/formContext.ts index a60abb4..c2403b3 100644 --- a/packages/react-form/src/formContext.ts +++ b/packages/react-form/src/formContext.ts @@ -2,7 +2,7 @@ import type { FormApi } from '@tanstack/form-core' import * as React from 'react' export const formContext = React.createContext<{ - formApi: FormApi + formApi: FormApi parentFieldName?: string } | null>(null!) diff --git a/packages/react-form/src/tests/createFormFactory.test.tsx b/packages/react-form/src/tests/createFormFactory.test.tsx index d8648cd..752d6a7 100644 --- a/packages/react-form/src/tests/createFormFactory.test.tsx +++ b/packages/react-form/src/tests/createFormFactory.test.tsx @@ -11,7 +11,7 @@ describe('createFormFactory', () => { lastName: string } - const formFactory = createFormFactory({ + const formFactory = createFormFactory({ defaultValues: { firstName: 'FirstName', lastName: 'LastName', diff --git a/packages/react-form/src/tests/useField.test.tsx b/packages/react-form/src/tests/useField.test.tsx index 1a3d639..20ac7ac 100644 --- a/packages/react-form/src/tests/useField.test.tsx +++ b/packages/react-form/src/tests/useField.test.tsx @@ -15,7 +15,7 @@ describe('useField', () => { lastName: string } - const formFactory = createFormFactory() + const formFactory = createFormFactory() function Comp() { const form = formFactory.useForm({ @@ -55,7 +55,7 @@ describe('useField', () => { lastName: string } - const formFactory = createFormFactory() + const formFactory = createFormFactory() function Comp() { const form = formFactory.useForm({ @@ -97,7 +97,7 @@ describe('useField', () => { } const error = 'Please enter a different value' - const formFactory = createFormFactory() + const formFactory = createFormFactory() function Comp() { const form = formFactory.useForm() @@ -137,7 +137,7 @@ describe('useField', () => { } const error = 'Please enter a different value' - const formFactory = createFormFactory() + const formFactory = createFormFactory() function Comp() { const form = formFactory.useForm() @@ -180,7 +180,7 @@ describe('useField', () => { const onChangeError = 'Please enter a different value (onChangeError)' const onBlurError = 'Please enter a different value (onBlurError)' - const formFactory = createFormFactory() + const formFactory = createFormFactory() function Comp() { const form = formFactory.useForm() @@ -229,7 +229,7 @@ describe('useField', () => { } const error = 'Please enter a different value' - const formFactory = createFormFactory() + const formFactory = createFormFactory() function Comp() { const form = formFactory.useForm() @@ -276,7 +276,7 @@ describe('useField', () => { const onChangeError = 'Please enter a different value (onChangeError)' const onBlurError = 'Please enter a different value (onBlurError)' - const formFactory = createFormFactory() + const formFactory = createFormFactory() function Comp() { const form = formFactory.useForm() @@ -332,7 +332,7 @@ describe('useField', () => { } const mockFn = vi.fn() const error = 'Please enter a different value' - const formFactory = createFormFactory() + const formFactory = createFormFactory() function Comp() { const form = formFactory.useForm() diff --git a/packages/react-form/src/tests/useForm.test.tsx b/packages/react-form/src/tests/useForm.test.tsx index 8ba5efe..8318b35 100644 --- a/packages/react-form/src/tests/useForm.test.tsx +++ b/packages/react-form/src/tests/useForm.test.tsx @@ -14,7 +14,7 @@ describe('useForm', () => { lastName: string } - const formFactory = createFormFactory() + const formFactory = createFormFactory() function Comp() { const form = formFactory.useForm() @@ -52,7 +52,7 @@ describe('useForm', () => { lastName: string } - const formFactory = createFormFactory() + const formFactory = createFormFactory() function Comp() { const form = formFactory.useForm({ diff --git a/packages/react-form/src/types.ts b/packages/react-form/src/types.ts index 9b69286..81dbe6f 100644 --- a/packages/react-form/src/types.ts +++ b/packages/react-form/src/types.ts @@ -3,7 +3,9 @@ import type { FieldOptions, DeepKeys, DeepValue } from '@tanstack/form-core' export type UseFieldOptions< TParentData, TName extends DeepKeys, - TData = DeepValue, -> = FieldOptions & { + ValidatorType, + FormValidator, + TData extends DeepValue = DeepValue, +> = FieldOptions & { mode?: 'value' | 'array' } diff --git a/packages/react-form/src/useField.tsx b/packages/react-form/src/useField.tsx index 45275d6..8aba2c2 100644 --- a/packages/react-form/src/useField.tsx +++ b/packages/react-form/src/useField.tsx @@ -11,21 +11,45 @@ declare module '@tanstack/form-core' { interface FieldApi< TParentData, TName extends DeepKeys, - TData = DeepValue, + ValidatorType, + FormValidator, + TData extends DeepValue = DeepValue, > { - Field: FieldComponent + Field: FieldComponent } } -export type UseField = >( - opts?: { name: Narrow } & UseFieldOptions, -) => FieldApi> +export type UseField = < + TName extends DeepKeys, + ValidatorType, + FormValidator, +>( + opts?: { name: Narrow } & UseFieldOptions< + TParentData, + TName, + ValidatorType, + FormValidator + >, +) => FieldApi< + TParentData, + TName, + ValidatorType, + FormValidator, + DeepValue +> -export function useField>( - opts: UseFieldOptions, +export function useField< + TParentData, + TName extends DeepKeys, + ValidatorType, + FormValidator, +>( + opts: UseFieldOptions, ): FieldApi< TParentData, - TName + TName, + ValidatorType, + FormValidator // Omit & { // form: FormApi // } @@ -45,8 +69,9 @@ export function useField>( const api = new FieldApi({ ...opts, form: formApi, - name: name, - } as never) + // TODO: Fix typings to include `index` and `parentFieldName`, if present + name: name as typeof opts.name, + }) api.Field = Field as never @@ -64,23 +89,27 @@ export function useField>( useStore( fieldApi.store, opts.mode === 'array' - ? (state: any) => { - return [state.meta, Object.keys(state.value || []).length] + ? (state) => { + return [state.meta, Object.keys(state.value).length] } : undefined, ) // Instantiates field meta and removes it when unrendered useIsomorphicLayoutEffect(() => fieldApi.mount(), [fieldApi]) - return fieldApi as never + return fieldApi } type FieldComponentProps< TParentData, TName extends DeepKeys, - TData = DeepValue, + ValidatorType, + FormValidator, + TData extends DeepValue = DeepValue, > = { - children: (fieldApi: FieldApi) => any + children: ( + fieldApi: FieldApi, + ) => any } & (TParentData extends any[] ? { name?: TName @@ -90,27 +119,47 @@ type FieldComponentProps< name: TName index?: never }) & - Omit, 'name' | 'index'> + Omit< + UseFieldOptions, + 'name' | 'index' + > -export type FieldComponent = < +export type FieldComponent = < TName extends DeepKeys, - TData = DeepValue, + ValidatorType, + TData extends DeepValue = DeepValue, >({ children, ...fieldOptions -}: FieldComponentProps) => any +}: FieldComponentProps< + TParentData, + TName, + ValidatorType, + FormValidator, + TData +>) => any -export function Field>({ +export function Field< + TParentData, + TName extends DeepKeys, + ValidatorType, + FormValidator, +>({ children, ...fieldOptions }: { - children: (fieldApi: FieldApi) => any -} & UseFieldOptions) { + children: ( + fieldApi: FieldApi, + ) => any +} & UseFieldOptions) { const fieldApi = useField(fieldOptions as any) return ( ) diff --git a/packages/react-form/src/useForm.tsx b/packages/react-form/src/useForm.tsx index b64c8b7..be10562 100644 --- a/packages/react-form/src/useForm.tsx +++ b/packages/react-form/src/useForm.tsx @@ -9,9 +9,9 @@ import useIsomorphicLayoutEffect from 'use-isomorphic-layout-effect' declare module '@tanstack/form-core' { // eslint-disable-next-line no-shadow - interface FormApi { + interface FormApi { Provider: (props: { children: any }) => any - Field: FieldComponent + Field: FieldComponent useField: UseField useStore: >>( selector?: (state: NoInfer>) => TSelected, @@ -23,7 +23,9 @@ declare module '@tanstack/form-core' { } } -export function useForm(opts?: FormOptions): FormApi { +export function useForm( + opts?: FormOptions, +): FormApi { const [formApi] = useState(() => { // @ts-ignore const api = new FormApi(opts) diff --git a/packages/vue-form/src/createFormFactory.ts b/packages/vue-form/src/createFormFactory.ts index 44113cc..f0c351c 100644 --- a/packages/vue-form/src/createFormFactory.ts +++ b/packages/vue-form/src/createFormFactory.ts @@ -3,19 +3,21 @@ import type { FormApi, FormOptions } from '@tanstack/form-core' import { type UseField, type FieldComponent, Field, useField } from './useField' import { useForm } from './useForm' -export type FormFactory = { - useForm: (opts?: FormOptions) => FormApi - useField: UseField - Field: FieldComponent +export type FormFactory = { + useForm: ( + opts?: FormOptions, + ) => FormApi + useField: UseField + Field: FieldComponent } -export function createFormFactory( - defaultOpts?: FormOptions, -): FormFactory { +export function createFormFactory( + defaultOpts?: FormOptions, +): FormFactory { return { useForm: (opts) => { const formOptions = Object.assign({}, defaultOpts, opts) - return useForm(formOptions) + return useForm(formOptions) }, useField: useField as any, Field: Field as any, diff --git a/packages/vue-form/src/formContext.ts b/packages/vue-form/src/formContext.ts index 6916706..7404480 100644 --- a/packages/vue-form/src/formContext.ts +++ b/packages/vue-form/src/formContext.ts @@ -2,7 +2,7 @@ import type { FormApi } from '@tanstack/form-core' import { inject, provide } from 'vue-demi' export type FormContext = { - formApi: FormApi + formApi: FormApi parentFieldName?: string } | null diff --git a/packages/vue-form/src/tests/useField.test.tsx b/packages/vue-form/src/tests/useField.test.tsx index ac5edc3..1e06557 100644 --- a/packages/vue-form/src/tests/useField.test.tsx +++ b/packages/vue-form/src/tests/useField.test.tsx @@ -21,7 +21,7 @@ describe('useField', () => { lastName: string } - const formFactory = createFormFactory() + const formFactory = createFormFactory() const Comp = defineComponent(() => { const form = formFactory.useForm() @@ -30,7 +30,11 @@ describe('useField', () => { return () => ( - {({ field }: { field: FieldApi }) => ( + {({ + field, + }: { + field: FieldApi + }) => ( { } const error = 'Please enter a different value' - const formFactory = createFormFactory() + const formFactory = createFormFactory() const Comp = defineComponent(() => { const form = formFactory.useForm() @@ -68,7 +72,11 @@ describe('useField', () => { name="firstName" onChange={(value) => (value === 'other' ? error : undefined)} > - {({ field }: { field: FieldApi }) => ( + {({ + field, + }: { + field: FieldApi + }) => (
{ } const error = 'Please enter a different value' - const formFactory = createFormFactory() + const formFactory = createFormFactory() const Comp = defineComponent(() => { const form = formFactory.useForm() @@ -111,7 +119,11 @@ describe('useField', () => { name="firstName" onChange={(value) => (value === 'other' ? error : undefined)} > - {({ field }: { field: FieldApi }) => ( + {({ + field, + }: { + field: FieldApi + }) => (
{ } const error = 'Please enter a different value' - const formFactory = createFormFactory() + const formFactory = createFormFactory() const Comp = defineComponent(() => { const form = formFactory.useForm() @@ -159,7 +171,11 @@ describe('useField', () => { return error }} > - {({ field }: { field: FieldApi }) => ( + {({ + field, + }: { + field: FieldApi + }) => (
{ const mockFn = vi.fn() const error = 'Please enter a different value' - const formFactory = createFormFactory() + const formFactory = createFormFactory() const Comp = defineComponent(() => { const form = formFactory.useForm() @@ -211,7 +227,11 @@ describe('useField', () => { return error }} > - {({ field }: { field: FieldApi }) => ( + {({ + field, + }: { + field: FieldApi + }) => (
{ lastName: string } - const formFactory = createFormFactory() + const formFactory = createFormFactory() const Comp = defineComponent(() => { const form = formFactory.useForm() @@ -29,7 +29,11 @@ describe('useForm', () => { return () => ( - {({ field }: { field: FieldApi }) => ( + {({ + field, + }: { + field: FieldApi + }) => ( { lastName: string } - const formFactory = createFormFactory() + const formFactory = createFormFactory() const Comp = defineComponent(() => { const form = formFactory.useForm({ @@ -69,9 +73,11 @@ describe('useForm', () => { return () => ( - {({ field }: { field: FieldApi }) => ( -

{field.state.value}

- )} + {({ + field, + }: { + field: FieldApi + }) =>

{field.state.value}

}
) }) @@ -81,37 +87,6 @@ describe('useForm', () => { expect(queryByText('LastName')).not.toBeInTheDocument() }) - it('should use field default value first', async () => { - type Person = { - firstName: string - lastName: string - } - - const formFactory = createFormFactory() - - const Comp = defineComponent(() => { - const form = formFactory.useForm({ - defaultValues: { - firstName: 'FirstName', - lastName: 'LastName', - }, - }) - form.provideFormContext() - - return () => ( - - {({ field }: { field: FieldApi }) => ( -

{field.state.value}

- )} -
- ) - }) - - const { findByText, queryByText } = render(Comp) - expect(await findByText('otherName')).toBeInTheDocument() - expect(queryByText('LastName')).not.toBeInTheDocument() - }) - it('should handle submitting properly', async () => { const Comp = defineComponent(() => { const submittedData = ref<{ firstName: string }>() @@ -132,7 +107,7 @@ describe('useForm', () => { {({ field, }: { - field: FieldApi<{ firstName: string }, 'firstName'> + field: FieldApi<{ firstName: string }, 'firstName', never, never> }) => { return ( , - TData = DeepValue, -> = FieldOptions & { + ValidatorType, + FormValidator, + TData extends DeepValue = DeepValue, +> = FieldOptions & { mode?: 'value' | 'array' } diff --git a/packages/vue-form/src/useField.tsx b/packages/vue-form/src/useField.tsx index 8a5fa73..ee49b3d 100644 --- a/packages/vue-form/src/useField.tsx +++ b/packages/vue-form/src/useField.tsx @@ -11,30 +11,54 @@ declare module '@tanstack/form-core' { interface FieldApi< TParentData, TName extends DeepKeys, + ValidatorType, + FormValidator, TData = DeepValue, > { - Field: FieldComponent + Field: FieldComponent } } -export type UseField = >( +export type UseField = < + TName extends DeepKeys, + ValidatorType, +>( opts?: { name: Narrow } & UseFieldOptions< TParentData, TName, + ValidatorType, + FormValidator, DeepValue >, -) => FieldApi> +) => FieldApi< + TParentData, + TName, + ValidatorType, + FormValidator, + DeepValue +> export function useField< TParentData, TName extends DeepKeys, - TData = DeepValue, + ValidatorType, + FormValidator, + TData extends DeepValue = DeepValue, >( - opts: UseFieldOptions, + opts: UseFieldOptions< + TParentData, + TName, + ValidatorType, + FormValidator, + TData + >, ): { api: FieldApi< TParentData, - TName + TName, + ValidatorType, + FormValidator, + TData // Omit & { // form: FormApi // } @@ -44,6 +68,8 @@ export function useField< FieldApi< TParentData, TName, + ValidatorType, + FormValidator, TData // Omit & { // form: FormApi @@ -98,6 +124,8 @@ export type FieldValue = TParentData extends any[] type FieldComponentProps< TParentData, TName extends DeepKeys, + ValidatorType, + FormValidator, > = (TParentData extends any[] ? { name?: TName @@ -107,27 +135,52 @@ type FieldComponentProps< name: TName index?: never }) & - Omit, 'name' | 'index'> + Omit< + UseFieldOptions, + 'name' | 'index' + > -export type FieldComponent = < +export type FieldComponent = < TName extends DeepKeys, - TData = DeepValue, + ValidatorType, + TData extends DeepValue = DeepValue, >( - fieldOptions: FieldComponentProps, + fieldOptions: FieldComponentProps< + TParentData, + TName, + ValidatorType, + FormValidator + >, context: SetupContext< {}, SlotsType<{ default: { - field: FieldApi - state: FieldApi['state'] + field: FieldApi + state: FieldApi< + TParentData, + TName, + ValidatorType, + FormValidator, + TData + >['state'] } }> >, ) => any export const Field = defineComponent( - >( - fieldOptions: UseFieldOptions, + < + TParentData, + TName extends DeepKeys, + ValidatorType, + FormValidator, + >( + fieldOptions: UseFieldOptions< + TParentData, + TName, + ValidatorType, + FormValidator + >, context: SetupContext, ) => { const fieldApi = useField({ ...fieldOptions, ...context.attrs } as any) diff --git a/packages/vue-form/src/useForm.tsx b/packages/vue-form/src/useForm.tsx index af713fb..359f046 100644 --- a/packages/vue-form/src/useForm.tsx +++ b/packages/vue-form/src/useForm.tsx @@ -11,11 +11,11 @@ import { declare module '@tanstack/form-core' { // eslint-disable-next-line no-shadow - interface FormApi { + interface FormApi { Provider: (props: Record & {}) => any provideFormContext: () => void - Field: FieldComponent - useField: UseField + Field: FieldComponent + useField: UseField useStore: >>( selector?: (state: NoInfer>) => TSelected, ) => TSelected @@ -31,19 +31,21 @@ declare module '@tanstack/form-core' { } } -export function useForm(opts?: FormOptions): FormApi { +export function useForm( + opts?: FormOptions, +): FormApi { const formApi = (() => { - const api = new FormApi(opts) + const api = new FormApi(opts) api.Provider = defineComponent( (_, context) => { - provideFormContext({ formApi }) + provideFormContext({ formApi: formApi as never }) return () => context.slots.default!() }, { name: 'Provider' }, ) api.provideFormContext = () => { - provideFormContext({ formApi }) + provideFormContext({ formApi: formApi as never }) } api.Field = Field as never api.useField = useField as never diff --git a/packages/yup-form-adapter/.eslintrc.cjs b/packages/yup-form-adapter/.eslintrc.cjs new file mode 100644 index 0000000..52b4481 --- /dev/null +++ b/packages/yup-form-adapter/.eslintrc.cjs @@ -0,0 +1,11 @@ +// @ts-check + +/** @type {import('eslint').Linter.Config} */ +const config = { + parserOptions: { + tsconfigRootDir: __dirname, + project: './tsconfig.eslint.json', + }, +} + +module.exports = config diff --git a/packages/yup-form-adapter/package.json b/packages/yup-form-adapter/package.json new file mode 100644 index 0000000..b7bd989 --- /dev/null +++ b/packages/yup-form-adapter/package.json @@ -0,0 +1,62 @@ +{ + "name": "@tanstack/yup-form-adapter", + "version": "0.3.6", + "description": "The Yup adapter for TanStack Form.", + "author": "tannerlinsley", + "license": "MIT", + "repository": "tanstack/form", + "homepage": "https://tanstack.com/form", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + }, + "type": "module", + "types": "build/legacy/index.d.ts", + "main": "build/legacy/index.cjs", + "module": "build/legacy/index.js", + "exports": { + ".": { + "import": { + "types": "./build/modern/index.d.ts", + "default": "./build/modern/index.js" + }, + "require": { + "types": "./build/modern/index.d.cts", + "default": "./build/modern/index.cjs" + } + }, + "./package.json": "./package.json" + }, + "sideEffects": false, + "files": [ + "build", + "src" + ], + "nx": { + "targets": { + "test:build": { + "dependsOn": [ + "build" + ] + } + } + }, + "scripts": { + "clean": "rimraf ./build && rimraf ./coverage", + "test:eslint": "eslint --ext .ts,.tsx ./src", + "test:types": "tsc --noEmit && vitest typecheck", + "test:lib": "vitest run --coverage", + "test:lib:dev": "pnpm run test:lib --watch", + "test:build": "publint --strict", + "build": "tsup" + }, + "dependencies": { + "@tanstack/form-core": "workspace:*" + }, + "peerDependencies": { + "yup": "^1.x" + }, + "devDependencies": { + "yup": "^1.3.2" + } +} diff --git a/packages/yup-form-adapter/src/index.ts b/packages/yup-form-adapter/src/index.ts new file mode 100644 index 0000000..26e40be --- /dev/null +++ b/packages/yup-form-adapter/src/index.ts @@ -0,0 +1 @@ +export * from './validator' diff --git a/packages/yup-form-adapter/src/tests/FieldApi.spec.ts b/packages/yup-form-adapter/src/tests/FieldApi.spec.ts new file mode 100644 index 0000000..470f618 --- /dev/null +++ b/packages/yup-form-adapter/src/tests/FieldApi.spec.ts @@ -0,0 +1,112 @@ +import { expect } from 'vitest' + +import { FormApi, FieldApi } from '@tanstack/form-core' +import { yupValidator } from '../validator' +import yup from 'yup' +import { sleep } from './utils' + +describe('yup field api', () => { + it('should run an onChange with yup.string validation', () => { + const form = new FormApi({ + defaultValues: { + name: '', + }, + }) + + const field = new FieldApi({ + form, + validator: yupValidator, + name: 'name', + onChange: yup.string().min(3, 'You must have a length of at least 3'), + }) + + field.mount() + + expect(field.getMeta().errors).toEqual([]) + field.setValue('a', { touch: true }) + expect(field.getMeta().errors).toEqual([ + 'You must have a length of at least 3', + ]) + field.setValue('asdf', { touch: true }) + expect(field.getMeta().errors).toEqual([]) + }) + + it('should run an onChange fn with yup validation option enabled', () => { + const form = new FormApi({ + defaultValues: { + name: '', + }, + }) + + const field = new FieldApi({ + form, + validator: yupValidator, + name: 'name', + onChange: (val) => (val === 'a' ? 'Test' : undefined), + }) + + field.mount() + + expect(field.getMeta().errors).toEqual([]) + field.setValue('a', { touch: true }) + expect(field.getMeta().errors).toEqual(['Test']) + field.setValue('asdf', { touch: true }) + expect(field.getMeta().errors).toEqual([]) + }) + + it('should run an onChangeAsync with z.string validation', async () => { + const form = new FormApi({ + defaultValues: { + name: '', + }, + }) + + const field = new FieldApi({ + form, + validator: yupValidator, + name: 'name', + onChangeAsync: yup + .string() + .test('Testing 123', 'Testing 123', async (val) => + typeof val === 'string' ? val.length > 3 : false, + ), + onChangeAsyncDebounceMs: 0, + }) + + field.mount() + + expect(field.getMeta().errors).toEqual([]) + field.setValue('a', { touch: true }) + await sleep(10) + expect(field.getMeta().errors).toEqual(['Testing 123']) + field.setValue('asdf', { touch: true }) + await sleep(10) + expect(field.getMeta().errors).toEqual([]) + }) + + it('should run an onChangeAsyc fn with zod validation option enabled', async () => { + const form = new FormApi({ + defaultValues: { + name: '', + }, + }) + + const field = new FieldApi({ + form, + validator: yupValidator, + name: 'name', + onChangeAsync: async (val) => (val === 'a' ? 'Test' : undefined), + onChangeAsyncDebounceMs: 0, + }) + + field.mount() + + expect(field.getMeta().errors).toEqual([]) + field.setValue('a', { touch: true }) + await sleep(10) + expect(field.getMeta().errors).toEqual(['Test']) + field.setValue('asdf', { touch: true }) + await sleep(10) + expect(field.getMeta().errors).toEqual([]) + }) +}) diff --git a/packages/yup-form-adapter/src/tests/FieldApi.test-d.ts b/packages/yup-form-adapter/src/tests/FieldApi.test-d.ts new file mode 100644 index 0000000..62f8ca8 --- /dev/null +++ b/packages/yup-form-adapter/src/tests/FieldApi.test-d.ts @@ -0,0 +1,82 @@ +import { yupValidator } from '../validator' +import yup from 'yup' +import { FieldApi, FormApi } from '@tanstack/form-core' +import { assertType } from 'vitest' + +it('should allow a Zod validator to be passed in', () => { + const form = new FormApi({ + defaultValues: { + name: 'test', + }, + } as const) + + const field = new FieldApi({ + form, + name: 'name', + validator: yupValidator, + } as const) +}) + +it('should allow a Zod validator to handle the correct Zod type', () => { + const form = new FormApi({ + defaultValues: { + name: 'test', + }, + }) + + const field = new FieldApi({ + form, + name: 'name', + validator: yupValidator, + onChange: yup.string(), + } as const) +}) + +it('should allow a functional onChange to be passed when using a validator', () => { + const form = new FormApi({ + defaultValues: { + name: 'test', + }, + }) + + const field = new FieldApi({ + form, + name: 'name', + validator: yupValidator, + onChange: (val) => { + assertType<'test'>(val) + return undefined + }, + } as const) +}) + +it('should not allow a validator onChange to be passed when not using a validator', () => { + const form = new FormApi({ + defaultValues: { + name: 'test', + }, + }) + + const field = new FieldApi({ + form, + name: 'name', + // @ts-expect-error Requires a validator + onChange: z.string(), + } as const) +}) + +// This is not possible without higher-kinded types AFAIK +it.skip('should allow not a Zod validator with the wrong Zod type', () => { + const form = new FormApi({ + defaultValues: { + name: 'test', + }, + }) + + const field = new FieldApi({ + form, + name: 'name', + validator: yupValidator, + onChange: yup.object({}), + } as const) +}) diff --git a/packages/yup-form-adapter/src/tests/FormApi.spec.ts b/packages/yup-form-adapter/src/tests/FormApi.spec.ts new file mode 100644 index 0000000..d778428 --- /dev/null +++ b/packages/yup-form-adapter/src/tests/FormApi.spec.ts @@ -0,0 +1,55 @@ +import { expect } from 'vitest' + +import { FormApi, FieldApi } from '@tanstack/form-core' +import { yupValidator } from '../validator' +import yup from 'yup' + +describe('yup form api', () => { + it('should run an onChange with z.string validation', () => { + const form = new FormApi({ + defaultValues: { + name: '', + }, + validator: yupValidator, + }) + + const field = new FieldApi({ + form, + name: 'name', + onChange: yup.string().min(3, 'You must have a length of at least 3'), + }) + + field.mount() + + expect(field.getMeta().errors).toEqual([]) + field.setValue('a', { touch: true }) + expect(field.getMeta().errors).toEqual([ + 'You must have a length of at least 3', + ]) + field.setValue('asdf', { touch: true }) + expect(field.getMeta().errors).toEqual([]) + }) + + it('should run an onChange fn with zod validation option enabled', () => { + const form = new FormApi({ + defaultValues: { + name: '', + }, + validator: yupValidator, + }) + + const field = new FieldApi({ + form, + name: 'name', + onChange: (val) => (val === 'a' ? 'Test' : undefined), + }) + + field.mount() + + expect(field.getMeta().errors).toEqual([]) + field.setValue('a', { touch: true }) + expect(field.getMeta().errors).toEqual(['Test']) + field.setValue('asdf', { touch: true }) + expect(field.getMeta().errors).toEqual([]) + }) +}) diff --git a/packages/yup-form-adapter/src/tests/FormApi.test-d.ts b/packages/yup-form-adapter/src/tests/FormApi.test-d.ts new file mode 100644 index 0000000..366b354 --- /dev/null +++ b/packages/yup-form-adapter/src/tests/FormApi.test-d.ts @@ -0,0 +1,77 @@ +import yup from 'yup' +import { yupValidator } from '../validator' +import { FieldApi, FormApi } from '@tanstack/form-core' +import { assertType } from 'vitest' + +it('should allow a Zod validator to be passed in', () => { + const form = new FormApi({ + defaultValues: { + name: 'test', + }, + validator: yupValidator, + } as const) +}) + +it('should allow a Zod validator to handle the correct Zod type', () => { + const form = new FormApi({ + defaultValues: { + name: 'test', + }, + validator: yupValidator, + }) + + const field = new FieldApi({ + form, + name: 'name', + onChange: yup.string(), + } as const) +}) + +it('should allow a functional onChange to be passed when using a validator', () => { + const form = new FormApi({ + defaultValues: { + name: 'test', + }, + validator: yupValidator, + }) + + const field = new FieldApi({ + form, + name: 'name', + onChange: (val) => { + assertType<'test'>(val) + return undefined + }, + } as const) +}) + +it('should not allow a validator onChange to be passed when not using a validator', () => { + const form = new FormApi({ + defaultValues: { + name: 'test', + }, + }) + + const field = new FieldApi({ + form, + name: 'name', + // @ts-expect-error Requires a validator + onChange: yup.string(), + } as const) +}) + +// This is not possible without higher-kinded types AFAIK +it.skip('should allow not a Zod validator with the wrong Zod type', () => { + const form = new FormApi({ + defaultValues: { + name: 'test', + }, + }) + + const field = new FieldApi({ + form, + name: 'name', + validator: yupValidator, + onChange: yup.object({}), + } as const) +}) diff --git a/packages/yup-form-adapter/src/tests/utils.ts b/packages/yup-form-adapter/src/tests/utils.ts new file mode 100644 index 0000000..1a3a619 --- /dev/null +++ b/packages/yup-form-adapter/src/tests/utils.ts @@ -0,0 +1,5 @@ +export function sleep(timeout: number): Promise { + return new Promise((resolve, _reject) => { + setTimeout(resolve, timeout) + }) +} diff --git a/packages/yup-form-adapter/src/validator.ts b/packages/yup-form-adapter/src/validator.ts new file mode 100644 index 0000000..d7865de --- /dev/null +++ b/packages/yup-form-adapter/src/validator.ts @@ -0,0 +1,25 @@ +import type { ValidationError as YupError, AnySchema } from 'yup' +import type { ValidationError, Validator } from '@tanstack/form-core' + +export const yupValidator = (() => { + return { + validate(value: unknown, fn: Fn): ValidationError { + try { + fn.validateSync(value) + return + } catch (_e) { + const e = _e as YupError + return e.errors.join(', ') + } + }, + async validateAsync(value: unknown, fn: Fn): Promise { + try { + await fn.validate(value) + return + } catch (_e) { + const e = _e as YupError + return e.errors.join(', ') + } + }, + } +}) satisfies Validator diff --git a/packages/yup-form-adapter/tsconfig.eslint.json b/packages/yup-form-adapter/tsconfig.eslint.json new file mode 100644 index 0000000..e3d7964 --- /dev/null +++ b/packages/yup-form-adapter/tsconfig.eslint.json @@ -0,0 +1,7 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "noEmit": true + }, + "include": ["**/*.ts", "**/*.tsx", ".eslintrc.cjs", "tsup.config.js"] +} diff --git a/packages/yup-form-adapter/tsconfig.json b/packages/yup-form-adapter/tsconfig.json new file mode 100644 index 0000000..8cb149f --- /dev/null +++ b/packages/yup-form-adapter/tsconfig.json @@ -0,0 +1,9 @@ +{ + "composite": true, + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "outDir": "./build/lib", + "types": ["vitest/globals"] + }, + "include": ["src"] +} diff --git a/packages/yup-form-adapter/tsup.config.js b/packages/yup-form-adapter/tsup.config.js new file mode 100644 index 0000000..7b19f5f --- /dev/null +++ b/packages/yup-form-adapter/tsup.config.js @@ -0,0 +1,9 @@ +// @ts-check + +import { defineConfig } from 'tsup' +import { legacyConfig, modernConfig } from '../../getTsupConfig.js' + +export default defineConfig([ + modernConfig({ entry: ['src/*.ts'] }), + legacyConfig({ entry: ['src/*.ts'] }), +]) diff --git a/packages/yup-form-adapter/vitest.config.ts b/packages/yup-form-adapter/vitest.config.ts new file mode 100644 index 0000000..89a7a5a --- /dev/null +++ b/packages/yup-form-adapter/vitest.config.ts @@ -0,0 +1,12 @@ +import { defineConfig } from 'vitest/config' + +export default defineConfig({ + test: { + name: 'form-core', + dir: './src', + watch: false, + environment: 'jsdom', + globals: true, + coverage: { provider: 'istanbul' }, + }, +}) diff --git a/packages/zod-form-adapter/.eslintrc.cjs b/packages/zod-form-adapter/.eslintrc.cjs new file mode 100644 index 0000000..52b4481 --- /dev/null +++ b/packages/zod-form-adapter/.eslintrc.cjs @@ -0,0 +1,11 @@ +// @ts-check + +/** @type {import('eslint').Linter.Config} */ +const config = { + parserOptions: { + tsconfigRootDir: __dirname, + project: './tsconfig.eslint.json', + }, +} + +module.exports = config diff --git a/packages/zod-form-adapter/package.json b/packages/zod-form-adapter/package.json new file mode 100644 index 0000000..9bcb29c --- /dev/null +++ b/packages/zod-form-adapter/package.json @@ -0,0 +1,62 @@ +{ + "name": "@tanstack/zod-form-adapter", + "version": "0.3.6", + "description": "The Zod adapter for TanStack Form.", + "author": "tannerlinsley", + "license": "MIT", + "repository": "tanstack/form", + "homepage": "https://tanstack.com/form", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + }, + "type": "module", + "types": "build/legacy/index.d.ts", + "main": "build/legacy/index.cjs", + "module": "build/legacy/index.js", + "exports": { + ".": { + "import": { + "types": "./build/modern/index.d.ts", + "default": "./build/modern/index.js" + }, + "require": { + "types": "./build/modern/index.d.cts", + "default": "./build/modern/index.cjs" + } + }, + "./package.json": "./package.json" + }, + "sideEffects": false, + "files": [ + "build", + "src" + ], + "nx": { + "targets": { + "test:build": { + "dependsOn": [ + "build" + ] + } + } + }, + "scripts": { + "clean": "rimraf ./build && rimraf ./coverage", + "test:eslint": "eslint --ext .ts,.tsx ./src", + "test:types": "tsc --noEmit && vitest typecheck", + "test:lib": "vitest run --coverage", + "test:lib:dev": "pnpm run test:lib --watch", + "test:build": "publint --strict", + "build": "tsup" + }, + "dependencies": { + "@tanstack/form-core": "workspace:*" + }, + "peerDependencies": { + "zod": "^3.x" + }, + "devDependencies": { + "zod": "^3.22.4" + } +} diff --git a/packages/zod-form-adapter/src/index.ts b/packages/zod-form-adapter/src/index.ts new file mode 100644 index 0000000..26e40be --- /dev/null +++ b/packages/zod-form-adapter/src/index.ts @@ -0,0 +1 @@ +export * from './validator' diff --git a/packages/zod-form-adapter/src/tests/FieldApi.spec.ts b/packages/zod-form-adapter/src/tests/FieldApi.spec.ts new file mode 100644 index 0000000..915b12b --- /dev/null +++ b/packages/zod-form-adapter/src/tests/FieldApi.spec.ts @@ -0,0 +1,110 @@ +import { expect } from 'vitest' + +import { FormApi, FieldApi } from '@tanstack/form-core' +import { zodValidator } from '../validator' +import { z } from 'zod' +import { sleep } from './utils' + +describe('zod field api', () => { + it('should run an onChange with z.string validation', () => { + const form = new FormApi({ + defaultValues: { + name: '', + }, + }) + + const field = new FieldApi({ + form, + validator: zodValidator, + name: 'name', + onChange: z.string().min(3, 'You must have a length of at least 3'), + }) + + field.mount() + + expect(field.getMeta().errors).toEqual([]) + field.setValue('a', { touch: true }) + expect(field.getMeta().errors).toEqual([ + 'You must have a length of at least 3', + ]) + field.setValue('asdf', { touch: true }) + expect(field.getMeta().errors).toEqual([]) + }) + + it('should run an onChange fn with zod validation option enabled', () => { + const form = new FormApi({ + defaultValues: { + name: '', + }, + }) + + const field = new FieldApi({ + form, + validator: zodValidator, + name: 'name', + onChange: (val) => (val === 'a' ? 'Test' : undefined), + }) + + field.mount() + + expect(field.getMeta().errors).toEqual([]) + field.setValue('a', { touch: true }) + expect(field.getMeta().errors).toEqual(['Test']) + field.setValue('asdf', { touch: true }) + expect(field.getMeta().errors).toEqual([]) + }) + + it('should run an onChangeAsync with z.string validation', async () => { + const form = new FormApi({ + defaultValues: { + name: '', + }, + }) + + const field = new FieldApi({ + form, + validator: zodValidator, + name: 'name', + onChangeAsync: z.string().refine(async (val) => val.length > 3, { + message: 'Testing 123', + }), + onChangeAsyncDebounceMs: 0, + }) + + field.mount() + + expect(field.getMeta().errors).toEqual([]) + field.setValue('a', { touch: true }) + await sleep(10) + expect(field.getMeta().errors).toEqual(['Testing 123']) + field.setValue('asdf', { touch: true }) + await sleep(10) + expect(field.getMeta().errors).toEqual([]) + }) + + it('should run an onChangeAsyc fn with zod validation option enabled', async () => { + const form = new FormApi({ + defaultValues: { + name: '', + }, + }) + + const field = new FieldApi({ + form, + validator: zodValidator, + name: 'name', + onChangeAsync: async (val) => (val === 'a' ? 'Test' : undefined), + onChangeAsyncDebounceMs: 0, + }) + + field.mount() + + expect(field.getMeta().errors).toEqual([]) + field.setValue('a', { touch: true }) + await sleep(10) + expect(field.getMeta().errors).toEqual(['Test']) + field.setValue('asdf', { touch: true }) + await sleep(10) + expect(field.getMeta().errors).toEqual([]) + }) +}) diff --git a/packages/zod-form-adapter/src/tests/FieldApi.test-d.ts b/packages/zod-form-adapter/src/tests/FieldApi.test-d.ts new file mode 100644 index 0000000..08e59d1 --- /dev/null +++ b/packages/zod-form-adapter/src/tests/FieldApi.test-d.ts @@ -0,0 +1,97 @@ +import { zodValidator } from '../validator' +import { z } from 'zod' +import { FieldApi, FormApi } from '@tanstack/form-core' +import { assertType } from 'vitest' + +it('should allow a Zod validator to be passed in', () => { + const form = new FormApi({ + defaultValues: { + name: 'test', + }, + } as const) + + const field = new FieldApi({ + form, + name: 'name', + validator: zodValidator, + } as const) +}) + +it('should allow a Zod validator to handle the correct Zod type', () => { + const form = new FormApi({ + defaultValues: { + name: 'test', + }, + }) + + const field = new FieldApi({ + form, + name: 'name', + validator: zodValidator, + onChange: z.string(), + } as const) +}) + +it('should allow a Zod validator to handle the correct Zod type for an async method', () => { + const form = new FormApi({ + defaultValues: { + name: 'test', + }, + }) + + const field = new FieldApi({ + form, + name: 'name', + validator: zodValidator, + onChangeAsync: z.string(), + } as const) +}) + +it('should allow a functional onChange to be passed when using a validator', () => { + const form = new FormApi({ + defaultValues: { + name: 'test', + }, + }) + + const field = new FieldApi({ + form, + name: 'name', + validator: zodValidator, + onChange: (val) => { + assertType<'test'>(val) + return undefined + }, + } as const) +}) + +it('should not allow a validator onChange to be passed when not using a validator', () => { + const form = new FormApi({ + defaultValues: { + name: 'test', + }, + }) + + const field = new FieldApi({ + form, + name: 'name', + // @ts-expect-error Requires a validator + onChange: z.string(), + } as const) +}) + +// This is not possible without higher-kinded types AFAIK +it.skip('should allow not a Zod validator with the wrong Zod type', () => { + const form = new FormApi({ + defaultValues: { + name: 'test', + }, + }) + + const field = new FieldApi({ + form, + name: 'name', + validator: zodValidator, + onChange: z.object({}), + } as const) +}) diff --git a/packages/zod-form-adapter/src/tests/FormApi.spec.ts b/packages/zod-form-adapter/src/tests/FormApi.spec.ts new file mode 100644 index 0000000..864daa6 --- /dev/null +++ b/packages/zod-form-adapter/src/tests/FormApi.spec.ts @@ -0,0 +1,55 @@ +import { expect } from 'vitest' + +import { FormApi, FieldApi } from '@tanstack/form-core' +import { zodValidator } from '../validator' +import { z } from 'zod' + +describe('zod form api', () => { + it('should run an onChange with z.string validation', () => { + const form = new FormApi({ + defaultValues: { + name: '', + }, + validator: zodValidator, + }) + + const field = new FieldApi({ + form, + name: 'name', + onChange: z.string().min(3, 'You must have a length of at least 3'), + }) + + field.mount() + + expect(field.getMeta().errors).toEqual([]) + field.setValue('a', { touch: true }) + expect(field.getMeta().errors).toEqual([ + 'You must have a length of at least 3', + ]) + field.setValue('asdf', { touch: true }) + expect(field.getMeta().errors).toEqual([]) + }) + + it('should run an onChange fn with zod validation option enabled', () => { + const form = new FormApi({ + defaultValues: { + name: '', + }, + validator: zodValidator, + }) + + const field = new FieldApi({ + form, + name: 'name', + onChange: (val) => (val === 'a' ? 'Test' : undefined), + }) + + field.mount() + + expect(field.getMeta().errors).toEqual([]) + field.setValue('a', { touch: true }) + expect(field.getMeta().errors).toEqual(['Test']) + field.setValue('asdf', { touch: true }) + expect(field.getMeta().errors).toEqual([]) + }) +}) diff --git a/packages/zod-form-adapter/src/tests/FormApi.test-d.ts b/packages/zod-form-adapter/src/tests/FormApi.test-d.ts new file mode 100644 index 0000000..2373f7f --- /dev/null +++ b/packages/zod-form-adapter/src/tests/FormApi.test-d.ts @@ -0,0 +1,92 @@ +import { z } from 'zod' +import { zodValidator } from '../validator' +import { FieldApi, FormApi } from '@tanstack/form-core' +import { assertType } from 'vitest' + +it('should allow a Zod validator to be passed in', () => { + const form = new FormApi({ + defaultValues: { + name: 'test', + }, + validator: zodValidator, + } as const) +}) + +it('should allow a Zod validator to handle the correct Zod type', () => { + const form = new FormApi({ + defaultValues: { + name: 'test', + }, + validator: zodValidator, + }) + + const field = new FieldApi({ + form, + name: 'name', + onChange: z.string(), + } as const) +}) + +it('should allow a Zod validator to handle the correct Zod type on async methods', () => { + const form = new FormApi({ + defaultValues: { + name: 'test', + }, + validator: zodValidator, + }) + + const field = new FieldApi({ + form, + name: 'name', + onChangeAsync: z.string(), + } as const) +}) + +it('should allow a functional onChange to be passed when using a validator', () => { + const form = new FormApi({ + defaultValues: { + name: 'test', + }, + validator: zodValidator, + }) + + const field = new FieldApi({ + form, + name: 'name', + onChange: (val) => { + assertType<'test'>(val) + return undefined + }, + } as const) +}) + +it('should not allow a validator onChange to be passed when not using a validator', () => { + const form = new FormApi({ + defaultValues: { + name: 'test', + }, + }) + + const field = new FieldApi({ + form, + name: 'name', + // @ts-expect-error Requires a validator + onChange: z.string(), + } as const) +}) + +// This is not possible without higher-kinded types AFAIK +it.skip('should allow not a Zod validator with the wrong Zod type', () => { + const form = new FormApi({ + defaultValues: { + name: 'test', + }, + }) + + const field = new FieldApi({ + form, + name: 'name', + validator: zodValidator, + onChange: z.object({}), + } as const) +}) diff --git a/packages/zod-form-adapter/src/tests/utils.ts b/packages/zod-form-adapter/src/tests/utils.ts new file mode 100644 index 0000000..1a3a619 --- /dev/null +++ b/packages/zod-form-adapter/src/tests/utils.ts @@ -0,0 +1,5 @@ +export function sleep(timeout: number): Promise { + return new Promise((resolve, _reject) => { + setTimeout(resolve, timeout) + }) +} diff --git a/packages/zod-form-adapter/src/validator.ts b/packages/zod-form-adapter/src/validator.ts new file mode 100644 index 0000000..7c04e27 --- /dev/null +++ b/packages/zod-form-adapter/src/validator.ts @@ -0,0 +1,23 @@ +import type { ZodType, ZodTypeAny } from 'zod' +import type { ValidationError, Validator } from '@tanstack/form-core' + +export const zodValidator = (() => { + return { + validate(value: unknown, fn: Fn): ValidationError { + // Call Zod on the value here and return the error message + const result = (fn as ZodTypeAny).safeParse(value) + if (!result.success) { + return result.error.issues.map((issue) => issue.message).join(', ') + } + return + }, + async validateAsync(value: unknown, fn: Fn): Promise { + // Call Zod on the value here and return the error message + const result = await (fn as ZodTypeAny).safeParseAsync(value) + if (!result.success) { + return result.error.issues.map((issue) => issue.message).join(', ') + } + return + }, + } +}) satisfies Validator diff --git a/packages/zod-form-adapter/tsconfig.eslint.json b/packages/zod-form-adapter/tsconfig.eslint.json new file mode 100644 index 0000000..e3d7964 --- /dev/null +++ b/packages/zod-form-adapter/tsconfig.eslint.json @@ -0,0 +1,7 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "noEmit": true + }, + "include": ["**/*.ts", "**/*.tsx", ".eslintrc.cjs", "tsup.config.js"] +} diff --git a/packages/zod-form-adapter/tsconfig.json b/packages/zod-form-adapter/tsconfig.json new file mode 100644 index 0000000..8cb149f --- /dev/null +++ b/packages/zod-form-adapter/tsconfig.json @@ -0,0 +1,9 @@ +{ + "composite": true, + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "outDir": "./build/lib", + "types": ["vitest/globals"] + }, + "include": ["src"] +} diff --git a/packages/zod-form-adapter/tsup.config.js b/packages/zod-form-adapter/tsup.config.js new file mode 100644 index 0000000..7b19f5f --- /dev/null +++ b/packages/zod-form-adapter/tsup.config.js @@ -0,0 +1,9 @@ +// @ts-check + +import { defineConfig } from 'tsup' +import { legacyConfig, modernConfig } from '../../getTsupConfig.js' + +export default defineConfig([ + modernConfig({ entry: ['src/*.ts'] }), + legacyConfig({ entry: ['src/*.ts'] }), +]) diff --git a/packages/zod-form-adapter/vitest.config.ts b/packages/zod-form-adapter/vitest.config.ts new file mode 100644 index 0000000..89a7a5a --- /dev/null +++ b/packages/zod-form-adapter/vitest.config.ts @@ -0,0 +1,12 @@ +import { defineConfig } from 'vitest/config' + +export default defineConfig({ + test: { + name: 'form-core', + dir: './src', + watch: false, + environment: 'jsdom', + globals: true, + coverage: { provider: 'istanbul' }, + }, +}) diff --git a/patches/tsup@7.2.0.patch b/patches/tsup@7.2.0.patch new file mode 100644 index 0000000..f9663b0 --- /dev/null +++ b/patches/tsup@7.2.0.patch @@ -0,0 +1,14 @@ +diff --git a/dist/rollup.js b/dist/rollup.js +index 0f6400eedfad49091ca952ee5863bd027e3b8417..f08abd327e031cd8d18729e955b5f3b45f6f3f92 100644 +--- a/dist/rollup.js ++++ b/dist/rollup.js +@@ -6805,6 +6805,9 @@ export { ${[...exportedNames].join(", ")} }; + } + } + } ++ // https://github.com/Swatinem/rollup-plugin-dts/pull/287 ++ // `this` is a reserved keyword that retrains meaning in certain Type-only contexts, including classes ++ if (name === "this") return; + const { ident, expr } = createReference(id); + this.declaration.params.push(expr); + this.returnExpr.elements.push(ident); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0d67ee2..ff55746 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,11 +8,16 @@ overrides: '@tanstack/form-core': workspace:* '@tanstack/react-form': workspace:* '@tanstack/vue-form': workspace:* + '@tanstack/yup-form-adapter': workspace:* + '@tanstack/zod-form-adapter': workspace:* patchedDependencies: '@types/testing-library__jest-dom@5.14.5': hash: d573maxasnl5kxwdyzebcnmhpm path: patches/@types__testing-library__jest-dom@5.14.5.patch + tsup@7.2.0: + hash: gwbgl3s5ycyzg75lofcbklamcy + path: patches/tsup@7.2.0.patch importers: @@ -20,40 +25,40 @@ importers: devDependencies: '@babel/core': specifier: ^7.21.8 - version: 7.22.10 + version: 7.22.17 '@babel/preset-env': specifier: ^7.21.5 - version: 7.21.5(@babel/core@7.22.10) + version: 7.22.15(@babel/core@7.22.17) '@babel/preset-react': specifier: ^7.18.6 - version: 7.18.6(@babel/core@7.22.10) + version: 7.22.15(@babel/core@7.22.17) '@babel/preset-typescript': specifier: ^7.21.5 - version: 7.21.5(@babel/core@7.22.10) + version: 7.22.15(@babel/core@7.22.17) '@commitlint/parse': specifier: ^17.6.5 - version: 17.6.5 + version: 17.7.0 '@rollup/plugin-babel': specifier: ^6.0.3 - version: 6.0.3(@babel/core@7.22.10) + version: 6.0.3(@babel/core@7.22.17) '@rollup/plugin-commonjs': specifier: ^25.0.0 - version: 25.0.0 + version: 25.0.4 '@rollup/plugin-node-resolve': specifier: ^15.0.2 - version: 15.0.2 + version: 15.2.1 '@rollup/plugin-replace': specifier: ^5.0.2 version: 5.0.2 '@testing-library/jest-dom': specifier: ^5.16.5 - version: 5.16.5 + version: 5.17.0 '@testing-library/react': specifier: ^14.0.0 version: 14.0.0(react-dom@18.2.0)(react@18.2.0) '@testing-library/react-hooks': specifier: ^8.0.1 - version: 8.0.1(@types/react@18.0.15)(react-dom@18.2.0)(react@18.2.0) + version: 8.0.1(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) '@testing-library/user-event': specifier: ^14.4.3 version: 14.4.3(@testing-library/dom@9.3.1) @@ -71,19 +76,19 @@ importers: version: 6.1.1 '@types/luxon': specifier: ^2.3.1 - version: 2.3.2 + version: 2.4.0 '@types/node': specifier: ^17.0.25 version: 17.0.45 '@types/react': specifier: ^18.0.14 - version: 18.0.15 + version: 18.2.21 '@types/react-dom': specifier: ^18.0.5 - version: 18.0.6 + version: 18.2.7 '@types/semver': specifier: ^7.3.13 - version: 7.3.13 + version: 7.5.1 '@types/stream-to-array': specifier: ^2.3.1 version: 2.3.1 @@ -92,25 +97,25 @@ importers: version: 5.14.5(patch_hash=d573maxasnl5kxwdyzebcnmhpm) '@typescript-eslint/eslint-plugin': specifier: ^6.4.1 - version: 6.4.1(@typescript-eslint/parser@6.4.1)(eslint@8.48.0)(typescript@5.2.2) + version: 6.6.0(@typescript-eslint/parser@6.6.0)(eslint@8.49.0)(typescript@5.2.2) '@typescript-eslint/parser': specifier: ^6.4.1 - version: 6.4.1(eslint@8.48.0)(typescript@5.2.2) + version: 6.6.0(eslint@8.49.0)(typescript@5.2.2) '@vitest/coverage-istanbul': specifier: ^0.34.3 - version: 0.34.3(vitest@0.34.3) + version: 0.34.4(vitest@0.34.4) axios: specifier: ^0.26.1 version: 0.26.1 babel-eslint: specifier: ^10.1.0 - version: 10.1.0(eslint@8.48.0) + version: 10.1.0(eslint@8.49.0) babel-jest: specifier: ^27.5.1 - version: 27.5.1(@babel/core@7.22.10) + version: 27.5.1(@babel/core@7.22.17) babel-preset-solid: specifier: ^1.5.4 - version: 1.5.4(@babel/core@7.22.10) + version: 1.7.7(@babel/core@7.22.17) bundlewatch: specifier: ^0.3.2 version: 0.3.3 @@ -134,25 +139,25 @@ importers: version: 1.0.0 eslint: specifier: ^8.48.0 - version: 8.48.0 + version: 8.49.0 eslint-config-prettier: specifier: ^9.0.0 - version: 9.0.0(eslint@8.48.0) + version: 9.0.0(eslint@8.49.0) eslint-import-resolver-typescript: specifier: ^3.6.0 - version: 3.6.0(@typescript-eslint/parser@6.4.1)(eslint-plugin-import@2.28.1)(eslint@8.48.0) + version: 3.6.0(@typescript-eslint/parser@6.6.0)(eslint-plugin-import@2.28.1)(eslint@8.49.0) eslint-plugin-compat: specifier: ^4.1.4 - version: 4.1.4(eslint@8.48.0) + version: 4.2.0(eslint@8.49.0) eslint-plugin-import: specifier: ^2.28.1 - version: 2.28.1(@typescript-eslint/parser@6.4.1)(eslint-import-resolver-typescript@3.6.0)(eslint@8.48.0) + version: 2.28.1(@typescript-eslint/parser@6.6.0)(eslint-import-resolver-typescript@3.6.0)(eslint@8.49.0) eslint-plugin-react: specifier: ^7.33.2 - version: 7.33.2(eslint@8.48.0) + version: 7.33.2(eslint@8.49.0) eslint-plugin-react-hooks: specifier: ^4.6.0 - version: 4.6.0(eslint@8.48.0) + version: 4.6.0(eslint@8.49.0) fs-extra: specifier: ^11.1.1 version: 11.1.1 @@ -161,25 +166,25 @@ importers: version: 1.2.0 jsdom: specifier: ^22.0.0 - version: 22.0.0 + version: 22.1.0 jsonfile: specifier: ^6.1.0 version: 6.1.0 luxon: specifier: ^3.3.0 - version: 3.3.0 + version: 3.4.3 nx: specifier: ^16.7.4 - version: 16.7.4 + version: 16.8.1 nx-cloud: specifier: ^16.0.5 - version: 16.3.0 + version: 16.4.0 prettier: specifier: ^3.0.2 - version: 3.0.2 + version: 3.0.3 publint: specifier: ^0.1.15 - version: 0.1.15 + version: 0.1.16 react: specifier: ^18.2.0 version: 18.2.0 @@ -197,10 +202,10 @@ importers: version: 5.0.1 semver: specifier: ^7.3.8 - version: 7.3.8 + version: 7.5.4 solid-js: specifier: ^1.6.13 - version: 1.6.13 + version: 1.7.11 stream-to-array: specifier: ^2.3.0 version: 2.3.0 @@ -208,17 +213,17 @@ importers: specifier: ^10.9.1 version: 10.9.1(@types/node@17.0.45)(typescript@5.2.2) tsup: - specifier: ^7.2.0 - version: 7.2.0(ts-node@10.9.1)(typescript@5.2.2) + specifier: 7.2.0 + version: 7.2.0(patch_hash=gwbgl3s5ycyzg75lofcbklamcy)(ts-node@10.9.1)(typescript@5.2.2) type-fest: specifier: ^3.11.0 - version: 3.11.0 + version: 3.13.1 typescript: specifier: ^5.2.2 version: 5.2.2 vitest: specifier: ^0.34.3 - version: 0.34.3(jsdom@22.0.0) + version: 0.34.4(jsdom@22.1.0) vue: specifier: ^3.3.4 version: 3.3.4 @@ -231,9 +236,65 @@ importers: '@tanstack/react-form': specifier: workspace:* version: link:../../../packages/react-form - '@tanstack/vue-form': + axios: + specifier: ^0.26.1 + version: 0.26.1 + react: + specifier: ^18.0.0 + version: 18.2.0 + react-dom: + specifier: ^18.0.0 + version: 18.2.0(react@18.2.0) + devDependencies: + '@vitejs/plugin-react': + specifier: ^4.0.4 + version: 4.0.4(vite@4.4.9) + vite: + specifier: ^4.4.9 + version: 4.4.9(@types/node@17.0.45) + + examples/react/yup: + dependencies: + '@tanstack/form-core': specifier: workspace:* - version: link:../../../packages/vue-form + version: link:../../../packages/form-core + '@tanstack/react-form': + specifier: workspace:* + version: link:../../../packages/react-form + '@tanstack/yup-form-adapter': + specifier: workspace:* + version: link:../../../packages/yup-form-adapter + axios: + specifier: ^0.26.1 + version: 0.26.1 + react: + specifier: ^18.0.0 + version: 18.2.0 + react-dom: + specifier: ^18.0.0 + version: 18.2.0(react@18.2.0) + yup: + specifier: ^1.3.2 + version: 1.3.2 + devDependencies: + '@vitejs/plugin-react': + specifier: ^4.0.4 + version: 4.0.4(vite@4.4.9) + vite: + specifier: ^4.4.9 + version: 4.4.9(@types/node@17.0.45) + + examples/react/zod: + dependencies: + '@tanstack/form-core': + specifier: workspace:* + version: link:../../../packages/form-core + '@tanstack/react-form': + specifier: workspace:* + version: link:../../../packages/react-form + '@tanstack/zod-form-adapter': + specifier: workspace:* + version: link:../../../packages/zod-form-adapter axios: specifier: ^0.26.1 version: 0.26.1 @@ -245,7 +306,7 @@ importers: version: 18.2.0(react@18.2.0) zod: specifier: ^3.21.4 - version: 3.21.4 + version: 3.22.4 devDependencies: '@vitejs/plugin-react': specifier: ^4.0.4 @@ -259,9 +320,6 @@ importers: '@tanstack/form-core': specifier: workspace:* version: link:../../../packages/form-core - '@tanstack/react-form': - specifier: workspace:* - version: link:../../../packages/react-form '@tanstack/vue-form': specifier: workspace:* version: link:../../../packages/vue-form @@ -282,6 +340,68 @@ importers: specifier: ^1.8.10 version: 1.8.10(typescript@5.2.2) + examples/vue/yup: + dependencies: + '@tanstack/form-core': + specifier: workspace:* + version: link:../../../packages/form-core + '@tanstack/vue-form': + specifier: workspace:* + version: link:../../../packages/vue-form + '@tanstack/yup-form-adapter': + specifier: workspace:* + version: link:../../../packages/yup-form-adapter + vue: + specifier: ^3.3.4 + version: 3.3.4 + yup: + specifier: ^1.3.2 + version: 1.3.2 + devDependencies: + '@vitejs/plugin-vue': + specifier: ^4.3.4 + version: 4.3.4(vite@4.4.9)(vue@3.3.4) + typescript: + specifier: ^5.0.4 + version: 5.2.2 + vite: + specifier: ^4.4.9 + version: 4.4.9(@types/node@17.0.45) + vue-tsc: + specifier: ^1.8.10 + version: 1.8.10(typescript@5.2.2) + + examples/vue/zod: + dependencies: + '@tanstack/form-core': + specifier: workspace:* + version: link:../../../packages/form-core + '@tanstack/vue-form': + specifier: workspace:* + version: link:../../../packages/vue-form + '@tanstack/zod-form-adapter': + specifier: workspace:* + version: link:../../../packages/zod-form-adapter + vue: + specifier: ^3.3.4 + version: 3.3.4 + zod: + specifier: ^3.21.4 + version: 3.22.4 + devDependencies: + '@vitejs/plugin-vue': + specifier: ^4.3.4 + version: 4.3.4(vite@4.4.9)(vue@3.3.4) + typescript: + specifier: ^5.0.4 + version: 5.2.2 + vite: + specifier: ^4.4.9 + version: 4.4.9(@types/node@17.0.45) + vue-tsc: + specifier: ^1.8.10 + version: 1.8.10(typescript@5.2.2) + packages/form-core: dependencies: '@tanstack/store': @@ -301,20 +421,20 @@ importers: version: 0.1.3 react-native: specifier: '*' - version: 0.72.4(@babel/core@7.22.10)(@babel/preset-env@7.21.5)(react@18.2.0) + version: 0.72.4(@babel/core@7.22.17)(@babel/preset-env@7.22.15)(react@18.2.0) use-isomorphic-layout-effect: specifier: ^1.1.2 - version: 1.1.2(@types/react@18.0.15)(react@18.2.0) + version: 1.1.2(@types/react@18.2.21)(react@18.2.0) devDependencies: '@types/jscodeshift': specifier: ^0.11.3 - version: 0.11.5 + version: 0.11.6 '@types/react': specifier: ^18.0.14 - version: 18.0.15 + version: 18.2.21 '@types/react-dom': specifier: ^18.0.5 - version: 18.0.6 + version: 18.2.7 '@types/use-sync-external-store': specifier: ^0.0.3 version: 0.0.3 @@ -356,6 +476,26 @@ importers: specifier: npm:vue@2.7 version: /vue@2.7.14 + packages/yup-form-adapter: + dependencies: + '@tanstack/form-core': + specifier: workspace:* + version: link:../form-core + devDependencies: + yup: + specifier: ^1.3.2 + version: 1.3.2 + + packages/zod-form-adapter: + dependencies: + '@tanstack/form-core': + specifier: workspace:* + version: link:../form-core + devDependencies: + zod: + specifier: ^3.22.4 + version: 3.22.4 + packages: /@aashutoshrathi/word-wrap@1.2.6: @@ -363,8 +503,8 @@ packages: engines: {node: '>=0.10.0'} dev: true - /@adobe/css-tools@4.3.0: - resolution: {integrity: sha512-+RNNcQvw2V1bmnBTPAtOLfW/9mhH2vC67+rUSi5T8EtEWt6lEnGNY2GuhZ1/YwbgikT1TkhvidCDmN5Q5YCo/w==} + /@adobe/css-tools@4.3.1: + resolution: {integrity: sha512-/62yikz7NLScCGAAST5SHdnjaDJQBDq0M2muyRTpf2VQhw6StBg2ALiu73zSJQ4fMVLA+0uBhBHAle7Wg+2kSg==} dev: true /@ampproject/remapping@2.2.1: @@ -374,20 +514,6 @@ packages: '@jridgewell/gen-mapping': 0.3.3 '@jridgewell/trace-mapping': 0.3.19 - /@babel/code-frame@7.18.6: - resolution: {integrity: sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/highlight': 7.22.13 - dev: true - - /@babel/code-frame@7.22.10: - resolution: {integrity: sha512-/KKIMG4UEL35WmI9OlvMhurwtytjvXoFcGNrOvyG9zIzA8YmPjVtIZUf7b05+TPO7G7/GEmLHDaoCgACHl9hhA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/highlight': 7.22.13 - chalk: 2.4.2 - /@babel/code-frame@7.22.13: resolution: {integrity: sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==} engines: {node: '>=6.9.0'} @@ -399,20 +525,20 @@ packages: resolution: {integrity: sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==} engines: {node: '>=6.9.0'} - /@babel/core@7.22.10: - resolution: {integrity: sha512-fTmqbbUBAwCcre6zPzNngvsI0aNrPZe77AeqvDxWM9Nm+04RrJ3CAmGHA9f7lJQY6ZMhRztNemy4uslDxTX4Qw==} + /@babel/core@7.22.17: + resolution: {integrity: sha512-2EENLmhpwplDux5PSsZnSbnSkB3tZ6QTksgO25xwEL7pIDcNOMhF5v/s6RzwjMZzZzw9Ofc30gHv5ChCC8pifQ==} engines: {node: '>=6.9.0'} dependencies: '@ampproject/remapping': 2.2.1 - '@babel/code-frame': 7.22.10 - '@babel/generator': 7.22.10 - '@babel/helper-compilation-targets': 7.22.10 - '@babel/helper-module-transforms': 7.22.9(@babel/core@7.22.10) - '@babel/helpers': 7.22.10 - '@babel/parser': 7.22.13 - '@babel/template': 7.22.5 - '@babel/traverse': 7.22.10 - '@babel/types': 7.22.11 + '@babel/code-frame': 7.22.13 + '@babel/generator': 7.22.15 + '@babel/helper-compilation-targets': 7.22.15 + '@babel/helper-module-transforms': 7.22.17(@babel/core@7.22.17) + '@babel/helpers': 7.22.15 + '@babel/parser': 7.22.16 + '@babel/template': 7.22.15 + '@babel/traverse': 7.22.17 + '@babel/types': 7.22.17 convert-source-map: 1.9.0 debug: 4.3.4 gensync: 1.0.0-beta.2 @@ -421,11 +547,11 @@ packages: transitivePeerDependencies: - supports-color - /@babel/generator@7.22.10: - resolution: {integrity: sha512-79KIf7YiWjjdZ81JnLujDRApWtl7BxTqWD88+FFdQEIOG8LJ0etDOM7CXuIgGJa55sGOwZVwuEsaLEm0PJ5/+A==} + /@babel/generator@7.22.15: + resolution: {integrity: sha512-Zu9oWARBqeVOW0dZOjXc3JObrzuqothQ3y/n1kUtrjCoCPLkXUwMvOo/F/TCfoHMbWIFlWwpZtkZVb9ga4U2pA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.11 + '@babel/types': 7.22.17 '@jridgewell/gen-mapping': 0.3.3 '@jridgewell/trace-mapping': 0.3.19 jsesc: 2.5.2 @@ -434,81 +560,65 @@ packages: resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.15 + '@babel/types': 7.22.17 - /@babel/helper-builder-binary-assignment-operator-visitor@7.22.10: - resolution: {integrity: sha512-Av0qubwDQxC56DoUReVDeLfMEjYYSN1nZrTUrWkXd7hpU73ymRANkbuDm3yni9npkn+RXy9nNbEJZEzXr7xrfQ==} + /@babel/helper-builder-binary-assignment-operator-visitor@7.22.15: + resolution: {integrity: sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.15 + '@babel/types': 7.22.17 - /@babel/helper-compilation-targets@7.22.10: - resolution: {integrity: sha512-JMSwHD4J7SLod0idLq5PKgI+6g/hLD/iuWBq08ZX49xE14VpVEojJ5rHWptpirV2j020MvypRLAXAO50igCJ5Q==} + /@babel/helper-compilation-targets@7.22.15: + resolution: {integrity: sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==} engines: {node: '>=6.9.0'} dependencies: '@babel/compat-data': 7.22.9 - '@babel/helper-validator-option': 7.22.5 + '@babel/helper-validator-option': 7.22.15 browserslist: 4.21.10 lru-cache: 5.1.1 semver: 6.3.1 - /@babel/helper-create-class-features-plugin@7.22.10(@babel/core@7.22.10): - resolution: {integrity: sha512-5IBb77txKYQPpOEdUdIhBx8VrZyDCQ+H82H0+5dX1TmuscP5vJKEE3cKurjtIw/vFwzbVH48VweE78kVDBrqjA==} + /@babel/helper-create-class-features-plugin@7.22.15(@babel/core@7.22.17): + resolution: {integrity: sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.10 + '@babel/core': 7.22.17 '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-environment-visitor': 7.22.5 '@babel/helper-function-name': 7.22.5 - '@babel/helper-member-expression-to-functions': 7.22.5 + '@babel/helper-member-expression-to-functions': 7.22.15 '@babel/helper-optimise-call-expression': 7.22.5 - '@babel/helper-replace-supers': 7.22.9(@babel/core@7.22.10) + '@babel/helper-replace-supers': 7.22.9(@babel/core@7.22.17) '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 semver: 6.3.1 - /@babel/helper-create-regexp-features-plugin@7.22.9(@babel/core@7.22.10): - resolution: {integrity: sha512-+svjVa/tFwsNSG4NEy1h85+HQ5imbT92Q5/bgtS7P0GTQlP8WuFdqsiABmQouhiFGyV66oGxZFpeYHza1rNsKw==} + /@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.22.17): + resolution: {integrity: sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.10 + '@babel/core': 7.22.17 '@babel/helper-annotate-as-pure': 7.22.5 regexpu-core: 5.3.2 semver: 6.3.1 - /@babel/helper-define-polyfill-provider@0.3.3(@babel/core@7.22.10): - resolution: {integrity: sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==} - peerDependencies: - '@babel/core': ^7.4.0-0 - dependencies: - '@babel/core': 7.22.10 - '@babel/helper-compilation-targets': 7.22.10 - '@babel/helper-plugin-utils': 7.22.5 - debug: 4.3.4 - lodash.debounce: 4.0.8 - resolve: 1.22.4 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - /@babel/helper-define-polyfill-provider@0.4.2(@babel/core@7.22.10): + /@babel/helper-define-polyfill-provider@0.4.2(@babel/core@7.22.17): resolution: {integrity: sha512-k0qnnOqHn5dK9pZpfD5XXZ9SojAITdCKRn2Lp6rnDGzIbaP0rHyMPk/4wsSxVBVz4RfN0q6VpXWP2pDGIoQ7hw==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/core': 7.22.10 - '@babel/helper-compilation-targets': 7.22.10 + '@babel/core': 7.22.17 + '@babel/helper-compilation-targets': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 debug: 4.3.4 lodash.debounce: 4.0.8 resolve: 1.22.4 transitivePeerDependencies: - supports-color - dev: false /@babel/helper-environment-visitor@7.22.5: resolution: {integrity: sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==} @@ -518,50 +628,43 @@ packages: resolution: {integrity: sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/template': 7.22.5 - '@babel/types': 7.22.15 + '@babel/template': 7.22.15 + '@babel/types': 7.22.17 /@babel/helper-hoist-variables@7.22.5: resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.15 + '@babel/types': 7.22.17 - /@babel/helper-member-expression-to-functions@7.22.5: - resolution: {integrity: sha512-aBiH1NKMG0H2cGZqspNvsaBe6wNGjbJjuLy29aU+eDZjSbbN53BaxlpB02xm9v34pLTZ1nIQPFYn2qMZoa5BQQ==} + /@babel/helper-member-expression-to-functions@7.22.15: + resolution: {integrity: sha512-qLNsZbgrNh0fDQBCPocSL8guki1hcPvltGDv/NxvUoABwFq7GkKSu1nRXeJkVZc+wJvne2E0RKQz+2SQrz6eAA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.15 + '@babel/types': 7.22.17 - /@babel/helper-module-imports@7.16.0: - resolution: {integrity: sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg==} + /@babel/helper-module-imports@7.18.6: + resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.15 + '@babel/types': 7.22.17 dev: true /@babel/helper-module-imports@7.22.15: resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.15 - dev: false + '@babel/types': 7.22.17 - /@babel/helper-module-imports@7.22.5: - resolution: {integrity: sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.22.15 - - /@babel/helper-module-transforms@7.22.9(@babel/core@7.22.10): - resolution: {integrity: sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ==} + /@babel/helper-module-transforms@7.22.17(@babel/core@7.22.17): + resolution: {integrity: sha512-XouDDhQESrLHTpnBtCKExJdyY4gJCdrvH2Pyv8r8kovX2U8G0dRUOT45T9XlbLtuu9CLXP15eusnkprhoPV5iQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.10 + '@babel/core': 7.22.17 '@babel/helper-environment-visitor': 7.22.5 - '@babel/helper-module-imports': 7.22.5 + '@babel/helper-module-imports': 7.22.15 '@babel/helper-simple-access': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 '@babel/helper-validator-identifier': 7.22.15 @@ -570,51 +673,51 @@ packages: resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.15 + '@babel/types': 7.22.17 /@babel/helper-plugin-utils@7.22.5: resolution: {integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==} engines: {node: '>=6.9.0'} - /@babel/helper-remap-async-to-generator@7.22.9(@babel/core@7.22.10): - resolution: {integrity: sha512-8WWC4oR4Px+tr+Fp0X3RHDVfINGpF3ad1HIbrc8A77epiR6eMMc6jsgozkzT2uDiOOdoS9cLIQ+XD2XvI2WSmQ==} + /@babel/helper-remap-async-to-generator@7.22.17(@babel/core@7.22.17): + resolution: {integrity: sha512-bxH77R5gjH3Nkde6/LuncQoLaP16THYPscurp1S8z7S9ZgezCyV3G8Hc+TZiCmY8pz4fp8CvKSgtJMW0FkLAxA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.10 + '@babel/core': 7.22.17 '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-environment-visitor': 7.22.5 - '@babel/helper-wrap-function': 7.22.10 + '@babel/helper-wrap-function': 7.22.17 - /@babel/helper-replace-supers@7.22.9(@babel/core@7.22.10): + /@babel/helper-replace-supers@7.22.9(@babel/core@7.22.17): resolution: {integrity: sha512-LJIKvvpgPOPUThdYqcX6IXRuIcTkcAub0IaDRGCZH0p5GPUp7PhRU9QVgFcDDd51BaPkk77ZjqFwh6DZTAEmGg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.10 + '@babel/core': 7.22.17 '@babel/helper-environment-visitor': 7.22.5 - '@babel/helper-member-expression-to-functions': 7.22.5 + '@babel/helper-member-expression-to-functions': 7.22.15 '@babel/helper-optimise-call-expression': 7.22.5 /@babel/helper-simple-access@7.22.5: resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.15 + '@babel/types': 7.22.17 /@babel/helper-skip-transparent-expression-wrappers@7.22.5: resolution: {integrity: sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.15 + '@babel/types': 7.22.17 /@babel/helper-split-export-declaration@7.22.6: resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.15 + '@babel/types': 7.22.17 /@babel/helper-string-parser@7.22.5: resolution: {integrity: sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==} @@ -627,1018 +730,1099 @@ packages: /@babel/helper-validator-option@7.22.15: resolution: {integrity: sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==} engines: {node: '>=6.9.0'} - dev: false - /@babel/helper-validator-option@7.22.5: - resolution: {integrity: sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==} - engines: {node: '>=6.9.0'} - - /@babel/helper-wrap-function@7.22.10: - resolution: {integrity: sha512-OnMhjWjuGYtdoO3FmsEFWvBStBAe2QOgwOLsLNDjN+aaiMD8InJk1/O3HSD8lkqTjCgg5YI34Tz15KNNA3p+nQ==} + /@babel/helper-wrap-function@7.22.17: + resolution: {integrity: sha512-nAhoheCMlrqU41tAojw9GpVEKDlTS8r3lzFmF0lP52LwblCPbuFSO7nGIZoIcoU5NIm1ABrna0cJExE4Ay6l2Q==} engines: {node: '>=6.9.0'} dependencies: '@babel/helper-function-name': 7.22.5 - '@babel/template': 7.22.5 - '@babel/types': 7.22.15 + '@babel/template': 7.22.15 + '@babel/types': 7.22.17 - /@babel/helpers@7.22.10: - resolution: {integrity: sha512-a41J4NW8HyZa1I1vAndrraTlPZ/eZoga2ZgS7fEr0tZJGVU4xqdE80CEm0CcNjha5EZ8fTBYLKHF0kqDUuAwQw==} + /@babel/helpers@7.22.15: + resolution: {integrity: sha512-7pAjK0aSdxOwR+CcYAqgWOGy5dcfvzsTIfFTb2odQqW47MDfv14UaJDY6eng8ylM2EaeKXdxaSWESbkmaQHTmw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/template': 7.22.5 - '@babel/traverse': 7.22.10 - '@babel/types': 7.22.11 + '@babel/template': 7.22.15 + '@babel/traverse': 7.22.17 + '@babel/types': 7.22.17 transitivePeerDependencies: - supports-color /@babel/highlight@7.22.13: resolution: {integrity: sha512-C/BaXcnnvBCmHTpz/VGZ8jgtE2aYlW4hxDhseJAWZb7gqGM/qtCK6iZUb0TyKFf7BOUsBH7Q7fkRsDRhg1XklQ==} engines: {node: '>=6.9.0'} - requiresBuild: true dependencies: '@babel/helper-validator-identifier': 7.22.15 chalk: 2.4.2 js-tokens: 4.0.0 - /@babel/parser@7.19.1: - resolution: {integrity: sha512-h7RCSorm1DdTVGJf3P2Mhj3kdnkmF/EiysUkzS2TdgAYqyjFdMQJbVuXOBej2SBJaXan/lIVtT6KkGbyyq753A==} + /@babel/parser@7.22.16: + resolution: {integrity: sha512-+gPfKv8UWeKKeJTUxe59+OobVcrYHETCsORl61EmSkmgymguYk/X5bp7GuUIXaFsc6y++v8ZxPsLSSuujqDphA==} engines: {node: '>=6.0.0'} hasBin: true dependencies: - '@babel/types': 7.22.15 - dev: true + '@babel/types': 7.22.17 - /@babel/parser@7.22.13: - resolution: {integrity: sha512-3l6+4YOvc9wx7VlCSw4yQfcBo01ECA8TicQfbnCPuCEpRQrf+gTUyGdxNw+pyTUyywp6JRD1w0YQs9TpBXYlkw==} - engines: {node: '>=6.0.0'} - hasBin: true - dependencies: - '@babel/types': 7.22.15 - - /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.18.6(@babel/core@7.22.10): - resolution: {integrity: sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==} + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.22.15(@babel/core@7.22.17): + resolution: {integrity: sha512-FB9iYlz7rURmRJyXRKEnalYPPdn87H5no108cyuQQyMwlpJ2SJtpIUBI27kdTin956pz+LPypkPVPUTlxOmrsg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.10 + '@babel/core': 7.22.17 '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.22.5(@babel/core@7.22.10): - resolution: {integrity: sha512-31Bb65aZaUwqCbWMnZPduIZxCBngHFlzyN6Dq6KAJjtx+lx6ohKHubc61OomYi7XwVD4Ol0XCVz4h+pYFR048g==} + /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.22.15(@babel/core@7.22.17): + resolution: {integrity: sha512-Hyph9LseGvAeeXzikV88bczhsrLrIZqDPxO+sSmAunMPaGrBGhfMWzCPYTtiW9t+HzSE2wtV8e5cc5P6r1xMDQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.13.0 dependencies: - '@babel/core': 7.22.10 + '@babel/core': 7.22.17 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-transform-optional-chaining': 7.22.10(@babel/core@7.22.10) + '@babel/plugin-transform-optional-chaining': 7.22.15(@babel/core@7.22.17) - /@babel/plugin-proposal-async-generator-functions@7.20.7(@babel/core@7.22.10): + /@babel/plugin-proposal-async-generator-functions@7.20.7(@babel/core@7.22.17): resolution: {integrity: sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==} engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-async-generator-functions instead. peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.10 + '@babel/core': 7.22.17 '@babel/helper-environment-visitor': 7.22.5 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-remap-async-to-generator': 7.22.9(@babel/core@7.22.10) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.22.10) - - /@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.22.10): - resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.10 - '@babel/helper-create-class-features-plugin': 7.22.10(@babel/core@7.22.10) - '@babel/helper-plugin-utils': 7.22.5 - - /@babel/plugin-proposal-class-static-block@7.21.0(@babel/core@7.22.10): - resolution: {integrity: sha512-XP5G9MWNUskFuP30IfFSEFB0Z6HzLIUcjYM4bYOPHXl7eiJ9HFv8tWj6TXTN5QODiEhDZAeI4hLok2iHFFV4hw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.12.0 - dependencies: - '@babel/core': 7.22.10 - '@babel/helper-create-class-features-plugin': 7.22.10(@babel/core@7.22.10) - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.22.10) - - /@babel/plugin-proposal-dynamic-import@7.18.6(@babel/core@7.22.10): - resolution: {integrity: sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.10 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.22.10) - - /@babel/plugin-proposal-export-default-from@7.22.5(@babel/core@7.22.10): - resolution: {integrity: sha512-UCe1X/hplyv6A5g2WnQ90tnHRvYL29dabCWww92lO7VdfMVTVReBTRrhiMrKQejHD9oVkdnRdwYuzUZkBVQisg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.10 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-export-default-from': 7.22.5(@babel/core@7.22.10) + '@babel/helper-remap-async-to-generator': 7.22.17(@babel/core@7.22.17) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.22.17) dev: false - /@babel/plugin-proposal-export-namespace-from@7.18.9(@babel/core@7.22.10): - resolution: {integrity: sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==} + /@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.22.17): + resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.22.17) + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-proposal-export-default-from@7.22.17(@babel/core@7.22.17): + resolution: {integrity: sha512-cop/3quQBVvdz6X5SJC6AhUv3C9DrVTM06LUEXimEdWAhCSyOJIr9NiZDU9leHZ0/aiG0Sh7Zmvaku5TWYNgbA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.10 + '@babel/core': 7.22.17 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.22.10) + '@babel/plugin-syntax-export-default-from': 7.22.5(@babel/core@7.22.17) + dev: false - /@babel/plugin-proposal-json-strings@7.18.6(@babel/core@7.22.10): - resolution: {integrity: sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.10 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.22.10) - - /@babel/plugin-proposal-logical-assignment-operators@7.20.7(@babel/core@7.22.10): - resolution: {integrity: sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.10 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.22.10) - - /@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.22.10): + /@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.22.17): resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==} engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-nullish-coalescing-operator instead. peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.10 + '@babel/core': 7.22.17 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.10) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.17) + dev: false - /@babel/plugin-proposal-numeric-separator@7.18.6(@babel/core@7.22.10): + /@babel/plugin-proposal-numeric-separator@7.18.6(@babel/core@7.22.17): resolution: {integrity: sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==} engines: {node: '>=6.9.0'} deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-numeric-separator instead. peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.10 + '@babel/core': 7.22.17 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.10) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.17) + dev: false - /@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.22.10): + /@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.22.17): resolution: {integrity: sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==} engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-object-rest-spread instead. peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/compat-data': 7.22.9 - '@babel/core': 7.22.10 - '@babel/helper-compilation-targets': 7.22.10 + '@babel/core': 7.22.17 + '@babel/helper-compilation-targets': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.10) - '@babel/plugin-transform-parameters': 7.22.5(@babel/core@7.22.10) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.17) + '@babel/plugin-transform-parameters': 7.22.15(@babel/core@7.22.17) + dev: false - /@babel/plugin-proposal-optional-catch-binding@7.18.6(@babel/core@7.22.10): + /@babel/plugin-proposal-optional-catch-binding@7.18.6(@babel/core@7.22.17): resolution: {integrity: sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==} engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-catch-binding instead. peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.10 + '@babel/core': 7.22.17 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.22.10) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.22.17) + dev: false - /@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.22.10): + /@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.22.17): resolution: {integrity: sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==} engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead. peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.10 + '@babel/core': 7.22.17 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.10) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.17) + dev: false - /@babel/plugin-proposal-private-methods@7.18.6(@babel/core@7.22.10): - resolution: {integrity: sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==} + /@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.22.17): + resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.10 - '@babel/helper-create-class-features-plugin': 7.22.10(@babel/core@7.22.10) - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.22.17 - /@babel/plugin-proposal-private-property-in-object@7.21.11(@babel/core@7.22.10): - resolution: {integrity: sha512-0QZ8qP/3RLDVBwBFoWAwCtgcDZJVwA5LUJRZU8x2YFfKNuFq161wK3cuGrALu5yiPu+vzwTAg/sMWVNeWeNyaw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.10 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.22.10(@babel/core@7.22.10) - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.22.10) - - /@babel/plugin-proposal-unicode-property-regex@7.18.6(@babel/core@7.22.10): - resolution: {integrity: sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==} - engines: {node: '>=4'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.10 - '@babel/helper-create-regexp-features-plugin': 7.22.9(@babel/core@7.22.10) - '@babel/helper-plugin-utils': 7.22.5 - - /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.22.10): + /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.22.17): resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.10 + '@babel/core': 7.22.17 '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.22.10): + /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.22.17): resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.10 + '@babel/core': 7.22.17 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.22.10): + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.22.17): resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.10 + '@babel/core': 7.22.17 '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.22.10): + /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.22.17): resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.10 + '@babel/core': 7.22.17 '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.22.10): + /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.22.17): resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.10 + '@babel/core': 7.22.17 '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-syntax-export-default-from@7.22.5(@babel/core@7.22.10): + /@babel/plugin-syntax-export-default-from@7.22.5(@babel/core@7.22.17): resolution: {integrity: sha512-ODAqWWXB/yReh/jVQDag/3/tl6lgBueQkk/TcfW/59Oykm4c8a55XloX0CTk2k2VJiFWMgHby9xNX29IbCv9dQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.10 + '@babel/core': 7.22.17 '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.22.10): + /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.22.17): resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.10 + '@babel/core': 7.22.17 '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-syntax-flow@7.22.5(@babel/core@7.22.10): + /@babel/plugin-syntax-flow@7.22.5(@babel/core@7.22.17): resolution: {integrity: sha512-9RdCl0i+q0QExayk2nOS7853w08yLucnnPML6EN9S8fgMPVtdLDCdx/cOQ/i44Lb9UeQX9A35yaqBBOMMZxPxQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.10 + '@babel/core': 7.22.17 '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-syntax-import-assertions@7.22.5(@babel/core@7.22.10): + /@babel/plugin-syntax-import-assertions@7.22.5(@babel/core@7.22.17): resolution: {integrity: sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.10 + '@babel/core': 7.22.17 '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.22.10): + /@babel/plugin-syntax-import-attributes@7.22.5(@babel/core@7.22.17): + resolution: {integrity: sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-plugin-utils': 7.22.5 + + /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.22.17): resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.10 + '@babel/core': 7.22.17 '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.22.10): + /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.22.17): resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.10 + '@babel/core': 7.22.17 '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-syntax-jsx@7.22.5(@babel/core@7.22.10): + /@babel/plugin-syntax-jsx@7.22.5(@babel/core@7.22.17): resolution: {integrity: sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.10 + '@babel/core': 7.22.17 '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.22.10): + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.22.17): resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.10 + '@babel/core': 7.22.17 '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.22.10): + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.22.17): resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.10 + '@babel/core': 7.22.17 '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.22.10): + /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.22.17): resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.10 + '@babel/core': 7.22.17 '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.22.10): + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.22.17): resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.10 + '@babel/core': 7.22.17 '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.22.10): + /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.22.17): resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.10 + '@babel/core': 7.22.17 '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.22.10): + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.22.17): resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.10 + '@babel/core': 7.22.17 '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.22.10): + /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.22.17): resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.10 + '@babel/core': 7.22.17 '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.22.10): + /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.22.17): resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.10 + '@babel/core': 7.22.17 '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-syntax-typescript@7.22.5(@babel/core@7.22.10): + /@babel/plugin-syntax-typescript@7.22.5(@babel/core@7.22.17): resolution: {integrity: sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.10 + '@babel/core': 7.22.17 '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-transform-arrow-functions@7.22.5(@babel/core@7.22.10): + /@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.22.17): + resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.22.17) + '@babel/helper-plugin-utils': 7.22.5 + + /@babel/plugin-transform-arrow-functions@7.22.5(@babel/core@7.22.17): resolution: {integrity: sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.10 + '@babel/core': 7.22.17 '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-transform-async-to-generator@7.22.5(@babel/core@7.22.10): + /@babel/plugin-transform-async-generator-functions@7.22.15(@babel/core@7.22.17): + resolution: {integrity: sha512-jBm1Es25Y+tVoTi5rfd5t1KLmL8ogLKpXszboWOTTtGFGz2RKnQe2yn7HbZ+kb/B8N0FVSGQo874NSlOU1T4+w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-remap-async-to-generator': 7.22.17(@babel/core@7.22.17) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.22.17) + + /@babel/plugin-transform-async-to-generator@7.22.5(@babel/core@7.22.17): resolution: {integrity: sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.10 - '@babel/helper-module-imports': 7.22.5 + '@babel/core': 7.22.17 + '@babel/helper-module-imports': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-remap-async-to-generator': 7.22.9(@babel/core@7.22.10) + '@babel/helper-remap-async-to-generator': 7.22.17(@babel/core@7.22.17) - /@babel/plugin-transform-block-scoped-functions@7.22.5(@babel/core@7.22.10): + /@babel/plugin-transform-block-scoped-functions@7.22.5(@babel/core@7.22.17): resolution: {integrity: sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.10 + '@babel/core': 7.22.17 '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-transform-block-scoping@7.22.10(@babel/core@7.22.10): - resolution: {integrity: sha512-1+kVpGAOOI1Albt6Vse7c8pHzcZQdQKW+wJH+g8mCaszOdDVwRXa/slHPqIw+oJAJANTKDMuM2cBdV0Dg618Vg==} + /@babel/plugin-transform-block-scoping@7.22.15(@babel/core@7.22.17): + resolution: {integrity: sha512-G1czpdJBZCtngoK1sJgloLiOHUnkb/bLZwqVZD8kXmq0ZnVfTTWUcs9OWtp0mBtYJ+4LQY1fllqBkOIPhXmFmw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.10 + '@babel/core': 7.22.17 '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-transform-classes@7.22.6(@babel/core@7.22.10): - resolution: {integrity: sha512-58EgM6nuPNG6Py4Z3zSuu0xWu2VfodiMi72Jt5Kj2FECmaYk1RrTXA45z6KBFsu9tRgwQDwIiY4FXTt+YsSFAQ==} + /@babel/plugin-transform-class-properties@7.22.5(@babel/core@7.22.17): + resolution: {integrity: sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.10 + '@babel/core': 7.22.17 + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.22.17) + '@babel/helper-plugin-utils': 7.22.5 + + /@babel/plugin-transform-class-static-block@7.22.11(@babel/core@7.22.17): + resolution: {integrity: sha512-GMM8gGmqI7guS/llMFk1bJDkKfn3v3C4KHK9Yg1ey5qcHcOlKb0QvcMrgzvxo+T03/4szNh5lghY+fEC98Kq9g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.12.0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.22.17) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.22.17) + + /@babel/plugin-transform-classes@7.22.15(@babel/core@7.22.17): + resolution: {integrity: sha512-VbbC3PGjBdE0wAWDdHM9G8Gm977pnYI0XpqMd6LrKISj8/DJXEsWqgRuTYaNE9Bv0JGhTZUzHDlMk18IpOuoqw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-compilation-targets': 7.22.10 + '@babel/helper-compilation-targets': 7.22.15 '@babel/helper-environment-visitor': 7.22.5 '@babel/helper-function-name': 7.22.5 '@babel/helper-optimise-call-expression': 7.22.5 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-replace-supers': 7.22.9(@babel/core@7.22.10) + '@babel/helper-replace-supers': 7.22.9(@babel/core@7.22.17) '@babel/helper-split-export-declaration': 7.22.6 globals: 11.12.0 - /@babel/plugin-transform-computed-properties@7.22.5(@babel/core@7.22.10): + /@babel/plugin-transform-computed-properties@7.22.5(@babel/core@7.22.17): resolution: {integrity: sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.10 + '@babel/core': 7.22.17 '@babel/helper-plugin-utils': 7.22.5 - '@babel/template': 7.22.5 + '@babel/template': 7.22.15 - /@babel/plugin-transform-destructuring@7.22.10(@babel/core@7.22.10): - resolution: {integrity: sha512-dPJrL0VOyxqLM9sritNbMSGx/teueHF/htMKrPT7DNxccXxRDPYqlgPFFdr8u+F+qUZOkZoXue/6rL5O5GduEw==} + /@babel/plugin-transform-destructuring@7.22.15(@babel/core@7.22.17): + resolution: {integrity: sha512-HzG8sFl1ZVGTme74Nw+X01XsUTqERVQ6/RLHo3XjGRzm7XD6QTtfS3NJotVgCGy8BzkDqRjRBD8dAyJn5TuvSQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.10 + '@babel/core': 7.22.17 '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-transform-dotall-regex@7.18.6(@babel/core@7.22.10): - resolution: {integrity: sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==} + /@babel/plugin-transform-dotall-regex@7.22.5(@babel/core@7.22.17): + resolution: {integrity: sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.10 - '@babel/helper-create-regexp-features-plugin': 7.22.9(@babel/core@7.22.10) + '@babel/core': 7.22.17 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.22.17) '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-transform-duplicate-keys@7.22.5(@babel/core@7.22.10): + /@babel/plugin-transform-duplicate-keys@7.22.5(@babel/core@7.22.17): resolution: {integrity: sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.10 + '@babel/core': 7.22.17 '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-transform-exponentiation-operator@7.22.5(@babel/core@7.22.10): + /@babel/plugin-transform-dynamic-import@7.22.11(@babel/core@7.22.17): + resolution: {integrity: sha512-g/21plo58sfteWjaO0ZNVb+uEOkJNjAaHhbejrnBmu011l/eNDScmkbjCC3l4FKb10ViaGU4aOkFznSu2zRHgA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.22.17) + + /@babel/plugin-transform-exponentiation-operator@7.22.5(@babel/core@7.22.17): resolution: {integrity: sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.10 - '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.10 + '@babel/core': 7.22.17 + '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-transform-flow-strip-types@7.22.5(@babel/core@7.22.10): + /@babel/plugin-transform-export-namespace-from@7.22.11(@babel/core@7.22.17): + resolution: {integrity: sha512-xa7aad7q7OiT8oNZ1mU7NrISjlSkVdMbNxn9IuLZyL9AJEhs1Apba3I+u5riX1dIkdptP5EKDG5XDPByWxtehw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.22.17) + + /@babel/plugin-transform-flow-strip-types@7.22.5(@babel/core@7.22.17): resolution: {integrity: sha512-tujNbZdxdG0/54g/oua8ISToaXTFBf8EnSb5PgQSciIXWOWKX3S4+JR7ZE9ol8FZwf9kxitzkGQ+QWeov/mCiA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.10 + '@babel/core': 7.22.17 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-flow': 7.22.5(@babel/core@7.22.10) + '@babel/plugin-syntax-flow': 7.22.5(@babel/core@7.22.17) dev: false - /@babel/plugin-transform-for-of@7.22.5(@babel/core@7.22.10): - resolution: {integrity: sha512-3kxQjX1dU9uudwSshyLeEipvrLjBCVthCgeTp6CzE/9JYrlAIaeekVxRpCWsDDfYTfRZRoCeZatCQvwo+wvK8A==} + /@babel/plugin-transform-for-of@7.22.15(@babel/core@7.22.17): + resolution: {integrity: sha512-me6VGeHsx30+xh9fbDLLPi0J1HzmeIIyenoOQHuw2D4m2SAU3NrspX5XxJLBpqn5yrLzrlw2Iy3RA//Bx27iOA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.10 + '@babel/core': 7.22.17 '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-transform-function-name@7.22.5(@babel/core@7.22.10): + /@babel/plugin-transform-function-name@7.22.5(@babel/core@7.22.17): resolution: {integrity: sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.10 - '@babel/helper-compilation-targets': 7.22.10 + '@babel/core': 7.22.17 + '@babel/helper-compilation-targets': 7.22.15 '@babel/helper-function-name': 7.22.5 '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-transform-literals@7.22.5(@babel/core@7.22.10): + /@babel/plugin-transform-json-strings@7.22.11(@babel/core@7.22.17): + resolution: {integrity: sha512-CxT5tCqpA9/jXFlme9xIBCc5RPtdDq3JpkkhgHQqtDdiTnTI0jtZ0QzXhr5DILeYifDPp2wvY2ad+7+hLMW5Pw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.22.17) + + /@babel/plugin-transform-literals@7.22.5(@babel/core@7.22.17): resolution: {integrity: sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.10 + '@babel/core': 7.22.17 '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-transform-member-expression-literals@7.22.5(@babel/core@7.22.10): + /@babel/plugin-transform-logical-assignment-operators@7.22.11(@babel/core@7.22.17): + resolution: {integrity: sha512-qQwRTP4+6xFCDV5k7gZBF3C31K34ut0tbEcTKxlX/0KXxm9GLcO14p570aWxFvVzx6QAfPgq7gaeIHXJC8LswQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.22.17) + + /@babel/plugin-transform-member-expression-literals@7.22.5(@babel/core@7.22.17): resolution: {integrity: sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.10 + '@babel/core': 7.22.17 '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-transform-modules-amd@7.22.5(@babel/core@7.22.10): + /@babel/plugin-transform-modules-amd@7.22.5(@babel/core@7.22.17): resolution: {integrity: sha512-R+PTfLTcYEmb1+kK7FNkhQ1gP4KgjpSO6HfH9+f8/yfp2Nt3ggBjiVpRwmwTlfqZLafYKJACy36yDXlEmI9HjQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.10 - '@babel/helper-module-transforms': 7.22.9(@babel/core@7.22.10) + '@babel/core': 7.22.17 + '@babel/helper-module-transforms': 7.22.17(@babel/core@7.22.17) '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-transform-modules-commonjs@7.22.5(@babel/core@7.22.10): - resolution: {integrity: sha512-B4pzOXj+ONRmuaQTg05b3y/4DuFz3WcCNAXPLb2Q0GT0TrGKGxNKV4jwsXts+StaM0LQczZbOpj8o1DLPDJIiA==} + /@babel/plugin-transform-modules-commonjs@7.22.15(@babel/core@7.22.17): + resolution: {integrity: sha512-jWL4eh90w0HQOTKP2MoXXUpVxilxsB2Vl4ji69rSjS3EcZ/v4sBmn+A3NpepuJzBhOaEBbR7udonlHHn5DWidg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.10 - '@babel/helper-module-transforms': 7.22.9(@babel/core@7.22.10) + '@babel/core': 7.22.17 + '@babel/helper-module-transforms': 7.22.17(@babel/core@7.22.17) '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-simple-access': 7.22.5 - /@babel/plugin-transform-modules-systemjs@7.22.5(@babel/core@7.22.10): - resolution: {integrity: sha512-emtEpoaTMsOs6Tzz+nbmcePl6AKVtS1yC4YNAeMun9U8YCsgadPNxnOPQ8GhHFB2qdx+LZu9LgoC0Lthuu05DQ==} + /@babel/plugin-transform-modules-systemjs@7.22.11(@babel/core@7.22.17): + resolution: {integrity: sha512-rIqHmHoMEOhI3VkVf5jQ15l539KrwhzqcBO6wdCNWPWc/JWt9ILNYNUssbRpeq0qWns8svuw8LnMNCvWBIJ8wA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.10 + '@babel/core': 7.22.17 '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-module-transforms': 7.22.9(@babel/core@7.22.10) + '@babel/helper-module-transforms': 7.22.17(@babel/core@7.22.17) '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-validator-identifier': 7.22.15 - /@babel/plugin-transform-modules-umd@7.18.6(@babel/core@7.22.10): - resolution: {integrity: sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==} + /@babel/plugin-transform-modules-umd@7.22.5(@babel/core@7.22.17): + resolution: {integrity: sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.10 - '@babel/helper-module-transforms': 7.22.9(@babel/core@7.22.10) + '@babel/core': 7.22.17 + '@babel/helper-module-transforms': 7.22.17(@babel/core@7.22.17) '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.22.10): + /@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.22.17): resolution: {integrity: sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.10 - '@babel/helper-create-regexp-features-plugin': 7.22.9(@babel/core@7.22.10) + '@babel/core': 7.22.17 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.22.17) '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-transform-new-target@7.18.6(@babel/core@7.22.10): - resolution: {integrity: sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==} + /@babel/plugin-transform-new-target@7.22.5(@babel/core@7.22.17): + resolution: {integrity: sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.10 + '@babel/core': 7.22.17 '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-transform-object-super@7.22.5(@babel/core@7.22.10): - resolution: {integrity: sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw==} + /@babel/plugin-transform-nullish-coalescing-operator@7.22.11(@babel/core@7.22.17): + resolution: {integrity: sha512-YZWOw4HxXrotb5xsjMJUDlLgcDXSfO9eCmdl1bgW4+/lAGdkjaEvOnQ4p5WKKdUgSzO39dgPl0pTnfxm0OAXcg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.10 + '@babel/core': 7.22.17 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-replace-supers': 7.22.9(@babel/core@7.22.10) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.17) - /@babel/plugin-transform-optional-chaining@7.22.10(@babel/core@7.22.10): - resolution: {integrity: sha512-MMkQqZAZ+MGj+jGTG3OTuhKeBpNcO+0oCEbrGNEaOmiEn+1MzRyQlYsruGiU8RTK3zV6XwrVJTmwiDOyYK6J9g==} + /@babel/plugin-transform-numeric-separator@7.22.11(@babel/core@7.22.17): + resolution: {integrity: sha512-3dzU4QGPsILdJbASKhF/V2TVP+gJya1PsueQCxIPCEcerqF21oEcrob4mzjsp2Py/1nLfF5m+xYNMDpmA8vffg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.10 + '@babel/core': 7.22.17 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.10) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.17) - /@babel/plugin-transform-parameters@7.22.5(@babel/core@7.22.10): - resolution: {integrity: sha512-AVkFUBurORBREOmHRKo06FjHYgjrabpdqRSwq6+C7R5iTCZOsM4QbcB27St0a4U6fffyAOqh3s/qEfybAhfivg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.10 - '@babel/helper-plugin-utils': 7.22.5 - - /@babel/plugin-transform-property-literals@7.22.5(@babel/core@7.22.10): - resolution: {integrity: sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.10 - '@babel/helper-plugin-utils': 7.22.5 - - /@babel/plugin-transform-react-display-name@7.22.5(@babel/core@7.22.10): - resolution: {integrity: sha512-PVk3WPYudRF5z4GKMEYUrLjPl38fJSKNaEOkFuoprioowGuWN6w2RKznuFNSlJx7pzzXXStPUnNSOEO0jL5EVw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.10 - '@babel/helper-plugin-utils': 7.22.5 - - /@babel/plugin-transform-react-jsx-development@7.18.6(@babel/core@7.22.10): - resolution: {integrity: sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.10 - '@babel/plugin-transform-react-jsx': 7.22.5(@babel/core@7.22.10) - dev: true - - /@babel/plugin-transform-react-jsx-self@7.18.6(@babel/core@7.22.10): - resolution: {integrity: sha512-A0LQGx4+4Jv7u/tWzoJF7alZwnBDQd6cGLh9P+Ttk4dpiL+J5p7NSNv/9tlEFFJDq3kjxOavWmbm6t0Gk+A3Ig==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.10 - '@babel/helper-plugin-utils': 7.22.5 - dev: false - - /@babel/plugin-transform-react-jsx-self@7.22.5(@babel/core@7.22.10): - resolution: {integrity: sha512-nTh2ogNUtxbiSbxaT4Ds6aXnXEipHweN9YRgOX/oNXdf0cCrGn/+2LozFa3lnPV5D90MkjhgckCPBrsoSc1a7g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.10 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-transform-react-jsx-source@7.18.6(@babel/core@7.22.10): - resolution: {integrity: sha512-utZmlASneDfdaMh0m/WausbjUjEdGrQJz0vFK93d7wD3xf5wBtX219+q6IlCNZeguIcxS2f/CvLZrlLSvSHQXw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.10 - '@babel/helper-plugin-utils': 7.22.5 - dev: false - - /@babel/plugin-transform-react-jsx-source@7.22.5(@babel/core@7.22.10): - resolution: {integrity: sha512-yIiRO6yobeEIaI0RTbIr8iAK9FcBHLtZq0S89ZPjDLQXBA4xvghaKqI0etp/tF3htTM0sazJKKLz9oEiGRtu7w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.10 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-transform-react-jsx@7.22.5(@babel/core@7.22.10): - resolution: {integrity: sha512-rog5gZaVbUip5iWDMTYbVM15XQq+RkUKhET/IHR6oizR+JEoN6CAfTTuHcK4vwUyzca30qqHqEpzBOnaRMWYMA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.10 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-module-imports': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.22.10) - '@babel/types': 7.22.15 - - /@babel/plugin-transform-react-pure-annotations@7.18.6(@babel/core@7.22.10): - resolution: {integrity: sha512-I8VfEPg9r2TRDdvnHgPepTKvuRomzA8+u+nhY7qSI1fR2hRNebasZEETLyM5mAUr0Ku56OkXJ0I7NHJnO6cJiQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.10 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-transform-regenerator@7.22.10(@babel/core@7.22.10): - resolution: {integrity: sha512-F28b1mDt8KcT5bUyJc/U9nwzw6cV+UmTeRlXYIl2TNqMMJif0Jeey9/RQ3C4NOd2zp0/TRsDns9ttj2L523rsw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.10 - '@babel/helper-plugin-utils': 7.22.5 - regenerator-transform: 0.15.2 - - /@babel/plugin-transform-reserved-words@7.18.6(@babel/core@7.22.10): - resolution: {integrity: sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.10 - '@babel/helper-plugin-utils': 7.22.5 - - /@babel/plugin-transform-runtime@7.22.15(@babel/core@7.22.10): - resolution: {integrity: sha512-tEVLhk8NRZSmwQ0DJtxxhTrCht1HVo8VaMzYT4w6lwyKBuHsgoioAUA7/6eT2fRfc5/23fuGdlwIxXhRVgWr4g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.10 - '@babel/helper-module-imports': 7.22.15 - '@babel/helper-plugin-utils': 7.22.5 - babel-plugin-polyfill-corejs2: 0.4.5(@babel/core@7.22.10) - babel-plugin-polyfill-corejs3: 0.8.3(@babel/core@7.22.10) - babel-plugin-polyfill-regenerator: 0.5.2(@babel/core@7.22.10) - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/plugin-transform-shorthand-properties@7.22.5(@babel/core@7.22.10): - resolution: {integrity: sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.10 - '@babel/helper-plugin-utils': 7.22.5 - - /@babel/plugin-transform-spread@7.22.5(@babel/core@7.22.10): - resolution: {integrity: sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.10 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - - /@babel/plugin-transform-sticky-regex@7.22.5(@babel/core@7.22.10): - resolution: {integrity: sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.10 - '@babel/helper-plugin-utils': 7.22.5 - - /@babel/plugin-transform-template-literals@7.22.5(@babel/core@7.22.10): - resolution: {integrity: sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.10 - '@babel/helper-plugin-utils': 7.22.5 - - /@babel/plugin-transform-typeof-symbol@7.22.5(@babel/core@7.22.10): - resolution: {integrity: sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.10 - '@babel/helper-plugin-utils': 7.22.5 - - /@babel/plugin-transform-typescript@7.22.10(@babel/core@7.22.10): - resolution: {integrity: sha512-7++c8I/ymsDo4QQBAgbraXLzIM6jmfao11KgIBEYZRReWzNWH9NtNgJcyrZiXsOPh523FQm6LfpLyy/U5fn46A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.10 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.22.10(@babel/core@7.22.10) - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-typescript': 7.22.5(@babel/core@7.22.10) - - /@babel/plugin-transform-unicode-escapes@7.22.10(@babel/core@7.22.10): - resolution: {integrity: sha512-lRfaRKGZCBqDlRU3UIFovdp9c9mEvlylmpod0/OatICsSfuQ9YFthRo1tpTkGsklEefZdqlEFdY4A2dwTb6ohg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.10 - '@babel/helper-plugin-utils': 7.22.5 - - /@babel/plugin-transform-unicode-regex@7.22.5(@babel/core@7.22.10): - resolution: {integrity: sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.10 - '@babel/helper-create-regexp-features-plugin': 7.22.9(@babel/core@7.22.10) - '@babel/helper-plugin-utils': 7.22.5 - - /@babel/preset-env@7.21.5(@babel/core@7.22.10): - resolution: {integrity: sha512-wH00QnTTldTbf/IefEVyChtRdw5RJvODT/Vb4Vcxq1AZvtXj6T0YeX0cAcXhI6/BdGuiP3GcNIL4OQbI2DVNxg==} + /@babel/plugin-transform-object-rest-spread@7.22.15(@babel/core@7.22.17): + resolution: {integrity: sha512-fEB+I1+gAmfAyxZcX1+ZUwLeAuuf8VIg67CTznZE0MqVFumWkh8xWtn58I4dxdVf080wn7gzWoF8vndOViJe9Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/compat-data': 7.22.9 - '@babel/core': 7.22.10 - '@babel/helper-compilation-targets': 7.22.10 + '@babel/core': 7.22.17 + '@babel/helper-compilation-targets': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-validator-option': 7.22.5 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.18.6(@babel/core@7.22.10) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.22.5(@babel/core@7.22.10) - '@babel/plugin-proposal-async-generator-functions': 7.20.7(@babel/core@7.22.10) - '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.22.10) - '@babel/plugin-proposal-class-static-block': 7.21.0(@babel/core@7.22.10) - '@babel/plugin-proposal-dynamic-import': 7.18.6(@babel/core@7.22.10) - '@babel/plugin-proposal-export-namespace-from': 7.18.9(@babel/core@7.22.10) - '@babel/plugin-proposal-json-strings': 7.18.6(@babel/core@7.22.10) - '@babel/plugin-proposal-logical-assignment-operators': 7.20.7(@babel/core@7.22.10) - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.22.10) - '@babel/plugin-proposal-numeric-separator': 7.18.6(@babel/core@7.22.10) - '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.22.10) - '@babel/plugin-proposal-optional-catch-binding': 7.18.6(@babel/core@7.22.10) - '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.22.10) - '@babel/plugin-proposal-private-methods': 7.18.6(@babel/core@7.22.10) - '@babel/plugin-proposal-private-property-in-object': 7.21.11(@babel/core@7.22.10) - '@babel/plugin-proposal-unicode-property-regex': 7.18.6(@babel/core@7.22.10) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.22.10) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.22.10) - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.22.10) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.22.10) - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.22.10) - '@babel/plugin-syntax-import-assertions': 7.22.5(@babel/core@7.22.10) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.22.10) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.22.10) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.22.10) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.10) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.10) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.10) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.22.10) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.10) - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.22.10) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.22.10) - '@babel/plugin-transform-arrow-functions': 7.22.5(@babel/core@7.22.10) - '@babel/plugin-transform-async-to-generator': 7.22.5(@babel/core@7.22.10) - '@babel/plugin-transform-block-scoped-functions': 7.22.5(@babel/core@7.22.10) - '@babel/plugin-transform-block-scoping': 7.22.10(@babel/core@7.22.10) - '@babel/plugin-transform-classes': 7.22.6(@babel/core@7.22.10) - '@babel/plugin-transform-computed-properties': 7.22.5(@babel/core@7.22.10) - '@babel/plugin-transform-destructuring': 7.22.10(@babel/core@7.22.10) - '@babel/plugin-transform-dotall-regex': 7.18.6(@babel/core@7.22.10) - '@babel/plugin-transform-duplicate-keys': 7.22.5(@babel/core@7.22.10) - '@babel/plugin-transform-exponentiation-operator': 7.22.5(@babel/core@7.22.10) - '@babel/plugin-transform-for-of': 7.22.5(@babel/core@7.22.10) - '@babel/plugin-transform-function-name': 7.22.5(@babel/core@7.22.10) - '@babel/plugin-transform-literals': 7.22.5(@babel/core@7.22.10) - '@babel/plugin-transform-member-expression-literals': 7.22.5(@babel/core@7.22.10) - '@babel/plugin-transform-modules-amd': 7.22.5(@babel/core@7.22.10) - '@babel/plugin-transform-modules-commonjs': 7.22.5(@babel/core@7.22.10) - '@babel/plugin-transform-modules-systemjs': 7.22.5(@babel/core@7.22.10) - '@babel/plugin-transform-modules-umd': 7.18.6(@babel/core@7.22.10) - '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.22.10) - '@babel/plugin-transform-new-target': 7.18.6(@babel/core@7.22.10) - '@babel/plugin-transform-object-super': 7.22.5(@babel/core@7.22.10) - '@babel/plugin-transform-parameters': 7.22.5(@babel/core@7.22.10) - '@babel/plugin-transform-property-literals': 7.22.5(@babel/core@7.22.10) - '@babel/plugin-transform-regenerator': 7.22.10(@babel/core@7.22.10) - '@babel/plugin-transform-reserved-words': 7.18.6(@babel/core@7.22.10) - '@babel/plugin-transform-shorthand-properties': 7.22.5(@babel/core@7.22.10) - '@babel/plugin-transform-spread': 7.22.5(@babel/core@7.22.10) - '@babel/plugin-transform-sticky-regex': 7.22.5(@babel/core@7.22.10) - '@babel/plugin-transform-template-literals': 7.22.5(@babel/core@7.22.10) - '@babel/plugin-transform-typeof-symbol': 7.22.5(@babel/core@7.22.10) - '@babel/plugin-transform-unicode-escapes': 7.22.10(@babel/core@7.22.10) - '@babel/plugin-transform-unicode-regex': 7.22.5(@babel/core@7.22.10) - '@babel/preset-modules': 0.1.5(@babel/core@7.22.10) - '@babel/types': 7.22.10 - babel-plugin-polyfill-corejs2: 0.3.3(@babel/core@7.22.10) - babel-plugin-polyfill-corejs3: 0.6.0(@babel/core@7.22.10) - babel-plugin-polyfill-regenerator: 0.4.1(@babel/core@7.22.10) - core-js-compat: 3.32.0 + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.17) + '@babel/plugin-transform-parameters': 7.22.15(@babel/core@7.22.17) + + /@babel/plugin-transform-object-super@7.22.5(@babel/core@7.22.17): + resolution: {integrity: sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-replace-supers': 7.22.9(@babel/core@7.22.17) + + /@babel/plugin-transform-optional-catch-binding@7.22.11(@babel/core@7.22.17): + resolution: {integrity: sha512-rli0WxesXUeCJnMYhzAglEjLWVDF6ahb45HuprcmQuLidBJFWjNnOzssk2kuc6e33FlLaiZhG/kUIzUMWdBKaQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.22.17) + + /@babel/plugin-transform-optional-chaining@7.22.15(@babel/core@7.22.17): + resolution: {integrity: sha512-ngQ2tBhq5vvSJw2Q2Z9i7ealNkpDMU0rGWnHPKqRZO0tzZ5tlaoz4hDvhXioOoaE0X2vfNss1djwg0DXlfu30A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.17) + + /@babel/plugin-transform-parameters@7.22.15(@babel/core@7.22.17): + resolution: {integrity: sha512-hjk7qKIqhyzhhUvRT683TYQOFa/4cQKwQy7ALvTpODswN40MljzNDa0YldevS6tGbxwaEKVn502JmY0dP7qEtQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-plugin-utils': 7.22.5 + + /@babel/plugin-transform-private-methods@7.22.5(@babel/core@7.22.17): + resolution: {integrity: sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.22.17) + '@babel/helper-plugin-utils': 7.22.5 + + /@babel/plugin-transform-private-property-in-object@7.22.11(@babel/core@7.22.17): + resolution: {integrity: sha512-sSCbqZDBKHetvjSwpyWzhuHkmW5RummxJBVbYLkGkaiTOWGxml7SXt0iWa03bzxFIx7wOj3g/ILRd0RcJKBeSQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.22.17) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.22.17) + + /@babel/plugin-transform-property-literals@7.22.5(@babel/core@7.22.17): + resolution: {integrity: sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-plugin-utils': 7.22.5 + + /@babel/plugin-transform-react-display-name@7.22.5(@babel/core@7.22.17): + resolution: {integrity: sha512-PVk3WPYudRF5z4GKMEYUrLjPl38fJSKNaEOkFuoprioowGuWN6w2RKznuFNSlJx7pzzXXStPUnNSOEO0jL5EVw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-plugin-utils': 7.22.5 + + /@babel/plugin-transform-react-jsx-development@7.22.5(@babel/core@7.22.17): + resolution: {integrity: sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/plugin-transform-react-jsx': 7.22.15(@babel/core@7.22.17) + dev: true + + /@babel/plugin-transform-react-jsx-self@7.22.5(@babel/core@7.22.17): + resolution: {integrity: sha512-nTh2ogNUtxbiSbxaT4Ds6aXnXEipHweN9YRgOX/oNXdf0cCrGn/+2LozFa3lnPV5D90MkjhgckCPBrsoSc1a7g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-plugin-utils': 7.22.5 + + /@babel/plugin-transform-react-jsx-source@7.22.5(@babel/core@7.22.17): + resolution: {integrity: sha512-yIiRO6yobeEIaI0RTbIr8iAK9FcBHLtZq0S89ZPjDLQXBA4xvghaKqI0etp/tF3htTM0sazJKKLz9oEiGRtu7w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-plugin-utils': 7.22.5 + + /@babel/plugin-transform-react-jsx@7.22.15(@babel/core@7.22.17): + resolution: {integrity: sha512-oKckg2eZFa8771O/5vi7XeTvmM6+O9cxZu+kanTU7tD4sin5nO/G8jGJhq8Hvt2Z0kUoEDRayuZLaUlYl8QuGA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.22.17) + '@babel/types': 7.22.17 + + /@babel/plugin-transform-react-pure-annotations@7.22.5(@babel/core@7.22.17): + resolution: {integrity: sha512-gP4k85wx09q+brArVinTXhWiyzLl9UpmGva0+mWyKxk6JZequ05x3eUcIUE+FyttPKJFRRVtAvQaJ6YF9h1ZpA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-regenerator@7.22.10(@babel/core@7.22.17): + resolution: {integrity: sha512-F28b1mDt8KcT5bUyJc/U9nwzw6cV+UmTeRlXYIl2TNqMMJif0Jeey9/RQ3C4NOd2zp0/TRsDns9ttj2L523rsw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-plugin-utils': 7.22.5 + regenerator-transform: 0.15.2 + + /@babel/plugin-transform-reserved-words@7.22.5(@babel/core@7.22.17): + resolution: {integrity: sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-plugin-utils': 7.22.5 + + /@babel/plugin-transform-runtime@7.22.15(@babel/core@7.22.17): + resolution: {integrity: sha512-tEVLhk8NRZSmwQ0DJtxxhTrCht1HVo8VaMzYT4w6lwyKBuHsgoioAUA7/6eT2fRfc5/23fuGdlwIxXhRVgWr4g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + babel-plugin-polyfill-corejs2: 0.4.5(@babel/core@7.22.17) + babel-plugin-polyfill-corejs3: 0.8.3(@babel/core@7.22.17) + babel-plugin-polyfill-regenerator: 0.5.2(@babel/core@7.22.17) + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: false + + /@babel/plugin-transform-shorthand-properties@7.22.5(@babel/core@7.22.17): + resolution: {integrity: sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-plugin-utils': 7.22.5 + + /@babel/plugin-transform-spread@7.22.5(@babel/core@7.22.17): + resolution: {integrity: sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + + /@babel/plugin-transform-sticky-regex@7.22.5(@babel/core@7.22.17): + resolution: {integrity: sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-plugin-utils': 7.22.5 + + /@babel/plugin-transform-template-literals@7.22.5(@babel/core@7.22.17): + resolution: {integrity: sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-plugin-utils': 7.22.5 + + /@babel/plugin-transform-typeof-symbol@7.22.5(@babel/core@7.22.17): + resolution: {integrity: sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-plugin-utils': 7.22.5 + + /@babel/plugin-transform-typescript@7.22.15(@babel/core@7.22.17): + resolution: {integrity: sha512-1uirS0TnijxvQLnlv5wQBwOX3E1wCFX7ITv+9pBV2wKEk4K+M5tqDaoNXnTH8tjEIYHLO98MwiTWO04Ggz4XuA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.22.17) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-typescript': 7.22.5(@babel/core@7.22.17) + + /@babel/plugin-transform-unicode-escapes@7.22.10(@babel/core@7.22.17): + resolution: {integrity: sha512-lRfaRKGZCBqDlRU3UIFovdp9c9mEvlylmpod0/OatICsSfuQ9YFthRo1tpTkGsklEefZdqlEFdY4A2dwTb6ohg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-plugin-utils': 7.22.5 + + /@babel/plugin-transform-unicode-property-regex@7.22.5(@babel/core@7.22.17): + resolution: {integrity: sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.22.17) + '@babel/helper-plugin-utils': 7.22.5 + + /@babel/plugin-transform-unicode-regex@7.22.5(@babel/core@7.22.17): + resolution: {integrity: sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.22.17) + '@babel/helper-plugin-utils': 7.22.5 + + /@babel/plugin-transform-unicode-sets-regex@7.22.5(@babel/core@7.22.17): + resolution: {integrity: sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.22.17 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.22.17) + '@babel/helper-plugin-utils': 7.22.5 + + /@babel/preset-env@7.22.15(@babel/core@7.22.17): + resolution: {integrity: sha512-tZFHr54GBkHk6hQuVA8w4Fmq+MSPsfvMG0vPnOYyTnJpyfMqybL8/MbNCPRT9zc2KBO2pe4tq15g6Uno4Jpoag==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/compat-data': 7.22.9 + '@babel/core': 7.22.17 + '@babel/helper-compilation-targets': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-validator-option': 7.22.15 + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.22.15(@babel/core@7.22.17) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.22.15(@babel/core@7.22.17) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.22.17) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.22.17) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.22.17) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.22.17) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.22.17) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.22.17) + '@babel/plugin-syntax-import-assertions': 7.22.5(@babel/core@7.22.17) + '@babel/plugin-syntax-import-attributes': 7.22.5(@babel/core@7.22.17) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.22.17) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.22.17) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.22.17) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.17) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.17) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.17) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.22.17) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.17) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.22.17) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.22.17) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.22.17) + '@babel/plugin-transform-arrow-functions': 7.22.5(@babel/core@7.22.17) + '@babel/plugin-transform-async-generator-functions': 7.22.15(@babel/core@7.22.17) + '@babel/plugin-transform-async-to-generator': 7.22.5(@babel/core@7.22.17) + '@babel/plugin-transform-block-scoped-functions': 7.22.5(@babel/core@7.22.17) + '@babel/plugin-transform-block-scoping': 7.22.15(@babel/core@7.22.17) + '@babel/plugin-transform-class-properties': 7.22.5(@babel/core@7.22.17) + '@babel/plugin-transform-class-static-block': 7.22.11(@babel/core@7.22.17) + '@babel/plugin-transform-classes': 7.22.15(@babel/core@7.22.17) + '@babel/plugin-transform-computed-properties': 7.22.5(@babel/core@7.22.17) + '@babel/plugin-transform-destructuring': 7.22.15(@babel/core@7.22.17) + '@babel/plugin-transform-dotall-regex': 7.22.5(@babel/core@7.22.17) + '@babel/plugin-transform-duplicate-keys': 7.22.5(@babel/core@7.22.17) + '@babel/plugin-transform-dynamic-import': 7.22.11(@babel/core@7.22.17) + '@babel/plugin-transform-exponentiation-operator': 7.22.5(@babel/core@7.22.17) + '@babel/plugin-transform-export-namespace-from': 7.22.11(@babel/core@7.22.17) + '@babel/plugin-transform-for-of': 7.22.15(@babel/core@7.22.17) + '@babel/plugin-transform-function-name': 7.22.5(@babel/core@7.22.17) + '@babel/plugin-transform-json-strings': 7.22.11(@babel/core@7.22.17) + '@babel/plugin-transform-literals': 7.22.5(@babel/core@7.22.17) + '@babel/plugin-transform-logical-assignment-operators': 7.22.11(@babel/core@7.22.17) + '@babel/plugin-transform-member-expression-literals': 7.22.5(@babel/core@7.22.17) + '@babel/plugin-transform-modules-amd': 7.22.5(@babel/core@7.22.17) + '@babel/plugin-transform-modules-commonjs': 7.22.15(@babel/core@7.22.17) + '@babel/plugin-transform-modules-systemjs': 7.22.11(@babel/core@7.22.17) + '@babel/plugin-transform-modules-umd': 7.22.5(@babel/core@7.22.17) + '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.22.17) + '@babel/plugin-transform-new-target': 7.22.5(@babel/core@7.22.17) + '@babel/plugin-transform-nullish-coalescing-operator': 7.22.11(@babel/core@7.22.17) + '@babel/plugin-transform-numeric-separator': 7.22.11(@babel/core@7.22.17) + '@babel/plugin-transform-object-rest-spread': 7.22.15(@babel/core@7.22.17) + '@babel/plugin-transform-object-super': 7.22.5(@babel/core@7.22.17) + '@babel/plugin-transform-optional-catch-binding': 7.22.11(@babel/core@7.22.17) + '@babel/plugin-transform-optional-chaining': 7.22.15(@babel/core@7.22.17) + '@babel/plugin-transform-parameters': 7.22.15(@babel/core@7.22.17) + '@babel/plugin-transform-private-methods': 7.22.5(@babel/core@7.22.17) + '@babel/plugin-transform-private-property-in-object': 7.22.11(@babel/core@7.22.17) + '@babel/plugin-transform-property-literals': 7.22.5(@babel/core@7.22.17) + '@babel/plugin-transform-regenerator': 7.22.10(@babel/core@7.22.17) + '@babel/plugin-transform-reserved-words': 7.22.5(@babel/core@7.22.17) + '@babel/plugin-transform-shorthand-properties': 7.22.5(@babel/core@7.22.17) + '@babel/plugin-transform-spread': 7.22.5(@babel/core@7.22.17) + '@babel/plugin-transform-sticky-regex': 7.22.5(@babel/core@7.22.17) + '@babel/plugin-transform-template-literals': 7.22.5(@babel/core@7.22.17) + '@babel/plugin-transform-typeof-symbol': 7.22.5(@babel/core@7.22.17) + '@babel/plugin-transform-unicode-escapes': 7.22.10(@babel/core@7.22.17) + '@babel/plugin-transform-unicode-property-regex': 7.22.5(@babel/core@7.22.17) + '@babel/plugin-transform-unicode-regex': 7.22.5(@babel/core@7.22.17) + '@babel/plugin-transform-unicode-sets-regex': 7.22.5(@babel/core@7.22.17) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.22.17) + '@babel/types': 7.22.17 + babel-plugin-polyfill-corejs2: 0.4.5(@babel/core@7.22.17) + babel-plugin-polyfill-corejs3: 0.8.3(@babel/core@7.22.17) + babel-plugin-polyfill-regenerator: 0.5.2(@babel/core@7.22.17) + core-js-compat: 3.32.2 semver: 6.3.1 transitivePeerDependencies: - supports-color - /@babel/preset-flow@7.22.15(@babel/core@7.22.10): + /@babel/preset-flow@7.22.15(@babel/core@7.22.17): resolution: {integrity: sha512-dB5aIMqpkgbTfN5vDdTRPzjqtWiZcRESNR88QYnoPR+bmdYoluOzMX9tQerTv0XzSgZYctPfO1oc0N5zdog1ew==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.10 + '@babel/core': 7.22.17 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-validator-option': 7.22.15 - '@babel/plugin-transform-flow-strip-types': 7.22.5(@babel/core@7.22.10) + '@babel/plugin-transform-flow-strip-types': 7.22.5(@babel/core@7.22.17) dev: false - /@babel/preset-modules@0.1.5(@babel/core@7.22.10): - resolution: {integrity: sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==} + /@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.22.17): + resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/core': 7.22.10 + '@babel/core': 7.22.17 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-proposal-unicode-property-regex': 7.18.6(@babel/core@7.22.10) - '@babel/plugin-transform-dotall-regex': 7.18.6(@babel/core@7.22.10) - '@babel/types': 7.22.11 + '@babel/types': 7.22.17 esutils: 2.0.3 - /@babel/preset-react@7.18.6(@babel/core@7.22.10): - resolution: {integrity: sha512-zXr6atUmyYdiWRVLOZahakYmOBHtWc2WGCkP8PYTgZi0iJXDY2CN180TdrIW4OGOAdLc7TifzDIvtx6izaRIzg==} + /@babel/preset-react@7.22.15(@babel/core@7.22.17): + resolution: {integrity: sha512-Csy1IJ2uEh/PecCBXXoZGAZBeCATTuePzCSB7dLYWS0vOEj6CNpjxIhW4duWwZodBNueH7QO14WbGn8YyeuN9w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.10 + '@babel/core': 7.22.17 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-validator-option': 7.22.5 - '@babel/plugin-transform-react-display-name': 7.22.5(@babel/core@7.22.10) - '@babel/plugin-transform-react-jsx': 7.22.5(@babel/core@7.22.10) - '@babel/plugin-transform-react-jsx-development': 7.18.6(@babel/core@7.22.10) - '@babel/plugin-transform-react-pure-annotations': 7.18.6(@babel/core@7.22.10) + '@babel/helper-validator-option': 7.22.15 + '@babel/plugin-transform-react-display-name': 7.22.5(@babel/core@7.22.17) + '@babel/plugin-transform-react-jsx': 7.22.15(@babel/core@7.22.17) + '@babel/plugin-transform-react-jsx-development': 7.22.5(@babel/core@7.22.17) + '@babel/plugin-transform-react-pure-annotations': 7.22.5(@babel/core@7.22.17) dev: true - /@babel/preset-typescript@7.21.5(@babel/core@7.22.10): - resolution: {integrity: sha512-iqe3sETat5EOrORXiQ6rWfoOg2y68Cs75B9wNxdPW4kixJxh7aXQE1KPdWLDniC24T/6dSnguF33W9j/ZZQcmA==} + /@babel/preset-typescript@7.22.15(@babel/core@7.22.17): + resolution: {integrity: sha512-HblhNmh6yM+cU4VwbBRpxFhxsTdfS1zsvH9W+gEjD0ARV9+8B4sNfpI6GuhePti84nuvhiwKS539jKPFHskA9A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.10 + '@babel/core': 7.22.17 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-validator-option': 7.22.5 - '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.22.10) - '@babel/plugin-transform-modules-commonjs': 7.22.5(@babel/core@7.22.10) - '@babel/plugin-transform-typescript': 7.22.10(@babel/core@7.22.10) + '@babel/helper-validator-option': 7.22.15 + '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.22.17) + '@babel/plugin-transform-modules-commonjs': 7.22.15(@babel/core@7.22.17) + '@babel/plugin-transform-typescript': 7.22.15(@babel/core@7.22.17) - /@babel/register@7.22.15(@babel/core@7.22.10): + /@babel/register@7.22.15(@babel/core@7.22.17): resolution: {integrity: sha512-V3Q3EqoQdn65RCgTLwauZaTfd1ShhwPmbBv+1dkZV/HpCGMKVyn6oFcRlI7RaKqiDQjX2Qd3AuoEguBgdjIKlg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.10 + '@babel/core': 7.22.17 clone-deep: 4.0.1 find-cache-dir: 2.1.0 make-dir: 2.1.0 @@ -1649,109 +1833,52 @@ packages: /@babel/regjsgen@0.8.0: resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==} - /@babel/runtime@7.19.0: - resolution: {integrity: sha512-eR8Lo9hnDS7tqkO7NsV+mKvCmv5boaXFSZ70DnfhcgiEne8hv9oCEd36Klw74EtizEqLsy4YnW8UWwpBVolHZA==} - engines: {node: '>=6.9.0'} - dependencies: - regenerator-runtime: 0.13.11 - dev: true - - /@babel/runtime@7.22.10: - resolution: {integrity: sha512-21t/fkKLMZI4pqP2wlmsQAWnYW1PDyKyyUV4vCi+B25ydmdaYTKXPwCj0BzSUnZf4seIiYvSA3jcZ3gdsMFkLQ==} - engines: {node: '>=6.9.0'} - dependencies: - regenerator-runtime: 0.14.0 - dev: true - - /@babel/runtime@7.22.11: - resolution: {integrity: sha512-ee7jVNlWN09+KftVOu9n7S8gQzD/Z6hN/I8VBRXW4P1+Xe7kJGXMwu8vds4aGIMHZnNbdpSWCfZZtinytpcAvA==} + /@babel/runtime@7.22.15: + resolution: {integrity: sha512-T0O+aa+4w0u06iNmapipJXMV4HoUir03hpx3/YqXXhu9xim3w+dVphjFWl1OH8NbZHw5Lbm9k45drDkgq2VNNA==} engines: {node: '>=6.9.0'} dependencies: regenerator-runtime: 0.14.0 - /@babel/template@7.22.5: - resolution: {integrity: sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==} + /@babel/template@7.22.15: + resolution: {integrity: sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==} engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.22.13 - '@babel/parser': 7.22.13 - '@babel/types': 7.22.11 + '@babel/parser': 7.22.16 + '@babel/types': 7.22.17 - /@babel/traverse@7.19.1: - resolution: {integrity: sha512-0j/ZfZMxKukDaag2PtOPDbwuELqIar6lLskVPPJDjXMXjfLb1Obo/1yjxIGqqAJrmfaTIY3z2wFLAQ7qSkLsuA==} + /@babel/traverse@7.22.17: + resolution: {integrity: sha512-xK4Uwm0JnAMvxYZxOVecss85WxTEIbTa7bnGyf/+EgCL5Zt3U7htUpEOWv9detPlamGKuRzCqw74xVglDWpPdg==} engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.22.13 - '@babel/generator': 7.22.10 + '@babel/generator': 7.22.15 '@babel/helper-environment-visitor': 7.22.5 '@babel/helper-function-name': 7.22.5 '@babel/helper-hoist-variables': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 - '@babel/parser': 7.22.13 - '@babel/types': 7.22.15 - debug: 4.3.4 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/traverse@7.22.10: - resolution: {integrity: sha512-Q/urqV4pRByiNNpb/f5OSv28ZlGJiFiiTh+GAHktbIrkPhPbl90+uW6SmpoLyZqutrg9AEaEf3Q/ZBRHBXgxig==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.22.13 - '@babel/generator': 7.22.10 - '@babel/helper-environment-visitor': 7.22.5 - '@babel/helper-function-name': 7.22.5 - '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - '@babel/parser': 7.22.13 - '@babel/types': 7.22.15 + '@babel/parser': 7.22.16 + '@babel/types': 7.22.17 debug: 4.3.4 globals: 11.12.0 transitivePeerDependencies: - supports-color - /@babel/types@7.19.0: - resolution: {integrity: sha512-YuGopBq3ke25BVSiS6fgF49Ul9gH1x70Bcr6bqRLjWCkcX8Hre1/5+z+IiWOIerRMSSEfGZVB9z9kyq7wVs9YA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-string-parser': 7.22.5 - '@babel/helper-validator-identifier': 7.22.15 - to-fast-properties: 2.0.0 - dev: true - - /@babel/types@7.22.10: - resolution: {integrity: sha512-obaoigiLrlDZ7TUQln/8m4mSqIW2QFeOrCQc9r+xsaHGNoplVNYlRVpsfE8Vj35GEm2ZH4ZhrNYogs/3fj85kg==} + /@babel/types@7.22.17: + resolution: {integrity: sha512-YSQPHLFtQNE5xN9tHuZnzu8vPr61wVTBZdfv1meex1NBosa4iT05k/Jw06ddJugi4bk7The/oSwQGFcksmEJQg==} engines: {node: '>=6.9.0'} dependencies: '@babel/helper-string-parser': 7.22.5 '@babel/helper-validator-identifier': 7.22.15 to-fast-properties: 2.0.0 - /@babel/types@7.22.11: - resolution: {integrity: sha512-siazHiGuZRz9aB9NpHy9GOs9xiQPKnMzgdr493iI1M67vRXpnEq8ZOOKzezC5q7zwuQ6sDhdSp4SD9ixKSqKZg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-string-parser': 7.22.5 - '@babel/helper-validator-identifier': 7.22.15 - to-fast-properties: 2.0.0 - - /@babel/types@7.22.15: - resolution: {integrity: sha512-X+NLXr0N8XXmN5ZsaQdm9U2SSC3UbIYq/doL++sueHOTisgZHoKaQtZxGuV2cUPQHMfjKEfg/g6oy7Hm6SKFtA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-string-parser': 7.22.5 - '@babel/helper-validator-identifier': 7.22.15 - to-fast-properties: 2.0.0 - - /@commitlint/parse@17.6.5: - resolution: {integrity: sha512-0zle3bcn1Hevw5Jqpz/FzEWNo2KIzUbc1XyGg6WrWEoa6GH3A1pbqNF6MvE6rjuy6OY23c8stWnb4ETRZyN+Yw==} + /@commitlint/parse@17.7.0: + resolution: {integrity: sha512-dIvFNUMCUHqq5Abv80mIEjLVfw8QNuA4DS7OWip4pcK/3h5wggmjVnlwGCDvDChkw2TjK1K6O+tAEV78oxjxag==} engines: {node: '>=v14'} dependencies: '@commitlint/types': 17.4.4 - conventional-changelog-angular: 5.0.13 - conventional-commits-parser: 3.2.4 + conventional-changelog-angular: 6.0.0 + conventional-commits-parser: 4.0.0 dev: true /@commitlint/types@17.4.4: @@ -1966,13 +2093,13 @@ packages: dev: true optional: true - /@eslint-community/eslint-utils@4.4.0(eslint@8.48.0): + /@eslint-community/eslint-utils@4.4.0(eslint@8.49.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: - eslint: 8.48.0 + eslint: 8.49.0 eslint-visitor-keys: 3.4.3 dev: true @@ -1998,8 +2125,8 @@ packages: - supports-color dev: true - /@eslint/js@8.48.0: - resolution: {integrity: sha512-ZSjtmelB7IJfWD2Fvb7+Z+ChTIKWq6kjda95fLcQKNS5aheVHn4IkfgRQE3sIIzTcSLwLcLZUD9UBt+V7+h+Pw==} + /@eslint/js@8.49.0: + resolution: {integrity: sha512-1S8uAY/MTJqVx0SC4epBq+N2yhuwtNwLbJYNZyhL2pO1ZVKn5HFXav5T41Ryzy9K9V7ZId2JB2oy/W4aCd9/2w==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true @@ -2013,8 +2140,8 @@ packages: '@hapi/hoek': 9.3.0 dev: false - /@humanwhocodes/config-array@0.11.10: - resolution: {integrity: sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==} + /@humanwhocodes/config-array@0.11.11: + resolution: {integrity: sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==} engines: {node: '>=10.10.0'} dependencies: '@humanwhocodes/object-schema': 1.2.1 @@ -2100,7 +2227,7 @@ packages: resolution: {integrity: sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@babel/core': 7.22.10 + '@babel/core': 7.22.17 '@jest/types': 27.5.1 babel-plugin-istanbul: 6.1.1 chalk: 4.1.2 @@ -2190,8 +2317,8 @@ packages: '@jridgewell/sourcemap-codec': 1.4.15 dev: true - /@mdn/browser-compat-data@5.3.9: - resolution: {integrity: sha512-J7lLtHMEizYbI5T0Xlqpg1JXCz9JegZBeb7y3v/Nm8ScRw8TL9v3n+I3g1TFm+bLrRtwA33FKwX5znDwz+WzAQ==} + /@mdn/browser-compat-data@5.3.15: + resolution: {integrity: sha512-h/luqw9oAmMF1C/GuUY/PAgZlF4wx71q2bdH+ct8vmjcvseCY32au8XmYy7xZ8l5VJiY/3ltFpr5YiO55v0mzg==} dev: true /@nodelib/fs.scandir@2.1.5: @@ -2215,19 +2342,19 @@ packages: fastq: 1.15.0 dev: true - /@nrwl/nx-cloud@16.3.0: - resolution: {integrity: sha512-nJrGsVufhY74KcP7kM7BqFOGAoO5OEF6+wfiM295DgmEG9c1yW+x5QiQaC42K9SWYn/eKQa1X7466ZA5lynXoQ==} + /@nrwl/nx-cloud@16.4.0: + resolution: {integrity: sha512-QitrYK6z9ceagetBlgLMZnC0T85k2JTk+oK0MxZ5p/woclqeYN7SiGNZgMzDq8TjJwt8Fm/MDnsSo3xtufmLBg==} dependencies: - nx-cloud: 16.3.0 + nx-cloud: 16.4.0 transitivePeerDependencies: - debug dev: true - /@nrwl/tao@16.7.4: - resolution: {integrity: sha512-hH03oF+yVmaf19UZfyLDSuVEh0KasU5YfYezuNsdRkXNdTU/WmpDrk4qoo0j6fVoMPrqbbPOn1YMRtulP2WyYA==} + /@nrwl/tao@16.8.1: + resolution: {integrity: sha512-hgGFLyEgONSofxnJsXN9NlUx4J8/YSLUkfZKdR8Qa97+JGZT8FEuk7NLFJOWdYYqROoCzXLHK0d+twFFNPS5BQ==} hasBin: true dependencies: - nx: 16.7.4 + nx: 16.8.1 tslib: 2.6.2 transitivePeerDependencies: - '@swc-node/register' @@ -2235,8 +2362,8 @@ packages: - debug dev: true - /@nx/nx-darwin-arm64@16.7.4: - resolution: {integrity: sha512-pRNjxn6KlcR6iGkU1j/1pzcogwXFv97pYiZaibpF7UV0vfdEUA3EETpDcs+hbNAcKMvVtn/TgN857/5LQ/lGUg==} + /@nx/nx-darwin-arm64@16.8.1: + resolution: {integrity: sha512-xOflqyIVcyLPzdJOZcucI+5ClwnTgK8zIvpjbxHokrO9McJJglhfUyP0bbTHpEpWqzA+GaPA/6/Qdu0ATzqQBQ==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] @@ -2244,8 +2371,8 @@ packages: dev: true optional: true - /@nx/nx-darwin-x64@16.7.4: - resolution: {integrity: sha512-GANXeabAAWRoF85WDla2ZPxtr8vnqvXjwyCIhRCda8hlKiVCpM98GemucN25z97G5H6MgyV9Dd9t9jrr2Fn0Og==} + /@nx/nx-darwin-x64@16.8.1: + resolution: {integrity: sha512-JJGrlOvEpDMWnM6YKaA1WOnzHgiw5vRKEowX9ba+jxhmCvtdjbLSxi228kv92JtQPPQ91zvtsNM+BFY0EbPOlA==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] @@ -2253,8 +2380,8 @@ packages: dev: true optional: true - /@nx/nx-freebsd-x64@16.7.4: - resolution: {integrity: sha512-zmBBDYjPaHhIHx1YASUJJIy+oz7mCrj5f0f3kOzfMraQOjkQZ0xYgNNUzBqmnYu1855yiphu94MkAMYJnbk0jw==} + /@nx/nx-freebsd-x64@16.8.1: + resolution: {integrity: sha512-aZdJQ7cIQfXOmfk4vRXvVYxuV68xz8YyhNZ0IvBfJ16uZQ+YNl4BpklRLEIdaloSbwz9M1NNewmL+AgklEBxlA==} engines: {node: '>= 10'} cpu: [x64] os: [freebsd] @@ -2262,8 +2389,8 @@ packages: dev: true optional: true - /@nx/nx-linux-arm-gnueabihf@16.7.4: - resolution: {integrity: sha512-d3Cmz/vdtoSasTUANoh4ZYLJESNA3+PCP/HnXNqmrr6AEHo+T8DcI+qsamO3rmYUSFxTMAeMyoihZMU8OKGZ1A==} + /@nx/nx-linux-arm-gnueabihf@16.8.1: + resolution: {integrity: sha512-JzjrTf7FFgikoVUbRs0hKvwHRR6SyqT4yIdk/YyiCt2mWY9w4m5DWtHM/9kJzhckkH9MY66m+X/zG6+NKsEMvg==} engines: {node: '>= 10'} cpu: [arm] os: [linux] @@ -2271,8 +2398,8 @@ packages: dev: true optional: true - /@nx/nx-linux-arm64-gnu@16.7.4: - resolution: {integrity: sha512-W1u4O78lTHCwvUP0vakeKWFXeSZ13nYzbd6FARICnImY2my8vz41rLm6aU9TYWaiOGEGL2xKpHKSgiNwbLjhFw==} + /@nx/nx-linux-arm64-gnu@16.8.1: + resolution: {integrity: sha512-CF0s981myBWusW7iW2+fKPa7ceYYe+NO5EdKe9l27fpHDkcA71KZU3q7U823QpO/7tYvVdBevJp3CCn2/GBURQ==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -2280,8 +2407,8 @@ packages: dev: true optional: true - /@nx/nx-linux-arm64-musl@16.7.4: - resolution: {integrity: sha512-Dc8IQFvhfH/Z3GmhBBNNxGd2Ehw6Y5SePEgJj1c2JyPdoVtc2OjGzkUaZkT4z5z77VKtju6Yi10T6Enps+y+kw==} + /@nx/nx-linux-arm64-musl@16.8.1: + resolution: {integrity: sha512-X4TobxRt1dALvoeKC3/t1CqZCMUqtEhGG+KQLT/51sG54HdxmTAWRFlvj8PvLH0QSBk4e+uRZAo45qpt3iSnBg==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -2289,8 +2416,8 @@ packages: dev: true optional: true - /@nx/nx-linux-x64-gnu@16.7.4: - resolution: {integrity: sha512-4B58C/pXeuovSznBOeicsxNieBApbGMoi2du8jR6Is1gYFPv4l8fFHQHHGAa1l5XJC5JuGJqFywS4elInWprNw==} + /@nx/nx-linux-x64-gnu@16.8.1: + resolution: {integrity: sha512-lHvv2FD14Lpxh7muMLStH2tC1opQOaepO4nXwb1LaaoIpMym7kBgCK8AQuI98/oNQiMDXMNDKWQZCjxnJGDIPw==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -2298,8 +2425,8 @@ packages: dev: true optional: true - /@nx/nx-linux-x64-musl@16.7.4: - resolution: {integrity: sha512-spqqvEdGSSeV2ByJHkex5m8MRQfM6lQlnon25XgVBdPR47lKMWSikUsaWCiE7bVAFU9BFyWY2L4HfZ4+LiNY7A==} + /@nx/nx-linux-x64-musl@16.8.1: + resolution: {integrity: sha512-c4gQvNgIjggD1A5sYhftQEC1PtAhV3sEnv60X00v9wmjl57Wj4Ty0TgyzpYglLysVRiko/B58S8NYS0jKvMmeA==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -2307,8 +2434,8 @@ packages: dev: true optional: true - /@nx/nx-win32-arm64-msvc@16.7.4: - resolution: {integrity: sha512-etNnbuCcSqAYOeDcS6si6qw0WR/IS87ovTzLS17ETKpdHcHN5nM4l02CQyupKiD58ShxrXHxXmvgBfbXxoN5Ew==} + /@nx/nx-win32-arm64-msvc@16.8.1: + resolution: {integrity: sha512-GKHPy/MyGFoV9cdKgcWLZZK2vDdxt5bQ53ss0k+BDKRP+YwLKm7tJl23eeM7JdB4GLCBntEQPC+dBqxOA8Ze/w==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] @@ -2316,8 +2443,8 @@ packages: dev: true optional: true - /@nx/nx-win32-x64-msvc@16.7.4: - resolution: {integrity: sha512-y6pugK6ino1wvo2FbgtXG2cVbEm3LzJwOSBKBRBXSWhUgjP7T92uGfOt6KVQKpaqDvS9lA9TO/2DcygcLHXh7A==} + /@nx/nx-win32-x64-msvc@16.8.1: + resolution: {integrity: sha512-yHZ5FAcx54rVc31R0yIpniepkHMPwaxG23l8E/ZYbL1iPwE/Wc1HeUzUvxUuSXtguRp7ihcRhaUEPkcSl2EAVw==} engines: {node: '>= 10'} cpu: [x64] os: [win32] @@ -2397,7 +2524,7 @@ packages: strip-ansi: 5.2.0 sudo-prompt: 9.2.1 wcwidth: 1.0.1 - yaml: 2.3.1 + yaml: 2.3.2 transitivePeerDependencies: - encoding dev: false @@ -2439,7 +2566,7 @@ packages: - encoding dev: false - /@react-native-community/cli-plugin-metro@11.3.6(@babel/core@7.22.10): + /@react-native-community/cli-plugin-metro@11.3.6(@babel/core@7.22.17): resolution: {integrity: sha512-D97racrPX3069ibyabJNKw9aJpVcaZrkYiEzsEnx50uauQtPDoQ1ELb/5c6CtMhAEGKoZ0B5MS23BbsSZcLs2g==} dependencies: '@react-native-community/cli-server-api': 11.3.6 @@ -2449,7 +2576,7 @@ packages: metro: 0.76.7 metro-config: 0.76.7 metro-core: 0.76.7 - metro-react-native-babel-transformer: 0.76.7(@babel/core@7.22.10) + metro-react-native-babel-transformer: 0.76.7(@babel/core@7.22.17) metro-resolver: 0.76.7 metro-runtime: 0.76.7 readline: 1.3.0 @@ -2502,7 +2629,7 @@ packages: joi: 17.10.1 dev: false - /@react-native-community/cli@11.3.6(@babel/core@7.22.10): + /@react-native-community/cli@11.3.6(@babel/core@7.22.17): resolution: {integrity: sha512-bdwOIYTBVQ9VK34dsf6t3u6vOUU5lfdhKaAxiAVArjsr7Je88Bgs4sAbsOYsNK3tkE8G77U6wLpekknXcanlww==} engines: {node: '>=16'} hasBin: true @@ -2512,7 +2639,7 @@ packages: '@react-native-community/cli-debugger-ui': 11.3.6 '@react-native-community/cli-doctor': 11.3.6 '@react-native-community/cli-hermes': 11.3.6 - '@react-native-community/cli-plugin-metro': 11.3.6(@babel/core@7.22.10) + '@react-native-community/cli-plugin-metro': 11.3.6(@babel/core@7.22.17) '@react-native-community/cli-server-api': 11.3.6 '@react-native-community/cli-tools': 11.3.6 '@react-native-community/cli-types': 11.3.6 @@ -2536,15 +2663,15 @@ packages: resolution: {integrity: sha512-Im93xRJuHHxb1wniGhBMsxLwcfzdYreSZVQGDoMJgkd6+Iky61LInGEHnQCTN0fKNYF1Dvcofb4uMmE1RQHXHQ==} dev: false - /@react-native/codegen@0.72.6(@babel/preset-env@7.21.5): + /@react-native/codegen@0.72.6(@babel/preset-env@7.22.15): resolution: {integrity: sha512-idTVI1es/oopN0jJT/0jB6nKdvTUKE3757zA5+NPXZTeB46CIRbmmos4XBiAec8ufu9/DigLPbHTYAaMNZJ6Ig==} peerDependencies: '@babel/preset-env': ^7.1.6 dependencies: - '@babel/parser': 7.22.13 - '@babel/preset-env': 7.21.5(@babel/core@7.22.10) + '@babel/parser': 7.22.16 + '@babel/preset-env': 7.22.15(@babel/core@7.22.17) flow-parser: 0.206.0 - jscodeshift: 0.14.0(@babel/preset-env@7.21.5) + jscodeshift: 0.14.0(@babel/preset-env@7.22.15) nullthrows: 1.1.1 transitivePeerDependencies: - supports-color @@ -2569,10 +2696,10 @@ packages: dependencies: invariant: 2.2.4 nullthrows: 1.1.1 - react-native: 0.72.4(@babel/core@7.22.10)(@babel/preset-env@7.21.5)(react@18.2.0) + react-native: 0.72.4(@babel/core@7.22.17)(@babel/preset-env@7.22.15)(react@18.2.0) dev: false - /@rollup/plugin-babel@6.0.3(@babel/core@7.22.10): + /@rollup/plugin-babel@6.0.3(@babel/core@7.22.17): resolution: {integrity: sha512-fKImZKppa1A/gX73eg4JGo+8kQr/q1HBQaCGKECZ0v4YBBv3lFqi14+7xyApECzvkLTHCifx+7ntcrvtBIRcpg==} engines: {node: '>=14.0.0'} peerDependencies: @@ -2585,13 +2712,13 @@ packages: rollup: optional: true dependencies: - '@babel/core': 7.22.10 - '@babel/helper-module-imports': 7.22.5 - '@rollup/pluginutils': 5.0.3 + '@babel/core': 7.22.17 + '@babel/helper-module-imports': 7.22.15 + '@rollup/pluginutils': 5.0.4 dev: true - /@rollup/plugin-commonjs@25.0.0: - resolution: {integrity: sha512-hoho2Kay9TZrLu0bnDsTTCaj4Npa+THk9snajP/XDNb9a9mmjTjh52EQM9sKl3HD1LsnihX7js+eA2sd2uKAhw==} + /@rollup/plugin-commonjs@25.0.4: + resolution: {integrity: sha512-L92Vz9WUZXDnlQQl3EwbypJR4+DM2EbsO+/KOcEkP4Mc6Ct453EeDB2uH9lgRwj4w5yflgNpq9pHOiY8aoUXBQ==} engines: {node: '>=14.0.0'} peerDependencies: rollup: ^2.68.0||^3.0.0 @@ -2599,7 +2726,7 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.3 + '@rollup/pluginutils': 5.0.4 commondir: 1.0.1 estree-walker: 2.0.2 glob: 8.1.0 @@ -2607,8 +2734,8 @@ packages: magic-string: 0.27.0 dev: true - /@rollup/plugin-node-resolve@15.0.2: - resolution: {integrity: sha512-Y35fRGUjC3FaurG722uhUuG8YHOJRJQbI6/CkbRkdPotSpDj9NtIN85z1zrcyDcCQIW4qp5mgG72U+gJ0TAFEg==} + /@rollup/plugin-node-resolve@15.2.1: + resolution: {integrity: sha512-nsbUg588+GDSu8/NS8T4UAshO6xeaOfINNuXeVHcKV02LJtoRaM1SiOacClw4kws1SFiNhdLGxlbMY9ga/zs/w==} engines: {node: '>=14.0.0'} peerDependencies: rollup: ^2.78.0||^3.0.0 @@ -2616,7 +2743,7 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.3 + '@rollup/pluginutils': 5.0.4 '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-builtin-module: 3.2.1 @@ -2633,12 +2760,12 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.3 + '@rollup/pluginutils': 5.0.4 magic-string: 0.27.0 dev: true - /@rollup/pluginutils@5.0.3: - resolution: {integrity: sha512-hfllNN4a80rwNQ9QCxhxuHCGHMAvabXqxNdaChUSSadMre7t4iEUI6fFAhBOn/eIYTgYVhBv7vCLsAJ4u3lf3g==} + /@rollup/pluginutils@5.0.4: + resolution: {integrity: sha512-0KJnIoRI8A+a1dqOYLxH8vBf8bphDmty5QvIm2hqm7oFCFYKCAZWWd2hXgMibaPsNDhI0AtpYfQZJG47pt/k4g==} engines: {node: '>=14.0.0'} peerDependencies: rollup: ^1.20.0||^2.0.0||^3.0.0 @@ -2716,7 +2843,7 @@ packages: engines: {node: '>=14'} dependencies: '@babel/code-frame': 7.22.13 - '@babel/runtime': 7.22.11 + '@babel/runtime': 7.22.15 '@types/aria-query': 5.0.1 aria-query: 5.1.3 chalk: 4.1.2 @@ -2725,12 +2852,12 @@ packages: pretty-format: 27.5.1 dev: true - /@testing-library/jest-dom@5.16.5: - resolution: {integrity: sha512-N5ixQ2qKpi5OLYfwQmUb/5mSV9LneAcaUfp32pn4yCnpb8r/Yz0pXFPck21dIicKmi+ta5WRAknkZCfA8refMA==} + /@testing-library/jest-dom@5.17.0: + resolution: {integrity: sha512-ynmNeT7asXyH3aSVv4vvX4Rb+0qjOhdNHnO/3vuZNqPmhDpV/+rCSGwQ7bLcmU2cJ4dvoheIO85LQj0IbJHEtg==} engines: {node: '>=8', npm: '>=6', yarn: '>=1'} dependencies: - '@adobe/css-tools': 4.3.0 - '@babel/runtime': 7.22.10 + '@adobe/css-tools': 4.3.1 + '@babel/runtime': 7.22.15 '@types/testing-library__jest-dom': 5.14.5(patch_hash=d573maxasnl5kxwdyzebcnmhpm) aria-query: 5.3.0 chalk: 3.0.0 @@ -2740,7 +2867,7 @@ packages: redent: 3.0.0 dev: true - /@testing-library/react-hooks@8.0.1(@types/react@18.0.15)(react-dom@18.2.0)(react@18.2.0): + /@testing-library/react-hooks@8.0.1(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-Aqhl2IVmLt8IovEVarNDFuJDVWVvhnr9/GCU6UUnrYXwgDFF9h2L2o2P9KBni1AST5sT6riAyoukFLyjQUgD/g==} engines: {node: '>=12'} peerDependencies: @@ -2756,8 +2883,8 @@ packages: react-test-renderer: optional: true dependencies: - '@babel/runtime': 7.22.10 - '@types/react': 18.0.15 + '@babel/runtime': 7.22.15 + '@types/react': 18.2.21 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) react-error-boundary: 3.1.4(react@18.2.0) @@ -2770,9 +2897,9 @@ packages: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@babel/runtime': 7.22.10 + '@babel/runtime': 7.22.15 '@testing-library/dom': 9.3.1 - '@types/react-dom': 18.0.6 + '@types/react-dom': 18.2.7 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: true @@ -2793,7 +2920,7 @@ packages: '@vue/compiler-sfc': '>= 3' vue: '>= 3' dependencies: - '@babel/runtime': 7.22.11 + '@babel/runtime': 7.22.15 '@testing-library/dom': 9.3.1 '@vue/compiler-sfc': 3.3.4 '@vue/test-utils': 2.4.1(vue@3.3.4) @@ -2827,43 +2954,43 @@ packages: resolution: {integrity: sha512-XTIieEY+gvJ39ChLcB4If5zHtPxt3Syj5rgZR+e1ctpmK8NjPf0zFqsz4JpLJT0xla9GFDKjy8Cpu331nrmE1Q==} dev: true - /@types/babel__core@7.1.19: - resolution: {integrity: sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==} + /@types/babel__core@7.20.1: + resolution: {integrity: sha512-aACu/U/omhdk15O4Nfb+fHgH/z3QsfQzpnvRZhYhThms83ZnAOZz7zZAWO7mn2yyNQaA4xTO8GLK3uqFU4bYYw==} dependencies: - '@babel/parser': 7.22.13 - '@babel/types': 7.22.15 + '@babel/parser': 7.22.16 + '@babel/types': 7.22.17 '@types/babel__generator': 7.6.4 '@types/babel__template': 7.4.1 - '@types/babel__traverse': 7.17.1 + '@types/babel__traverse': 7.20.1 dev: true /@types/babel__generator@7.6.4: resolution: {integrity: sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==} dependencies: - '@babel/types': 7.22.15 + '@babel/types': 7.22.17 dev: true /@types/babel__template@7.4.1: resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==} dependencies: - '@babel/parser': 7.22.13 - '@babel/types': 7.22.15 + '@babel/parser': 7.22.16 + '@babel/types': 7.22.17 dev: true - /@types/babel__traverse@7.17.1: - resolution: {integrity: sha512-kVzjari1s2YVi77D3w1yuvohV2idweYXMCDzqBiVNN63TcDWrIlTVOYpqVrvbbyOE/IyzBoTKF0fdnLPEORFxA==} + /@types/babel__traverse@7.20.1: + resolution: {integrity: sha512-MitHFXnhtgwsGZWtT68URpOvLN4EREih1u3QtQiN4VdAxWKRVvGCSvw/Qth0M0Qq3pJpnGOu5JaM/ydK7OGbqg==} dependencies: - '@babel/types': 7.22.15 + '@babel/types': 7.22.17 dev: true /@types/chai-subset@1.3.3: resolution: {integrity: sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==} dependencies: - '@types/chai': 4.3.5 + '@types/chai': 4.3.6 dev: true - /@types/chai@4.3.5: - resolution: {integrity: sha512-mEo1sAde+UCE6b2hxn332f1g1E8WfYRu6p5SvTKr2ZKC1f7gFJXk4h5PyGP9Dt6gCaG8y8XhwnXWC6Iy2cmBng==} + /@types/chai@4.3.6: + resolution: {integrity: sha512-VOVRLM1mBxIRxydiViqPcKn6MIxZytrbMpd6RJLIWKxUNr3zux8no0Oc7kJx0WAPIitgZ0gkrDS+btlqQpubpw==} dev: true /@types/current-git-branch@1.1.4: @@ -2900,8 +3027,8 @@ packages: pretty-format: 26.6.2 dev: true - /@types/jscodeshift@0.11.5: - resolution: {integrity: sha512-7JV0qdblTeWFigevmwFUgROXX395F+MQx6v0YqPn8Bx0B4Sng6alEejz9PENzgLYpG+zL0O4tGdBzc4gKZH8XA==} + /@types/jscodeshift@0.11.6: + resolution: {integrity: sha512-3lJ4DajWkk4MZ1F7q+1C7jE0z0xOtbu0VU/Kg3wdPq2DUvJjySSlu3B5Q/bICrTxugLhONBO7inRUWsymOID/A==} dependencies: ast-types: 0.14.2 recast: 0.20.5 @@ -2921,8 +3048,8 @@ packages: '@types/node': 17.0.45 dev: true - /@types/luxon@2.3.2: - resolution: {integrity: sha512-WOehptuhKIXukSUUkRgGbj2c997Uv/iUgYgII8U7XLJqq9W2oF0kQ6frEznRQbdurioz+L/cdaIm4GutTQfgmA==} + /@types/luxon@2.4.0: + resolution: {integrity: sha512-oCavjEjRXuR6URJEtQm0eBdfsBiEcGBZbq21of8iGkeKxU1+1xgKuFPClaBZl2KB8ZZBSWlgk61tH6Mf+nvZVw==} dev: true /@types/minimist@1.2.2: @@ -2939,32 +3066,28 @@ packages: /@types/prop-types@15.7.5: resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} - /@types/react-dom@18.0.6: - resolution: {integrity: sha512-/5OFZgfIPSwy+YuIBP/FgJnQnsxhZhjjrnxudMddeblOouIodEQ75X14Rr4wGSG/bknL+Omy9iWlLo1u/9GzAA==} + /@types/react-dom@18.2.7: + resolution: {integrity: sha512-GRaAEriuT4zp9N4p1i8BDBYmEyfo+xQ3yHjJU4eiK5NDa1RmUZG+unZABUTK4/Ox/M+GaHwb6Ow8rUITrtjszA==} dependencies: - '@types/react': 18.0.15 + '@types/react': 18.2.21 dev: true - /@types/react@18.0.15: - resolution: {integrity: sha512-iz3BtLuIYH1uWdsv6wXYdhozhqj20oD4/Hk2DNXIn1kFsmp9x8d9QB6FnPhfkbhd2PgEONt9Q1x/ebkwjfFLow==} + /@types/react@18.2.21: + resolution: {integrity: sha512-neFKG/sBAwGxHgXiIxnbm3/AAVQ/cMRS93hvBpg8xYRbeQSPVABp9U2bRnPf0iI4+Ucdv3plSxKK+3CW2ENJxA==} dependencies: '@types/prop-types': 15.7.5 - '@types/scheduler': 0.16.2 - csstype: 3.1.0 + '@types/scheduler': 0.16.3 + csstype: 3.1.2 /@types/resolve@1.20.2: resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} dev: true - /@types/scheduler@0.16.2: - resolution: {integrity: sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==} + /@types/scheduler@0.16.3: + resolution: {integrity: sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==} - /@types/semver@7.3.13: - resolution: {integrity: sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==} - dev: true - - /@types/semver@7.5.0: - resolution: {integrity: sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==} + /@types/semver@7.5.1: + resolution: {integrity: sha512-cJRQXpObxfNKkFAZbJl2yjWtJCqELQIdShsogr1d2MilP8dKD9TE/nEKHkJgUNHdGKCQaf9HbIynuV2csLGVLg==} dev: true /@types/stack-utils@2.0.1: @@ -3007,8 +3130,8 @@ packages: '@types/yargs-parser': 21.0.0 dev: false - /@typescript-eslint/eslint-plugin@6.4.1(@typescript-eslint/parser@6.4.1)(eslint@8.48.0)(typescript@5.2.2): - resolution: {integrity: sha512-3F5PtBzUW0dYlq77Lcqo13fv+58KDwUib3BddilE8ajPJT+faGgxmI9Sw+I8ZS22BYwoir9ZhNXcLi+S+I2bkw==} + /@typescript-eslint/eslint-plugin@6.6.0(@typescript-eslint/parser@6.6.0)(eslint@8.49.0)(typescript@5.2.2): + resolution: {integrity: sha512-CW9YDGTQnNYMIo5lMeuiIG08p4E0cXrXTbcZ2saT/ETE7dWUrNxlijsQeU04qAAKkILiLzdQz+cGFxCJjaZUmA==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha @@ -3019,25 +3142,25 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.8.0 - '@typescript-eslint/parser': 6.4.1(eslint@8.48.0)(typescript@5.2.2) - '@typescript-eslint/scope-manager': 6.4.1 - '@typescript-eslint/type-utils': 6.4.1(eslint@8.48.0)(typescript@5.2.2) - '@typescript-eslint/utils': 6.4.1(eslint@8.48.0)(typescript@5.2.2) - '@typescript-eslint/visitor-keys': 6.4.1 + '@typescript-eslint/parser': 6.6.0(eslint@8.49.0)(typescript@5.2.2) + '@typescript-eslint/scope-manager': 6.6.0 + '@typescript-eslint/type-utils': 6.6.0(eslint@8.49.0)(typescript@5.2.2) + '@typescript-eslint/utils': 6.6.0(eslint@8.49.0)(typescript@5.2.2) + '@typescript-eslint/visitor-keys': 6.6.0 debug: 4.3.4 - eslint: 8.48.0 + eslint: 8.49.0 graphemer: 1.4.0 ignore: 5.2.4 natural-compare: 1.4.0 semver: 7.5.4 - ts-api-utils: 1.0.2(typescript@5.2.2) + ts-api-utils: 1.0.3(typescript@5.2.2) typescript: 5.2.2 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/parser@6.4.1(eslint@8.48.0)(typescript@5.2.2): - resolution: {integrity: sha512-610G6KHymg9V7EqOaNBMtD1GgpAmGROsmfHJPXNLCU9bfIuLrkdOygltK784F6Crboyd5tBFayPB7Sf0McrQwg==} + /@typescript-eslint/parser@6.6.0(eslint@8.49.0)(typescript@5.2.2): + resolution: {integrity: sha512-setq5aJgUwtzGrhW177/i+DMLqBaJbdwGj2CPIVFFLE0NCliy5ujIdLHd2D1ysmlmsjdL2GWW+hR85neEfc12w==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -3046,27 +3169,27 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 6.4.1 - '@typescript-eslint/types': 6.4.1 - '@typescript-eslint/typescript-estree': 6.4.1(typescript@5.2.2) - '@typescript-eslint/visitor-keys': 6.4.1 + '@typescript-eslint/scope-manager': 6.6.0 + '@typescript-eslint/types': 6.6.0 + '@typescript-eslint/typescript-estree': 6.6.0(typescript@5.2.2) + '@typescript-eslint/visitor-keys': 6.6.0 debug: 4.3.4 - eslint: 8.48.0 + eslint: 8.49.0 typescript: 5.2.2 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/scope-manager@6.4.1: - resolution: {integrity: sha512-p/OavqOQfm4/Hdrr7kvacOSFjwQ2rrDVJRPxt/o0TOWdFnjJptnjnZ+sYDR7fi4OimvIuKp+2LCkc+rt9fIW+A==} + /@typescript-eslint/scope-manager@6.6.0: + resolution: {integrity: sha512-pT08u5W/GT4KjPUmEtc2kSYvrH8x89cVzkA0Sy2aaOUIw6YxOIjA8ilwLr/1fLjOedX1QAuBpG9XggWqIIfERw==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.4.1 - '@typescript-eslint/visitor-keys': 6.4.1 + '@typescript-eslint/types': 6.6.0 + '@typescript-eslint/visitor-keys': 6.6.0 dev: true - /@typescript-eslint/type-utils@6.4.1(eslint@8.48.0)(typescript@5.2.2): - resolution: {integrity: sha512-7ON8M8NXh73SGZ5XvIqWHjgX2f+vvaOarNliGhjrJnv1vdjG0LVIz+ToYfPirOoBi56jxAKLfsLm40+RvxVVXA==} + /@typescript-eslint/type-utils@6.6.0(eslint@8.49.0)(typescript@5.2.2): + resolution: {integrity: sha512-8m16fwAcEnQc69IpeDyokNO+D5spo0w1jepWWY2Q6y5ZKNuj5EhVQXjtVAeDDqvW6Yg7dhclbsz6rTtOvcwpHg==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -3075,23 +3198,23 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 6.4.1(typescript@5.2.2) - '@typescript-eslint/utils': 6.4.1(eslint@8.48.0)(typescript@5.2.2) + '@typescript-eslint/typescript-estree': 6.6.0(typescript@5.2.2) + '@typescript-eslint/utils': 6.6.0(eslint@8.49.0)(typescript@5.2.2) debug: 4.3.4 - eslint: 8.48.0 - ts-api-utils: 1.0.2(typescript@5.2.2) + eslint: 8.49.0 + ts-api-utils: 1.0.3(typescript@5.2.2) typescript: 5.2.2 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/types@6.4.1: - resolution: {integrity: sha512-zAAopbNuYu++ijY1GV2ylCsQsi3B8QvfPHVqhGdDcbx/NK5lkqMnCGU53amAjccSpk+LfeONxwzUhDzArSfZJg==} + /@typescript-eslint/types@6.6.0: + resolution: {integrity: sha512-CB6QpJQ6BAHlJXdwUmiaXDBmTqIE2bzGTDLADgvqtHWuhfNP3rAOK7kAgRMAET5rDRr9Utt+qAzRBdu3AhR3sg==} engines: {node: ^16.0.0 || >=18.0.0} dev: true - /@typescript-eslint/typescript-estree@6.4.1(typescript@5.2.2): - resolution: {integrity: sha512-xF6Y7SatVE/OyV93h1xGgfOkHr2iXuo8ip0gbfzaKeGGuKiAnzS+HtVhSPx8Www243bwlW8IF7X0/B62SzFftg==} + /@typescript-eslint/typescript-estree@6.6.0(typescript@5.2.2): + resolution: {integrity: sha512-hMcTQ6Al8MP2E6JKBAaSxSVw5bDhdmbCEhGW/V8QXkb9oNsFkA4SBuOMYVPxD3jbtQ4R/vSODBsr76R6fP3tbA==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: typescript: '*' @@ -3099,42 +3222,42 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 6.4.1 - '@typescript-eslint/visitor-keys': 6.4.1 + '@typescript-eslint/types': 6.6.0 + '@typescript-eslint/visitor-keys': 6.6.0 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 semver: 7.5.4 - ts-api-utils: 1.0.2(typescript@5.2.2) + ts-api-utils: 1.0.3(typescript@5.2.2) typescript: 5.2.2 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/utils@6.4.1(eslint@8.48.0)(typescript@5.2.2): - resolution: {integrity: sha512-F/6r2RieNeorU0zhqZNv89s9bDZSovv3bZQpUNOmmQK1L80/cV4KEu95YUJWi75u5PhboFoKUJBnZ4FQcoqhDw==} + /@typescript-eslint/utils@6.6.0(eslint@8.49.0)(typescript@5.2.2): + resolution: {integrity: sha512-mPHFoNa2bPIWWglWYdR0QfY9GN0CfvvXX1Sv6DlSTive3jlMTUy+an67//Gysc+0Me9pjitrq0LJp0nGtLgftw==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.48.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.49.0) '@types/json-schema': 7.0.12 - '@types/semver': 7.5.0 - '@typescript-eslint/scope-manager': 6.4.1 - '@typescript-eslint/types': 6.4.1 - '@typescript-eslint/typescript-estree': 6.4.1(typescript@5.2.2) - eslint: 8.48.0 + '@types/semver': 7.5.1 + '@typescript-eslint/scope-manager': 6.6.0 + '@typescript-eslint/types': 6.6.0 + '@typescript-eslint/typescript-estree': 6.6.0(typescript@5.2.2) + eslint: 8.49.0 semver: 7.5.4 transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/visitor-keys@6.4.1: - resolution: {integrity: sha512-y/TyRJsbZPkJIZQXrHfdnxVnxyKegnpEvnRGNam7s3TRR2ykGefEWOhaef00/UUN3IZxizS7BTO3svd3lCOJRQ==} + /@typescript-eslint/visitor-keys@6.6.0: + resolution: {integrity: sha512-L61uJT26cMOfFQ+lMZKoJNbAEckLe539VhTxiGHrWl5XSKQgA0RTBZJW2HFPy5T0ZvPVSD93QsrTKDkfNwJGyQ==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.4.1 + '@typescript-eslint/types': 6.6.0 eslint-visitor-keys: 3.4.3 dev: true @@ -3144,9 +3267,9 @@ packages: peerDependencies: vite: ^4.2.0 dependencies: - '@babel/core': 7.22.10 - '@babel/plugin-transform-react-jsx-self': 7.22.5(@babel/core@7.22.10) - '@babel/plugin-transform-react-jsx-source': 7.22.5(@babel/core@7.22.10) + '@babel/core': 7.22.17 + '@babel/plugin-transform-react-jsx-self': 7.22.5(@babel/core@7.22.17) + '@babel/plugin-transform-react-jsx-source': 7.22.5(@babel/core@7.22.17) react-refresh: 0.14.0 vite: 4.4.9(@types/node@17.0.45) transitivePeerDependencies: @@ -3164,8 +3287,8 @@ packages: vue: 3.3.4 dev: true - /@vitest/coverage-istanbul@0.34.3(vitest@0.34.3): - resolution: {integrity: sha512-RdEGzydbbalyDLmmJ5Qm+T3Lrubw/U9iCnhzM2B1V57t4cVa1t6uyfIHdv68d1au4PRzkLhY7Xouwuhb7BeG+Q==} + /@vitest/coverage-istanbul@0.34.4(vitest@0.34.4): + resolution: {integrity: sha512-jJiN+U5drYrv1fU39T8jOVWc3RklYkNeTR7UyiVD8fa+Tbav9pAxq02pti93OPZIDoXwwg+RhFAuRuAz///rkQ==} peerDependencies: vitest: '>=0.32.0 <1' dependencies: @@ -3174,44 +3297,45 @@ packages: istanbul-lib-report: 3.0.1 istanbul-lib-source-maps: 4.0.1 istanbul-reports: 3.1.6 + picocolors: 1.0.0 test-exclude: 6.0.0 - vitest: 0.34.3(jsdom@22.0.0) + vitest: 0.34.4(jsdom@22.1.0) transitivePeerDependencies: - supports-color dev: true - /@vitest/expect@0.34.3: - resolution: {integrity: sha512-F8MTXZUYRBVsYL1uoIft1HHWhwDbSzwAU9Zgh8S6WFC3YgVb4AnFV2GXO3P5Em8FjEYaZtTnQYoNwwBrlOMXgg==} + /@vitest/expect@0.34.4: + resolution: {integrity: sha512-XlMKX8HyYUqB8dsY8Xxrc64J2Qs9pKMt2Z8vFTL4mBWXJsg4yoALHzJfDWi8h5nkO4Zua4zjqtapQ/IluVkSnA==} dependencies: - '@vitest/spy': 0.34.3 - '@vitest/utils': 0.34.3 + '@vitest/spy': 0.34.4 + '@vitest/utils': 0.34.4 chai: 4.3.8 dev: true - /@vitest/runner@0.34.3: - resolution: {integrity: sha512-lYNq7N3vR57VMKMPLVvmJoiN4bqwzZ1euTW+XXYH5kzr3W/+xQG3b41xJn9ChJ3AhYOSoweu974S1V3qDcFESA==} + /@vitest/runner@0.34.4: + resolution: {integrity: sha512-hwwdB1StERqUls8oV8YcpmTIpVeJMe4WgYuDongVzixl5hlYLT2G8afhcdADeDeqCaAmZcSgLTLtqkjPQF7x+w==} dependencies: - '@vitest/utils': 0.34.3 + '@vitest/utils': 0.34.4 p-limit: 4.0.0 pathe: 1.1.1 dev: true - /@vitest/snapshot@0.34.3: - resolution: {integrity: sha512-QyPaE15DQwbnIBp/yNJ8lbvXTZxS00kRly0kfFgAD5EYmCbYcA+1EEyRalc93M0gosL/xHeg3lKAClIXYpmUiQ==} + /@vitest/snapshot@0.34.4: + resolution: {integrity: sha512-GCsh4coc3YUSL/o+BPUo7lHQbzpdttTxL6f4q0jRx2qVGoYz/cyTRDJHbnwks6TILi6560bVWoBpYC10PuTLHw==} dependencies: magic-string: 0.30.3 pathe: 1.1.1 pretty-format: 29.6.3 dev: true - /@vitest/spy@0.34.3: - resolution: {integrity: sha512-N1V0RFQ6AI7CPgzBq9kzjRdPIgThC340DGjdKdPSE8r86aUSmeliTUgkTqLSgtEwWWsGfBQ+UetZWhK0BgJmkQ==} + /@vitest/spy@0.34.4: + resolution: {integrity: sha512-PNU+fd7DUPgA3Ya924b1qKuQkonAW6hL7YUjkON3wmBwSTIlhOSpy04SJ0NrRsEbrXgMMj6Morh04BMf8k+w0g==} dependencies: tinyspy: 2.1.1 dev: true - /@vitest/utils@0.34.3: - resolution: {integrity: sha512-kiSnzLG6m/tiT0XEl4U2H8JDBjFtwVlaE8I3QfGiMFR0QvnRDfYfdP3YvTBWM/6iJDAyaPY6yVQiCTUc7ZzTHA==} + /@vitest/utils@0.34.4: + resolution: {integrity: sha512-yR2+5CHhp/K4ySY0Qtd+CAL9f5Yh1aXrKfAT42bq6CtlGPh92jIDDDSg7ydlRow1CP+dys4TrOrbELOyNInHSg==} dependencies: diff-sequences: 29.6.3 loupe: 2.3.6 @@ -3239,7 +3363,7 @@ packages: /@vue/compiler-core@3.3.4: resolution: {integrity: sha512-cquyDNvZ6jTbf/+x+AgM2Arrp6G4Dzbb0R64jiG804HRMfRiFXWI6kqUVqZ6ZR0bQhIoQjB4+2bhNtVwndW15g==} dependencies: - '@babel/parser': 7.22.13 + '@babel/parser': 7.22.16 '@vue/shared': 3.3.4 estree-walker: 2.0.2 source-map-js: 1.0.2 @@ -3253,15 +3377,15 @@ packages: /@vue/compiler-sfc@2.7.14: resolution: {integrity: sha512-aNmNHyLPsw+sVvlQFQ2/8sjNuLtK54TC6cuKnVzAY93ks4ZBrvwQSnkkIh7bsbNhum5hJBS00wSDipQ937f5DA==} dependencies: - '@babel/parser': 7.22.13 - postcss: 8.4.28 + '@babel/parser': 7.22.16 + postcss: 8.4.29 source-map: 0.6.1 dev: true /@vue/compiler-sfc@3.3.4: resolution: {integrity: sha512-6y/d8uw+5TkCuzBkgLS0v3lSM3hJDntFEiUORM11pQ/hKvkhSKZrXW6i69UyXlJQisJxuUEJKAWEqWbWsLeNKQ==} dependencies: - '@babel/parser': 7.22.13 + '@babel/parser': 7.22.16 '@vue/compiler-core': 3.3.4 '@vue/compiler-dom': 3.3.4 '@vue/compiler-ssr': 3.3.4 @@ -3269,7 +3393,7 @@ packages: '@vue/shared': 3.3.4 estree-walker: 2.0.2 magic-string: 0.30.3 - postcss: 8.4.28 + postcss: 8.4.29 source-map-js: 1.0.2 /@vue/compiler-ssr@3.3.4: @@ -3307,7 +3431,7 @@ packages: /@vue/reactivity-transform@3.3.4: resolution: {integrity: sha512-MXgwjako4nu5WFLAjpBnCj/ieqcjE2aJBINUNQzkZQfzIZA4xn+0fV1tIYBJvvva3N3OvKGofRLvQIwEQPpaXw==} dependencies: - '@babel/parser': 7.22.13 + '@babel/parser': 7.22.16 '@vue/compiler-core': 3.3.4 '@vue/shared': 3.3.4 estree-walker: 2.0.2 @@ -3567,8 +3691,8 @@ packages: resolution: {integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==} dev: true - /array-includes@3.1.6: - resolution: {integrity: sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==} + /array-includes@3.1.7: + resolution: {integrity: sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 @@ -3583,8 +3707,8 @@ packages: engines: {node: '>=8'} dev: true - /array.prototype.findlastindex@1.2.2: - resolution: {integrity: sha512-tb5thFFlUcp7NdNF6/MpDk/1r/4awWG1FIz3YqDf+/zJSTezBb+/5WViH41obXULHVpDzoiCLpJ/ZO9YbJMsdw==} + /array.prototype.findlastindex@1.2.3: + resolution: {integrity: sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 @@ -3594,8 +3718,8 @@ packages: get-intrinsic: 1.2.1 dev: true - /array.prototype.flat@1.3.1: - resolution: {integrity: sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==} + /array.prototype.flat@1.3.2: + resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 @@ -3604,8 +3728,8 @@ packages: es-shim-unscopables: 1.0.0 dev: true - /array.prototype.flatmap@1.3.1: - resolution: {integrity: sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==} + /array.prototype.flatmap@1.3.2: + resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 @@ -3614,8 +3738,8 @@ packages: es-shim-unscopables: 1.0.0 dev: true - /array.prototype.tosorted@1.1.1: - resolution: {integrity: sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==} + /array.prototype.tosorted@1.1.2: + resolution: {integrity: sha512-HuQCHOlk1Weat5jzStICBCd83NxiIMwqDg/dHEsoefabn/hJRj5pVdWcPUSpRrwhwxZOsQassMpgN/xRYFBMIg==} dependencies: call-bind: 1.0.2 define-properties: 1.2.0 @@ -3624,13 +3748,14 @@ packages: get-intrinsic: 1.2.1 dev: true - /arraybuffer.prototype.slice@1.0.1: - resolution: {integrity: sha512-09x0ZWFEjj4WD8PDbykUwo3t9arLn8NIzmmYEJFpYekOAQjpkGSyrQhNoRTcwwcFRu+ycWF78QZ63oWTqSjBcw==} + /arraybuffer.prototype.slice@1.0.2: + resolution: {integrity: sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==} engines: {node: '>= 0.4'} dependencies: array-buffer-byte-length: 1.0.0 call-bind: 1.0.2 define-properties: 1.2.0 + es-abstract: 1.22.1 get-intrinsic: 1.2.1 is-array-buffer: 3.0.2 is-shared-array-buffer: 1.0.2 @@ -3657,7 +3782,7 @@ packages: /ast-metadata-inferer@0.8.0: resolution: {integrity: sha512-jOMKcHht9LxYIEQu+RVd22vtgrPaVCtDRQ/16IGmurdzxvYbDd5ynxjnyrzLnieG96eTcAyaoj/wN/4/1FyyeA==} dependencies: - '@mdn/browser-compat-data': 5.3.9 + '@mdn/browser-compat-data': 5.3.15 dev: true /ast-types@0.14.2: @@ -3713,7 +3838,7 @@ packages: /axios@0.26.1: resolution: {integrity: sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==} dependencies: - follow-redirects: 1.15.1 + follow-redirects: 1.15.2 transitivePeerDependencies: - debug @@ -3737,46 +3862,46 @@ packages: - debug dev: true - /babel-core@7.0.0-bridge.0(@babel/core@7.22.10): + /babel-core@7.0.0-bridge.0(@babel/core@7.22.17): resolution: {integrity: sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.10 + '@babel/core': 7.22.17 dev: false - /babel-eslint@10.1.0(eslint@8.48.0): + /babel-eslint@10.1.0(eslint@8.49.0): resolution: {integrity: sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==} engines: {node: '>=6'} deprecated: babel-eslint is now @babel/eslint-parser. This package will no longer receive updates. peerDependencies: eslint: '>= 4.12.1' dependencies: - '@babel/code-frame': 7.18.6 - '@babel/parser': 7.19.1 - '@babel/traverse': 7.19.1 - '@babel/types': 7.19.0 - eslint: 8.48.0 + '@babel/code-frame': 7.22.13 + '@babel/parser': 7.22.16 + '@babel/traverse': 7.22.17 + '@babel/types': 7.22.17 + eslint: 8.49.0 eslint-visitor-keys: 1.3.0 - resolve: 1.22.1 + resolve: 1.22.4 transitivePeerDependencies: - supports-color dev: true - /babel-jest@27.5.1(@babel/core@7.22.10): + /babel-jest@27.5.1(@babel/core@7.22.17): resolution: {integrity: sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} peerDependencies: '@babel/core': ^7.8.0 dependencies: - '@babel/core': 7.22.10 + '@babel/core': 7.22.17 '@jest/transform': 27.5.1 '@jest/types': 27.5.1 - '@types/babel__core': 7.1.19 + '@types/babel__core': 7.20.1 babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 27.5.1(@babel/core@7.22.10) + babel-preset-jest: 27.5.1(@babel/core@7.22.17) chalk: 4.1.2 - graceful-fs: 4.2.10 + graceful-fs: 4.2.11 slash: 3.0.0 transitivePeerDependencies: - supports-color @@ -3803,178 +3928,143 @@ packages: resolution: {integrity: sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@babel/template': 7.22.5 - '@babel/types': 7.22.15 - '@types/babel__core': 7.1.19 - '@types/babel__traverse': 7.17.1 + '@babel/template': 7.22.15 + '@babel/types': 7.22.17 + '@types/babel__core': 7.20.1 + '@types/babel__traverse': 7.20.1 dev: true - /babel-plugin-jsx-dom-expressions@0.34.7(@babel/core@7.22.10): - resolution: {integrity: sha512-jTxBhu/MQscWdOcLfqKAY8lIiRsv1ivrMQShlePoa4G8S2cFNb93HTWN4FFdp3SpILaibygFXWU3H+aHpoGH/w==} + /babel-plugin-jsx-dom-expressions@0.36.10(@babel/core@7.22.17): + resolution: {integrity: sha512-QA2k/14WGw+RgcGGnEuLWwnu4em6CGhjeXtjvgOYyFHYS2a+CzPeaVQHDOlfuiBcjq/3hWMspHMIMnPEOIzdBg==} peerDependencies: - '@babel/core': ^7.0.0 + '@babel/core': ^7.20.12 dependencies: - '@babel/core': 7.22.10 - '@babel/helper-module-imports': 7.16.0 - '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.22.10) - '@babel/types': 7.22.15 - html-entities: 2.3.2 + '@babel/core': 7.22.17 + '@babel/helper-module-imports': 7.18.6 + '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.22.17) + '@babel/types': 7.22.17 + html-entities: 2.3.3 + validate-html-nesting: 1.2.2 dev: true - /babel-plugin-polyfill-corejs2@0.3.3(@babel/core@7.22.10): - resolution: {integrity: sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/compat-data': 7.22.9 - '@babel/core': 7.22.10 - '@babel/helper-define-polyfill-provider': 0.3.3(@babel/core@7.22.10) - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - /babel-plugin-polyfill-corejs2@0.4.5(@babel/core@7.22.10): + /babel-plugin-polyfill-corejs2@0.4.5(@babel/core@7.22.17): resolution: {integrity: sha512-19hwUH5FKl49JEsvyTcoHakh6BE0wgXLLptIyKZ3PijHc/Ci521wygORCUCCred+E/twuqRyAkE02BAWPmsHOg==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: '@babel/compat-data': 7.22.9 - '@babel/core': 7.22.10 - '@babel/helper-define-polyfill-provider': 0.4.2(@babel/core@7.22.10) + '@babel/core': 7.22.17 + '@babel/helper-define-polyfill-provider': 0.4.2(@babel/core@7.22.17) semver: 6.3.1 transitivePeerDependencies: - supports-color - dev: false - /babel-plugin-polyfill-corejs3@0.6.0(@babel/core@7.22.10): - resolution: {integrity: sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.10 - '@babel/helper-define-polyfill-provider': 0.3.3(@babel/core@7.22.10) - core-js-compat: 3.32.0 - transitivePeerDependencies: - - supports-color - - /babel-plugin-polyfill-corejs3@0.8.3(@babel/core@7.22.10): + /babel-plugin-polyfill-corejs3@0.8.3(@babel/core@7.22.17): resolution: {integrity: sha512-z41XaniZL26WLrvjy7soabMXrfPWARN25PZoriDEiLMxAp50AUW3t35BGQUMg5xK3UrpVTtagIDklxYa+MhiNA==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/core': 7.22.10 - '@babel/helper-define-polyfill-provider': 0.4.2(@babel/core@7.22.10) - core-js-compat: 3.32.0 - transitivePeerDependencies: - - supports-color - dev: false - - /babel-plugin-polyfill-regenerator@0.4.1(@babel/core@7.22.10): - resolution: {integrity: sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.10 - '@babel/helper-define-polyfill-provider': 0.3.3(@babel/core@7.22.10) + '@babel/core': 7.22.17 + '@babel/helper-define-polyfill-provider': 0.4.2(@babel/core@7.22.17) + core-js-compat: 3.32.2 transitivePeerDependencies: - supports-color - /babel-plugin-polyfill-regenerator@0.5.2(@babel/core@7.22.10): + /babel-plugin-polyfill-regenerator@0.5.2(@babel/core@7.22.17): resolution: {integrity: sha512-tAlOptU0Xj34V1Y2PNTL4Y0FOJMDB6bZmoW39FeCQIhigGLkqu3Fj6uiXpxIf6Ij274ENdYx64y6Au+ZKlb1IA==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/core': 7.22.10 - '@babel/helper-define-polyfill-provider': 0.4.2(@babel/core@7.22.10) + '@babel/core': 7.22.17 + '@babel/helper-define-polyfill-provider': 0.4.2(@babel/core@7.22.17) transitivePeerDependencies: - supports-color - dev: false /babel-plugin-syntax-trailing-function-commas@7.0.0-beta.0: resolution: {integrity: sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ==} dev: false - /babel-plugin-transform-flow-enums@0.0.2(@babel/core@7.22.10): + /babel-plugin-transform-flow-enums@0.0.2(@babel/core@7.22.17): resolution: {integrity: sha512-g4aaCrDDOsWjbm0PUUeVnkcVd6AKJsVc/MbnPhEotEpkeJQP6b8nzewohQi7+QS8UyPehOhGWn0nOwjvWpmMvQ==} dependencies: - '@babel/plugin-syntax-flow': 7.22.5(@babel/core@7.22.10) + '@babel/plugin-syntax-flow': 7.22.5(@babel/core@7.22.17) transitivePeerDependencies: - '@babel/core' dev: false - /babel-preset-current-node-syntax@1.0.1(@babel/core@7.22.10): + /babel-preset-current-node-syntax@1.0.1(@babel/core@7.22.17): resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.10 - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.22.10) - '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.22.10) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.22.10) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.22.10) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.22.10) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.22.10) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.10) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.10) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.10) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.22.10) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.10) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.22.10) + '@babel/core': 7.22.17 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.22.17) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.22.17) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.22.17) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.22.17) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.22.17) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.22.17) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.17) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.17) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.17) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.22.17) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.17) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.22.17) dev: true - /babel-preset-fbjs@3.4.0(@babel/core@7.22.10): + /babel-preset-fbjs@3.4.0(@babel/core@7.22.17): resolution: {integrity: sha512-9ywCsCvo1ojrw0b+XYk7aFvTH6D9064t0RIL1rtMf3nsa02Xw41MS7sZw216Im35xj/UY0PDBQsa1brUDDF1Ow==} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.10 - '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.22.10) - '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.22.10) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.22.10) - '@babel/plugin-syntax-flow': 7.22.5(@babel/core@7.22.10) - '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.22.10) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.10) - '@babel/plugin-transform-arrow-functions': 7.22.5(@babel/core@7.22.10) - '@babel/plugin-transform-block-scoped-functions': 7.22.5(@babel/core@7.22.10) - '@babel/plugin-transform-block-scoping': 7.22.10(@babel/core@7.22.10) - '@babel/plugin-transform-classes': 7.22.6(@babel/core@7.22.10) - '@babel/plugin-transform-computed-properties': 7.22.5(@babel/core@7.22.10) - '@babel/plugin-transform-destructuring': 7.22.10(@babel/core@7.22.10) - '@babel/plugin-transform-flow-strip-types': 7.22.5(@babel/core@7.22.10) - '@babel/plugin-transform-for-of': 7.22.5(@babel/core@7.22.10) - '@babel/plugin-transform-function-name': 7.22.5(@babel/core@7.22.10) - '@babel/plugin-transform-literals': 7.22.5(@babel/core@7.22.10) - '@babel/plugin-transform-member-expression-literals': 7.22.5(@babel/core@7.22.10) - '@babel/plugin-transform-modules-commonjs': 7.22.5(@babel/core@7.22.10) - '@babel/plugin-transform-object-super': 7.22.5(@babel/core@7.22.10) - '@babel/plugin-transform-parameters': 7.22.5(@babel/core@7.22.10) - '@babel/plugin-transform-property-literals': 7.22.5(@babel/core@7.22.10) - '@babel/plugin-transform-react-display-name': 7.22.5(@babel/core@7.22.10) - '@babel/plugin-transform-react-jsx': 7.22.5(@babel/core@7.22.10) - '@babel/plugin-transform-shorthand-properties': 7.22.5(@babel/core@7.22.10) - '@babel/plugin-transform-spread': 7.22.5(@babel/core@7.22.10) - '@babel/plugin-transform-template-literals': 7.22.5(@babel/core@7.22.10) + '@babel/core': 7.22.17 + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.22.17) + '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.22.17) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.22.17) + '@babel/plugin-syntax-flow': 7.22.5(@babel/core@7.22.17) + '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.22.17) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.17) + '@babel/plugin-transform-arrow-functions': 7.22.5(@babel/core@7.22.17) + '@babel/plugin-transform-block-scoped-functions': 7.22.5(@babel/core@7.22.17) + '@babel/plugin-transform-block-scoping': 7.22.15(@babel/core@7.22.17) + '@babel/plugin-transform-classes': 7.22.15(@babel/core@7.22.17) + '@babel/plugin-transform-computed-properties': 7.22.5(@babel/core@7.22.17) + '@babel/plugin-transform-destructuring': 7.22.15(@babel/core@7.22.17) + '@babel/plugin-transform-flow-strip-types': 7.22.5(@babel/core@7.22.17) + '@babel/plugin-transform-for-of': 7.22.15(@babel/core@7.22.17) + '@babel/plugin-transform-function-name': 7.22.5(@babel/core@7.22.17) + '@babel/plugin-transform-literals': 7.22.5(@babel/core@7.22.17) + '@babel/plugin-transform-member-expression-literals': 7.22.5(@babel/core@7.22.17) + '@babel/plugin-transform-modules-commonjs': 7.22.15(@babel/core@7.22.17) + '@babel/plugin-transform-object-super': 7.22.5(@babel/core@7.22.17) + '@babel/plugin-transform-parameters': 7.22.15(@babel/core@7.22.17) + '@babel/plugin-transform-property-literals': 7.22.5(@babel/core@7.22.17) + '@babel/plugin-transform-react-display-name': 7.22.5(@babel/core@7.22.17) + '@babel/plugin-transform-react-jsx': 7.22.15(@babel/core@7.22.17) + '@babel/plugin-transform-shorthand-properties': 7.22.5(@babel/core@7.22.17) + '@babel/plugin-transform-spread': 7.22.5(@babel/core@7.22.17) + '@babel/plugin-transform-template-literals': 7.22.5(@babel/core@7.22.17) babel-plugin-syntax-trailing-function-commas: 7.0.0-beta.0 dev: false - /babel-preset-jest@27.5.1(@babel/core@7.22.10): + /babel-preset-jest@27.5.1(@babel/core@7.22.17): resolution: {integrity: sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.10 + '@babel/core': 7.22.17 babel-plugin-jest-hoist: 27.5.1 - babel-preset-current-node-syntax: 1.0.1(@babel/core@7.22.10) + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.22.17) dev: true - /babel-preset-solid@1.5.4(@babel/core@7.22.10): - resolution: {integrity: sha512-pangM+KhBx8J6gRHiaRO4yD/J5gK3sydX+TIoC1TaYjxtVV78GIHRtg/HHtCAfg/iRQCJyiGR9TrN0brG8eDZA==} + /babel-preset-solid@1.7.7(@babel/core@7.22.17): + resolution: {integrity: sha512-tdxVzx3kgcIjNXAOmGRbzIhFBPeJjSakiN9yM+IYdL/+LtXNnbGqb0Va5tJb8Sjbk+QVEriovCyuzB5T7jeTvg==} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.10 - babel-plugin-jsx-dom-expressions: 0.34.7(@babel/core@7.22.10) + '@babel/core': 7.22.17 + babel-plugin-jsx-dom-expressions: 0.36.10(@babel/core@7.22.17) dev: true /balanced-match@1.0.2: @@ -4018,8 +4108,8 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001520 - electron-to-chromium: 1.4.492 + caniuse-lite: 1.0.30001532 + electron-to-chromium: 1.4.513 node-releases: 2.0.13 update-browserslist-db: 1.0.11(browserslist@4.21.10) @@ -4127,16 +4217,6 @@ packages: quick-lru: 4.0.1 dev: true - /camelcase-keys@8.0.2: - resolution: {integrity: sha512-qMKdlOfsjlezMqxkUGGMaWWs17i2HoL15tM+wtx8ld4nLrUwU58TFdvyGOz/piNP842KeO8yXvggVQSdQ828NA==} - engines: {node: '>=14.16'} - dependencies: - camelcase: 7.0.1 - map-obj: 4.3.0 - quick-lru: 6.1.1 - type-fest: 2.19.0 - dev: true - /camelcase@5.3.1: resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} engines: {node: '>=6'} @@ -4146,13 +4226,8 @@ packages: engines: {node: '>=10'} dev: false - /camelcase@7.0.1: - resolution: {integrity: sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==} - engines: {node: '>=14.16'} - dev: true - - /caniuse-lite@1.0.30001520: - resolution: {integrity: sha512-tahF5O9EiiTzwTUqAeFjIZbn4Dnqxzz7ktrgGlMYNLH43Ul26IgTMH/zvL3DG0lZxBYnlT04axvInszUsZULdA==} + /caniuse-lite@1.0.30001532: + resolution: {integrity: sha512-FbDFnNat3nMnrROzqrsg314zhqN5LGQ1kyyMk2opcrwGbVGpHRhgCWtAgD5YJUqNAiQ+dklreil/c3Qf1dfCTw==} /chai@4.3.8: resolution: {integrity: sha512-vX4YvVVtxlfSZ2VecZgFUTU5qPCYsobVI2O9FmwEXBhDigYGQA6jRXCycIs1yJnnWbZ6/+a2zNIF5DfVCcJBFQ==} @@ -4242,6 +4317,12 @@ packages: /cli-spinners@2.6.1: resolution: {integrity: sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==} engines: {node: '>=6'} + dev: true + + /cli-spinners@2.9.0: + resolution: {integrity: sha512-4/aL9X3Wh0yiMQlE+eeRhWP6vclO3QRtw1JHKIT0FFUs5FjpFmESqtMvYZ0+lbzBw900b95mS0hohy+qn2VK/g==} + engines: {node: '>=6'} + dev: false /cliui@6.0.0: resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} @@ -4411,32 +4492,29 @@ packages: - supports-color dev: false - /conventional-changelog-angular@5.0.13: - resolution: {integrity: sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA==} - engines: {node: '>=10'} + /conventional-changelog-angular@6.0.0: + resolution: {integrity: sha512-6qLgrBF4gueoC7AFVHu51nHL9pF9FRjXrH+ceVf7WmAfH3gs+gEYOkvxhjMPjZu57I4AGUGoNTY8V7Hrgf1uqg==} + engines: {node: '>=14'} dependencies: compare-func: 2.0.0 - q: 1.5.1 dev: true - /conventional-commits-parser@3.2.4: - resolution: {integrity: sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q==} - engines: {node: '>=10'} + /conventional-commits-parser@4.0.0: + resolution: {integrity: sha512-WRv5j1FsVM5FISJkoYMR6tPk07fkKT0UodruX4je86V4owk451yjXAKzKAPOs9l7y59E2viHUS9eQ+dfUA9NSg==} + engines: {node: '>=14'} hasBin: true dependencies: JSONStream: 1.3.5 is-text-path: 1.0.1 - lodash: 4.17.21 meow: 8.1.2 split2: 3.2.2 - through2: 4.0.2 dev: true /convert-source-map@1.9.0: resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} - /core-js-compat@3.32.0: - resolution: {integrity: sha512-7a9a3D1k4UCVKnLhrgALyFcP7YCsLOQIxPd0dKjf/6GuPcgyiGP70ewWdCGrSK7evyhymi0qO4EqCmSJofDeYw==} + /core-js-compat@3.32.2: + resolution: {integrity: sha512-+GjlguTDINOijtVRUxrQOv3kfu9rl+qPNdX2LTbJ/ZyVTuxK+ksVSAGX1nHstu4hrv1En/uPTtWgq2gI5wt4AQ==} dependencies: browserslist: 4.21.10 @@ -4468,7 +4546,7 @@ packages: hasBin: true dependencies: cpy: 10.1.0 - meow: 12.0.1 + meow: 12.1.1 dev: true /cpy@10.1.0: @@ -4516,9 +4594,6 @@ packages: rrweb-cssom: 0.6.0 dev: true - /csstype@3.1.0: - resolution: {integrity: sha512-uX1KG+x9h5hIJsaKR9xHUeUraxf8IODOwq9JLNPq6BwB04a/xgpq3rcx47l5BZu5zBPlgD342tdke3Hom/nJRA==} - /csstype@3.1.2: resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} @@ -4543,7 +4618,7 @@ packages: resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==} engines: {node: '>=0.11'} dependencies: - '@babel/runtime': 7.22.11 + '@babel/runtime': 7.22.15 dev: true /dayjs@1.11.9: @@ -4587,33 +4662,18 @@ packages: dependencies: ms: 2.1.2 - /decamelize-keys@1.1.0: - resolution: {integrity: sha512-ocLWuYzRPoS9bfiSdDd3cxvrzovVMZnRDVEzAs+hWIVXGDbHxWMECij2OBuyB/An0FFW/nLuq6Kv1i/YC5Qfzg==} + /decamelize-keys@1.1.1: + resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} engines: {node: '>=0.10.0'} dependencies: decamelize: 1.2.0 map-obj: 1.0.1 dev: true - /decamelize-keys@2.0.1: - resolution: {integrity: sha512-nrNeSCtU2gV3Apcmn/EZ+aR20zKDuNDStV67jPiupokD3sOAFeMzslLMCFdKv1sPqzwoe5ZUhsSW9IAVgKSL/Q==} - engines: {node: '>=14.16'} - dependencies: - decamelize: 6.0.0 - map-obj: 4.3.0 - quick-lru: 6.1.1 - type-fest: 3.11.0 - dev: true - /decamelize@1.2.0: resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} engines: {node: '>=0.10.0'} - /decamelize@6.0.0: - resolution: {integrity: sha512-Fv96DCsdOgB6mdGl67MT5JaTNKRzrzill5OH5s8bjYJXVlcXyPYGyPsUkWyGV5p1TXI5esYIYMMeDJL0hEIwaA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dev: true - /decimal.js@10.4.3: resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} dev: true @@ -4761,6 +4821,11 @@ packages: is-obj: 2.0.0 dev: true + /dotenv-expand@10.0.0: + resolution: {integrity: sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A==} + engines: {node: '>=12'} + dev: true + /dotenv@10.0.0: resolution: {integrity: sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==} engines: {node: '>=10'} @@ -4800,8 +4865,8 @@ packages: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} dev: false - /electron-to-chromium@1.4.492: - resolution: {integrity: sha512-36K9b/6skMVwAIEsC7GiQ8I8N3soCALVSHqWHzNDtGemAcI9Xu8hP02cywWM0A794rTHm0b0zHPeLJHtgFVamQ==} + /electron-to-chromium@1.4.513: + resolution: {integrity: sha512-cOB0xcInjm+E5qIssHeXJ29BaUyWpMyFKT5RB3bsLENDheCja0wMkHJyiPl0NBE/VzDI7JDuNEQWhe6RitEUcw==} /emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -4871,12 +4936,12 @@ packages: engines: {node: '>= 0.4'} dependencies: array-buffer-byte-length: 1.0.0 - arraybuffer.prototype.slice: 1.0.1 + arraybuffer.prototype.slice: 1.0.2 available-typed-arrays: 1.0.5 call-bind: 1.0.2 es-set-tostringtag: 2.0.1 es-to-primitive: 1.2.1 - function.prototype.name: 1.1.5 + function.prototype.name: 1.1.6 get-intrinsic: 1.2.1 get-symbol-description: 1.0.0 globalthis: 1.0.3 @@ -4898,11 +4963,11 @@ packages: object-keys: 1.1.1 object.assign: 4.1.4 regexp.prototype.flags: 1.5.0 - safe-array-concat: 1.0.0 + safe-array-concat: 1.0.1 safe-regex-test: 1.0.0 - string.prototype.trim: 1.2.7 - string.prototype.trimend: 1.0.6 - string.prototype.trimstart: 1.0.6 + string.prototype.trim: 1.2.8 + string.prototype.trimend: 1.0.7 + string.prototype.trimstart: 1.0.7 typed-array-buffer: 1.0.0 typed-array-byte-length: 1.0.0 typed-array-byte-offset: 1.0.0 @@ -4940,8 +5005,8 @@ packages: has-proto: 1.0.1 has-symbols: 1.0.3 internal-slot: 1.0.5 - iterator.prototype: 1.1.0 - safe-array-concat: 1.0.0 + iterator.prototype: 1.1.1 + safe-array-concat: 1.0.1 dev: true /es-set-tostringtag@2.0.1: @@ -5030,13 +5095,13 @@ packages: engines: {node: '>=12'} dev: true - /eslint-config-prettier@9.0.0(eslint@8.48.0): + /eslint-config-prettier@9.0.0(eslint@8.49.0): resolution: {integrity: sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==} hasBin: true peerDependencies: eslint: '>=7.0.0' dependencies: - eslint: 8.48.0 + eslint: 8.49.0 dev: true /eslint-import-resolver-node@0.3.9: @@ -5049,7 +5114,7 @@ packages: - supports-color dev: true - /eslint-import-resolver-typescript@3.6.0(@typescript-eslint/parser@6.4.1)(eslint-plugin-import@2.28.1)(eslint@8.48.0): + /eslint-import-resolver-typescript@3.6.0(@typescript-eslint/parser@6.6.0)(eslint-plugin-import@2.28.1)(eslint@8.49.0): resolution: {integrity: sha512-QTHR9ddNnn35RTxlaEnx2gCxqFlF2SEN0SE2d17SqwyM7YOSI2GHWRYp5BiRkObTUNYPupC/3Fq2a0PpT+EKpg==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -5058,9 +5123,9 @@ packages: dependencies: debug: 4.3.4 enhanced-resolve: 5.15.0 - eslint: 8.48.0 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.4.1)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.0)(eslint@8.48.0) - eslint-plugin-import: 2.28.1(@typescript-eslint/parser@6.4.1)(eslint-import-resolver-typescript@3.6.0)(eslint@8.48.0) + eslint: 8.49.0 + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.6.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.0)(eslint@8.49.0) + eslint-plugin-import: 2.28.1(@typescript-eslint/parser@6.6.0)(eslint-import-resolver-typescript@3.6.0)(eslint@8.49.0) fast-glob: 3.3.1 get-tsconfig: 4.7.0 is-core-module: 2.13.0 @@ -5072,7 +5137,7 @@ packages: - supports-color dev: true - /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.4.1)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.0)(eslint@8.48.0): + /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.6.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.0)(eslint@8.49.0): resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} engines: {node: '>=4'} peerDependencies: @@ -5093,33 +5158,32 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 6.4.1(eslint@8.48.0)(typescript@5.2.2) + '@typescript-eslint/parser': 6.6.0(eslint@8.49.0)(typescript@5.2.2) debug: 3.2.7 - eslint: 8.48.0 + eslint: 8.49.0 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.0(@typescript-eslint/parser@6.4.1)(eslint-plugin-import@2.28.1)(eslint@8.48.0) + eslint-import-resolver-typescript: 3.6.0(@typescript-eslint/parser@6.6.0)(eslint-plugin-import@2.28.1)(eslint@8.49.0) transitivePeerDependencies: - supports-color dev: true - /eslint-plugin-compat@4.1.4(eslint@8.48.0): - resolution: {integrity: sha512-RxySWBmzfIROLFKgeJBJue2BU/6vM2KJWXWAUq+oW4QtrsZXRxbjgxmO1OfF3sHcRuuIenTS/wgo3GyUWZF24w==} + /eslint-plugin-compat@4.2.0(eslint@8.49.0): + resolution: {integrity: sha512-RDKSYD0maWy5r7zb5cWQS+uSPc26mgOzdORJ8hxILmWM7S/Ncwky7BcAtXVY5iRbKjBdHsWU8Yg7hfoZjtkv7w==} engines: {node: '>=14.x'} peerDependencies: eslint: ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - '@mdn/browser-compat-data': 5.3.9 - '@tsconfig/node14': 1.0.3 + '@mdn/browser-compat-data': 5.3.15 ast-metadata-inferer: 0.8.0 browserslist: 4.21.10 - caniuse-lite: 1.0.30001520 - eslint: 8.48.0 + caniuse-lite: 1.0.30001532 + eslint: 8.49.0 find-up: 5.0.0 lodash.memoize: 4.1.2 - semver: 7.3.8 + semver: 7.5.4 dev: true - /eslint-plugin-import@2.28.1(@typescript-eslint/parser@6.4.1)(eslint-import-resolver-typescript@3.6.0)(eslint@8.48.0): + /eslint-plugin-import@2.28.1(@typescript-eslint/parser@6.6.0)(eslint-import-resolver-typescript@3.6.0)(eslint@8.49.0): resolution: {integrity: sha512-9I9hFlITvOV55alzoKBI+K9q74kv0iKMeY6av5+umsNwayt59fz692daGyjR+oStBQgx6nwR9rXldDev3Clw+A==} engines: {node: '>=4'} peerDependencies: @@ -5129,22 +5193,22 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 6.4.1(eslint@8.48.0)(typescript@5.2.2) - array-includes: 3.1.6 - array.prototype.findlastindex: 1.2.2 - array.prototype.flat: 1.3.1 - array.prototype.flatmap: 1.3.1 + '@typescript-eslint/parser': 6.6.0(eslint@8.49.0)(typescript@5.2.2) + array-includes: 3.1.7 + array.prototype.findlastindex: 1.2.3 + array.prototype.flat: 1.3.2 + array.prototype.flatmap: 1.3.2 debug: 3.2.7 doctrine: 2.1.0 - eslint: 8.48.0 + eslint: 8.49.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.4.1)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.0)(eslint@8.48.0) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.6.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.0)(eslint@8.49.0) has: 1.0.3 is-core-module: 2.13.0 is-glob: 4.0.3 minimatch: 3.1.2 - object.fromentries: 2.0.6 - object.groupby: 1.0.0 + object.fromentries: 2.0.7 + object.groupby: 1.0.1 object.values: 1.1.7 semver: 6.3.1 tsconfig-paths: 3.14.2 @@ -5154,38 +5218,38 @@ packages: - supports-color dev: true - /eslint-plugin-react-hooks@4.6.0(eslint@8.48.0): + /eslint-plugin-react-hooks@4.6.0(eslint@8.49.0): resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} engines: {node: '>=10'} peerDependencies: eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 dependencies: - eslint: 8.48.0 + eslint: 8.49.0 dev: true - /eslint-plugin-react@7.33.2(eslint@8.48.0): + /eslint-plugin-react@7.33.2(eslint@8.49.0): resolution: {integrity: sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==} engines: {node: '>=4'} peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 dependencies: - array-includes: 3.1.6 - array.prototype.flatmap: 1.3.1 - array.prototype.tosorted: 1.1.1 + array-includes: 3.1.7 + array.prototype.flatmap: 1.3.2 + array.prototype.tosorted: 1.1.2 doctrine: 2.1.0 es-iterator-helpers: 1.0.14 - eslint: 8.48.0 + eslint: 8.49.0 estraverse: 5.3.0 jsx-ast-utils: 3.3.5 minimatch: 3.1.2 object.entries: 1.1.7 - object.fromentries: 2.0.6 - object.hasown: 1.1.2 + object.fromentries: 2.0.7 + object.hasown: 1.1.3 object.values: 1.1.7 prop-types: 15.8.1 resolve: 2.0.0-next.4 semver: 6.3.1 - string.prototype.matchall: 4.0.8 + string.prototype.matchall: 4.0.9 dev: true /eslint-scope@7.2.2: @@ -5206,16 +5270,16 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /eslint@8.48.0: - resolution: {integrity: sha512-sb6DLeIuRXxeM1YljSe1KEx9/YYeZFQWcV8Rq9HfigmdDEugjLEVEa1ozDjL6YDjBpQHPJxJzze+alxi4T3OLg==} + /eslint@8.49.0: + resolution: {integrity: sha512-jw03ENfm6VJI0jA9U+8H5zfl5b+FvuU3YYvZRdZHOlU2ggJkxrlkJH4HcDrZpj6YwD8kuYqvQM8LyesoazrSOQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.48.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.49.0) '@eslint-community/regexpp': 4.8.0 '@eslint/eslintrc': 2.1.2 - '@eslint/js': 8.48.0 - '@humanwhocodes/config-array': 0.11.10 + '@eslint/js': 8.49.0 + '@humanwhocodes/config-array': 0.11.11 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 ajv: 6.12.6 @@ -5446,14 +5510,6 @@ packages: locate-path: 6.0.0 path-exists: 4.0.0 - /find-up@6.3.0: - resolution: {integrity: sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - locate-path: 7.2.0 - path-exists: 5.0.0 - dev: true - /flat-cache@3.1.0: resolution: {integrity: sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew==} engines: {node: '>=12.0.0'} @@ -5481,15 +5537,6 @@ packages: engines: {node: '>=0.4.0'} dev: false - /follow-redirects@1.15.1: - resolution: {integrity: sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==} - engines: {node: '>=4.0'} - peerDependencies: - debug: '*' - peerDependenciesMeta: - debug: - optional: true - /follow-redirects@1.15.2: resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==} engines: {node: '>=4.0'} @@ -5498,7 +5545,6 @@ packages: peerDependenciesMeta: debug: optional: true - dev: true /for-each@0.3.3: resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} @@ -5536,7 +5582,7 @@ packages: resolution: {integrity: sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==} engines: {node: '>=14.14'} dependencies: - graceful-fs: 4.2.10 + graceful-fs: 4.2.11 jsonfile: 6.1.0 universalify: 2.0.0 dev: true @@ -5570,8 +5616,8 @@ packages: /function-bind@1.1.1: resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} - /function.prototype.name@1.1.5: - resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==} + /function.prototype.name@1.1.6: + resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 @@ -5641,7 +5687,7 @@ packages: split2: 1.0.0 stream-combiner2: 1.1.1 through2: 2.0.5 - traverse: 0.6.6 + traverse: 0.6.7 dev: true /glob-parent@5.1.2: @@ -5658,13 +5704,13 @@ packages: is-glob: 4.0.3 dev: true - /glob@10.3.3: - resolution: {integrity: sha512-92vPiMb/iqpmEgsOoIDvTjc50wf9CCCvMzsi6W0JLPeUKE8TWP1a73PgqSrqy7iAZxaSD1YdzU7QZR5LF51MJw==} + /glob@10.3.4: + resolution: {integrity: sha512-6LFElP3A+i/Q8XQKEvZjkEWEOTgAIALR9AO2rwT8bgPhDd1anmqDJDZ6lLddI4ehxxxR1S5RIqKe1uapMQfYaQ==} engines: {node: '>=16 || 14 >=14.17'} hasBin: true dependencies: foreground-child: 3.1.1 - jackspeak: 2.2.3 + jackspeak: 2.3.3 minimatch: 9.0.3 minipass: 7.0.3 path-scurry: 1.10.1 @@ -5679,7 +5725,6 @@ packages: minimatch: 3.1.2 once: 1.4.0 path-is-absolute: 1.0.1 - dev: true /glob@7.1.6: resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==} @@ -5760,13 +5805,8 @@ packages: get-intrinsic: 1.2.1 dev: true - /graceful-fs@4.2.10: - resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} - dev: true - /graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - requiresBuild: true /graphemer@1.4.0: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} @@ -5858,13 +5898,6 @@ packages: lru-cache: 6.0.0 dev: true - /hosted-git-info@6.1.1: - resolution: {integrity: sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - dependencies: - lru-cache: 7.18.3 - dev: true - /html-encoding-sniffer@3.0.0: resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==} engines: {node: '>=12'} @@ -5872,8 +5905,8 @@ packages: whatwg-encoding: 2.0.0 dev: true - /html-entities@2.3.2: - resolution: {integrity: sha512-c3Ab/url5ksaT0WyleslpBEthOzWhrjQbg75y7XUsfSzi3Dgzt0l8w5e7DylRn15MTlMMD58dTfzddNS2kcAjQ==} + /html-entities@2.3.3: + resolution: {integrity: sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==} dev: true /html-escaper@2.0.2: @@ -6309,8 +6342,8 @@ packages: resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} engines: {node: '>=8'} dependencies: - '@babel/core': 7.22.10 - '@babel/parser': 7.22.13 + '@babel/core': 7.22.17 + '@babel/parser': 7.22.16 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.0 semver: 6.3.1 @@ -6322,8 +6355,8 @@ packages: resolution: {integrity: sha512-x58orMzEVfzPUKqlbLd1hXCnySCxKdDKa6Rjg97CwuLLRI4g3FHTdnExu1OqffVFay6zeMW+T6/DowFLndWnIw==} engines: {node: '>=10'} dependencies: - '@babel/core': 7.22.10 - '@babel/parser': 7.22.13 + '@babel/core': 7.22.17 + '@babel/parser': 7.22.16 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.0 semver: 7.5.4 @@ -6359,18 +6392,17 @@ packages: istanbul-lib-report: 3.0.1 dev: true - /iterator.prototype@1.1.0: - resolution: {integrity: sha512-rjuhAk1AJ1fssphHD0IFV6TWL40CwRZ53FrztKx43yk2v6rguBYsY4Bj1VU4HmoMmKwZUlx7mfnhDf9cOp4YTw==} + /iterator.prototype@1.1.1: + resolution: {integrity: sha512-9E+nePc8C9cnQldmNl6bgpTY6zI4OPRZd97fhJ/iVZ1GifIUDVV5F6x1nEDqpe8KaMEZGT4xgrwKQDxXnjOIZQ==} dependencies: define-properties: 1.2.0 get-intrinsic: 1.2.1 has-symbols: 1.0.3 - has-tostringtag: 1.0.0 - reflect.getprototypeof: 1.0.3 + reflect.getprototypeof: 1.0.4 dev: true - /jackspeak@2.2.3: - resolution: {integrity: sha512-pF0kfjmg8DJLxDrizHoCZGUFz4P4czQ3HyfW4BU0ffebYkzAVlBywp5zaxW/TM+r0sGbmrQdi8EQQVTJFxnGsQ==} + /jackspeak@2.3.3: + resolution: {integrity: sha512-R2bUw+kVZFS/h1AZqBKrSgDmdmjApzgY0AlCPumopFiAlbUxE2gf+SCuBzQ0cP5hHmUmFYF5yw55T97Th5Kstg==} engines: {node: '>=14'} dependencies: '@isaacs/cliui': 8.0.2 @@ -6560,23 +6592,23 @@ packages: resolution: {integrity: sha512-0wM3YBWtYePOjfyXQH5MWQ8H7sdk5EXSwZvmSLKk2RboVQ2Bu239jycHDz5J/8Blf3K0Qnoy2b6xD+z10MFB+Q==} dev: false - /jscodeshift@0.14.0(@babel/preset-env@7.21.5): + /jscodeshift@0.14.0(@babel/preset-env@7.22.15): resolution: {integrity: sha512-7eCC1knD7bLUPuSCwXsMZUH51O8jIcoVyKtI6P0XM0IVzlGjckPy3FIwQlorzbN0Sg79oK+RlohN32Mqf/lrYA==} hasBin: true peerDependencies: '@babel/preset-env': ^7.1.6 dependencies: - '@babel/core': 7.22.10 - '@babel/parser': 7.22.13 - '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.22.10) - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.22.10) - '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.22.10) - '@babel/plugin-transform-modules-commonjs': 7.22.5(@babel/core@7.22.10) - '@babel/preset-env': 7.21.5(@babel/core@7.22.10) - '@babel/preset-flow': 7.22.15(@babel/core@7.22.10) - '@babel/preset-typescript': 7.21.5(@babel/core@7.22.10) - '@babel/register': 7.22.15(@babel/core@7.22.10) - babel-core: 7.0.0-bridge.0(@babel/core@7.22.10) + '@babel/core': 7.22.17 + '@babel/parser': 7.22.16 + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.22.17) + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.22.17) + '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.22.17) + '@babel/plugin-transform-modules-commonjs': 7.22.15(@babel/core@7.22.17) + '@babel/preset-env': 7.22.15(@babel/core@7.22.17) + '@babel/preset-flow': 7.22.15(@babel/core@7.22.17) + '@babel/preset-typescript': 7.22.15(@babel/core@7.22.17) + '@babel/register': 7.22.15(@babel/core@7.22.17) + babel-core: 7.0.0-bridge.0(@babel/core@7.22.17) chalk: 4.1.2 flow-parser: 0.206.0 graceful-fs: 4.2.11 @@ -6590,8 +6622,8 @@ packages: - supports-color dev: false - /jsdom@22.0.0: - resolution: {integrity: sha512-p5ZTEb5h+O+iU02t0GfEjAnkdYPrQSkfuTSMkMYyIoMvUNEHsbG0bHHbfXIcfTqD2UfvjQX7mmgiFsyRwGscVw==} + /jsdom@22.1.0: + resolution: {integrity: sha512-/9AVW7xNbsBv6GfWho4TTNjEo9fe6Zhf9O7s0Fhhr3u+awPwAJMKwAMXnkk5vBxflqLW9hTHX/0cs+P3gW+cQw==} engines: {node: '>=16'} peerDependencies: canvas: ^2.5.0 @@ -6614,13 +6646,13 @@ packages: rrweb-cssom: 0.6.0 saxes: 6.0.0 symbol-tree: 3.2.4 - tough-cookie: 4.1.2 + tough-cookie: 4.1.3 w3c-xmlserializer: 4.0.0 webidl-conversions: 7.0.0 whatwg-encoding: 2.0.0 whatwg-mimetype: 3.0.0 whatwg-url: 12.0.1 - ws: 8.13.0 + ws: 8.14.1 xml-name-validator: 4.0.0 transitivePeerDependencies: - bufferutil @@ -6700,8 +6732,8 @@ packages: resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} engines: {node: '>=4.0'} dependencies: - array-includes: 3.1.6 - array.prototype.flat: 1.3.1 + array-includes: 3.1.7 + array.prototype.flat: 1.3.2 object.assign: 4.1.4 object.values: 1.1.7 dev: true @@ -6783,13 +6815,6 @@ packages: dependencies: p-locate: 5.0.0 - /locate-path@7.2.0: - resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - p-locate: 6.0.0 - dev: true - /lodash.debounce@4.0.8: resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} @@ -6865,13 +6890,8 @@ packages: dependencies: yallist: 4.0.0 - /lru-cache@7.18.3: - resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==} - engines: {node: '>=12'} - dev: true - - /luxon@3.3.0: - resolution: {integrity: sha512-An0UCfG/rSiqtAIiBPO0Y9/zAnHUZxAMiCpTd5h2smgsj7GGmcenvrvww2cqNA8/4A5ZrD1gJpHN2mIHZQF+Mg==} + /luxon@3.4.3: + resolution: {integrity: sha512-tFWBiv3h7z+T/tDaoxA8rqTxy1CHV6gHS//QdaH4pulbq/JuBSGgQspQQqcgnwdAx6pNI7cmvz5Sv/addzHmUg==} engines: {node: '>=12'} dev: true @@ -6931,22 +6951,9 @@ packages: resolution: {integrity: sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==} dev: false - /meow@12.0.1: - resolution: {integrity: sha512-/QOqMALNoKQcJAOOdIXjNLtfcCdLXbMFyB1fOOPdm6RzfBTlsuodOCTBDjVbeUSmgDQb8UI2oONqYGtq1PKKKA==} + /meow@12.1.1: + resolution: {integrity: sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==} engines: {node: '>=16.10'} - dependencies: - '@types/minimist': 1.2.2 - camelcase-keys: 8.0.2 - decamelize: 6.0.0 - decamelize-keys: 2.0.1 - hard-rejection: 2.1.0 - minimist-options: 4.1.0 - normalize-package-data: 5.0.0 - read-pkg-up: 9.1.0 - redent: 4.0.0 - trim-newlines: 5.0.0 - type-fest: 3.11.0 - yargs-parser: 21.1.1 dev: true /meow@8.1.2: @@ -6955,7 +6962,7 @@ packages: dependencies: '@types/minimist': 1.2.2 camelcase-keys: 6.2.2 - decamelize-keys: 1.1.0 + decamelize-keys: 1.1.1 hard-rejection: 2.1.0 minimist-options: 4.1.0 normalize-package-data: 3.0.3 @@ -6978,7 +6985,7 @@ packages: resolution: {integrity: sha512-bgr2OFn0J4r0qoZcHrwEvccF7g9k3wdgTOgk6gmGHrtlZ1Jn3oCpklW/DfZ9PzHfjY2mQammKTc19g/EFGyOJw==} engines: {node: '>=16'} dependencies: - '@babel/core': 7.22.10 + '@babel/core': 7.22.17 hermes-parser: 0.12.0 nullthrows: 1.1.1 transitivePeerDependencies: @@ -7077,65 +7084,65 @@ packages: uglify-es: 3.3.9 dev: false - /metro-react-native-babel-preset@0.76.7(@babel/core@7.22.10): + /metro-react-native-babel-preset@0.76.7(@babel/core@7.22.17): resolution: {integrity: sha512-R25wq+VOSorAK3hc07NW0SmN8z9S/IR0Us0oGAsBcMZnsgkbOxu77Mduqf+f4is/wnWHc5+9bfiqdLnaMngiVw==} engines: {node: '>=16'} peerDependencies: '@babel/core': '*' dependencies: - '@babel/core': 7.22.10 - '@babel/plugin-proposal-async-generator-functions': 7.20.7(@babel/core@7.22.10) - '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.22.10) - '@babel/plugin-proposal-export-default-from': 7.22.5(@babel/core@7.22.10) - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.22.10) - '@babel/plugin-proposal-numeric-separator': 7.18.6(@babel/core@7.22.10) - '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.22.10) - '@babel/plugin-proposal-optional-catch-binding': 7.18.6(@babel/core@7.22.10) - '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.22.10) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.22.10) - '@babel/plugin-syntax-export-default-from': 7.22.5(@babel/core@7.22.10) - '@babel/plugin-syntax-flow': 7.22.5(@babel/core@7.22.10) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.10) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.10) - '@babel/plugin-transform-arrow-functions': 7.22.5(@babel/core@7.22.10) - '@babel/plugin-transform-async-to-generator': 7.22.5(@babel/core@7.22.10) - '@babel/plugin-transform-block-scoping': 7.22.10(@babel/core@7.22.10) - '@babel/plugin-transform-classes': 7.22.6(@babel/core@7.22.10) - '@babel/plugin-transform-computed-properties': 7.22.5(@babel/core@7.22.10) - '@babel/plugin-transform-destructuring': 7.22.10(@babel/core@7.22.10) - '@babel/plugin-transform-flow-strip-types': 7.22.5(@babel/core@7.22.10) - '@babel/plugin-transform-function-name': 7.22.5(@babel/core@7.22.10) - '@babel/plugin-transform-literals': 7.22.5(@babel/core@7.22.10) - '@babel/plugin-transform-modules-commonjs': 7.22.5(@babel/core@7.22.10) - '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.22.10) - '@babel/plugin-transform-parameters': 7.22.5(@babel/core@7.22.10) - '@babel/plugin-transform-react-display-name': 7.22.5(@babel/core@7.22.10) - '@babel/plugin-transform-react-jsx': 7.22.5(@babel/core@7.22.10) - '@babel/plugin-transform-react-jsx-self': 7.18.6(@babel/core@7.22.10) - '@babel/plugin-transform-react-jsx-source': 7.18.6(@babel/core@7.22.10) - '@babel/plugin-transform-runtime': 7.22.15(@babel/core@7.22.10) - '@babel/plugin-transform-shorthand-properties': 7.22.5(@babel/core@7.22.10) - '@babel/plugin-transform-spread': 7.22.5(@babel/core@7.22.10) - '@babel/plugin-transform-sticky-regex': 7.22.5(@babel/core@7.22.10) - '@babel/plugin-transform-typescript': 7.22.10(@babel/core@7.22.10) - '@babel/plugin-transform-unicode-regex': 7.22.5(@babel/core@7.22.10) - '@babel/template': 7.22.5 - babel-plugin-transform-flow-enums: 0.0.2(@babel/core@7.22.10) + '@babel/core': 7.22.17 + '@babel/plugin-proposal-async-generator-functions': 7.20.7(@babel/core@7.22.17) + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.22.17) + '@babel/plugin-proposal-export-default-from': 7.22.17(@babel/core@7.22.17) + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.22.17) + '@babel/plugin-proposal-numeric-separator': 7.18.6(@babel/core@7.22.17) + '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.22.17) + '@babel/plugin-proposal-optional-catch-binding': 7.18.6(@babel/core@7.22.17) + '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.22.17) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.22.17) + '@babel/plugin-syntax-export-default-from': 7.22.5(@babel/core@7.22.17) + '@babel/plugin-syntax-flow': 7.22.5(@babel/core@7.22.17) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.17) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.17) + '@babel/plugin-transform-arrow-functions': 7.22.5(@babel/core@7.22.17) + '@babel/plugin-transform-async-to-generator': 7.22.5(@babel/core@7.22.17) + '@babel/plugin-transform-block-scoping': 7.22.15(@babel/core@7.22.17) + '@babel/plugin-transform-classes': 7.22.15(@babel/core@7.22.17) + '@babel/plugin-transform-computed-properties': 7.22.5(@babel/core@7.22.17) + '@babel/plugin-transform-destructuring': 7.22.15(@babel/core@7.22.17) + '@babel/plugin-transform-flow-strip-types': 7.22.5(@babel/core@7.22.17) + '@babel/plugin-transform-function-name': 7.22.5(@babel/core@7.22.17) + '@babel/plugin-transform-literals': 7.22.5(@babel/core@7.22.17) + '@babel/plugin-transform-modules-commonjs': 7.22.15(@babel/core@7.22.17) + '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.22.17) + '@babel/plugin-transform-parameters': 7.22.15(@babel/core@7.22.17) + '@babel/plugin-transform-react-display-name': 7.22.5(@babel/core@7.22.17) + '@babel/plugin-transform-react-jsx': 7.22.15(@babel/core@7.22.17) + '@babel/plugin-transform-react-jsx-self': 7.22.5(@babel/core@7.22.17) + '@babel/plugin-transform-react-jsx-source': 7.22.5(@babel/core@7.22.17) + '@babel/plugin-transform-runtime': 7.22.15(@babel/core@7.22.17) + '@babel/plugin-transform-shorthand-properties': 7.22.5(@babel/core@7.22.17) + '@babel/plugin-transform-spread': 7.22.5(@babel/core@7.22.17) + '@babel/plugin-transform-sticky-regex': 7.22.5(@babel/core@7.22.17) + '@babel/plugin-transform-typescript': 7.22.15(@babel/core@7.22.17) + '@babel/plugin-transform-unicode-regex': 7.22.5(@babel/core@7.22.17) + '@babel/template': 7.22.15 + babel-plugin-transform-flow-enums: 0.0.2(@babel/core@7.22.17) react-refresh: 0.4.3 transitivePeerDependencies: - supports-color dev: false - /metro-react-native-babel-transformer@0.76.7(@babel/core@7.22.10): + /metro-react-native-babel-transformer@0.76.7(@babel/core@7.22.17): resolution: {integrity: sha512-W6lW3J7y/05ph3c2p3KKJNhH0IdyxdOCbQ5it7aM2MAl0SM4wgKjaV6EYv9b3rHklpV6K3qMH37UKVcjMooWiA==} engines: {node: '>=16'} peerDependencies: '@babel/core': '*' dependencies: - '@babel/core': 7.22.10 - babel-preset-fbjs: 3.4.0(@babel/core@7.22.10) + '@babel/core': 7.22.17 + babel-preset-fbjs: 3.4.0(@babel/core@7.22.17) hermes-parser: 0.12.0 - metro-react-native-babel-preset: 0.76.7(@babel/core@7.22.10) + metro-react-native-babel-preset: 0.76.7(@babel/core@7.22.17) nullthrows: 1.1.1 transitivePeerDependencies: - supports-color @@ -7150,7 +7157,7 @@ packages: resolution: {integrity: sha512-MuWHubQHymUWBpZLwuKZQgA/qbb35WnDAKPo83rk7JRLIFPvzXSvFaC18voPuzJBt1V98lKQIonh6MiC9gd8Ug==} engines: {node: '>=16'} dependencies: - '@babel/runtime': 7.22.11 + '@babel/runtime': 7.22.15 react-refresh: 0.4.3 dev: false @@ -7158,7 +7165,7 @@ packages: resolution: {integrity: sha512-XKahvB+iuYJSCr3QqCpROli4B4zASAYpkK+j3a0CJmokxCDNbgyI4Fp88uIL6rNaZfN0Mv35S0b99SdFXIfHjg==} engines: {node: '>=16'} dependencies: - '@babel/runtime': 7.22.11 + '@babel/runtime': 7.22.15 react-refresh: 0.4.3 dev: false @@ -7166,8 +7173,8 @@ packages: resolution: {integrity: sha512-Prhx7PeRV1LuogT0Kn5VjCuFu9fVD68eefntdWabrksmNY6mXK8pRqzvNJOhTojh6nek+RxBzZeD6MIOOyXS6w==} engines: {node: '>=16'} dependencies: - '@babel/traverse': 7.22.10 - '@babel/types': 7.22.15 + '@babel/traverse': 7.22.17 + '@babel/types': 7.22.17 invariant: 2.2.4 metro-symbolicate: 0.76.7 nullthrows: 1.1.1 @@ -7182,8 +7189,8 @@ packages: resolution: {integrity: sha512-Hh0ncPsHPVf6wXQSqJqB3K9Zbudht4aUtNpNXYXSxH+pteWqGAXnjtPsRAnCsCWl38wL0jYF0rJDdMajUI3BDw==} engines: {node: '>=16'} dependencies: - '@babel/traverse': 7.22.10 - '@babel/types': 7.22.15 + '@babel/traverse': 7.22.17 + '@babel/types': 7.22.17 invariant: 2.2.4 metro-symbolicate: 0.76.8 nullthrows: 1.1.1 @@ -7228,10 +7235,10 @@ packages: resolution: {integrity: sha512-iSmnjVApbdivjuzb88Orb0JHvcEt5veVyFAzxiS5h0QB+zV79w6JCSqZlHCrbNOkOKBED//LqtKbFVakxllnNg==} engines: {node: '>=16'} dependencies: - '@babel/core': 7.22.10 - '@babel/generator': 7.22.10 - '@babel/template': 7.22.5 - '@babel/traverse': 7.22.10 + '@babel/core': 7.22.17 + '@babel/generator': 7.22.15 + '@babel/template': 7.22.15 + '@babel/traverse': 7.22.17 nullthrows: 1.1.1 transitivePeerDependencies: - supports-color @@ -7241,11 +7248,11 @@ packages: resolution: {integrity: sha512-cGvELqFMVk9XTC15CMVzrCzcO6sO1lURfcbgjuuPdzaWuD11eEyocvkTX0DPiRjsvgAmicz4XYxVzgYl3MykDw==} engines: {node: '>=16'} dependencies: - '@babel/core': 7.22.10 - '@babel/generator': 7.22.10 - '@babel/parser': 7.22.13 - '@babel/types': 7.22.15 - babel-preset-fbjs: 3.4.0(@babel/core@7.22.10) + '@babel/core': 7.22.17 + '@babel/generator': 7.22.15 + '@babel/parser': 7.22.16 + '@babel/types': 7.22.17 + babel-preset-fbjs: 3.4.0(@babel/core@7.22.17) metro: 0.76.7 metro-babel-transformer: 0.76.7 metro-cache: 0.76.7 @@ -7266,12 +7273,12 @@ packages: hasBin: true dependencies: '@babel/code-frame': 7.22.13 - '@babel/core': 7.22.10 - '@babel/generator': 7.22.10 - '@babel/parser': 7.22.13 - '@babel/template': 7.22.5 - '@babel/traverse': 7.22.10 - '@babel/types': 7.22.15 + '@babel/core': 7.22.17 + '@babel/generator': 7.22.15 + '@babel/parser': 7.22.16 + '@babel/template': 7.22.15 + '@babel/traverse': 7.22.17 + '@babel/types': 7.22.17 accepts: 1.3.8 async: 3.2.4 chalk: 4.1.2 @@ -7296,7 +7303,7 @@ packages: metro-inspector-proxy: 0.76.7 metro-minify-terser: 0.76.7 metro-minify-uglify: 0.76.7 - metro-react-native-babel-preset: 0.76.7(@babel/core@7.22.10) + metro-react-native-babel-preset: 0.76.7(@babel/core@7.22.17) metro-resolver: 0.76.7 metro-runtime: 0.76.7 metro-source-map: 0.76.7 @@ -7435,8 +7442,8 @@ packages: hasBin: true dev: true - /mlly@1.4.1: - resolution: {integrity: sha512-SCDs78Q2o09jiZiE2WziwVBEqXQ02XkGdUy45cbJf+BpYRIjArXRJ1Wbowxkb+NaM9DWvS3UC9GiO/6eqvQ/pg==} + /mlly@1.4.2: + resolution: {integrity: sha512-i/Ykufi2t1EZ6NaPLdfnZk2AX8cs0d+mTzVKuPfqPKPatxLApaBoxJQ9x1/uckXtrS/U5oisPMDkNs0yQTaBRg==} dependencies: acorn: 8.10.0 pathe: 1.1.1 @@ -7572,16 +7579,6 @@ packages: validate-npm-package-license: 3.0.4 dev: true - /normalize-package-data@5.0.0: - resolution: {integrity: sha512-h9iPVIfrVZ9wVYQnxFgtw1ugSvGEMOlyPWWtm8BMJhnwyEL/FLbYbTY3V3PpjI/BUK67n9PEWDu6eHzu1fB15Q==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - dependencies: - hosted-git-info: 6.1.1 - is-core-module: 2.13.0 - semver: 7.5.4 - validate-npm-package-license: 3.0.4 - dev: true - /normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} @@ -7630,11 +7627,11 @@ packages: resolution: {integrity: sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==} dev: true - /nx-cloud@16.3.0: - resolution: {integrity: sha512-hmNgpeLO4v4WDSWa8YhwX+q+9ohIyY8iqxlWyIKixWzQH2XfRgYFjOLH4IDLGOlKa3hg7MB6+4+75cK9CfSmKw==} + /nx-cloud@16.4.0: + resolution: {integrity: sha512-jbq4hWvDwRlJVpxgMgbmNSkue+6XZSn53R6Vo6qmCAWODJ9KY1BZdZ/9VRL8IX/BRKebVFiXp3SapFB1qPhH8A==} hasBin: true dependencies: - '@nrwl/nx-cloud': 16.3.0 + '@nrwl/nx-cloud': 16.4.0 axios: 1.1.3 chalk: 4.1.2 dotenv: 10.0.0 @@ -7648,8 +7645,8 @@ packages: - debug dev: true - /nx@16.7.4: - resolution: {integrity: sha512-L0Cbikk5kO+IBH0UQ2BOAut5ndeHXBlACKzjOPOCluY8WYh2sxWYt9/N/juFBN3XXRX7ionTr1PhWUzNE0Mzqw==} + /nx@16.8.1: + resolution: {integrity: sha512-K5KrwNdPz0eEe6SY5wrnhZcigjfIJkttPrIJRXNBQTE50NGcOfz1TjMXPdTWBxBCCua5PAealO3OrE8jpv+QnQ==} hasBin: true requiresBuild: true peerDependencies: @@ -7661,7 +7658,7 @@ packages: '@swc/core': optional: true dependencies: - '@nrwl/tao': 16.7.4 + '@nrwl/tao': 16.8.1 '@parcel/watcher': 2.0.4 '@yarnpkg/lockfile': 1.1.0 '@yarnpkg/parsers': 3.0.0-rc.46 @@ -7672,6 +7669,7 @@ packages: cli-spinners: 2.6.1 cliui: 7.0.4 dotenv: 16.3.1 + dotenv-expand: 10.0.0 enquirer: 2.3.6 fast-glob: 3.2.7 figures: 3.2.0 @@ -7697,16 +7695,16 @@ packages: yargs: 17.7.2 yargs-parser: 21.1.1 optionalDependencies: - '@nx/nx-darwin-arm64': 16.7.4 - '@nx/nx-darwin-x64': 16.7.4 - '@nx/nx-freebsd-x64': 16.7.4 - '@nx/nx-linux-arm-gnueabihf': 16.7.4 - '@nx/nx-linux-arm64-gnu': 16.7.4 - '@nx/nx-linux-arm64-musl': 16.7.4 - '@nx/nx-linux-x64-gnu': 16.7.4 - '@nx/nx-linux-x64-musl': 16.7.4 - '@nx/nx-win32-arm64-msvc': 16.7.4 - '@nx/nx-win32-x64-msvc': 16.7.4 + '@nx/nx-darwin-arm64': 16.8.1 + '@nx/nx-darwin-x64': 16.8.1 + '@nx/nx-freebsd-x64': 16.8.1 + '@nx/nx-linux-arm-gnueabihf': 16.8.1 + '@nx/nx-linux-arm64-gnu': 16.8.1 + '@nx/nx-linux-arm64-musl': 16.8.1 + '@nx/nx-linux-x64-gnu': 16.8.1 + '@nx/nx-linux-x64-musl': 16.8.1 + '@nx/nx-win32-arm64-msvc': 16.8.1 + '@nx/nx-win32-x64-msvc': 16.8.1 transitivePeerDependencies: - debug dev: true @@ -7761,8 +7759,8 @@ packages: es-abstract: 1.22.1 dev: true - /object.fromentries@2.0.6: - resolution: {integrity: sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==} + /object.fromentries@2.0.7: + resolution: {integrity: sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 @@ -7770,8 +7768,8 @@ packages: es-abstract: 1.22.1 dev: true - /object.groupby@1.0.0: - resolution: {integrity: sha512-70MWG6NfRH9GnbZOikuhPPYzpUpof9iW2J9E4dW7FXTqPNb6rllE6u39SKwwiNh8lCwX3DDb5OgcKGiEBrTTyw==} + /object.groupby@1.0.1: + resolution: {integrity: sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==} dependencies: call-bind: 1.0.2 define-properties: 1.2.0 @@ -7779,8 +7777,8 @@ packages: get-intrinsic: 1.2.1 dev: true - /object.hasown@1.1.2: - resolution: {integrity: sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==} + /object.hasown@1.1.3: + resolution: {integrity: sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==} dependencies: define-properties: 1.2.0 es-abstract: 1.22.1 @@ -7860,7 +7858,7 @@ packages: bl: 4.1.0 chalk: 4.1.2 cli-cursor: 3.1.0 - cli-spinners: 2.6.1 + cli-spinners: 2.9.0 is-interactive: 1.0.0 is-unicode-supported: 0.1.0 log-symbols: 4.1.0 @@ -7925,13 +7923,6 @@ packages: dependencies: p-limit: 3.1.0 - /p-locate@6.0.0: - resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - p-limit: 4.0.0 - dev: true - /p-map@5.5.0: resolution: {integrity: sha512-VFqfGDHlx87K66yZrNdI4YGtD70IRyd+zSvgks6mzHPRNkoKy+9EKP4SFC77/vTTQYmRmti7dvqC+m5jBrBAcg==} engines: {node: '>=12'} @@ -7998,11 +7989,6 @@ packages: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} - /path-exists@5.0.0: - resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dev: true - /path-is-absolute@1.0.1: resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} engines: {node: '>=0.10.0'} @@ -8067,7 +8053,7 @@ packages: resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==} dependencies: jsonc-parser: 3.2.0 - mlly: 1.4.1 + mlly: 1.4.2 pathe: 1.1.1 dev: true @@ -8085,11 +8071,11 @@ packages: dependencies: lilconfig: 2.1.0 ts-node: 10.9.1(@types/node@17.0.45)(typescript@5.2.2) - yaml: 2.3.1 + yaml: 2.3.2 dev: true - /postcss@8.4.28: - resolution: {integrity: sha512-Z7V5j0cq8oEKyejIKfpD8b4eBy9cwW2JWPk0+fB1HOAMsfHbnAXLLS+PfVWlzMSLQaWttKDt607I0XHmpE67Vw==} + /postcss@8.4.29: + resolution: {integrity: sha512-cbI+jaqIeu/VGqXEarWkRCCffhjgXc0qjBtXpqJhTBohMUjUQnbBr0xqX3vEKudc4iviTewcJo5ajcec5+wdJw==} engines: {node: ^10 || ^12 || >=14} dependencies: nanoid: 3.3.6 @@ -8101,8 +8087,8 @@ packages: engines: {node: '>= 0.8.0'} dev: true - /prettier@3.0.2: - resolution: {integrity: sha512-o2YR9qtniXvwEZlOKbveKfDQVyqxbEIWn48Z8m3ZJjBjcCmUy3xZGIv+7AkaeuaTr6yPXJjwv07ZWlsWbEy1rQ==} + /prettier@3.0.3: + resolution: {integrity: sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==} engines: {node: '>=14'} hasBin: true dev: true @@ -8157,6 +8143,9 @@ packages: object-assign: 4.1.1 react-is: 16.13.1 + /property-expr@2.0.6: + resolution: {integrity: sha512-SVtmxhRE/CGkn3eZY1T6pC8Nln6Fr/lu1mKSgRud0eC73whjGfoAogbn78LkD8aFL0zz3bAFerKSnOl7NlErBA==} + /proto-list@1.2.4: resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} dev: true @@ -8173,8 +8162,8 @@ packages: resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} dev: true - /publint@0.1.15: - resolution: {integrity: sha512-LyoUm/J1oSOik9EYftHSyUEwJATToqFyO1wad8i2m2KvaNcBmV5rbD3ZvPqQAHzVs47MLa2Rsd8nw9NmV/Ep0w==} + /publint@0.1.16: + resolution: {integrity: sha512-wJgk7HnXDT5Ap0DjFYbGz78kPkN44iQvDiaq8P63IEEyNU9mYXvaMd2cAyIM6OgqXM/IA3CK6XWIsRq+wjNpgw==} engines: {node: '>=16'} hasBin: true dependencies: @@ -8188,11 +8177,6 @@ packages: engines: {node: '>=6'} dev: true - /q@1.5.1: - resolution: {integrity: sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==} - engines: {node: '>=0.6.0', teleport: '>=0.2.0'} - dev: true - /querystringify@2.2.0: resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} dev: true @@ -8212,11 +8196,6 @@ packages: engines: {node: '>=8'} dev: true - /quick-lru@6.1.1: - resolution: {integrity: sha512-S27GBT+F0NTRiehtbrgaSE1idUAJ5bX8dPAQTdylEyNlrdcH5X4Lz7Edz3DYzecbsCluD5zO8ZNEe04z3D3u6Q==} - engines: {node: '>=12'} - dev: true - /range-parser@1.2.1: resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} engines: {node: '>= 0.6'} @@ -8258,7 +8237,7 @@ packages: peerDependencies: react: '>=16.13.1' dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.22.15 react: 18.2.0 dev: true @@ -8271,7 +8250,7 @@ packages: /react-is@18.2.0: resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} - /react-native@0.72.4(@babel/core@7.22.10)(@babel/preset-env@7.21.5)(react@18.2.0): + /react-native@0.72.4(@babel/core@7.22.17)(@babel/preset-env@7.22.15)(react@18.2.0): resolution: {integrity: sha512-+vrObi0wZR+NeqL09KihAAdVlQ9IdplwznJWtYrjnQ4UbCW6rkzZJebRsugwUneSOKNFaHFEo1uKU89HsgtYBg==} engines: {node: '>=16'} hasBin: true @@ -8279,11 +8258,11 @@ packages: react: 18.2.0 dependencies: '@jest/create-cache-key-function': 29.6.3 - '@react-native-community/cli': 11.3.6(@babel/core@7.22.10) + '@react-native-community/cli': 11.3.6(@babel/core@7.22.17) '@react-native-community/cli-platform-android': 11.3.6 '@react-native-community/cli-platform-ios': 11.3.6 '@react-native/assets-registry': 0.72.0 - '@react-native/codegen': 0.72.6(@babel/preset-env@7.21.5) + '@react-native/codegen': 0.72.6(@babel/preset-env@7.22.15) '@react-native/gradle-plugin': 0.72.11 '@react-native/js-polyfills': 0.72.1 '@react-native/normalize-colors': 0.72.0 @@ -8367,15 +8346,6 @@ packages: type-fest: 0.8.1 dev: true - /read-pkg-up@9.1.0: - resolution: {integrity: sha512-vaMRR1AC1nrd5CQM0PhlRsO5oc2AAigqr7cCrZ/MW/Rsaflz4RlgzkpL4qoU/z1F6wrbd85iFv1OQj/y5RdGvg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - find-up: 6.3.0 - read-pkg: 7.1.0 - type-fest: 2.19.0 - dev: true - /read-pkg@5.2.0: resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} engines: {node: '>=8'} @@ -8386,16 +8356,6 @@ packages: type-fest: 0.6.0 dev: true - /read-pkg@7.1.0: - resolution: {integrity: sha512-5iOehe+WF75IccPc30bWTbpdDQLOCc3Uu8bi3Dte3Eueij81yx1Mrufk8qBx/YAbR4uL1FdUr+7BKXDwEtisXg==} - engines: {node: '>=12.20'} - dependencies: - '@types/normalize-package-data': 2.4.1 - normalize-package-data: 3.0.3 - parse-json: 5.2.0 - type-fest: 2.19.0 - dev: true - /readable-stream@2.3.8: resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} dependencies: @@ -8454,16 +8414,8 @@ packages: strip-indent: 3.0.0 dev: true - /redent@4.0.0: - resolution: {integrity: sha512-tYkDkVVtYkSVhuQ4zBgfvciymHaeuel+zFKXShfDnFP5SyVEP7qo70Rf1jTOTCx3vGNAbnEi/xFkcfQVMIBWag==} - engines: {node: '>=12'} - dependencies: - indent-string: 5.0.0 - strip-indent: 4.0.0 - dev: true - - /reflect.getprototypeof@1.0.3: - resolution: {integrity: sha512-TTAOZpkJ2YLxl7mVHWrNo3iDMEkYlva/kgFcXndqMgbo/AZUmmavEkdXV+hXtE4P8xdyEKRzalaFqZVuwIk/Nw==} + /reflect.getprototypeof@1.0.4: + resolution: {integrity: sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 @@ -8485,6 +8437,7 @@ packages: /regenerator-runtime@0.13.11: resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} + dev: false /regenerator-runtime@0.14.0: resolution: {integrity: sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==} @@ -8492,7 +8445,7 @@ packages: /regenerator-transform@0.15.2: resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==} dependencies: - '@babel/runtime': 7.22.11 + '@babel/runtime': 7.22.15 /regexp.prototype.flags@1.5.0: resolution: {integrity: sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==} @@ -8551,15 +8504,6 @@ packages: resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} dev: true - /resolve@1.22.1: - resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} - hasBin: true - dependencies: - is-core-module: 2.13.0 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - dev: true - /resolve@1.22.4: resolution: {integrity: sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==} hasBin: true @@ -8600,18 +8544,18 @@ packages: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} hasBin: true dependencies: - glob: 7.2.3 + glob: 7.1.4 /rimraf@5.0.1: resolution: {integrity: sha512-OfFZdwtd3lZ+XZzYP/6gTACubwFcHdLRqS9UX3UwpU2dnGQYkPFISRwvM3w9IiB2w7bW5qGo/uAwE4SmXXSKvg==} engines: {node: '>=14'} hasBin: true dependencies: - glob: 10.3.3 + glob: 10.3.4 dev: true - /rollup@3.28.1: - resolution: {integrity: sha512-R9OMQmIHJm9znrU3m3cpE8uhN0fGdXiawME7aZIpQqvpS/85+Vt1Hq1/yVIcYfOmaQiHjvXkQAoJukvLpau6Yw==} + /rollup@3.29.1: + resolution: {integrity: sha512-c+ebvQz0VIH4KhhCpDsI+Bik0eT8ZFEVZEYw0cGMVqIP8zc+gnwl7iXCamTw7vzv2MeuZFZfdx5JJIq+ehzDlg==} engines: {node: '>=14.18.0', npm: '>=8.0.0'} hasBin: true optionalDependencies: @@ -8641,8 +8585,8 @@ packages: mri: 1.2.0 dev: true - /safe-array-concat@1.0.0: - resolution: {integrity: sha512-9dVEFruWIsnie89yym+xWTAYASdpw3CJV7Li/6zBewGf9z2i1j31rP6jnY0pHEO4QZh6N0K11bFjWmdR8UGdPQ==} + /safe-array-concat@1.0.1: + resolution: {integrity: sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==} engines: {node: '>=0.4'} dependencies: call-bind: 1.0.2 @@ -8702,14 +8646,6 @@ packages: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true - /semver@7.3.8: - resolution: {integrity: sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==} - engines: {node: '>=10'} - hasBin: true - dependencies: - lru-cache: 6.0.0 - dev: true - /semver@7.5.3: resolution: {integrity: sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==} engines: {node: '>=10'} @@ -8751,6 +8687,11 @@ packages: engines: {node: '>=0.10.0'} dev: false + /seroval@0.5.1: + resolution: {integrity: sha512-ZfhQVB59hmIauJG5Ydynupy8KHyr5imGNtdDhbZG68Ufh1Ynkv9KOYOAABf71oVbQxJ8VkWnMHAjEHE7fWkH5g==} + engines: {node: '>=10'} + dev: true + /serve-static@1.15.0: resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} engines: {node: '>= 0.8.0'} @@ -8845,10 +8786,11 @@ packages: is-fullwidth-code-point: 2.0.0 dev: false - /solid-js@1.6.13: - resolution: {integrity: sha512-/zcyeect3QnmcD58754IpOU/SzX3s9N19RlRVoKRz3tNpzvel7QKO4FX/PpIFQH6n/pxWq6rSh6b9fwe20XUvw==} + /solid-js@1.7.11: + resolution: {integrity: sha512-JkuvsHt8jqy7USsy9xJtT18aF9r2pFO+GB8JQ2XGTvtF49rGTObB46iebD25sE3qVNvIbwglXOXdALnJq9IHtQ==} dependencies: - csstype: 3.1.0 + csstype: 3.1.2 + seroval: 0.5.1 dev: true /source-map-js@1.0.2: @@ -8891,11 +8833,11 @@ packages: resolution: {integrity: sha512-gRjMgK5uFjbCvdibeGJuy3I5OYz6VLoVdsOJdA6wV0WlfQVLFueoqMxwwYD9RODdgb6oUIvlRlsyFSiQkMKu0g==} dev: true - /spdx-correct@3.1.1: - resolution: {integrity: sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==} + /spdx-correct@3.2.0: + resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} dependencies: spdx-expression-parse: 3.0.1 - spdx-license-ids: 3.0.11 + spdx-license-ids: 3.0.13 dev: true /spdx-exceptions@2.3.0: @@ -8906,11 +8848,11 @@ packages: resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} dependencies: spdx-exceptions: 2.3.0 - spdx-license-ids: 3.0.11 + spdx-license-ids: 3.0.13 dev: true - /spdx-license-ids@3.0.11: - resolution: {integrity: sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==} + /spdx-license-ids@3.0.13: + resolution: {integrity: sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==} dev: true /split2@1.0.0: @@ -9001,8 +8943,8 @@ packages: strip-ansi: 7.1.0 dev: true - /string.prototype.matchall@4.0.8: - resolution: {integrity: sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==} + /string.prototype.matchall@4.0.9: + resolution: {integrity: sha512-6i5hL3MqG/K2G43mWXWgP+qizFW/QH/7kCNN13JrJS5q48FN5IKksLDscexKP3dnmB6cdm9jlNgAsWNLpSykmA==} dependencies: call-bind: 1.0.2 define-properties: 1.2.0 @@ -9014,8 +8956,8 @@ packages: side-channel: 1.0.4 dev: true - /string.prototype.trim@1.2.7: - resolution: {integrity: sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==} + /string.prototype.trim@1.2.8: + resolution: {integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 @@ -9023,16 +8965,16 @@ packages: es-abstract: 1.22.1 dev: true - /string.prototype.trimend@1.0.6: - resolution: {integrity: sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==} + /string.prototype.trimend@1.0.7: + resolution: {integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==} dependencies: call-bind: 1.0.2 define-properties: 1.2.0 es-abstract: 1.22.1 dev: true - /string.prototype.trimstart@1.0.6: - resolution: {integrity: sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==} + /string.prototype.trimstart@1.0.7: + resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==} dependencies: call-bind: 1.0.2 define-properties: 1.2.0 @@ -9090,13 +9032,6 @@ packages: min-indent: 1.0.1 dev: true - /strip-indent@4.0.0: - resolution: {integrity: sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==} - engines: {node: '>=12'} - dependencies: - min-indent: 1.0.1 - dev: true - /strip-json-comments@3.1.1: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} @@ -9253,16 +9188,13 @@ packages: readable-stream: 2.3.8 xtend: 4.0.2 - /through2@4.0.2: - resolution: {integrity: sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==} - dependencies: - readable-stream: 3.6.2 - dev: true - /through@2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} dev: true + /tiny-case@1.0.3: + resolution: {integrity: sha512-Eet/eeMhkO6TX8mnUteS9zgPbUMQa4I6Kkp5ORiBD5476/m+PIRiumP5tmh5ioJpH7k51Kehawy2UDfsnxxY8Q==} + /tinybench@2.5.0: resolution: {integrity: sha512-kRwSG8Zx4tjF9ZiyH4bhaebu+EDz1BOx9hOigYHlUW4xxI/wKIUQUqo018UlU4ar6ATPBsaMrdbKZ+tmPdohFA==} dev: true @@ -9302,8 +9234,11 @@ packages: engines: {node: '>=0.6'} dev: false - /tough-cookie@4.1.2: - resolution: {integrity: sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==} + /toposort@2.0.2: + resolution: {integrity: sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==} + + /tough-cookie@4.1.3: + resolution: {integrity: sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==} engines: {node: '>=6'} dependencies: psl: 1.9.0 @@ -9329,8 +9264,8 @@ packages: punycode: 2.3.0 dev: true - /traverse@0.6.6: - resolution: {integrity: sha512-kdf4JKs8lbARxWdp7RKdNzoJBhGUcIalSYibuGyHJbmk40pOysQ0+QPvlkCOICOivDWU2IJo2rkrxyTK2AH4fw==} + /traverse@0.6.7: + resolution: {integrity: sha512-/y956gpUo9ZNCb99YjxG7OaslxZWHfCHAUUfshwqOXmxUIvqLjVO581BT+gM59+QV9tFe6/CGG53tsA1Y7RSdg==} dev: true /tree-kill@1.2.2: @@ -9343,13 +9278,8 @@ packages: engines: {node: '>=8'} dev: true - /trim-newlines@5.0.0: - resolution: {integrity: sha512-kstfs+hgwmdsOadN3KgA+C68wPJwnZq4DN6WMDCvZapDWEF34W2TyPKN2v2+BJnZgIz5QOfxFeldLyYvdgRAwg==} - engines: {node: '>=14.16'} - dev: true - - /ts-api-utils@1.0.2(typescript@5.2.2): - resolution: {integrity: sha512-Cbu4nIqnEdd+THNEsBdkolnOXhg0I8XteoHaEKgvsxpsbWda4IsUut2c187HxywQCvveojow0Dgw/amxtSKVkQ==} + /ts-api-utils@1.0.3(typescript@5.2.2): + resolution: {integrity: sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==} engines: {node: '>=16.13.0'} peerDependencies: typescript: '>=4.2.0' @@ -9413,7 +9343,7 @@ packages: /tslib@2.6.2: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} - /tsup@7.2.0(ts-node@10.9.1)(typescript@5.2.2): + /tsup@7.2.0(patch_hash=gwbgl3s5ycyzg75lofcbklamcy)(ts-node@10.9.1)(typescript@5.2.2): resolution: {integrity: sha512-vDHlczXbgUvY3rWvqFEbSqmC1L7woozbzngMqTtL2PGBODTtWlRwGDDawhvWzr5c1QjKe4OAKqJGfE1xeXUvtQ==} engines: {node: '>=16.14'} hasBin: true @@ -9439,7 +9369,7 @@ packages: joycon: 3.1.1 postcss-load-config: 4.0.1(ts-node@10.9.1) resolve-from: 5.0.0 - rollup: 3.28.1 + rollup: 3.29.1 source-map: 0.8.0-beta.0 sucrase: 3.34.0 tree-kill: 1.2.2 @@ -9448,6 +9378,7 @@ packages: - supports-color - ts-node dev: true + patched: true /type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} @@ -9488,10 +9419,9 @@ packages: /type-fest@2.19.0: resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} engines: {node: '>=12.20'} - dev: true - /type-fest@3.11.0: - resolution: {integrity: sha512-JaPw5U9ixP0XcpUbQoVSbxSDcK/K4nww20C3kjm9yE6cDRRhptU28AH60VWf9ltXmCrIfIbtt9J+2OUk2Uqiaw==} + /type-fest@3.13.1: + resolution: {integrity: sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==} engines: {node: '>=14.16'} dev: true @@ -9630,7 +9560,7 @@ packages: requires-port: 1.0.0 dev: true - /use-isomorphic-layout-effect@1.1.2(@types/react@18.0.15)(react@18.2.0): + /use-isomorphic-layout-effect@1.1.2(@types/react@18.2.21)(react@18.2.0): resolution: {integrity: sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==} peerDependencies: '@types/react': '*' @@ -9639,7 +9569,7 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.0.15 + '@types/react': 18.2.21 react: 18.2.0 dev: false @@ -9667,10 +9597,14 @@ packages: resolution: {integrity: sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==} dev: true + /validate-html-nesting@1.2.2: + resolution: {integrity: sha512-hGdgQozCsQJMyfK5urgFcWEqsSSrK63Awe0t/IMR0bZ0QMtnuaiHzThW81guu3qx9abLi99NEuiaN6P9gVYsNg==} + dev: true + /validate-npm-package-license@3.0.4: resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} dependencies: - spdx-correct: 3.1.1 + spdx-correct: 3.2.0 spdx-expression-parse: 3.0.1 dev: true @@ -9679,14 +9613,14 @@ packages: engines: {node: '>= 0.8'} dev: false - /vite-node@0.34.3(@types/node@17.0.45): - resolution: {integrity: sha512-+0TzJf1g0tYXj6tR2vEyiA42OPq68QkRZCu/ERSo2PtsDJfBpDyEfuKbRvLmZqi/CgC7SCBtyC+WjTGNMRIaig==} + /vite-node@0.34.4(@types/node@17.0.45): + resolution: {integrity: sha512-ho8HtiLc+nsmbwZMw8SlghESEE3KxJNp04F/jPUCLVvaURwt0d+r9LxEqCX5hvrrOQ0GSyxbYr5ZfRYhQ0yVKQ==} engines: {node: '>=v14.18.0'} hasBin: true dependencies: cac: 6.7.14 debug: 4.3.4 - mlly: 1.4.1 + mlly: 1.4.2 pathe: 1.1.1 picocolors: 1.0.0 vite: 4.4.9(@types/node@17.0.45) @@ -9731,14 +9665,14 @@ packages: dependencies: '@types/node': 17.0.45 esbuild: 0.18.20 - postcss: 8.4.28 - rollup: 3.28.1 + postcss: 8.4.29 + rollup: 3.29.1 optionalDependencies: fsevents: 2.3.3 dev: true - /vitest@0.34.3(jsdom@22.0.0): - resolution: {integrity: sha512-7+VA5Iw4S3USYk+qwPxHl8plCMhA5rtfwMjgoQXMT7rO5ldWcdsdo3U1QD289JgglGK4WeOzgoLTsGFu6VISyQ==} + /vitest@0.34.4(jsdom@22.1.0): + resolution: {integrity: sha512-SE/laOsB6995QlbSE6BtkpXDeVNLJc1u2LHRG/OpnN4RsRzM3GQm4nm3PQCK5OBtrsUqnhzLdnT7se3aeNGdlw==} engines: {node: '>=v14.18.0'} hasBin: true peerDependencies: @@ -9768,20 +9702,20 @@ packages: webdriverio: optional: true dependencies: - '@types/chai': 4.3.5 + '@types/chai': 4.3.6 '@types/chai-subset': 1.3.3 '@types/node': 17.0.45 - '@vitest/expect': 0.34.3 - '@vitest/runner': 0.34.3 - '@vitest/snapshot': 0.34.3 - '@vitest/spy': 0.34.3 - '@vitest/utils': 0.34.3 + '@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.10.0 acorn-walk: 8.2.0 cac: 6.7.14 chai: 4.3.8 debug: 4.3.4 - jsdom: 22.0.0 + jsdom: 22.1.0 local-pkg: 0.4.3 magic-string: 0.30.3 pathe: 1.1.1 @@ -9791,7 +9725,7 @@ packages: tinybench: 2.5.0 tinypool: 0.7.0 vite: 4.4.9(@types/node@17.0.45) - vite-node: 0.34.3(@types/node@17.0.45) + vite-node: 0.34.4(@types/node@17.0.45) why-is-node-running: 2.2.2 transitivePeerDependencies: - less @@ -9950,7 +9884,7 @@ packages: resolution: {integrity: sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==} engines: {node: '>= 0.4'} dependencies: - function.prototype.name: 1.1.5 + function.prototype.name: 1.1.6 has-tostringtag: 1.0.0 is-async-function: 2.0.0 is-date-object: 1.0.5 @@ -10084,8 +10018,8 @@ packages: optional: true dev: false - /ws@8.13.0: - resolution: {integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==} + /ws@8.14.1: + resolution: {integrity: sha512-4OOseMUq8AzRBI/7SLMUwO+FEDnguetSk7KMb1sHwvF2w2Wv5Hoj0nlifx8vtGsftE/jWHojPy8sMMzYLJ2G/A==} engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 @@ -10128,8 +10062,8 @@ packages: /yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - /yaml@2.3.1: - resolution: {integrity: sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==} + /yaml@2.3.2: + resolution: {integrity: sha512-N/lyzTPaJasoDmfV7YTrYCI0G/3ivm/9wdG0aHuheKowWQwGTsK0Eoiw6utmzAnI6pkJa0DUVygvp3spqqEKXg==} engines: {node: '>= 14'} /yargs-parser@18.1.3: @@ -10192,6 +10126,13 @@ packages: engines: {node: '>=12.20'} dev: true - /zod@3.21.4: - resolution: {integrity: sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==} - dev: false + /yup@1.3.2: + resolution: {integrity: sha512-6KCM971iQtJ+/KUaHdrhVr2LDkfhBtFPRnsG1P8F4q3uUVQ2RfEM9xekpha9aA4GXWJevjM10eDcPQ1FfWlmaQ==} + dependencies: + property-expr: 2.0.6 + tiny-case: 1.0.3 + toposort: 2.0.2 + type-fest: 2.19.0 + + /zod@3.22.4: + resolution: {integrity: sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==}