diff --git a/.gitignore b/.gitignore index 6cb85bce6..0e92dcf69 100644 --- a/.gitignore +++ b/.gitignore @@ -45,6 +45,7 @@ dist .idea nx-cloud.env +.nx .nx/cache .tsup diff --git a/examples/react/next-server-actions/.eslintrc.js b/examples/react/next-server-actions/.eslintrc.js new file mode 100644 index 000000000..f20159edb --- /dev/null +++ b/examples/react/next-server-actions/.eslintrc.js @@ -0,0 +1,7 @@ +module.exports = { + extends: 'next/core-web-vitals', + parserOptions: { + tsconfigRootDir: __dirname, + project: ['./tsconfig.json'], + }, +} diff --git a/examples/react/next-server-actions/.gitignore b/examples/react/next-server-actions/.gitignore new file mode 100644 index 000000000..fd3dbb571 --- /dev/null +++ b/examples/react/next-server-actions/.gitignore @@ -0,0 +1,36 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.js +.yarn/install-state.gz + +# testing +/coverage + +# next.js +/.next/ +/out/ + +# production +/build + +# misc +.DS_Store +*.pem + +# debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# local env files +.env*.local + +# vercel +.vercel + +# typescript +*.tsbuildinfo +next-env.d.ts diff --git a/examples/react/next-server-actions/README.md b/examples/react/next-server-actions/README.md new file mode 100644 index 000000000..c4033664f --- /dev/null +++ b/examples/react/next-server-actions/README.md @@ -0,0 +1,36 @@ +This is a [Next.js](https://nextjs.org/) project bootstrapped with [`create-next-app`](https://github.com/vercel/next.js/tree/canary/packages/create-next-app). + +## Getting Started + +First, run the development server: + +```bash +npm run dev +# or +yarn dev +# or +pnpm dev +# or +bun dev +``` + +Open [http://localhost:3000](http://localhost:3000) with your browser to see the result. + +You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file. + +This project uses [`next/font`](https://nextjs.org/docs/basic-features/font-optimization) to automatically optimize and load Inter, a custom Google Font. + +## Learn More + +To learn more about Next.js, take a look at the following resources: + +- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API. +- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial. + +You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js/) - your feedback and contributions are welcome! + +## Deploy on Vercel + +The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js. + +Check out our [Next.js deployment documentation](https://nextjs.org/docs/deployment) for more details. diff --git a/examples/react/next-server-actions/next.config.js b/examples/react/next-server-actions/next.config.js new file mode 100644 index 000000000..767719fc4 --- /dev/null +++ b/examples/react/next-server-actions/next.config.js @@ -0,0 +1,4 @@ +/** @type {import('next').NextConfig} */ +const nextConfig = {} + +module.exports = nextConfig diff --git a/examples/react/next-server-actions/package.json b/examples/react/next-server-actions/package.json new file mode 100644 index 000000000..0968d016e --- /dev/null +++ b/examples/react/next-server-actions/package.json @@ -0,0 +1,25 @@ +{ + "name": "@tanstack/form-example-react-next-server-actions", + "version": "0.1.0", + "private": true, + "scripts": { + "dev": "next dev", + "build": "next build", + "test:types": "tsc --noEmit", + "test:eslint": "next lint" + }, + "dependencies": { + "react": "^18", + "react-dom": "^18", + "next": "14.0.4", + "@tanstack/react-form": "^0.11.0" + }, + "devDependencies": { + "typescript": "^5", + "@types/node": "^20", + "@types/react": "18.2.35", + "@types/react-dom": "^18.2.14", + "eslint": "^8", + "eslint-config-next": "14.0.4" + } +} diff --git a/examples/react/next-server-actions/src/app/action.ts b/examples/react/next-server-actions/src/app/action.ts new file mode 100644 index 000000000..a35032f05 --- /dev/null +++ b/examples/react/next-server-actions/src/app/action.ts @@ -0,0 +1,7 @@ +'use server' + +import { formFactory } from './shared-code' + +export default async function someAction(prev: unknown, formData: FormData) { + return await formFactory.validateFormData(formData) +} diff --git a/examples/react/next-server-actions/src/app/client-component.tsx b/examples/react/next-server-actions/src/app/client-component.tsx new file mode 100644 index 000000000..e2f4306c5 --- /dev/null +++ b/examples/react/next-server-actions/src/app/client-component.tsx @@ -0,0 +1,68 @@ +/// +'use client' + +import { useFormState } from 'react-dom' +import someAction from './action' +import { formFactory } from './shared-code' +import { useTransform, mergeForm, type FormApi } from '@tanstack/react-form' + +export const ClientComp = () => { + const [state, action] = useFormState(someAction, formFactory.initialFormState) + + const form = formFactory.useForm({ + transform: useTransform( + (baseForm: FormApi) => mergeForm(baseForm, state), + [state], + ), + }) + + const formErrors = form.useStore((formState) => formState.errors) + + return ( + +
form.handleSubmit()}> + {formErrors.map((error) => ( +

{error}

+ ))} + + + value < 8 + ? 'Client validation: You must be at least 8' + : undefined, + }} + > + {(field) => { + return ( +
+ field.handleChange(e.target.valueAsNumber)} + /> + {field.state.meta.errors.map((error) => ( +

{error}

+ ))} +
+ ) + }} +
+ [ + formState.canSubmit, + formState.isSubmitting, + ]} + > + {([canSubmit, isSubmitting]) => ( + + )} + +
+
+ ) +} diff --git a/examples/react/next-server-actions/src/app/layout.tsx b/examples/react/next-server-actions/src/app/layout.tsx new file mode 100644 index 000000000..111474136 --- /dev/null +++ b/examples/react/next-server-actions/src/app/layout.tsx @@ -0,0 +1,18 @@ +import type { Metadata } from 'next' + +export const metadata: Metadata = { + title: 'Create Next App', + description: 'Generated by create next app', +} + +export default function RootLayout({ + children, +}: { + children: React.ReactNode +}) { + return ( + + {children} + + ) +} diff --git a/examples/react/next-server-actions/src/app/page.tsx b/examples/react/next-server-actions/src/app/page.tsx new file mode 100644 index 000000000..7d8c877c1 --- /dev/null +++ b/examples/react/next-server-actions/src/app/page.tsx @@ -0,0 +1,9 @@ +import { ClientComp } from './client-component' + +export default function Home() { + return ( + <> + + + ) +} diff --git a/examples/react/next-server-actions/src/app/shared-code.ts b/examples/react/next-server-actions/src/app/shared-code.ts new file mode 100644 index 000000000..2fe737c5a --- /dev/null +++ b/examples/react/next-server-actions/src/app/shared-code.ts @@ -0,0 +1,13 @@ +import { createFormFactory } from '@tanstack/react-form' + +export const formFactory = createFormFactory({ + defaultValues: { + firstName: '', + age: 0, + }, + onServerValidate({ value }) { + if (value.age < 12) { + return 'Server validation: You must be at least 12 to sign up' + } + }, +}) diff --git a/examples/react/next-server-actions/tsconfig.json b/examples/react/next-server-actions/tsconfig.json new file mode 100644 index 000000000..f8a79128a --- /dev/null +++ b/examples/react/next-server-actions/tsconfig.json @@ -0,0 +1,24 @@ +{ + "compilerOptions": { + "target": "es5", + "lib": ["dom", "dom.iterable", "esnext"], + "allowJs": true, + "skipLibCheck": true, + "strict": true, + "noEmit": true, + "esModuleInterop": true, + "module": "esnext", + "moduleResolution": "bundler", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "preserve", + "incremental": true, + "plugins": [ + { + "name": "next" + } + ] + }, + "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"], + "exclude": ["node_modules"] +} diff --git a/examples/react/simple/tsconfig.json b/examples/react/simple/tsconfig.json index 04a639bba..666a0ea71 100644 --- a/examples/react/simple/tsconfig.json +++ b/examples/react/simple/tsconfig.json @@ -3,6 +3,7 @@ "jsx": "react", "noEmit": true, "strict": true, + "esModuleInterop": true, "lib": ["DOM", "DOM.Iterable", "ES2020"] } } diff --git a/examples/react/valibot/tsconfig.json b/examples/react/valibot/tsconfig.json index 04a639bba..666a0ea71 100644 --- a/examples/react/valibot/tsconfig.json +++ b/examples/react/valibot/tsconfig.json @@ -3,6 +3,7 @@ "jsx": "react", "noEmit": true, "strict": true, + "esModuleInterop": true, "lib": ["DOM", "DOM.Iterable", "ES2020"] } } diff --git a/examples/react/yup/tsconfig.json b/examples/react/yup/tsconfig.json index 04a639bba..666a0ea71 100644 --- a/examples/react/yup/tsconfig.json +++ b/examples/react/yup/tsconfig.json @@ -3,6 +3,7 @@ "jsx": "react", "noEmit": true, "strict": true, + "esModuleInterop": true, "lib": ["DOM", "DOM.Iterable", "ES2020"] } } diff --git a/examples/react/zod/tsconfig.json b/examples/react/zod/tsconfig.json index 04a639bba..666a0ea71 100644 --- a/examples/react/zod/tsconfig.json +++ b/examples/react/zod/tsconfig.json @@ -3,6 +3,7 @@ "jsx": "react", "noEmit": true, "strict": true, + "esModuleInterop": true, "lib": ["DOM", "DOM.Iterable", "ES2020"] } } diff --git a/getViteConfig.ts b/getViteConfig.ts new file mode 100644 index 000000000..b1f02c221 --- /dev/null +++ b/getViteConfig.ts @@ -0,0 +1,79 @@ +import { defineConfig } from 'vitest/config' +import { externalizeDeps } from 'vite-plugin-externalize-deps' +import dts from 'vite-plugin-dts' +import { copyFileSync } from 'node:fs' +import { resolve } from 'node:path' + +interface GetViteConfigOptions { + dirname: string + // Relative to `dirname` + entryPath: string +} + +export const getDefaultViteConfig = ({ + dirname, + entryPath, +}: GetViteConfigOptions) => + defineConfig({ + plugins: [ + dts({ + root: dirname, + entryRoot: `${dirname}/src`, + outDir: `${dirname}/dist/mjs`, + afterBuild: () => { + // To pass publint (`npm x publint@latest`) and ensure the + // package is supported by all consumers, we must export types that are + // read as ESM. To do this, there must be duplicate types with the + // correct extension supplied in the package.json exports field. + copyFileSync( + `${dirname}/dist/mjs/index.d.ts`, + `${dirname}/dist/mjs/index.d.mts`, + ) + }, + compilerOptions: { + module: 'esnext' as never, + }, + }), + dts({ + root: dirname, + entryRoot: `${dirname}/src`, + outDir: `${dirname}/dist/cjs`, + afterBuild: () => { + copyFileSync( + `${dirname}/dist/cjs/index.d.ts`, + `${dirname}/dist/cjs/index.d.cts`, + ) + }, + compilerOptions: { + module: 'commonjs' as never, + }, + }), + externalizeDeps(), + { + name: 'copy-mjs-cjs-to-index', + closeBundle() { + copyFileSync( + `${dirname}/dist/mjs/index.mjs`, + `${dirname}/dist/mjs/index.js`, + ) + copyFileSync( + `${dirname}/dist/cjs/index.cjs`, + `${dirname}/dist/cjs/index.js`, + ) + }, + }, + ], + build: { + outDir: `${dirname}/dist`, + minify: false, + sourcemap: true, + lib: { + entry: resolve(dirname, entryPath), + formats: ['es', 'cjs'], + fileName: (format) => { + if (format === 'cjs') return `cjs/index.cjs` + return `mjs/index.mjs` + }, + }, + }, + }) diff --git a/nx.json b/nx.json index 932aed4a8..0afca323b 100644 --- a/nx.json +++ b/nx.json @@ -16,7 +16,7 @@ "{workspaceRoot}/.eslintrc.cjs", "{workspaceRoot}/.nvmrc", "{workspaceRoot}/package.json", - "{workspaceRoot}/scripts/getTsupConfig.js", + "{workspaceRoot}/getViteConfig.ts", "{workspaceRoot}/tsconfig.json" ], "default": [ diff --git a/package.json b/package.json index 24b61913a..a55c6a3c0 100644 --- a/package.json +++ b/package.json @@ -47,7 +47,7 @@ "@types/jsonfile": "^6.1.4", "@types/luxon": "^2.3.1", "@types/node": "^18.15.3", - "@types/react": "^18.0.14", + "@types/react": "^18.2.45", "@types/react-dom": "^18.0.5", "@types/semver": "^7.3.13", "@types/stream-to-array": "^2.3.3", @@ -84,13 +84,14 @@ "semver": "^7.3.8", "solid-js": "^1.6.13", "stream-to-array": "^2.3.0", - "tsup": "8.0.1", "type-fest": "^4.8.3", "typescript": "^5.2.2", - "typescript48": "npm:typescript@4.8", "typescript49": "npm:typescript@4.9", "typescript50": "npm:typescript@5.0", "typescript51": "npm:typescript@5.1", + "vite": "4.4.9", + "vite-plugin-dts": "^3.7.0", + "vite-plugin-externalize-deps": "^0.8.0", "vitest": "^0.34.3", "vue": "^3.3.4" }, diff --git a/packages/form-core/package.json b/packages/form-core/package.json index 780d4b583..d030cbb3c 100644 --- a/packages/form-core/package.json +++ b/packages/form-core/package.json @@ -11,31 +11,30 @@ "url": "https://github.com/sponsors/tannerlinsley" }, "type": "module", - "types": "build/legacy/index.d.ts", - "main": "build/legacy/index.cjs", - "module": "build/legacy/index.js", + "types": "dist/mjs/index.d.mts", + "main": "dist/cjs/index.cjs", + "module": "dist/mjs/index.mjs", "exports": { ".": { "import": { - "types": "./build/modern/index.d.ts", - "default": "./build/modern/index.js" + "types": "./dist/mjs/index.d.mts", + "default": "./dist/mjs/index.mjs" }, "require": { - "types": "./build/modern/index.d.cts", - "default": "./build/modern/index.cjs" + "types": "./dist/cjs/index.d.cts", + "default": "./dist/cjs/index.cjs" } }, "./package.json": "./package.json" }, "sideEffects": false, "files": [ - "build", + "dist", "src" ], "scripts": { - "clean": "rimraf ./build && rimraf ./coverage", + "clean": "rimraf ./dist && rimraf ./coverage", "test:eslint": "eslint --ext .ts,.tsx ./src", - "test:types:versions48": "../../node_modules/typescript48/bin/tsc --noEmit", "test:types:versions49": "../../node_modules/typescript49/bin/tsc --noEmit", "test:types:versions50": "../../node_modules/typescript50/bin/tsc --noEmit", "test:types:versions51": "../../node_modules/typescript51/bin/tsc --noEmit", @@ -44,7 +43,7 @@ "test:lib": "vitest run --coverage", "test:lib:dev": "pnpm run test:lib --watch", "test:build": "publint --strict", - "build": "tsup" + "build": "vite build" }, "dependencies": { "@tanstack/store": "0.1.3" diff --git a/packages/form-core/src/FieldApi.ts b/packages/form-core/src/FieldApi.ts index 971655682..6ea34631c 100644 --- a/packages/form-core/src/FieldApi.ts +++ b/packages/form-core/src/FieldApi.ts @@ -587,15 +587,23 @@ export class FieldApi< let rawError!: ValidationError | undefined try { rawError = await new Promise((rawResolve, rawReject) => { - setTimeout(() => { + setTimeout(async () => { if (controller.signal.aborted) return rawResolve(undefined) - this.runValidator({ - validate: validateObj.validate, - value: { value, fieldApi: this, signal: controller.signal }, - type: 'validateAsync', - }) - .then(rawResolve) - .catch(rawReject) + try { + rawResolve( + await this.runValidator({ + validate: validateObj.validate, + value: { + value, + fieldApi: this, + signal: controller.signal, + }, + type: 'validateAsync', + }), + ) + } catch (e) { + rawReject(e) + } }, validateObj.debounceMs) }) } catch (e: unknown) { @@ -679,11 +687,14 @@ function getErrorMapKey(cause: ValidationCause) { switch (cause) { case 'submit': return 'onSubmit' - case 'change': - return 'onChange' case 'blur': return 'onBlur' case 'mount': return 'onMount' + case 'server': + return 'onServer' + case 'change': + default: + return 'onChange' } } diff --git a/packages/form-core/src/FormApi.ts b/packages/form-core/src/FormApi.ts index c3d5fa159..473027df4 100644 --- a/packages/form-core/src/FormApi.ts +++ b/packages/form-core/src/FormApi.ts @@ -65,10 +65,20 @@ export interface FormValidators< onSubmitAsyncDebounceMs?: number } -export type FormOptions< +export interface FormTransform< TFormData, TFormValidator extends Validator | undefined = undefined, -> = { +> { + fn: ( + formBase: FormApi, + ) => FormApi + deps: unknown[] +} + +export interface FormOptions< + TFormData, + TFormValidator extends Validator | undefined = undefined, +> { defaultValues?: TFormData defaultState?: Partial> asyncAlways?: boolean @@ -83,6 +93,7 @@ export type FormOptions< value: TFormData formApi: FormApi }) => void + transform?: FormTransform } export type ValidationMeta = { @@ -151,6 +162,7 @@ function getDefaultFormState( onBlur: undefined, onSubmit: undefined, onMount: undefined, + onServer: undefined, }, } } @@ -168,6 +180,8 @@ export class FormApi< fieldInfo: Record, FieldInfo> = {} as any + prevTransformArray: unknown[] = [] + constructor(opts?: FormOptions) { this.store = new Store>( getDefaultFormState({ @@ -216,8 +230,21 @@ export class FormApi< isTouched, } - this.store.state = state this.state = state + this.store.state = this.state + + // Only run transform if state has shallowly changed - IE how React.useEffect works + const transformArray = this.options.transform?.deps ?? [] + const shouldTransform = + transformArray.length !== this.prevTransformArray.length || + transformArray.some((val, i) => val !== this.prevTransformArray[i]) + + if (shouldTransform) { + // This mutates the state + this.options.transform?.fn(this) + this.store.state = this.state + this.prevTransformArray = transformArray + } }, }, ) @@ -267,14 +294,19 @@ export class FormApi< update = (options?: FormOptions) => { if (!options) return + const oldOptions = this.options + + // Options need to be updated first so that when the store is updated, the state is correct for the derived state + this.options = options + this.store.batch(() => { const shouldUpdateValues = options.defaultValues && - options.defaultValues !== this.options.defaultValues && + options.defaultValues !== oldOptions.defaultValues && !this.state.isTouched const shouldUpdateState = - options.defaultState !== this.options.defaultState && + options.defaultState !== oldOptions.defaultState && !this.state.isTouched this.store.setState(() => @@ -294,8 +326,6 @@ export class FormApi< ), ) }) - - this.options = options } reset = () => @@ -419,19 +449,23 @@ export class FormApi< let rawError!: ValidationError | undefined try { rawError = await new Promise((rawResolve, rawReject) => { - setTimeout(() => { + setTimeout(async () => { if (controller.signal.aborted) return rawResolve(undefined) - this.runValidator({ - validate: validateObj.validate!, - value: { - value: this.state.values, - formApi: this, - signal: controller.signal, - }, - type: 'validateAsync', - }) - .then(rawResolve) - .catch(rawReject) + try { + rawResolve( + await this.runValidator({ + validate: validateObj.validate!, + value: { + value: this.state.values, + formApi: this, + signal: controller.signal, + }, + type: 'validateAsync', + }), + ) + } catch (e) { + rawReject(e) + } }, validateObj.debounceMs) }) } catch (e: unknown) { @@ -561,6 +595,7 @@ export class FormApi< onBlur: undefined, onSubmit: undefined, onMount: undefined, + onServer: undefined, }, }) } @@ -692,11 +727,14 @@ function getErrorMapKey(cause: ValidationCause) { switch (cause) { case 'submit': return 'onSubmit' - case 'change': - return 'onChange' case 'blur': return 'onBlur' case 'mount': return 'onMount' + case 'server': + return 'onServer' + case 'change': + default: + return 'onChange' } } diff --git a/packages/form-core/src/index.ts b/packages/form-core/src/index.ts index a061a5893..2d2d0acaa 100644 --- a/packages/form-core/src/index.ts +++ b/packages/form-core/src/index.ts @@ -2,3 +2,4 @@ export * from './FormApi' export * from './FieldApi' export * from './utils' export * from './types' +export * from './mergeForm' diff --git a/packages/form-core/src/mergeForm.ts b/packages/form-core/src/mergeForm.ts new file mode 100644 index 000000000..7e9b29714 --- /dev/null +++ b/packages/form-core/src/mergeForm.ts @@ -0,0 +1,42 @@ +import type { FormApi } from './FormApi' +import type { Validator } from './types' + +export function mutateMergeDeep(target: object, source: object): object { + const targetKeys = Object.keys(target) + const sourceKeys = Object.keys(source) + const keySet = new Set([...targetKeys, ...sourceKeys]) + for (const key of keySet) { + const targetKey = key as never as keyof typeof target + const sourceKey = key as never as keyof typeof source + if (Array.isArray(target[targetKey]) && Array.isArray(source[sourceKey])) { + target[targetKey] = [ + ...(target[targetKey] as []), + ...(source[sourceKey] as []), + ] as never + } else if ( + typeof target[targetKey] === 'object' && + typeof source[sourceKey] === 'object' + ) { + mutateMergeDeep(target[targetKey] as {}, source[sourceKey] as {}) + } else { + // Prevent assigning undefined to target, only if undefined is not explicitly set on source + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition + if (!(sourceKey in source) && source[sourceKey] === undefined) { + continue + } + target[targetKey] = source[sourceKey] as never + } + } + return target +} + +export function mergeForm< + TFormData, + TFormValidator extends Validator | undefined = undefined, +>( + baseForm: FormApi, + state: Partial['state']>, +) { + mutateMergeDeep(baseForm.state, state) + return baseForm +} diff --git a/packages/form-core/src/tests/FormApi.spec.ts b/packages/form-core/src/tests/FormApi.spec.ts index 125faf021..207277203 100644 --- a/packages/form-core/src/tests/FormApi.spec.ts +++ b/packages/form-core/src/tests/FormApi.spec.ts @@ -138,6 +138,7 @@ describe('form api', () => { onBlur: undefined, onSubmit: undefined, onMount: undefined, + onServer: undefined, }, }) }) diff --git a/packages/form-core/src/tests/mutateMergeDeep.spec.ts b/packages/form-core/src/tests/mutateMergeDeep.spec.ts new file mode 100644 index 000000000..77eb62496 --- /dev/null +++ b/packages/form-core/src/tests/mutateMergeDeep.spec.ts @@ -0,0 +1,32 @@ +import { describe } from 'vitest' +import { mutateMergeDeep } from '../mergeForm' + +describe('mutateMergeDeep', () => { + test('Should merge two objects by mutating', () => { + const a = { a: 1 } + const b = { b: 2 } + mutateMergeDeep(a, b) + expect(a).toStrictEqual({ a: 1, b: 2 }) + }) + + test('Should merge two objects including overwriting with undefined', () => { + const a = { a: 1 } + const b = { a: undefined } + mutateMergeDeep(a, b) + expect(a).toStrictEqual({ a: undefined }) + }) + + test('Should merge two object by merging arrays', () => { + const a = { a: [1] } + const b = { a: [2] } + mutateMergeDeep(a, b) + expect(a).toStrictEqual({ a: [1, 2] }) + }) + + test('Should merge two deeply nested objects', () => { + const a = { a: { a: 1 } } + const b = { a: { b: 2 } } + mutateMergeDeep(a, b) + expect(a).toStrictEqual({ a: { a: 1, b: 2 } }) + }) +}) diff --git a/packages/form-core/src/types.ts b/packages/form-core/src/types.ts index 39de258cf..1e87173fa 100644 --- a/packages/form-core/src/types.ts +++ b/packages/form-core/src/types.ts @@ -6,7 +6,8 @@ export type Validator = () => { validateAsync(options: { value: Type }, fn: Fn): Promise } -export type ValidationCause = 'change' | 'blur' | 'submit' | 'mount' +// "server" is only intended for SSR/SSG validation and should not execute anything +export type ValidationCause = 'change' | 'blur' | 'submit' | 'mount' | 'server' export type ValidationErrorMapKeys = `on${Capitalize}` diff --git a/packages/form-core/src/utils.ts b/packages/form-core/src/utils.ts index 18a85c26f..4cea4faf1 100644 --- a/packages/form-core/src/utils.ts +++ b/packages/form-core/src/utils.ts @@ -205,6 +205,8 @@ export function getAsyncValidatorArray( switch (cause) { case 'submit': return [changeValidator, blurValidator, submitValidator] as never + case 'server': + return [] as never case 'blur': return [blurValidator] as never case 'change': @@ -238,14 +240,27 @@ export function getSyncValidatorArray( const blurValidator = { cause: 'blur', validate: onBlur } as const const submitValidator = { cause: 'submit', validate: onSubmit } as const + // Allows us to clear onServer errors + const serverValidator = { + cause: 'server', + validate: () => undefined, + } as const + switch (cause) { case 'submit': - return [changeValidator, blurValidator, submitValidator] as never + return [ + changeValidator, + blurValidator, + submitValidator, + serverValidator, + ] as never + case 'server': + return [serverValidator] as never case 'blur': - return [blurValidator] as never + return [blurValidator, serverValidator] as never case 'change': default: - return [changeValidator] as never + return [changeValidator, serverValidator] as never } } diff --git a/packages/form-core/tsconfig.json b/packages/form-core/tsconfig.json index 20050962c..28248d313 100644 --- a/packages/form-core/tsconfig.json +++ b/packages/form-core/tsconfig.json @@ -4,5 +4,5 @@ "noEmit": true, "types": ["vitest/globals"] }, - "include": ["src/**/*.ts", "src/**/*.tsx", ".eslintrc.cjs", "tsup.config.js"] + "include": ["src/**/*.ts", "src/**/*.tsx", ".eslintrc.cjs", "vite.config.ts"] } diff --git a/packages/form-core/tsup.config.js b/packages/form-core/tsup.config.js deleted file mode 100644 index 5159fbe0a..000000000 --- a/packages/form-core/tsup.config.js +++ /dev/null @@ -1,9 +0,0 @@ -// @ts-check - -import { defineConfig } from 'tsup' -import { legacyConfig, modernConfig } from '../../scripts/getTsupConfig.js' - -export default defineConfig([ - modernConfig({ entry: ['src/*.ts'] }), - legacyConfig({ entry: ['src/*.ts'] }), -]) diff --git a/packages/form-core/vite.config.ts b/packages/form-core/vite.config.ts new file mode 100644 index 000000000..ee901e8fe --- /dev/null +++ b/packages/form-core/vite.config.ts @@ -0,0 +1,18 @@ +import { defineConfig, mergeConfig } from 'vitest/config' +import { getDefaultViteConfig } from '../../getViteConfig' + +console.log(__dirname) + +export default mergeConfig( + getDefaultViteConfig({ dirname: __dirname, entryPath: 'src/index.ts' }), + defineConfig({ + test: { + name: 'form-core', + dir: './src', + watch: false, + environment: 'jsdom', + globals: true, + coverage: { provider: 'istanbul' }, + }, + }), +) diff --git a/packages/form-core/vitest.config.ts b/packages/form-core/vitest.config.ts deleted file mode 100644 index 89a7a5a63..000000000 --- a/packages/form-core/vitest.config.ts +++ /dev/null @@ -1,12 +0,0 @@ -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/react-form/package.json b/packages/react-form/package.json index f2804041a..de1cbe79a 100644 --- a/packages/react-form/package.json +++ b/packages/react-form/package.json @@ -12,9 +12,8 @@ }, "sideEffects": false, "scripts": { - "clean": "rimraf ./build && rimraf ./coverage", + "clean": "rimraf ./dist && rimraf ./coverage", "test:eslint": "eslint --ext .ts,.tsx ./src", - "test:types:versions48": "../../node_modules/typescript48/bin/tsc --noEmit", "test:types:versions49": "../../node_modules/typescript49/bin/tsc --noEmit", "test:types:versions50": "../../node_modules/typescript50/bin/tsc --noEmit", "test:types:versions51": "../../node_modules/typescript51/bin/tsc --noEmit", @@ -23,32 +22,32 @@ "test:lib": "vitest run --coverage", "test:lib:dev": "pnpm run test:lib --watch", "test:build": "publint --strict", - "build": "tsup" + "build": "vite build" }, "files": [ - "build", + "dist", "src" ], "type": "module", - "types": "build/legacy/index.d.ts", - "main": "build/legacy/index.cjs", - "module": "build/legacy/index.js", + "types": "dist/mjs/index.d.mts", + "main": "dist/cjs/index.cjs", + "module": "dist/mjs/index.mjs", "exports": { ".": { "import": { - "types": "./build/modern/index.d.ts", - "default": "./build/modern/index.js" + "types": "./dist/mjs/index.d.mts", + "default": "./dist/mjs/index.mjs" }, "require": { - "types": "./build/modern/index.d.cts", - "default": "./build/modern/index.cjs" + "types": "./dist/cjs/index.d.cts", + "default": "./dist/cjs/index.cjs" } }, "./package.json": "./package.json" }, "devDependencies": { "@types/jscodeshift": "^0.11.3", - "@types/react": "^18.0.14", + "@types/react": "^18.2.45", "@types/react-dom": "^18.0.5", "@types/use-sync-external-store": "^0.0.3", "react": "^18.2.0", @@ -57,8 +56,10 @@ }, "dependencies": { "@tanstack/form-core": "workspace:*", - "@tanstack/react-store": "0.1.3", - "@tanstack/store": "0.1.3" + "@tanstack/react-store": "^0.2.1", + "@tanstack/store": "0.1.3", + "decode-formdata": "^0.4.0", + "rehackt": "^0.0.3" }, "peerDependencies": { "react": "^17.0.0 || ^18.0.0", diff --git a/packages/react-form/src/createFormFactory.ts b/packages/react-form/src/createFormFactory.ts index 5bd7f2461..f5294be4c 100644 --- a/packages/react-form/src/createFormFactory.ts +++ b/packages/react-form/src/createFormFactory.ts @@ -2,6 +2,7 @@ import type { FormApi, FormOptions, Validator } from '@tanstack/form-core' import { type UseField, type FieldComponent, Field, useField } from './useField' import { useForm } from './useForm' +import { type ValidateFormData, getValidateFormData } from './validateFormData' export type FormFactory< TFormData, @@ -12,6 +13,8 @@ export type FormFactory< ) => FormApi useField: UseField Field: FieldComponent + validateFormData: ValidateFormData + initialFormState: Partial['state']> } export function createFormFactory< @@ -27,5 +30,12 @@ export function createFormFactory< }, useField: useField as any, Field: Field as any, + validateFormData: getValidateFormData(defaultOpts) as never, + initialFormState: { + errorMap: { + onServer: undefined, + }, + errors: [], + }, } } diff --git a/packages/react-form/src/formContext.ts b/packages/react-form/src/formContext.ts index 57c4742c9..9eb8c0e4e 100644 --- a/packages/react-form/src/formContext.ts +++ b/packages/react-form/src/formContext.ts @@ -1,13 +1,13 @@ import type { FormApi, Validator } from '@tanstack/form-core' -import * as React from 'react' +import { createContext, useContext } from 'rehackt' -export const formContext = React.createContext<{ +export const formContext = createContext<{ formApi: FormApi | undefined> parentFieldName?: string } | null>(null!) export function useFormContext() { - const formApi = React.useContext(formContext) + const formApi = useContext(formContext) if (!formApi) { throw new Error(`You are trying to use the form API outside of a form!`) diff --git a/packages/react-form/src/index.ts b/packages/react-form/src/index.ts index e26f3d1aa..79e4bb641 100644 --- a/packages/react-form/src/index.ts +++ b/packages/react-form/src/index.ts @@ -16,7 +16,12 @@ export type { ValidationMeta, } from '@tanstack/form-core' -export { FormApi, FieldApi, functionalUpdate } from '@tanstack/form-core' +export { + FormApi, + FieldApi, + functionalUpdate, + mergeForm, +} from '@tanstack/form-core' export { useForm } from './useForm' @@ -25,3 +30,4 @@ export { useField, Field } from './useField' export type { FormFactory } from './createFormFactory' export { createFormFactory } from './createFormFactory' +export { useTransform } from './useTransform' diff --git a/packages/react-form/src/useField.tsx b/packages/react-form/src/useField.tsx index 5a1422969..2bb39c2ec 100644 --- a/packages/react-form/src/useField.tsx +++ b/packages/react-form/src/useField.tsx @@ -1,4 +1,4 @@ -import React, { useState } from 'react' +import React, { useRef, useState } from 'rehackt' import { useStore } from '@tanstack/react-store' import type { DeepKeys, @@ -10,6 +10,7 @@ import { FieldApi, functionalUpdate } from '@tanstack/form-core' import { useFormContext, formContext } from './formContext' import type { UseFieldOptions } from './types' import { useIsomorphicLayoutEffect } from './useIsomorphicLayoutEffect' +import { useIsomorphicEffectOnce } from './useIsomorphicEffectOnce' declare module '@tanstack/form-core' { // eslint-disable-next-line no-shadow @@ -103,8 +104,19 @@ export function useField< } : undefined, ) - // Instantiates field meta and removes it when unrendered - useIsomorphicLayoutEffect(() => fieldApi.mount(), [fieldApi]) + const unmountFn = useRef<(() => void) | null>(null) + + useIsomorphicEffectOnce(() => { + return () => { + unmountFn.current?.() + } + }) + + // We have to mount it right as soon as it renders, otherwise we get: + // https://github.com/TanStack/form/issues/523 + if (!unmountFn.current) { + unmountFn.current = fieldApi.mount() + } return fieldApi as never } diff --git a/packages/react-form/src/useForm.tsx b/packages/react-form/src/useForm.tsx index 43a02e434..5402821b4 100644 --- a/packages/react-form/src/useForm.tsx +++ b/packages/react-form/src/useForm.tsx @@ -2,7 +2,11 @@ import type { FormState, FormOptions, Validator } from '@tanstack/form-core' import { FormApi, functionalUpdate } from '@tanstack/form-core' import type { NoInfer } from '@tanstack/react-store' import { useStore } from '@tanstack/react-store' -import React, { type PropsWithChildren, type ReactNode, useState } from 'react' +import React, { + type PropsWithChildren, + type ReactNode, + useState, +} from 'rehackt' import { type UseField, type FieldComponent, Field, useField } from './useField' import { formContext } from './formContext' import { useIsomorphicLayoutEffect } from './useIsomorphicLayoutEffect' diff --git a/packages/react-form/src/useIsomorphicEffectOnce.ts b/packages/react-form/src/useIsomorphicEffectOnce.ts new file mode 100644 index 000000000..c77dc6b42 --- /dev/null +++ b/packages/react-form/src/useIsomorphicEffectOnce.ts @@ -0,0 +1,38 @@ +import { useRef, useState, type EffectCallback } from 'rehackt' +import { useIsomorphicLayoutEffect } from './useIsomorphicLayoutEffect' + +/** + * This hook handles StrictMode and prod mode + */ +export const useIsomorphicEffectOnce = (effect: EffectCallback) => { + const destroyFunc = useRef void)>() + const effectCalled = useRef(false) + const renderAfterCalled = useRef(false) + const [val, setVal] = useState(0) + + if (effectCalled.current) { + renderAfterCalled.current = true + } + + useIsomorphicLayoutEffect(() => { + // only execute the effect first time around + if (!effectCalled.current) { + destroyFunc.current = effect() + effectCalled.current = true + } + + // this forces one render after the effect is run + setVal((v) => v + 1) + + return () => { + // if the comp didn't render since the useEffect was called, + // we know it's the dummy React cycle + if (!renderAfterCalled.current) { + return + } + if (destroyFunc.current) { + destroyFunc.current() + } + } + }, []) +} diff --git a/packages/react-form/src/useIsomorphicLayoutEffect.ts b/packages/react-form/src/useIsomorphicLayoutEffect.ts index 9196a6b29..732cea697 100644 --- a/packages/react-form/src/useIsomorphicLayoutEffect.ts +++ b/packages/react-form/src/useIsomorphicLayoutEffect.ts @@ -1,4 +1,4 @@ -import { useEffect, useLayoutEffect } from 'react' +import { useEffect, useLayoutEffect } from 'rehackt' export const useIsomorphicLayoutEffect = // @ts-ignore diff --git a/packages/react-form/src/useTransform.ts b/packages/react-form/src/useTransform.ts new file mode 100644 index 000000000..b27f03a7d --- /dev/null +++ b/packages/react-form/src/useTransform.ts @@ -0,0 +1,16 @@ +import type { FormApi, Validator } from '@tanstack/form-core' + +export function useTransform< + TFormData, + TFormValidator extends Validator | undefined = undefined, +>( + fn: ( + formBase: FormApi, + ) => FormApi, + deps: unknown[], +) { + return { + fn, + deps, + } +} diff --git a/packages/react-form/src/validateFormData.ts b/packages/react-form/src/validateFormData.ts new file mode 100644 index 000000000..6ba256bbf --- /dev/null +++ b/packages/react-form/src/validateFormData.ts @@ -0,0 +1,70 @@ +import { decode } from 'decode-formdata' +import type { + FormApi, + FormOptions, + ValidationError, + Validator, +} from '@tanstack/form-core' + +type OnServerValidateFn = (props: { + value: TFormData +}) => ValidationError + +type OnServerValidateOrFn< + TFormData, + TFormValidator extends Validator | undefined = undefined, +> = TFormValidator extends Validator + ? FFN | OnServerValidateFn + : OnServerValidateFn + +declare module '@tanstack/form-core' { + // eslint-disable-next-line no-shadow + interface FormOptions< + TFormData, + TFormValidator extends + | Validator + | undefined = undefined, + > { + onServerValidate?: OnServerValidateOrFn + } +} + +export type ValidateFormData< + TFormData, + TFormValidator extends Validator | undefined = undefined, +> = ( + formData: FormData, + info?: Parameters[1], +) => Promise['state']>> + +export const getValidateFormData = < + TFormData, + TFormValidator extends Validator | undefined = undefined, +>( + defaultOpts?: FormOptions, +) => + (async ( + formData: FormData, + info?: Parameters[1], + ): Promise['state']>> => { + const { validatorAdapter, onServerValidate } = defaultOpts || {} + + const runValidator = (propsValue: { value: TFormData }) => { + if (validatorAdapter && typeof onServerValidate !== 'function') { + return validatorAdapter().validate(propsValue, onServerValidate) + } + + return (onServerValidate as OnServerValidateFn)(propsValue) + } + + const data = decode(formData, info) as never as TFormData + + const onServerError = runValidator({ value: data }) + + return { + errorMap: { + onServer: onServerError, + }, + errors: onServerError ? [onServerError] : [], + } + }) as ValidateFormData diff --git a/packages/react-form/tsconfig.json b/packages/react-form/tsconfig.json index cde408765..727bccf97 100644 --- a/packages/react-form/tsconfig.json +++ b/packages/react-form/tsconfig.json @@ -5,5 +5,5 @@ "noEmit": true, "types": ["vitest/globals"] }, - "include": ["src/**/*.ts", "src/**/*.tsx", ".eslintrc.cjs", "tsup.config.js"] + "include": ["src/**/*.ts", "src/**/*.tsx", ".eslintrc.cjs", "vite.config.ts"] } diff --git a/packages/react-form/tsup.config.js b/packages/react-form/tsup.config.js deleted file mode 100644 index 1031ae9d0..000000000 --- a/packages/react-form/tsup.config.js +++ /dev/null @@ -1,9 +0,0 @@ -// @ts-check - -import { defineConfig } from 'tsup' -import { legacyConfig, modernConfig } from '../../scripts/getTsupConfig.js' - -export default defineConfig([ - modernConfig({ entry: ['src/*.ts', 'src/*.tsx'] }), - legacyConfig({ entry: ['src/*.ts', 'src/*.tsx'] }), -]) diff --git a/packages/react-form/vite.config.ts b/packages/react-form/vite.config.ts new file mode 100644 index 000000000..e868e679f --- /dev/null +++ b/packages/react-form/vite.config.ts @@ -0,0 +1,16 @@ +import { defineConfig, mergeConfig } from 'vitest/config' +import { getDefaultViteConfig } from '../../getViteConfig' + +export default mergeConfig( + getDefaultViteConfig({ dirname: __dirname, entryPath: 'src/index.ts' }), + defineConfig({ + test: { + name: 'react-form', + dir: './src', + watch: false, + environment: 'jsdom', + globals: true, + coverage: { provider: 'istanbul' }, + }, + }), +) diff --git a/packages/react-form/vitest.config.ts b/packages/react-form/vitest.config.ts deleted file mode 100644 index 55dd20568..000000000 --- a/packages/react-form/vitest.config.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { defineConfig } from 'vitest/config' - -export default defineConfig({ - test: { - name: 'react-form', - dir: './src', - watch: false, - environment: 'jsdom', - globals: true, - coverage: { provider: 'istanbul' }, - }, -}) diff --git a/packages/solid-form/package.json b/packages/solid-form/package.json index 6379a3644..3b81dd42e 100644 --- a/packages/solid-form/package.json +++ b/packages/solid-form/package.json @@ -12,9 +12,8 @@ }, "sideEffects": false, "scripts": { - "clean": "rimraf ./build && rimraf ./coverage", + "clean": "rimraf ./dist && rimraf ./coverage", "test:eslint": "eslint --ext .ts,.tsx ./src", - "test:types:versions48": "../../node_modules/typescript48/bin/tsc --noEmit", "test:types:versions49": "../../node_modules/typescript49/bin/tsc --noEmit", "test:types:versions50": "../../node_modules/typescript50/bin/tsc --noEmit", "test:types:versions51": "../../node_modules/typescript51/bin/tsc --noEmit", @@ -23,39 +22,31 @@ "test:lib": "vitest run --coverage", "test:lib:dev": "pnpm run test:lib --watch", "test:build": "publint --strict", - "build": "tsup" + "build": "vite build" }, "files": [ - "build", + "dist", "src" ], "type": "module", - "main": "./build/index.cjs", - "module": "./build/index.js", - "types": "./build/index.d.ts", + "types": "dist/mjs/index.d.mts", + "main": "dist/cjs/index.cjs", + "module": "dist/mjs/index.mjs", "exports": { - "development": { + ".": { "import": { - "types": "./build/index.d.ts", - "default": "./build/dev.js" + "types": "./dist/mjs/index.d.mts", + "default": "./dist/mjs/index.mjs" }, "require": { - "types": "./build/index.d.cts", - "default": "./build/dev.cjs" + "types": "./dist/cjs/index.d.cts", + "default": "./dist/cjs/index.cjs" } }, - "import": { - "types": "./build/index.d.ts", - "default": "./build/index.js" - }, - "require": { - "types": "./build/index.d.cts", - "default": "./build/index.cjs" - } + "./package.json": "./package.json" }, "devDependencies": { "solid-js": "^1.7.8", - "tsup-preset-solid": "^2.2.0", "vite-plugin-solid": "^2.7.0" }, "dependencies": { diff --git a/packages/solid-form/tsconfig.json b/packages/solid-form/tsconfig.json index 04fbd3141..a7a9faae3 100644 --- a/packages/solid-form/tsconfig.json +++ b/packages/solid-form/tsconfig.json @@ -6,5 +6,5 @@ "noEmit": true, "types": ["vitest/globals"] }, - "include": ["src/**/*.ts", "src/**/*.tsx", ".eslintrc.cjs", "tsup.config.js"] + "include": ["src/**/*.ts", "src/**/*.tsx", ".eslintrc.cjs", "vite.config.ts"] } diff --git a/packages/solid-form/tsup.config.js b/packages/solid-form/tsup.config.js deleted file mode 100644 index fac53914a..000000000 --- a/packages/solid-form/tsup.config.js +++ /dev/null @@ -1,24 +0,0 @@ -// @ts-check - -import { defineConfig } from 'tsup' -import { generateTsupOptions, parsePresetOptions } from 'tsup-preset-solid' - -const preset_options = { - entries: { - entry: 'src/index.ts', - dev_entry: true, - }, - cjs: true, - drop_console: true, -} - -export default defineConfig(() => { - const parsed_data = parsePresetOptions(preset_options) - const tsup_options = generateTsupOptions(parsed_data) - - tsup_options.forEach((tsup_option) => { - tsup_option.outDir = 'build' - }) - - return tsup_options -}) diff --git a/packages/solid-form/vite.config.ts b/packages/solid-form/vite.config.ts new file mode 100644 index 000000000..82d1e3387 --- /dev/null +++ b/packages/solid-form/vite.config.ts @@ -0,0 +1,25 @@ +import { defineConfig, mergeConfig } from 'vitest/config' +import { getDefaultViteConfig } from '../../getViteConfig' +import solid from 'vite-plugin-solid' + +export default mergeConfig( + getDefaultViteConfig({ dirname: __dirname, entryPath: 'src/index.ts' }), + defineConfig({ + plugins: [solid()], + test: { + name: 'solid-form', + dir: './src', + watch: false, + setupFiles: [], + environment: 'jsdom', + globals: true, + coverage: { provider: 'istanbul' }, + server: { + deps: { + // https://github.com/solidjs/solid-testing-library#known-issues + inline: [/solid-js/], + }, + }, + }, + }), +) diff --git a/packages/solid-form/vitest.config.ts b/packages/solid-form/vitest.config.ts deleted file mode 100644 index af313615e..000000000 --- a/packages/solid-form/vitest.config.ts +++ /dev/null @@ -1,21 +0,0 @@ -import solid from 'vite-plugin-solid' -import { defineConfig } from 'vitest/config' - -export default defineConfig({ - test: { - name: 'solid-form', - dir: './src', - watch: false, - setupFiles: [], - environment: 'jsdom', - globals: true, - coverage: { provider: 'istanbul' }, - server: { - deps: { - // https://github.com/solidjs/solid-testing-library#known-issues - inline: [/solid-js/], - }, - }, - }, - plugins: [solid()], -}) diff --git a/packages/valibot-form-adapter/package.json b/packages/valibot-form-adapter/package.json index 18a338d6a..73d554d05 100644 --- a/packages/valibot-form-adapter/package.json +++ b/packages/valibot-form-adapter/package.json @@ -11,31 +11,30 @@ "url": "https://github.com/sponsors/tannerlinsley" }, "type": "module", - "types": "build/legacy/index.d.ts", - "main": "build/legacy/index.cjs", - "module": "build/legacy/index.js", + "types": "dist/mjs/index.d.mts", + "main": "dist/cjs/index.cjs", + "module": "dist/mjs/index.mjs", "exports": { ".": { "import": { - "types": "./build/modern/index.d.ts", - "default": "./build/modern/index.js" + "types": "./dist/mjs/index.d.mts", + "default": "./dist/mjs/index.mjs" }, "require": { - "types": "./build/modern/index.d.cts", - "default": "./build/modern/index.cjs" + "types": "./dist/cjs/index.d.cts", + "default": "./dist/cjs/index.cjs" } }, "./package.json": "./package.json" }, "sideEffects": false, "files": [ - "build", + "dist", "src" ], "scripts": { - "clean": "rimraf ./build && rimraf ./coverage", + "clean": "rimraf ./dist && rimraf ./coverage", "test:eslint": "eslint --ext .ts,.tsx ./src", - "test:types:versions48": "../../node_modules/typescript48/bin/tsc --noEmit", "test:types:versions49": "../../node_modules/typescript49/bin/tsc --noEmit", "test:types:versions50": "../../node_modules/typescript50/bin/tsc --noEmit", "test:types:versions51": "../../node_modules/typescript51/bin/tsc --noEmit", @@ -44,7 +43,7 @@ "test:lib": "vitest run --coverage", "test:lib:dev": "pnpm run test:lib --watch", "test:build": "publint --strict", - "build": "tsup" + "build": "vite build" }, "dependencies": { "@tanstack/form-core": "workspace:*" diff --git a/packages/valibot-form-adapter/tsconfig.json b/packages/valibot-form-adapter/tsconfig.json index 20050962c..28248d313 100644 --- a/packages/valibot-form-adapter/tsconfig.json +++ b/packages/valibot-form-adapter/tsconfig.json @@ -4,5 +4,5 @@ "noEmit": true, "types": ["vitest/globals"] }, - "include": ["src/**/*.ts", "src/**/*.tsx", ".eslintrc.cjs", "tsup.config.js"] + "include": ["src/**/*.ts", "src/**/*.tsx", ".eslintrc.cjs", "vite.config.ts"] } diff --git a/packages/valibot-form-adapter/tsup.config.js b/packages/valibot-form-adapter/tsup.config.js deleted file mode 100644 index 5159fbe0a..000000000 --- a/packages/valibot-form-adapter/tsup.config.js +++ /dev/null @@ -1,9 +0,0 @@ -// @ts-check - -import { defineConfig } from 'tsup' -import { legacyConfig, modernConfig } from '../../scripts/getTsupConfig.js' - -export default defineConfig([ - modernConfig({ entry: ['src/*.ts'] }), - legacyConfig({ entry: ['src/*.ts'] }), -]) diff --git a/packages/valibot-form-adapter/vite.config.ts b/packages/valibot-form-adapter/vite.config.ts new file mode 100644 index 000000000..b970ea137 --- /dev/null +++ b/packages/valibot-form-adapter/vite.config.ts @@ -0,0 +1,16 @@ +import { defineConfig, mergeConfig } from 'vitest/config' +import { getDefaultViteConfig } from '../../getViteConfig' + +export default mergeConfig( + getDefaultViteConfig({ dirname: __dirname, entryPath: 'src/index.ts' }), + defineConfig({ + test: { + name: 'valibot-form-adapter', + dir: './src', + watch: false, + environment: 'jsdom', + globals: true, + coverage: { provider: 'istanbul' }, + }, + }), +) diff --git a/packages/valibot-form-adapter/vitest.config.ts b/packages/valibot-form-adapter/vitest.config.ts deleted file mode 100644 index d7f6b9056..000000000 --- a/packages/valibot-form-adapter/vitest.config.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { defineConfig } from 'vitest/config' - -export default defineConfig({ - test: { - name: 'valibot-form-adapter', - dir: './src', - watch: false, - environment: 'jsdom', - globals: true, - coverage: { provider: 'istanbul' }, - }, -}) diff --git a/packages/vue-form/package.json b/packages/vue-form/package.json index 0765ba3a7..7aeb3afd1 100644 --- a/packages/vue-form/package.json +++ b/packages/vue-form/package.json @@ -11,27 +11,26 @@ "url": "https://github.com/sponsors/tannerlinsley" }, "type": "module", - "types": "build/legacy/index.d.ts", - "main": "build/legacy/index.cjs", - "module": "build/legacy/index.js", + "types": "dist/mjs/index.d.mts", + "main": "dist/cjs/index.cjs", + "module": "dist/mjs/index.mjs", "exports": { ".": { "import": { - "types": "./build/modern/index.d.ts", - "default": "./build/modern/index.js" + "types": "./dist/mjs/index.d.mts", + "default": "./dist/mjs/index.mjs" }, "require": { - "types": "./build/modern/index.d.cts", - "default": "./build/modern/index.cjs" + "types": "./dist/cjs/index.d.cts", + "default": "./dist/cjs/index.cjs" } }, "./package.json": "./package.json" }, "sideEffects": false, "scripts": { - "clean": "rimraf ./build && rimraf ./coverage", + "clean": "rimraf ./dist && rimraf ./coverage", "test:eslint": "eslint --ext .ts,.tsx ./src", - "test:types:versions48": "../../node_modules/typescript48/bin/tsc --noEmit", "test:types:versions49": "../../node_modules/typescript49/bin/tsc --noEmit", "test:types:versions50": "../../node_modules/typescript50/bin/tsc --noEmit", "test:types:versions51": "../../node_modules/typescript51/bin/tsc --noEmit", @@ -41,10 +40,10 @@ "test:lib": "vitest", "test:lib:dev": "pnpm run test:lib --watch", "test:build": "publint --strict", - "build": "tsup" + "build": "vite build" }, "files": [ - "build", + "dist", "src" ], "dependencies": { diff --git a/packages/vue-form/tsconfig.json b/packages/vue-form/tsconfig.json index 334bc4df7..3961d42f5 100644 --- a/packages/vue-form/tsconfig.json +++ b/packages/vue-form/tsconfig.json @@ -11,6 +11,6 @@ "src/**/*.tsx", ".eslintrc.cjs", "test-setup.ts", - "tsup.config.js" + "vite.config.ts" ] } diff --git a/packages/vue-form/tsup.config.js b/packages/vue-form/tsup.config.js deleted file mode 100644 index 1031ae9d0..000000000 --- a/packages/vue-form/tsup.config.js +++ /dev/null @@ -1,9 +0,0 @@ -// @ts-check - -import { defineConfig } from 'tsup' -import { legacyConfig, modernConfig } from '../../scripts/getTsupConfig.js' - -export default defineConfig([ - modernConfig({ entry: ['src/*.ts', 'src/*.tsx'] }), - legacyConfig({ entry: ['src/*.ts', 'src/*.tsx'] }), -]) diff --git a/packages/vue-form/vite.config.ts b/packages/vue-form/vite.config.ts new file mode 100644 index 000000000..f1d31fe51 --- /dev/null +++ b/packages/vue-form/vite.config.ts @@ -0,0 +1,21 @@ +import { defineConfig, mergeConfig } from 'vitest/config' +import { getDefaultViteConfig } from '../../getViteConfig' + +export default mergeConfig( + getDefaultViteConfig({ dirname: __dirname, entryPath: 'src/index.ts' }), + defineConfig({ + test: { + name: 'vue-query', + dir: './src', + watch: false, + environment: 'jsdom', + globals: true, + setupFiles: [], + coverage: { provider: 'istanbul' }, + }, + esbuild: { + jsxFactory: 'h', + jsxFragment: 'Fragment', + }, + }), +) diff --git a/packages/vue-form/vitest.config.ts b/packages/vue-form/vitest.config.ts deleted file mode 100644 index 5eb5bd583..000000000 --- a/packages/vue-form/vitest.config.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { defineConfig } from 'vitest/config' - -export default defineConfig({ - test: { - name: 'vue-query', - dir: './src', - watch: false, - environment: 'jsdom', - globals: true, - setupFiles: [], - coverage: { provider: 'istanbul' }, - }, - esbuild: { - jsxFactory: 'h', - jsxFragment: 'Fragment', - }, -}) diff --git a/packages/yup-form-adapter/package.json b/packages/yup-form-adapter/package.json index 60727a215..a6193b0c6 100644 --- a/packages/yup-form-adapter/package.json +++ b/packages/yup-form-adapter/package.json @@ -11,31 +11,30 @@ "url": "https://github.com/sponsors/tannerlinsley" }, "type": "module", - "types": "build/legacy/index.d.ts", - "main": "build/legacy/index.cjs", - "module": "build/legacy/index.js", + "types": "dist/mjs/index.d.mts", + "main": "dist/cjs/index.cjs", + "module": "dist/mjs/index.mjs", "exports": { ".": { "import": { - "types": "./build/modern/index.d.ts", - "default": "./build/modern/index.js" + "types": "./dist/mjs/index.d.mts", + "default": "./dist/mjs/index.mjs" }, "require": { - "types": "./build/modern/index.d.cts", - "default": "./build/modern/index.cjs" + "types": "./dist/cjs/index.d.cts", + "default": "./dist/cjs/index.cjs" } }, "./package.json": "./package.json" }, "sideEffects": false, "files": [ - "build", + "dist", "src" ], "scripts": { - "clean": "rimraf ./build && rimraf ./coverage", + "clean": "rimraf ./dist && rimraf ./coverage", "test:eslint": "eslint --ext .ts,.tsx ./src", - "test:types:versions48": "../../node_modules/typescript48/bin/tsc --noEmit", "test:types:versions49": "../../node_modules/typescript49/bin/tsc --noEmit", "test:types:versions50": "../../node_modules/typescript50/bin/tsc --noEmit", "test:types:versions51": "../../node_modules/typescript51/bin/tsc --noEmit", @@ -44,7 +43,7 @@ "test:lib": "vitest run --coverage", "test:lib:dev": "pnpm run test:lib --watch", "test:build": "publint --strict", - "build": "tsup" + "build": "vite build" }, "dependencies": { "@tanstack/form-core": "workspace:*" diff --git a/packages/yup-form-adapter/tsconfig.json b/packages/yup-form-adapter/tsconfig.json index 20050962c..28248d313 100644 --- a/packages/yup-form-adapter/tsconfig.json +++ b/packages/yup-form-adapter/tsconfig.json @@ -4,5 +4,5 @@ "noEmit": true, "types": ["vitest/globals"] }, - "include": ["src/**/*.ts", "src/**/*.tsx", ".eslintrc.cjs", "tsup.config.js"] + "include": ["src/**/*.ts", "src/**/*.tsx", ".eslintrc.cjs", "vite.config.ts"] } diff --git a/packages/yup-form-adapter/tsup.config.js b/packages/yup-form-adapter/tsup.config.js deleted file mode 100644 index 5159fbe0a..000000000 --- a/packages/yup-form-adapter/tsup.config.js +++ /dev/null @@ -1,9 +0,0 @@ -// @ts-check - -import { defineConfig } from 'tsup' -import { legacyConfig, modernConfig } from '../../scripts/getTsupConfig.js' - -export default defineConfig([ - modernConfig({ entry: ['src/*.ts'] }), - legacyConfig({ entry: ['src/*.ts'] }), -]) diff --git a/packages/yup-form-adapter/vite.config.ts b/packages/yup-form-adapter/vite.config.ts new file mode 100644 index 000000000..500002756 --- /dev/null +++ b/packages/yup-form-adapter/vite.config.ts @@ -0,0 +1,16 @@ +import { defineConfig, mergeConfig } from 'vitest/config' +import { getDefaultViteConfig } from '../../getViteConfig' + +export default mergeConfig( + getDefaultViteConfig({ dirname: __dirname, entryPath: 'src/index.ts' }), + defineConfig({ + test: { + name: 'yup-form-adapter', + dir: './src', + watch: false, + environment: 'jsdom', + globals: true, + coverage: { provider: 'istanbul' }, + }, + }), +) diff --git a/packages/yup-form-adapter/vitest.config.ts b/packages/yup-form-adapter/vitest.config.ts deleted file mode 100644 index f36f54a1c..000000000 --- a/packages/yup-form-adapter/vitest.config.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { defineConfig } from 'vitest/config' - -export default defineConfig({ - test: { - name: 'yup-form-adapter', - dir: './src', - watch: false, - environment: 'jsdom', - globals: true, - coverage: { provider: 'istanbul' }, - }, -}) diff --git a/packages/zod-form-adapter/package.json b/packages/zod-form-adapter/package.json index 35558fdb3..b3a4b1d47 100644 --- a/packages/zod-form-adapter/package.json +++ b/packages/zod-form-adapter/package.json @@ -11,31 +11,30 @@ "url": "https://github.com/sponsors/tannerlinsley" }, "type": "module", - "types": "build/legacy/index.d.ts", - "main": "build/legacy/index.cjs", - "module": "build/legacy/index.js", + "types": "dist/mjs/index.d.mts", + "main": "dist/cjs/index.cjs", + "module": "dist/mjs/index.mjs", "exports": { ".": { "import": { - "types": "./build/modern/index.d.ts", - "default": "./build/modern/index.js" + "types": "./dist/mjs/index.d.mts", + "default": "./dist/mjs/index.mjs" }, "require": { - "types": "./build/modern/index.d.cts", - "default": "./build/modern/index.cjs" + "types": "./dist/cjs/index.d.cts", + "default": "./dist/cjs/index.cjs" } }, "./package.json": "./package.json" }, "sideEffects": false, "files": [ - "build", + "dist", "src" ], "scripts": { - "clean": "rimraf ./build && rimraf ./coverage", + "clean": "rimraf ./dist && rimraf ./coverage", "test:eslint": "eslint --ext .ts,.tsx ./src", - "test:types:versions48": "../../node_modules/typescript48/bin/tsc --noEmit", "test:types:versions49": "../../node_modules/typescript49/bin/tsc --noEmit", "test:types:versions50": "../../node_modules/typescript50/bin/tsc --noEmit", "test:types:versions51": "../../node_modules/typescript51/bin/tsc --noEmit", @@ -44,7 +43,7 @@ "test:lib": "vitest run --coverage", "test:lib:dev": "pnpm run test:lib --watch", "test:build": "publint --strict", - "build": "tsup" + "build": "vite build" }, "dependencies": { "@tanstack/form-core": "workspace:*" diff --git a/packages/zod-form-adapter/tsconfig.json b/packages/zod-form-adapter/tsconfig.json index 20050962c..28248d313 100644 --- a/packages/zod-form-adapter/tsconfig.json +++ b/packages/zod-form-adapter/tsconfig.json @@ -4,5 +4,5 @@ "noEmit": true, "types": ["vitest/globals"] }, - "include": ["src/**/*.ts", "src/**/*.tsx", ".eslintrc.cjs", "tsup.config.js"] + "include": ["src/**/*.ts", "src/**/*.tsx", ".eslintrc.cjs", "vite.config.ts"] } diff --git a/packages/zod-form-adapter/tsup.config.js b/packages/zod-form-adapter/tsup.config.js deleted file mode 100644 index 5159fbe0a..000000000 --- a/packages/zod-form-adapter/tsup.config.js +++ /dev/null @@ -1,9 +0,0 @@ -// @ts-check - -import { defineConfig } from 'tsup' -import { legacyConfig, modernConfig } from '../../scripts/getTsupConfig.js' - -export default defineConfig([ - modernConfig({ entry: ['src/*.ts'] }), - legacyConfig({ entry: ['src/*.ts'] }), -]) diff --git a/packages/zod-form-adapter/vite.config.ts b/packages/zod-form-adapter/vite.config.ts new file mode 100644 index 000000000..94ee13cfd --- /dev/null +++ b/packages/zod-form-adapter/vite.config.ts @@ -0,0 +1,16 @@ +import { defineConfig, mergeConfig } from 'vitest/config' +import { getDefaultViteConfig } from '../../getViteConfig' + +export default mergeConfig( + getDefaultViteConfig({ dirname: __dirname, entryPath: 'src/index.ts' }), + defineConfig({ + test: { + name: 'zod-form-adapter', + dir: './src', + watch: false, + environment: 'jsdom', + globals: true, + coverage: { provider: 'istanbul' }, + }, + }), +) diff --git a/packages/zod-form-adapter/vitest.config.ts b/packages/zod-form-adapter/vitest.config.ts deleted file mode 100644 index cac4c1e72..000000000 --- a/packages/zod-form-adapter/vitest.config.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { defineConfig } from 'vitest/config' - -export default defineConfig({ - test: { - name: 'zod-form-adapter', - dir: './src', - watch: false, - environment: 'jsdom', - globals: true, - coverage: { provider: 'istanbul' }, - }, -}) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a66c92730..93d724830 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -27,7 +27,7 @@ importers: 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.46)(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) @@ -56,8 +56,8 @@ importers: specifier: ^18.15.3 version: 18.19.2 '@types/react': - specifier: ^18.0.14 - version: 18.0.15 + specifier: ^18.2.45 + version: 18.2.46 '@types/react-dom': specifier: ^18.0.5 version: 18.0.6 @@ -108,7 +108,7 @@ importers: version: 9.0.0(eslint@8.48.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.4.1)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.28.1)(eslint@8.48.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) @@ -166,18 +166,12 @@ importers: stream-to-array: specifier: ^2.3.0 version: 2.3.0 - tsup: - specifier: 8.0.1 - version: 8.0.1(typescript@5.2.2) type-fest: specifier: ^4.8.3 version: 4.9.0 typescript: specifier: ^5.2.2 version: 5.2.2 - typescript48: - specifier: npm:typescript@4.8 - version: /typescript@4.8.4 typescript49: specifier: npm:typescript@4.9 version: /typescript@4.9.5 @@ -187,6 +181,15 @@ importers: typescript51: specifier: npm:typescript@5.1 version: /typescript@5.1.6 + vite: + specifier: 4.4.9 + version: 4.4.9(@types/node@18.19.2) + vite-plugin-dts: + specifier: ^3.7.0 + version: 3.7.0(@types/node@18.19.2)(typescript@5.2.2)(vite@4.4.9) + vite-plugin-externalize-deps: + specifier: ^0.8.0 + version: 0.8.0(vite@4.4.9) vitest: specifier: ^0.34.3 version: 0.34.3(jsdom@22.0.0) @@ -194,6 +197,40 @@ importers: specifier: ^3.3.4 version: 3.3.4 + examples/react/next-server-actions: + dependencies: + '@tanstack/react-form': + specifier: ^0.11.0 + version: link:../../../packages/react-form + next: + specifier: 14.0.4 + version: 14.0.4(@babel/core@7.22.10)(react-dom@18.2.0)(react@18.2.0) + react: + specifier: ^18 + version: 18.2.0 + react-dom: + specifier: ^18 + version: 18.2.0(react@18.2.0) + devDependencies: + '@types/node': + specifier: ^20 + version: 20.10.6 + '@types/react': + specifier: 18.2.35 + version: 18.2.35 + '@types/react-dom': + specifier: ^18.2.14 + version: 18.2.18 + eslint: + specifier: ^8 + version: 8.48.0 + eslint-config-next: + specifier: 14.0.4 + version: 14.0.4(eslint@8.48.0)(typescript@5.2.2) + typescript: + specifier: ^5 + version: 5.2.2 + examples/react/simple: dependencies: '@tanstack/react-form': @@ -500,21 +537,27 @@ importers: specifier: workspace:* version: link:../form-core '@tanstack/react-store': - specifier: 0.1.3 - version: 0.1.3(react-dom@18.2.0)(react@18.2.0) + specifier: ^0.2.1 + version: 0.2.1(react-dom@18.2.0)(react@18.2.0) '@tanstack/store': specifier: 0.1.3 version: 0.1.3 + decode-formdata: + specifier: ^0.4.0 + version: 0.4.0 react-native: specifier: '*' version: 0.72.6(@babel/core@7.22.10)(@babel/preset-env@7.21.5)(react@18.2.0) + rehackt: + specifier: ^0.0.3 + version: 0.0.3(@types/react@18.2.46)(react@18.2.0) devDependencies: '@types/jscodeshift': specifier: ^0.11.3 version: 0.11.5 '@types/react': - specifier: ^18.0.14 - version: 18.0.15 + specifier: ^18.2.45 + version: 18.2.46 '@types/react-dom': specifier: ^18.0.5 version: 18.0.6 @@ -543,9 +586,6 @@ importers: solid-js: specifier: ^1.7.8 version: 1.7.12 - tsup-preset-solid: - specifier: ^2.2.0 - version: 2.2.0(esbuild@0.19.10)(solid-js@1.7.12)(tsup@8.0.1) vite-plugin-solid: specifier: ^2.7.0 version: 2.7.0(solid-js@1.7.12)(vite@4.4.9) @@ -1902,6 +1942,13 @@ packages: dependencies: regenerator-runtime: 0.14.0 + /@babel/runtime@7.23.7: + resolution: {integrity: sha512-w06OXVOFso7LcbzMiDGt+3X7Rh7Ho8MmgPoWU3rarH+8upf+wSU/grlGbWzQyr3DkdN6ZeuMFjpdwW0Q+HxobA==} + engines: {node: '>=6.9.0'} + dependencies: + regenerator-runtime: 0.14.0 + dev: true + /@babel/template@7.22.5: resolution: {integrity: sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==} engines: {node: '>=6.9.0'} @@ -1959,15 +2006,6 @@ packages: chalk: 4.1.2 dev: true - /@esbuild/aix-ppc64@0.19.10: - resolution: {integrity: sha512-Q+mk96KJ+FZ30h9fsJl+67IjNJm3x2eX+GBWGmocAKgzp27cowCOOqSdscX80s0SpdFXZnIv/+1xD1EctFx96Q==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [aix] - requiresBuild: true - dev: true - optional: true - /@esbuild/android-arm64@0.18.20: resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} engines: {node: '>=12'} @@ -1977,15 +2015,6 @@ packages: dev: true optional: true - /@esbuild/android-arm64@0.19.10: - resolution: {integrity: sha512-1X4CClKhDgC3by7k8aOWZeBXQX8dHT5QAMCAQDArCLaYfkppoARvh0fit3X2Qs+MXDngKcHv6XXyQCpY0hkK1Q==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - requiresBuild: true - dev: true - optional: true - /@esbuild/android-arm@0.18.20: resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} engines: {node: '>=12'} @@ -1995,15 +2024,6 @@ packages: dev: true optional: true - /@esbuild/android-arm@0.19.10: - resolution: {integrity: sha512-7W0bK7qfkw1fc2viBfrtAEkDKHatYfHzr/jKAHNr9BvkYDXPcC6bodtm8AyLJNNuqClLNaeTLuwURt4PRT9d7w==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - requiresBuild: true - dev: true - optional: true - /@esbuild/android-x64@0.18.20: resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} engines: {node: '>=12'} @@ -2013,15 +2033,6 @@ packages: dev: true optional: true - /@esbuild/android-x64@0.19.10: - resolution: {integrity: sha512-O/nO/g+/7NlitUxETkUv/IvADKuZXyH4BHf/g/7laqKC4i/7whLpB0gvpPc2zpF0q9Q6FXS3TS75QHac9MvVWw==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - requiresBuild: true - dev: true - optional: true - /@esbuild/darwin-arm64@0.18.20: resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} engines: {node: '>=12'} @@ -2031,15 +2042,6 @@ packages: dev: true optional: true - /@esbuild/darwin-arm64@0.19.10: - resolution: {integrity: sha512-YSRRs2zOpwypck+6GL3wGXx2gNP7DXzetmo5pHXLrY/VIMsS59yKfjPizQ4lLt5vEI80M41gjm2BxrGZ5U+VMA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - /@esbuild/darwin-x64@0.18.20: resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} engines: {node: '>=12'} @@ -2049,15 +2051,6 @@ packages: dev: true optional: true - /@esbuild/darwin-x64@0.19.10: - resolution: {integrity: sha512-alfGtT+IEICKtNE54hbvPg13xGBe4GkVxyGWtzr+yHO7HIiRJppPDhOKq3zstTcVf8msXb/t4eavW3jCDpMSmA==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - /@esbuild/freebsd-arm64@0.18.20: resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} engines: {node: '>=12'} @@ -2067,15 +2060,6 @@ packages: dev: true optional: true - /@esbuild/freebsd-arm64@0.19.10: - resolution: {integrity: sha512-dMtk1wc7FSH8CCkE854GyGuNKCewlh+7heYP/sclpOG6Cectzk14qdUIY5CrKDbkA/OczXq9WesqnPl09mj5dg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - requiresBuild: true - dev: true - optional: true - /@esbuild/freebsd-x64@0.18.20: resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} engines: {node: '>=12'} @@ -2085,15 +2069,6 @@ packages: dev: true optional: true - /@esbuild/freebsd-x64@0.19.10: - resolution: {integrity: sha512-G5UPPspryHu1T3uX8WiOEUa6q6OlQh6gNl4CO4Iw5PS+Kg5bVggVFehzXBJY6X6RSOMS8iXDv2330VzaObm4Ag==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-arm64@0.18.20: resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} engines: {node: '>=12'} @@ -2103,15 +2078,6 @@ packages: dev: true optional: true - /@esbuild/linux-arm64@0.19.10: - resolution: {integrity: sha512-QxaouHWZ+2KWEj7cGJmvTIHVALfhpGxo3WLmlYfJ+dA5fJB6lDEIg+oe/0//FuyVHuS3l79/wyBxbHr0NgtxJQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-arm@0.18.20: resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} engines: {node: '>=12'} @@ -2121,15 +2087,6 @@ packages: dev: true optional: true - /@esbuild/linux-arm@0.19.10: - resolution: {integrity: sha512-j6gUW5aAaPgD416Hk9FHxn27On28H4eVI9rJ4az7oCGTFW48+LcgNDBN+9f8rKZz7EEowo889CPKyeaD0iw9Kg==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-ia32@0.18.20: resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} engines: {node: '>=12'} @@ -2139,15 +2096,6 @@ packages: dev: true optional: true - /@esbuild/linux-ia32@0.19.10: - resolution: {integrity: sha512-4ub1YwXxYjj9h1UIZs2hYbnTZBtenPw5NfXCRgEkGb0b6OJ2gpkMvDqRDYIDRjRdWSe/TBiZltm3Y3Q8SN1xNg==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-loong64@0.18.20: resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} engines: {node: '>=12'} @@ -2157,15 +2105,6 @@ packages: dev: true optional: true - /@esbuild/linux-loong64@0.19.10: - resolution: {integrity: sha512-lo3I9k+mbEKoxtoIbM0yC/MZ1i2wM0cIeOejlVdZ3D86LAcFXFRdeuZmh91QJvUTW51bOK5W2BznGNIl4+mDaA==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-mips64el@0.18.20: resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} engines: {node: '>=12'} @@ -2175,15 +2114,6 @@ packages: dev: true optional: true - /@esbuild/linux-mips64el@0.19.10: - resolution: {integrity: sha512-J4gH3zhHNbdZN0Bcr1QUGVNkHTdpijgx5VMxeetSk6ntdt+vR1DqGmHxQYHRmNb77tP6GVvD+K0NyO4xjd7y4A==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-ppc64@0.18.20: resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} engines: {node: '>=12'} @@ -2193,15 +2123,6 @@ packages: dev: true optional: true - /@esbuild/linux-ppc64@0.19.10: - resolution: {integrity: sha512-tgT/7u+QhV6ge8wFMzaklOY7KqiyitgT1AUHMApau32ZlvTB/+efeCtMk4eXS+uEymYK249JsoiklZN64xt6oQ==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-riscv64@0.18.20: resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} engines: {node: '>=12'} @@ -2211,15 +2132,6 @@ packages: dev: true optional: true - /@esbuild/linux-riscv64@0.19.10: - resolution: {integrity: sha512-0f/spw0PfBMZBNqtKe5FLzBDGo0SKZKvMl5PHYQr3+eiSscfJ96XEknCe+JoOayybWUFQbcJTrk946i3j9uYZA==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-s390x@0.18.20: resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} engines: {node: '>=12'} @@ -2229,15 +2141,6 @@ packages: dev: true optional: true - /@esbuild/linux-s390x@0.19.10: - resolution: {integrity: sha512-pZFe0OeskMHzHa9U38g+z8Yx5FNCLFtUnJtQMpwhS+r4S566aK2ci3t4NCP4tjt6d5j5uo4h7tExZMjeKoehAA==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-x64@0.18.20: resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} engines: {node: '>=12'} @@ -2247,15 +2150,6 @@ packages: dev: true optional: true - /@esbuild/linux-x64@0.19.10: - resolution: {integrity: sha512-SpYNEqg/6pZYoc+1zLCjVOYvxfZVZj6w0KROZ3Fje/QrM3nfvT2llI+wmKSrWuX6wmZeTapbarvuNNK/qepSgA==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/netbsd-x64@0.18.20: resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} engines: {node: '>=12'} @@ -2265,15 +2159,6 @@ packages: dev: true optional: true - /@esbuild/netbsd-x64@0.19.10: - resolution: {integrity: sha512-ACbZ0vXy9zksNArWlk2c38NdKg25+L9pr/mVaj9SUq6lHZu/35nx2xnQVRGLrC1KKQqJKRIB0q8GspiHI3J80Q==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - requiresBuild: true - dev: true - optional: true - /@esbuild/openbsd-x64@0.18.20: resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} engines: {node: '>=12'} @@ -2283,15 +2168,6 @@ packages: dev: true optional: true - /@esbuild/openbsd-x64@0.19.10: - resolution: {integrity: sha512-PxcgvjdSjtgPMiPQrM3pwSaG4kGphP+bLSb+cihuP0LYdZv1epbAIecHVl5sD3npkfYBZ0ZnOjR878I7MdJDFg==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - requiresBuild: true - dev: true - optional: true - /@esbuild/sunos-x64@0.18.20: resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} engines: {node: '>=12'} @@ -2301,15 +2177,6 @@ packages: dev: true optional: true - /@esbuild/sunos-x64@0.19.10: - resolution: {integrity: sha512-ZkIOtrRL8SEJjr+VHjmW0znkPs+oJXhlJbNwfI37rvgeMtk3sxOQevXPXjmAPZPigVTncvFqLMd+uV0IBSEzqA==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - requiresBuild: true - dev: true - optional: true - /@esbuild/win32-arm64@0.18.20: resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} engines: {node: '>=12'} @@ -2319,15 +2186,6 @@ packages: dev: true optional: true - /@esbuild/win32-arm64@0.19.10: - resolution: {integrity: sha512-+Sa4oTDbpBfGpl3Hn3XiUe4f8TU2JF7aX8cOfqFYMMjXp6ma6NJDztl5FDG8Ezx0OjwGikIHw+iA54YLDNNVfw==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: true - optional: true - /@esbuild/win32-ia32@0.18.20: resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} engines: {node: '>=12'} @@ -2337,15 +2195,6 @@ packages: dev: true optional: true - /@esbuild/win32-ia32@0.19.10: - resolution: {integrity: sha512-EOGVLK1oWMBXgfttJdPHDTiivYSjX6jDNaATeNOaCOFEVcfMjtbx7WVQwPSE1eIfCp/CaSF2nSrDtzc4I9f8TQ==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: true - optional: true - /@esbuild/win32-x64@0.18.20: resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} engines: {node: '>=12'} @@ -2355,15 +2204,6 @@ packages: dev: true optional: true - /@esbuild/win32-x64@0.19.10: - resolution: {integrity: sha512-whqLG6Sc70AbU73fFYvuYzaE4MNMBIlR1Y/IrUeOXFrWHxBEjjbZaQ3IXIQS8wJdAzue2GwYZCjOrgrU1oUHoA==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: true - optional: true - /@eslint-community/eslint-utils@4.4.0(eslint@8.48.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -2552,6 +2392,140 @@ packages: '@jridgewell/resolve-uri': 3.1.1 '@jridgewell/sourcemap-codec': 1.4.15 + /@microsoft/api-extractor-model@7.28.3(@types/node@18.19.2): + resolution: {integrity: sha512-wT/kB2oDbdZXITyDh2SQLzaWwTOFbV326fP0pUwNW00WeliARs0qjmXBWmGWardEzp2U3/axkO3Lboqun6vrig==} + dependencies: + '@microsoft/tsdoc': 0.14.2 + '@microsoft/tsdoc-config': 0.16.2 + '@rushstack/node-core-library': 3.62.0(@types/node@18.19.2) + transitivePeerDependencies: + - '@types/node' + dev: true + + /@microsoft/api-extractor@7.39.0(@types/node@18.19.2): + resolution: {integrity: sha512-PuXxzadgnvp+wdeZFPonssRAj/EW4Gm4s75TXzPk09h3wJ8RS3x7typf95B4vwZRrPTQBGopdUl+/vHvlPdAcg==} + hasBin: true + dependencies: + '@microsoft/api-extractor-model': 7.28.3(@types/node@18.19.2) + '@microsoft/tsdoc': 0.14.2 + '@microsoft/tsdoc-config': 0.16.2 + '@rushstack/node-core-library': 3.62.0(@types/node@18.19.2) + '@rushstack/rig-package': 0.5.1 + '@rushstack/ts-command-line': 4.17.1 + colors: 1.2.5 + lodash: 4.17.21 + resolve: 1.22.4 + semver: 7.5.4 + source-map: 0.6.1 + typescript: 5.3.3 + transitivePeerDependencies: + - '@types/node' + dev: true + + /@microsoft/tsdoc-config@0.16.2: + resolution: {integrity: sha512-OGiIzzoBLgWWR0UdRJX98oYO+XKGf7tiK4Zk6tQ/E4IJqGCe7dvkTvgDZV5cFJUzLGDOjeAXrnZoA6QkVySuxw==} + dependencies: + '@microsoft/tsdoc': 0.14.2 + ajv: 6.12.6 + jju: 1.4.0 + resolve: 1.19.0 + dev: true + + /@microsoft/tsdoc@0.14.2: + resolution: {integrity: sha512-9b8mPpKrfeGRuhFH5iO1iwCLeIIsV6+H1sRfxbkoGXIyQE2BTsPd9zqSqQJ+pv5sJ/hT5M1zvOFL02MnEezFug==} + dev: true + + /@next/env@14.0.4: + resolution: {integrity: sha512-irQnbMLbUNQpP1wcE5NstJtbuA/69kRfzBrpAD7Gsn8zm/CY6YQYc3HQBz8QPxwISG26tIm5afvvVbu508oBeQ==} + dev: false + + /@next/eslint-plugin-next@14.0.4: + resolution: {integrity: sha512-U3qMNHmEZoVmHA0j/57nRfi3AscXNvkOnxDmle/69Jz/G0o/gWjXTDdlgILZdrxQ0Lw/jv2mPW8PGy0EGIHXhQ==} + dependencies: + glob: 7.1.7 + dev: true + + /@next/swc-darwin-arm64@14.0.4: + resolution: {integrity: sha512-mF05E/5uPthWzyYDyptcwHptucf/jj09i2SXBPwNzbgBNc+XnwzrL0U6BmPjQeOL+FiB+iG1gwBeq7mlDjSRPg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /@next/swc-darwin-x64@14.0.4: + resolution: {integrity: sha512-IZQ3C7Bx0k2rYtrZZxKKiusMTM9WWcK5ajyhOZkYYTCc8xytmwSzR1skU7qLgVT/EY9xtXDG0WhY6fyujnI3rw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /@next/swc-linux-arm64-gnu@14.0.4: + resolution: {integrity: sha512-VwwZKrBQo/MGb1VOrxJ6LrKvbpo7UbROuyMRvQKTFKhNaXjUmKTu7wxVkIuCARAfiI8JpaWAnKR+D6tzpCcM4w==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@next/swc-linux-arm64-musl@14.0.4: + resolution: {integrity: sha512-8QftwPEW37XxXoAwsn+nXlodKWHfpMaSvt81W43Wh8dv0gkheD+30ezWMcFGHLI71KiWmHK5PSQbTQGUiidvLQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@next/swc-linux-x64-gnu@14.0.4: + resolution: {integrity: sha512-/s/Pme3VKfZAfISlYVq2hzFS8AcAIOTnoKupc/j4WlvF6GQ0VouS2Q2KEgPuO1eMBwakWPB1aYFIA4VNVh667A==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@next/swc-linux-x64-musl@14.0.4: + resolution: {integrity: sha512-m8z/6Fyal4L9Bnlxde5g2Mfa1Z7dasMQyhEhskDATpqr+Y0mjOBZcXQ7G5U+vgL22cI4T7MfvgtrM2jdopqWaw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@next/swc-win32-arm64-msvc@14.0.4: + resolution: {integrity: sha512-7Wv4PRiWIAWbm5XrGz3D8HUkCVDMMz9igffZG4NB1p4u1KoItwx9qjATHz88kwCEal/HXmbShucaslXCQXUM5w==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@next/swc-win32-ia32-msvc@14.0.4: + resolution: {integrity: sha512-zLeNEAPULsl0phfGb4kdzF/cAVIfaC7hY+kt0/d+y9mzcZHsMS3hAS829WbJ31DkSlVKQeHEjZHIdhN+Pg7Gyg==} + engines: {node: '>= 10'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@next/swc-win32-x64-msvc@14.0.4: + resolution: {integrity: sha512-yEh2+R8qDlDCjxVpzOTEpBLQTEFAcP2A8fUFLaWNap9GitYKkKv1//y2S6XY6zsR4rCOPRpU7plYDR+az2n30A==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: false + optional: true + /@nodelib/fs.scandir@2.1.5: resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -2926,123 +2900,71 @@ packages: resolution: {integrity: sha512-cRPZh2rBswFnGt5X5EUEPs0r+pAsXxYsifv/fgy9ZLQokuT52bPH+9xjDR+7TafRua5CttGW83wP4TntRcWNDA==} dev: false - /@react-native/normalize-colors@0.72.0: - resolution: {integrity: sha512-285lfdqSXaqKuBbbtP9qL2tDrfxdOFtIMvkKadtleRQkdOxx+uzGvFr82KHmc/sSiMtfXGp7JnFYWVh4sFl7Yw==} - dev: false - - /@react-native/virtualized-lists@0.72.8(react-native@0.72.6): - resolution: {integrity: sha512-J3Q4Bkuo99k7mu+jPS9gSUSgq+lLRSI/+ahXNwV92XgJ/8UgOTxu2LPwhJnBk/sQKxq7E8WkZBnBiozukQMqrw==} - peerDependencies: - react-native: '*' - dependencies: - invariant: 2.2.4 - nullthrows: 1.1.1 - react-native: 0.72.6(@babel/core@7.22.10)(@babel/preset-env@7.21.5)(react@18.2.0) - dev: false - - /@rollup/rollup-android-arm-eabi@4.9.1: - resolution: {integrity: sha512-6vMdBZqtq1dVQ4CWdhFwhKZL6E4L1dV6jUjuBvsavvNJSppzi6dLBbuV+3+IyUREaj9ZFvQefnQm28v4OCXlig==} - cpu: [arm] - os: [android] - requiresBuild: true - dev: true - optional: true - - /@rollup/rollup-android-arm64@4.9.1: - resolution: {integrity: sha512-Jto9Fl3YQ9OLsTDWtLFPtaIMSL2kwGyGoVCmPC8Gxvym9TCZm4Sie+cVeblPO66YZsYH8MhBKDMGZ2NDxuk/XQ==} - cpu: [arm64] - os: [android] - requiresBuild: true - dev: true - optional: true - - /@rollup/rollup-darwin-arm64@4.9.1: - resolution: {integrity: sha512-LtYcLNM+bhsaKAIGwVkh5IOWhaZhjTfNOkGzGqdHvhiCUVuJDalvDxEdSnhFzAn+g23wgsycmZk1vbnaibZwwA==} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - - /@rollup/rollup-darwin-x64@4.9.1: - resolution: {integrity: sha512-KyP/byeXu9V+etKO6Lw3E4tW4QdcnzDG/ake031mg42lob5tN+5qfr+lkcT/SGZaH2PdW4Z1NX9GHEkZ8xV7og==} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - - /@rollup/rollup-linux-arm-gnueabihf@4.9.1: - resolution: {integrity: sha512-Yqz/Doumf3QTKplwGNrCHe/B2p9xqDghBZSlAY0/hU6ikuDVQuOUIpDP/YcmoT+447tsZTmirmjgG3znvSCR0Q==} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@rollup/rollup-linux-arm64-gnu@4.9.1: - resolution: {integrity: sha512-u3XkZVvxcvlAOlQJ3UsD1rFvLWqu4Ef/Ggl40WAVCuogf4S1nJPHh5RTgqYFpCOvuGJ7H5yGHabjFKEZGExk5Q==} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@rollup/rollup-linux-arm64-musl@4.9.1: - resolution: {integrity: sha512-0XSYN/rfWShW+i+qjZ0phc6vZ7UWI8XWNz4E/l+6edFt+FxoEghrJHjX1EY/kcUGCnZzYYRCl31SNdfOi450Aw==} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: true - optional: true + /@react-native/normalize-colors@0.72.0: + resolution: {integrity: sha512-285lfdqSXaqKuBbbtP9qL2tDrfxdOFtIMvkKadtleRQkdOxx+uzGvFr82KHmc/sSiMtfXGp7JnFYWVh4sFl7Yw==} + dev: false - /@rollup/rollup-linux-riscv64-gnu@4.9.1: - resolution: {integrity: sha512-LmYIO65oZVfFt9t6cpYkbC4d5lKHLYv5B4CSHRpnANq0VZUQXGcCPXHzbCXCz4RQnx7jvlYB1ISVNCE/omz5cw==} - cpu: [riscv64] - os: [linux] - requiresBuild: true - dev: true - optional: true + /@react-native/virtualized-lists@0.72.8(react-native@0.72.6): + resolution: {integrity: sha512-J3Q4Bkuo99k7mu+jPS9gSUSgq+lLRSI/+ahXNwV92XgJ/8UgOTxu2LPwhJnBk/sQKxq7E8WkZBnBiozukQMqrw==} + peerDependencies: + react-native: '*' + dependencies: + invariant: 2.2.4 + nullthrows: 1.1.1 + react-native: 0.72.6(@babel/core@7.22.10)(@babel/preset-env@7.21.5)(react@18.2.0) + dev: false - /@rollup/rollup-linux-x64-gnu@4.9.1: - resolution: {integrity: sha512-kr8rEPQ6ns/Lmr/hiw8sEVj9aa07gh1/tQF2Y5HrNCCEPiCBGnBUt9tVusrcBBiJfIt1yNaXN6r1CCmpbFEDpg==} - cpu: [x64] - os: [linux] - requiresBuild: true + /@rollup/pluginutils@5.1.0: + resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + dependencies: + '@types/estree': 1.0.5 + estree-walker: 2.0.2 + picomatch: 2.3.1 dev: true - optional: true - /@rollup/rollup-linux-x64-musl@4.9.1: - resolution: {integrity: sha512-t4QSR7gN+OEZLG0MiCgPqMWZGwmeHhsM4AkegJ0Kiy6TnJ9vZ8dEIwHw1LcZKhbHxTY32hp9eVCMdR3/I8MGRw==} - cpu: [x64] - os: [linux] - requiresBuild: true + /@rushstack/eslint-patch@1.6.1: + resolution: {integrity: sha512-UY+FGM/2jjMkzQLn8pxcHGMaVLh9aEitG3zY2CiY7XHdLiz3bZOwa6oDxNqEMv7zZkV+cj5DOdz0cQ1BP5Hjgw==} dev: true - optional: true - /@rollup/rollup-win32-arm64-msvc@4.9.1: - resolution: {integrity: sha512-7XI4ZCBN34cb+BH557FJPmh0kmNz2c25SCQeT9OiFWEgf8+dL6ZwJ8f9RnUIit+j01u07Yvrsuu1rZGxJCc51g==} - cpu: [arm64] - os: [win32] - requiresBuild: true + /@rushstack/node-core-library@3.62.0(@types/node@18.19.2): + resolution: {integrity: sha512-88aJn2h8UpSvdwuDXBv1/v1heM6GnBf3RjEy6ZPP7UnzHNCqOHA2Ut+ScYUbXcqIdfew9JlTAe3g+cnX9xQ/Aw==} + peerDependencies: + '@types/node': '*' + peerDependenciesMeta: + '@types/node': + optional: true + dependencies: + '@types/node': 18.19.2 + colors: 1.2.5 + fs-extra: 7.0.1 + import-lazy: 4.0.0 + jju: 1.4.0 + resolve: 1.22.4 + semver: 7.5.4 + z-schema: 5.0.5 dev: true - optional: true - /@rollup/rollup-win32-ia32-msvc@4.9.1: - resolution: {integrity: sha512-yE5c2j1lSWOH5jp+Q0qNL3Mdhr8WuqCNVjc6BxbVfS5cAS6zRmdiw7ktb8GNpDCEUJphILY6KACoFoRtKoqNQg==} - cpu: [ia32] - os: [win32] - requiresBuild: true + /@rushstack/rig-package@0.5.1: + resolution: {integrity: sha512-pXRYSe29TjRw7rqxD4WS3HN/sRSbfr+tJs4a9uuaSIBAITbUggygdhuG0VrO0EO+QqH91GhYMN4S6KRtOEmGVA==} + dependencies: + resolve: 1.22.4 + strip-json-comments: 3.1.1 dev: true - optional: true - /@rollup/rollup-win32-x64-msvc@4.9.1: - resolution: {integrity: sha512-PyJsSsafjmIhVgaI1Zdj7m8BB8mMckFah/xbpplObyHfiXzKcI5UOUXRyOdHW7nz4DpMCuzLnF7v5IWHenCwYA==} - cpu: [x64] - os: [win32] - requiresBuild: true + /@rushstack/ts-command-line@4.17.1: + resolution: {integrity: sha512-2jweO1O57BYP5qdBGl6apJLB+aRIn5ccIRTPDyULh0KMwVzFqWtw6IZWt1qtUoZD/pD2RNkIOosH6Cq45rIYeg==} + dependencies: + '@types/argparse': 1.0.38 + argparse: 1.0.10 + colors: 1.2.5 + string-argv: 0.3.2 dev: true - optional: true /@sideway/address@4.1.4: resolution: {integrity: sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==} @@ -3093,8 +3015,14 @@ packages: solid-js: 1.6.13 dev: true - /@tanstack/react-store@0.1.3(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-nDOgSlarFFbIvVirAi/GcCyqyRMthgpuBhOhN87DkeQEau+ZNGsLKJifzrQYuWB0+4FXmgeoGaY/Dr383MPqZw==} + /@swc/helpers@0.5.2: + resolution: {integrity: sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw==} + dependencies: + tslib: 2.6.2 + dev: false + + /@tanstack/react-store@0.2.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-tEbMCQjbeVw9KOP/202LfqZMSNAVi6zYkkp1kBom8nFuMx/965Hzes3+6G6b/comCwVxoJU8Gg9IrcF8yRPthw==} peerDependencies: react: '>=16' react-dom: '>=16' @@ -3161,7 +3089,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.46)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-Aqhl2IVmLt8IovEVarNDFuJDVWVvhnr9/GCU6UUnrYXwgDFF9h2L2o2P9KBni1AST5sT6riAyoukFLyjQUgD/g==} engines: {node: '>=12'} peerDependencies: @@ -3178,7 +3106,7 @@ packages: optional: true dependencies: '@babel/runtime': 7.22.10 - '@types/react': 18.0.15 + '@types/react': 18.2.46 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) react-error-boundary: 3.1.4(react@18.2.0) @@ -3193,7 +3121,7 @@ packages: dependencies: '@babel/runtime': 7.22.10 '@testing-library/dom': 9.3.1 - '@types/react-dom': 18.0.6 + '@types/react-dom': 18.2.18 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: true @@ -3228,6 +3156,10 @@ packages: engines: {node: '>= 10'} dev: true + /@types/argparse@1.0.38: + resolution: {integrity: sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==} + dev: true + /@types/aria-query@5.0.1: resolution: {integrity: sha512-XTIieEY+gvJ39ChLcB4If5zHtPxt3Syj5rgZR+e1ctpmK8NjPf0zFqsz4JpLJT0xla9GFDKjy8Cpu331nrmE1Q==} dev: true @@ -3346,31 +3278,48 @@ packages: dependencies: undici-types: 5.26.5 + /@types/node@20.10.6: + resolution: {integrity: sha512-Vac8H+NlRNNlAmDfGUP7b5h/KA+AtWIzuXy0E6OyP8f1tCLYAtPvKRRDJjAPqhpCb0t6U2j7/xqAuLEebW2kiw==} + dependencies: + undici-types: 5.26.5 + dev: true + /@types/normalize-package-data@2.4.1: resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} dev: true /@types/prop-types@15.7.5: resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} - dev: true /@types/react-dom@18.0.6: resolution: {integrity: sha512-/5OFZgfIPSwy+YuIBP/FgJnQnsxhZhjjrnxudMddeblOouIodEQ75X14Rr4wGSG/bknL+Omy9iWlLo1u/9GzAA==} dependencies: - '@types/react': 18.0.15 + '@types/react': 18.2.46 + dev: true + + /@types/react-dom@18.2.18: + resolution: {integrity: sha512-TJxDm6OfAX2KJWJdMEVTwWke5Sc/E/RlnPGvGfS0W7+6ocy2xhDVQVh/KvC2Uf7kACs+gDytdusDSdWfWkaNzw==} + dependencies: + '@types/react': 18.2.46 dev: true - /@types/react@18.0.15: - resolution: {integrity: sha512-iz3BtLuIYH1uWdsv6wXYdhozhqj20oD4/Hk2DNXIn1kFsmp9x8d9QB6FnPhfkbhd2PgEONt9Q1x/ebkwjfFLow==} + /@types/react@18.2.35: + resolution: {integrity: sha512-LG3xpFZ++rTndV+/XFyX5vUP7NI9yxyk+MQvBDq+CVs8I9DLSc3Ymwb1Vmw5YDoeNeHN4PDZa3HylMKJYT9PNQ==} dependencies: '@types/prop-types': 15.7.5 '@types/scheduler': 0.16.2 - csstype: 3.1.0 + csstype: 3.1.2 dev: true + /@types/react@18.2.46: + resolution: {integrity: sha512-nNCvVBcZlvX4NU1nRRNV/mFl1nNRuTuslAJglQsq+8ldXe5Xv0Wd2f7WTE3jOxhLH2BFfiZGC6GCp+kHQbgG+w==} + dependencies: + '@types/prop-types': 15.7.5 + '@types/scheduler': 0.16.2 + csstype: 3.1.2 + /@types/scheduler@0.16.2: resolution: {integrity: sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==} - dev: true /@types/semver@7.3.13: resolution: {integrity: sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==} @@ -3638,18 +3587,37 @@ packages: '@volar/source-map': 1.10.1 dev: true + /@volar/language-core@1.11.1: + resolution: {integrity: sha512-dOcNn3i9GgZAcJt43wuaEykSluAuOkQgzni1cuxLxTV0nJKanQztp7FxyswdRILaKH+P2XZMPRp2S4MV/pElCw==} + dependencies: + '@volar/source-map': 1.11.1 + dev: true + /@volar/source-map@1.10.1: resolution: {integrity: sha512-3/S6KQbqa7pGC8CxPrg69qHLpOvkiPHGJtWPkI/1AXCsktkJ6gIk/5z4hyuMp8Anvs6eS/Kvp/GZa3ut3votKA==} dependencies: muggle-string: 0.3.1 dev: true + /@volar/source-map@1.11.1: + resolution: {integrity: sha512-hJnOnwZ4+WT5iupLRnuzbULZ42L7BWWPMmruzwtLhJfpDVoZLjNBxHDi2sY2bgZXCKlpU5XcsMFoYrsQmPhfZg==} + dependencies: + muggle-string: 0.3.1 + dev: true + /@volar/typescript@1.10.1: resolution: {integrity: sha512-+iiO9yUSRHIYjlteT+QcdRq8b44qH19/eiUZtjNtuh6D9ailYM7DVR0zO2sEgJlvCaunw/CF9Ov2KooQBpR4VQ==} dependencies: '@volar/language-core': 1.10.1 dev: true + /@volar/typescript@1.11.1: + resolution: {integrity: sha512-iU+t2mas/4lYierSnoFOeRFQUhAEMgsFuQxoxvwn5EdQopw43j+J27a4lt9LMInx1gLJBC6qL14WYGlgymaSMQ==} + dependencies: + '@volar/language-core': 1.11.1 + path-browserify: 1.0.1 + dev: true + /@vue/compiler-core@3.3.4: resolution: {integrity: sha512-cquyDNvZ6jTbf/+x+AgM2Arrp6G4Dzbb0R64jiG804HRMfRiFXWI6kqUVqZ6ZR0bQhIoQjB4+2bhNtVwndW15g==} dependencies: @@ -3703,6 +3671,26 @@ packages: vue-template-compiler: 2.7.14 dev: true + /@vue/language-core@1.8.27(typescript@5.2.2): + resolution: {integrity: sha512-L8Kc27VdQserNaCUNiSFdDl9LWT24ly8Hpwf1ECy3aFb9m6bDhBGQYOujDm21N7EW3moKIOKEanQwe1q5BK+mA==} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@volar/language-core': 1.11.1 + '@volar/source-map': 1.11.1 + '@vue/compiler-dom': 3.3.4 + '@vue/shared': 3.3.4 + computeds: 0.0.1 + minimatch: 9.0.3 + muggle-string: 0.3.1 + path-browserify: 1.0.1 + typescript: 5.2.2 + vue-template-compiler: 2.7.14 + dev: true + /@vue/reactivity-transform@3.3.4: resolution: {integrity: sha512-MXgwjako4nu5WFLAjpBnCj/ieqcjE2aJBINUNQzkZQfzIZA4xn+0fV1tIYBJvvva3N3OvKGofRLvQIwEQPpaXw==} dependencies: @@ -3929,6 +3917,7 @@ packages: dependencies: normalize-path: 3.0.0 picomatch: 2.3.1 + dev: false /appdirsjs@1.2.7: resolution: {integrity: sha512-Quji6+8kLBC3NnBeo14nPDq0+2jUs5s3/xEye+udFHumHhRk4M7aAMXp/PBJqkKYGuuyR9M/6Dq7d2AViiGmhw==} @@ -3981,6 +3970,17 @@ packages: is-string: 1.0.7 dev: true + /array-includes@3.1.7: + resolution: {integrity: sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.22.1 + get-intrinsic: 1.2.1 + is-string: 1.0.7 + dev: true + /array-union@2.1.0: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} @@ -4017,6 +4017,16 @@ packages: es-shim-unscopables: 1.0.0 dev: true + /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 + define-properties: 1.2.0 + es-abstract: 1.22.1 + es-shim-unscopables: 1.0.0 + dev: true + /array.prototype.tosorted@1.1.1: resolution: {integrity: sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==} dependencies: @@ -4057,6 +4067,10 @@ packages: resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} dev: true + /ast-types-flow@0.0.8: + resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} + dev: true + /ast-types@0.14.2: resolution: {integrity: sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA==} engines: {node: '>=4'} @@ -4106,6 +4120,11 @@ packages: engines: {node: '>= 0.4'} dev: true + /axe-core@4.7.0: + resolution: {integrity: sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==} + engines: {node: '>=4'} + dev: true + /axios@0.24.0: resolution: {integrity: sha512-Q6cWsys88HoPgAaFAVUb0WpPk0O8iTeisR9IMqy9G8AbO4NlpVknrnQS03zzF9PGAWgO3cgletO3VjV/P7VztA==} dependencies: @@ -4132,6 +4151,12 @@ packages: - debug dev: true + /axobject-query@3.2.1: + resolution: {integrity: sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==} + dependencies: + dequal: 2.0.3 + dev: true + /babel-core@7.0.0-bridge.0(@babel/core@7.22.10): resolution: {integrity: sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==} peerDependencies: @@ -4358,16 +4383,6 @@ packages: base64-js: 1.5.1 ieee754: 1.2.1 - /bundle-require@4.0.1(esbuild@0.19.10): - resolution: {integrity: sha512-9NQkRHlNdNpDBGmLpngF3EFDcwodhMUuLz9PaWYciVcQF9SE4LFjM2DB/xV1Li5JiuDMv7ZUWuC3rGbqR0MAXQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - peerDependencies: - esbuild: '>=0.17' - dependencies: - esbuild: 0.19.10 - load-tsconfig: 0.2.5 - dev: true - /bundlewatch@0.3.3: resolution: {integrity: sha512-qzSVWrZyyWXa546JpAPRPTFmnXms9YNVnfzB05DRJKmN6wRRa7SkxE4OgKQmbAY74Z6CM2mKAc6vwvd2R+1lUQ==} engines: {node: '>=10'} @@ -4387,6 +4402,13 @@ packages: - debug dev: true + /busboy@1.6.0: + resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} + engines: {node: '>=10.16.0'} + dependencies: + streamsearch: 1.1.0 + dev: false + /bytes@3.0.0: resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==} engines: {node: '>= 0.8'} @@ -4514,21 +4536,6 @@ packages: resolution: {integrity: sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==} dev: true - /chokidar@3.5.3: - resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} - engines: {node: '>= 8.10.0'} - dependencies: - anymatch: 3.1.3 - braces: 3.0.2 - glob-parent: 5.1.2 - is-binary-path: 2.1.0 - is-glob: 4.0.3 - normalize-path: 3.0.0 - readdirp: 3.6.0 - optionalDependencies: - fsevents: 2.3.3 - dev: true - /ci-env@1.17.0: resolution: {integrity: sha512-NtTjhgSEqv4Aj90TUYHQLxHdnCPXnjdtuGG1X8lTfp/JqeXTdw0FTWl/vUAPuvbWZTF8QVpv6ASe/XacE+7R2A==} dev: true @@ -4559,6 +4566,10 @@ packages: resolution: {integrity: sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==} engines: {node: '>=6'} + /client-only@0.0.1: + resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} + dev: false + /cliui@6.0.0: resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} dependencies: @@ -4610,6 +4621,11 @@ packages: resolution: {integrity: sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==} dev: false + /colors@1.2.5: + resolution: {integrity: sha512-erNRLao/Y3Fv54qUa0LBB+//Uf3YwMUmdJinN20yMXm9zdKKqH9wt7R9IIVZ+K7ShzfpLV/Zg8+VyrBJYB4lpg==} + engines: {node: '>=0.1.90'} + dev: true + /combined-stream@1.0.8: resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} engines: {node: '>= 0.8'} @@ -4634,11 +4650,6 @@ packages: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} dev: false - /commander@4.1.1: - resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} - engines: {node: '>= 6'} - dev: true - /commander@5.1.0: resolution: {integrity: sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==} engines: {node: '>= 6'} @@ -4647,7 +4658,6 @@ packages: /commander@9.5.0: resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==} engines: {node: ^12.20.0 || >=14} - dev: false /commondir@1.0.1: resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} @@ -4682,6 +4692,10 @@ packages: - supports-color dev: false + /computeds@0.0.1: + resolution: {integrity: sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==} + dev: true + /concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} @@ -4837,6 +4851,10 @@ packages: is-git-repository: 1.1.1 dev: true + /damerau-levenshtein@1.0.8: + resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} + dev: true + /data-urls@4.0.0: resolution: {integrity: sha512-/mMTei/JXPqvFqQtfyTowxmJVwr2PVAeCcDxyFf6LhoOu/09TX2OX3kb2wzi4DMXcfj4OItwDOnhl5oziPnT6g==} engines: {node: '>=14'} @@ -4925,6 +4943,10 @@ packages: resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} dev: true + /decode-formdata@0.4.0: + resolution: {integrity: sha512-/OMUlsRLrSgHPOWCwembsFFTT4DY7Ts9GGlwK8v9yeLOyYZSPKIfn/1oOuV9UmpQ9CZi5JeyT8edunRoBOOl5g==} + dev: false + /deep-eql@4.1.3: resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} engines: {node: '>=6'} @@ -4970,6 +4992,15 @@ packages: clone: 1.0.4 dev: false + /define-data-property@1.1.1: + resolution: {integrity: sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.1 + gopd: 1.0.1 + has-property-descriptors: 1.0.0 + dev: true + /define-lazy-prop@2.0.0: resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} engines: {node: '>=8'} @@ -4983,6 +5014,15 @@ packages: object-keys: 1.1.1 dev: true + /define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.1 + has-property-descriptors: 1.0.0 + object-keys: 1.1.1 + dev: true + /delayed-stream@1.0.0: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} @@ -5251,6 +5291,25 @@ packages: safe-array-concat: 1.0.0 dev: true + /es-iterator-helpers@1.0.15: + resolution: {integrity: sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g==} + dependencies: + asynciterator.prototype: 1.0.0 + call-bind: 1.0.2 + define-properties: 1.2.1 + es-abstract: 1.22.1 + es-set-tostringtag: 2.0.1 + function-bind: 1.1.1 + get-intrinsic: 1.2.1 + globalthis: 1.0.3 + has-property-descriptors: 1.0.0 + has-proto: 1.0.1 + has-symbols: 1.0.3 + internal-slot: 1.0.5 + iterator.prototype: 1.1.2 + safe-array-concat: 1.0.1 + dev: true + /es-set-tostringtag@2.0.1: resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==} engines: {node: '>= 0.4'} @@ -5280,21 +5339,6 @@ packages: engines: {node: '>=v14.0.0', npm: '>=7.0.0'} dev: true - /esbuild-plugin-solid@0.5.0(esbuild@0.19.10)(solid-js@1.7.12): - resolution: {integrity: sha512-ITK6n+0ayGFeDVUZWNMxX+vLsasEN1ILrg4pISsNOQ+mq4ljlJJiuXotInd+HE0MzwTcA9wExT1yzDE2hsqPsg==} - peerDependencies: - esbuild: '>=0.12' - solid-js: '>= 1.0' - dependencies: - '@babel/core': 7.22.10 - '@babel/preset-typescript': 7.21.5(@babel/core@7.22.10) - babel-preset-solid: 1.7.12(@babel/core@7.22.10) - esbuild: 0.19.10 - solid-js: 1.7.12 - transitivePeerDependencies: - - supports-color - dev: true - /esbuild@0.18.20: resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==} engines: {node: '>=12'} @@ -5325,37 +5369,6 @@ packages: '@esbuild/win32-x64': 0.18.20 dev: true - /esbuild@0.19.10: - resolution: {integrity: sha512-S1Y27QGt/snkNYrRcswgRFqZjaTG5a5xM3EQo97uNBnH505pdzSNe/HLBq1v0RO7iK/ngdbhJB6mDAp0OK+iUA==} - engines: {node: '>=12'} - hasBin: true - requiresBuild: true - optionalDependencies: - '@esbuild/aix-ppc64': 0.19.10 - '@esbuild/android-arm': 0.19.10 - '@esbuild/android-arm64': 0.19.10 - '@esbuild/android-x64': 0.19.10 - '@esbuild/darwin-arm64': 0.19.10 - '@esbuild/darwin-x64': 0.19.10 - '@esbuild/freebsd-arm64': 0.19.10 - '@esbuild/freebsd-x64': 0.19.10 - '@esbuild/linux-arm': 0.19.10 - '@esbuild/linux-arm64': 0.19.10 - '@esbuild/linux-ia32': 0.19.10 - '@esbuild/linux-loong64': 0.19.10 - '@esbuild/linux-mips64el': 0.19.10 - '@esbuild/linux-ppc64': 0.19.10 - '@esbuild/linux-riscv64': 0.19.10 - '@esbuild/linux-s390x': 0.19.10 - '@esbuild/linux-x64': 0.19.10 - '@esbuild/netbsd-x64': 0.19.10 - '@esbuild/openbsd-x64': 0.19.10 - '@esbuild/sunos-x64': 0.19.10 - '@esbuild/win32-arm64': 0.19.10 - '@esbuild/win32-ia32': 0.19.10 - '@esbuild/win32-x64': 0.19.10 - dev: true - /escalade@3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} engines: {node: '>=6'} @@ -5383,6 +5396,31 @@ packages: engines: {node: '>=12'} dev: true + /eslint-config-next@14.0.4(eslint@8.48.0)(typescript@5.2.2): + resolution: {integrity: sha512-9/xbOHEQOmQtqvQ1UsTQZpnA7SlDMBtuKJ//S4JnoyK3oGLhILKXdBgu/UO7lQo/2xOykQULS1qQ6p2+EpHgAQ==} + peerDependencies: + eslint: ^7.23.0 || ^8.0.0 + typescript: '>=3.3.1' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@next/eslint-plugin-next': 14.0.4 + '@rushstack/eslint-patch': 1.6.1 + '@typescript-eslint/parser': 6.4.1(eslint@8.48.0)(typescript@5.2.2) + eslint: 8.48.0 + eslint-import-resolver-node: 0.3.9 + eslint-import-resolver-typescript: 3.6.0(@typescript-eslint/parser@6.4.1)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.28.1)(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-plugin-jsx-a11y: 6.8.0(eslint@8.48.0) + eslint-plugin-react: 7.33.2(eslint@8.48.0) + eslint-plugin-react-hooks: 4.6.0(eslint@8.48.0) + typescript: 5.2.2 + transitivePeerDependencies: + - eslint-import-resolver-webpack + - supports-color + dev: true + /eslint-config-prettier@9.0.0(eslint@8.48.0): resolution: {integrity: sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==} hasBin: true @@ -5402,7 +5440,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.4.1)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.28.1)(eslint@8.48.0): resolution: {integrity: sha512-QTHR9ddNnn35RTxlaEnx2gCxqFlF2SEN0SE2d17SqwyM7YOSI2GHWRYp5BiRkObTUNYPupC/3Fq2a0PpT+EKpg==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -5450,7 +5488,7 @@ packages: debug: 3.2.7 eslint: 8.48.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.4.1)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.28.1)(eslint@8.48.0) transitivePeerDependencies: - supports-color dev: true @@ -5490,6 +5528,31 @@ packages: - supports-color dev: true + /eslint-plugin-jsx-a11y@6.8.0(eslint@8.48.0): + resolution: {integrity: sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA==} + engines: {node: '>=4.0'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + dependencies: + '@babel/runtime': 7.23.7 + aria-query: 5.3.0 + array-includes: 3.1.7 + array.prototype.flatmap: 1.3.2 + ast-types-flow: 0.0.8 + axe-core: 4.7.0 + axobject-query: 3.2.1 + damerau-levenshtein: 1.0.8 + emoji-regex: 9.2.2 + es-iterator-helpers: 1.0.15 + eslint: 8.48.0 + hasown: 2.0.0 + jsx-ast-utils: 3.3.5 + language-tags: 1.0.9 + minimatch: 3.1.2 + object.entries: 1.1.7 + object.fromentries: 2.0.7 + dev: true + /eslint-plugin-react-hooks@4.6.0(eslint@8.48.0): resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} engines: {node: '>=10'} @@ -5659,6 +5722,7 @@ packages: onetime: 5.1.2 signal-exit: 3.0.7 strip-final-newline: 2.0.0 + dev: false /fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} @@ -5873,6 +5937,15 @@ packages: universalify: 2.0.0 dev: true + /fs-extra@7.0.1: + resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} + engines: {node: '>=6 <7 || >=8'} + dependencies: + graceful-fs: 4.2.11 + jsonfile: 4.0.0 + universalify: 0.1.2 + dev: true + /fs-extra@8.1.0: resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} engines: {node: '>=6 <7 || >=8'} @@ -5895,6 +5968,10 @@ packages: /function-bind@1.1.1: resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} + /function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + dev: true + /function.prototype.name@1.1.5: resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==} engines: {node: '>= 0.4'} @@ -5944,6 +6021,7 @@ packages: /get-stream@6.0.1: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} + dev: false /get-symbol-description@1.0.0: resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} @@ -5984,6 +6062,10 @@ packages: is-glob: 4.0.3 dev: true + /glob-to-regexp@0.4.1: + resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} + dev: false + /glob@10.3.3: resolution: {integrity: sha512-92vPiMb/iqpmEgsOoIDvTjc50wf9CCCvMzsi6W0JLPeUKE8TWP1a73PgqSrqy7iAZxaSD1YdzU7QZR5LF51MJw==} engines: {node: '>=16 || 14 >=14.17'} @@ -6007,8 +6089,8 @@ packages: path-is-absolute: 1.0.1 dev: true - /glob@7.1.6: - resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==} + /glob@7.1.7: + resolution: {integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==} dependencies: fs.realpath: 1.0.0 inflight: 1.0.6 @@ -6155,6 +6237,13 @@ packages: dependencies: function-bind: 1.1.1 + /hasown@2.0.0: + resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==} + engines: {node: '>= 0.4'} + dependencies: + function-bind: 1.1.2 + dev: true + /he@1.2.0: resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} hasBin: true @@ -6245,6 +6334,7 @@ packages: /human-signals@2.1.0: resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} engines: {node: '>=10.17.0'} + dev: false /iconv-lite@0.6.3: resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} @@ -6292,6 +6382,11 @@ packages: resolve-from: 4.0.0 dev: true + /import-lazy@4.0.0: + resolution: {integrity: sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==} + engines: {node: '>=8'} + dev: true + /import-meta-resolve@4.0.0: resolution: {integrity: sha512-okYUR7ZQPH+efeuMJGlq4f8ubUgO50kByRPyt/Cy1Io4PSRsPjxME+YlVaCOx+NIToW7hCsZNFJyTPFFKepRSA==} dev: true @@ -6543,6 +6638,7 @@ packages: /is-stream@2.0.1: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} + dev: false /is-string@1.0.7: resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} @@ -6682,6 +6778,16 @@ packages: reflect.getprototypeof: 1.0.3 dev: true + /iterator.prototype@1.1.2: + resolution: {integrity: sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==} + dependencies: + define-properties: 1.2.1 + get-intrinsic: 1.2.1 + has-symbols: 1.0.3 + reflect.getprototypeof: 1.0.4 + set-function-name: 2.0.1 + dev: true + /jackspeak@2.2.3: resolution: {integrity: sha512-pF0kfjmg8DJLxDrizHoCZGUFz4P4czQ3HyfW4BU0ffebYkzAVlBywp5zaxW/TM+r0sGbmrQdi8EQQVTJFxnGsQ==} engines: {node: '>=14'} @@ -6806,6 +6912,10 @@ packages: supports-color: 8.1.1 dev: false + /jju@1.4.0: + resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==} + dev: true + /joi@17.11.0: resolution: {integrity: sha512-NgB+lZLNoqISVy1rZocE9PZI36bL/77ie924Ri43yEvi9GUUMPeyVIr8KdFTMUlby1p0PBYMk9spIxEUQYqrJQ==} dependencies: @@ -6816,11 +6926,6 @@ packages: '@sideway/pinpoint': 2.0.0 dev: false - /joycon@3.1.1: - resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} - engines: {node: '>=10'} - dev: true - /js-beautify@1.14.9: resolution: {integrity: sha512-coM7xq1syLcMyuVGyToxcj2AlzhkDjmfklL8r0JgJ7A76wyGMpJ1oA35mr4APdYNO/o/4YY8H54NQIJzhMbhBg==} engines: {node: '>=12'} @@ -6979,7 +7084,6 @@ packages: resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} optionalDependencies: graceful-fs: 4.2.11 - dev: false /jsonfile@6.1.0: resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} @@ -7032,6 +7136,21 @@ packages: engines: {node: '>=6'} dev: false + /kolorist@1.8.0: + resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==} + dev: true + + /language-subtag-registry@0.3.22: + resolution: {integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==} + dev: true + + /language-tags@1.0.9: + resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==} + engines: {node: '>=0.10'} + dependencies: + language-subtag-registry: 0.3.22 + dev: true + /leven@3.1.0: resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} engines: {node: '>=6'} @@ -7045,11 +7164,6 @@ packages: type-check: 0.4.0 dev: true - /lilconfig@2.1.0: - resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} - engines: {node: '>=10'} - dev: true - /lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} dev: true @@ -7059,11 +7173,6 @@ packages: engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dev: true - /load-tsconfig@0.2.5: - resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dev: true - /local-pkg@0.4.3: resolution: {integrity: sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==} engines: {node: '>=14'} @@ -7100,12 +7209,16 @@ packages: resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} dev: false - /lodash.merge@4.6.2: - resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + /lodash.get@4.4.2: + resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==} dev: true - /lodash.sortby@4.7.0: - resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} + /lodash.isequal@4.5.0: + resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} + dev: true + + /lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} dev: true /lodash.throttle@4.1.1: @@ -7268,6 +7381,7 @@ packages: /merge-stream@2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + dev: false /merge2@1.4.1: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} @@ -7703,14 +7817,6 @@ packages: resolution: {integrity: sha512-ckmWDJjphvd/FvZawgygcUeQCxzvohjFO5RxTjj4eq8kw359gFF3E1brjfI+viLMxss5JrHTDRHZvu2/tuy0Qg==} dev: true - /mz@2.7.0: - resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} - dependencies: - any-promise: 1.3.0 - object-assign: 4.1.1 - thenify-all: 1.6.0 - dev: true - /nanoid@3.3.6: resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} @@ -7733,6 +7839,46 @@ packages: resolution: {integrity: sha512-9iN1ka/9zmX1ZvLV9ewJYEk9h7RyRRtqdK0woXcqohu8EWIerfPUjYJPg0ULy0UqP7cslmdGc8xKDJcojlKiaw==} dev: true + /next@14.0.4(@babel/core@7.22.10)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-qbwypnM7327SadwFtxXnQdGiKpkuhaRLE2uq62/nRul9cj9KhQ5LhHmlziTNqUidZotw/Q1I9OjirBROdUJNgA==} + engines: {node: '>=18.17.0'} + hasBin: true + peerDependencies: + '@opentelemetry/api': ^1.1.0 + react: ^18.2.0 + react-dom: ^18.2.0 + sass: ^1.3.0 + peerDependenciesMeta: + '@opentelemetry/api': + optional: true + sass: + optional: true + dependencies: + '@next/env': 14.0.4 + '@swc/helpers': 0.5.2 + busboy: 1.6.0 + caniuse-lite: 1.0.30001546 + graceful-fs: 4.2.11 + postcss: 8.4.31 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + styled-jsx: 5.1.1(@babel/core@7.22.10)(react@18.2.0) + watchpack: 2.4.0 + optionalDependencies: + '@next/swc-darwin-arm64': 14.0.4 + '@next/swc-darwin-x64': 14.0.4 + '@next/swc-linux-arm64-gnu': 14.0.4 + '@next/swc-linux-arm64-musl': 14.0.4 + '@next/swc-linux-x64-gnu': 14.0.4 + '@next/swc-linux-x64-musl': 14.0.4 + '@next/swc-win32-arm64-msvc': 14.0.4 + '@next/swc-win32-ia32-msvc': 14.0.4 + '@next/swc-win32-x64-msvc': 14.0.4 + transitivePeerDependencies: + - '@babel/core' + - babel-plugin-macros + dev: false + /nocache@3.0.4: resolution: {integrity: sha512-WDD0bdg9mbq6F4mRxEYcPWwfA1vxd0mrvKOyxI7Xj/atfRHVeutzuWByG//jfm4uPzp0y4Kj051EORCBSQMycw==} engines: {node: '>=12.0.0'} @@ -7817,6 +7963,7 @@ packages: /normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} + dev: false /npm-bundled@2.0.1: resolution: {integrity: sha512-gZLxXdjEzE/+mOstGDqR6b0EkhJ+kM6fxM6vUuckuctuVPh80Q6pw/rSZj9s4Gex9GxWtIicO1pc8DB9KZWudw==} @@ -7978,6 +8125,15 @@ packages: es-abstract: 1.22.1 dev: true + /object.fromentries@2.0.7: + resolution: {integrity: sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.22.1 + dev: true + /object.groupby@1.0.0: resolution: {integrity: sha512-70MWG6NfRH9GnbZOikuhPPYzpUpof9iW2J9E4dW7FXTqPNb6rllE6u39SKwwiNh8lCwX3DDb5OgcKGiEBrTTyw==} dependencies: @@ -8197,6 +8353,10 @@ packages: engines: {node: '>= 0.8'} dev: false + /path-browserify@1.0.1: + resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} + dev: true + /path-exists@3.0.0: resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} engines: {node: '>=4'} @@ -8270,6 +8430,7 @@ packages: /pirates@4.0.6: resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} engines: {node: '>= 6'} + dev: false /pkg-dir@3.0.0: resolution: {integrity: sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==} @@ -8286,22 +8447,6 @@ packages: pathe: 1.1.1 dev: true - /postcss-load-config@4.0.1: - resolution: {integrity: sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==} - engines: {node: '>= 14'} - peerDependencies: - postcss: '>=8.0.9' - ts-node: '>=9.0.0' - peerDependenciesMeta: - postcss: - optional: true - ts-node: - optional: true - dependencies: - lilconfig: 2.1.0 - yaml: 2.3.1 - dev: true - /postcss@8.4.28: resolution: {integrity: sha512-Z7V5j0cq8oEKyejIKfpD8b4eBy9cwW2JWPk0+fB1HOAMsfHbnAXLLS+PfVWlzMSLQaWttKDt607I0XHmpE67Vw==} engines: {node: ^10 || ^12 || >=14} @@ -8310,6 +8455,15 @@ packages: picocolors: 1.0.0 source-map-js: 1.0.2 + /postcss@8.4.31: + resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: 3.3.6 + picocolors: 1.0.0 + source-map-js: 1.0.2 + dev: false + /prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} @@ -8647,13 +8801,6 @@ packages: string_decoder: 1.3.0 util-deprecate: 1.0.2 - /readdirp@3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} - dependencies: - picomatch: 2.3.1 - dev: true - /readline@1.3.0: resolution: {integrity: sha512-k2d6ACCkiNYz222Fs/iNze30rRJ1iIicW7JuX/7/cozvih6YCkFZH+J6mAFDVgv0dRBaAyr4jDqC95R2y4IADg==} dev: false @@ -8706,6 +8853,18 @@ packages: which-builtin-type: 1.1.3 dev: true + /reflect.getprototypeof@1.0.4: + resolution: {integrity: sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.1 + es-abstract: 1.22.1 + get-intrinsic: 1.2.1 + globalthis: 1.0.3 + which-builtin-type: 1.1.3 + dev: true + /regenerate-unicode-properties@10.1.0: resolution: {integrity: sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==} engines: {node: '>=4'} @@ -8758,6 +8917,21 @@ packages: jsesc: 0.5.0 dev: false + /rehackt@0.0.3(@types/react@18.2.46)(react@18.2.0): + resolution: {integrity: sha512-aBRHudKhOWwsTvCbSoinzq+Lej/7R8e8UoPvLZo5HirZIIBLGAgdG7SL9QpdcBoQ7+3QYPi3lRLknAzXBlhZ7g==} + peerDependencies: + '@types/react': '*' + react: '*' + peerDependenciesMeta: + '@types/react': + optional: true + react: + optional: true + dependencies: + '@types/react': 18.2.46 + react: 18.2.0 + dev: false + /require-directory@2.1.1: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} @@ -8780,15 +8954,17 @@ packages: engines: {node: '>=4'} dev: true - /resolve-from@5.0.0: - resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} - engines: {node: '>=8'} - dev: true - /resolve-pkg-maps@1.0.0: resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} dev: true + /resolve@1.19.0: + resolution: {integrity: sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==} + dependencies: + is-core-module: 2.13.0 + path-parse: 1.0.7 + dev: true + /resolve@1.22.4: resolution: {integrity: sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==} hasBin: true @@ -8847,27 +9023,6 @@ packages: fsevents: 2.3.3 dev: true - /rollup@4.9.1: - resolution: {integrity: sha512-pgPO9DWzLoW/vIhlSoDByCzcpX92bKEorbgXuZrqxByte3JFk2xSW2JEeAcyLc9Ru9pqcNNW+Ob7ntsk2oT/Xw==} - engines: {node: '>=18.0.0', npm: '>=8.0.0'} - hasBin: true - optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.9.1 - '@rollup/rollup-android-arm64': 4.9.1 - '@rollup/rollup-darwin-arm64': 4.9.1 - '@rollup/rollup-darwin-x64': 4.9.1 - '@rollup/rollup-linux-arm-gnueabihf': 4.9.1 - '@rollup/rollup-linux-arm64-gnu': 4.9.1 - '@rollup/rollup-linux-arm64-musl': 4.9.1 - '@rollup/rollup-linux-riscv64-gnu': 4.9.1 - '@rollup/rollup-linux-x64-gnu': 4.9.1 - '@rollup/rollup-linux-x64-musl': 4.9.1 - '@rollup/rollup-win32-arm64-msvc': 4.9.1 - '@rollup/rollup-win32-ia32-msvc': 4.9.1 - '@rollup/rollup-win32-x64-msvc': 4.9.1 - fsevents: 2.3.3 - dev: true - /rrweb-cssom@0.6.0: resolution: {integrity: sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==} dev: true @@ -8901,6 +9056,16 @@ packages: isarray: 2.0.5 dev: true + /safe-array-concat@1.0.1: + resolution: {integrity: sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==} + engines: {node: '>=0.4'} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.1 + has-symbols: 1.0.3 + isarray: 2.0.5 + dev: true + /safe-buffer@5.1.2: resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} @@ -9021,6 +9186,15 @@ packages: resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} dev: false + /set-function-name@2.0.1: + resolution: {integrity: sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.1 + functions-have-names: 1.2.3 + has-property-descriptors: 1.0.0 + dev: true + /setprototypeof@1.2.0: resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} dev: false @@ -9164,13 +9338,6 @@ packages: engines: {node: '>= 8'} dev: false - /source-map@0.8.0-beta.0: - resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==} - engines: {node: '>= 8'} - dependencies: - whatwg-url: 7.1.0 - dev: true - /spawn-command@0.0.2: resolution: {integrity: sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ==} dev: true @@ -9285,6 +9452,16 @@ packages: any-promise: 1.3.0 dev: true + /streamsearch@1.1.0: + resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} + engines: {node: '>=10.0.0'} + dev: false + + /string-argv@0.3.2: + resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} + engines: {node: '>=0.6.19'} + dev: true + /string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} @@ -9383,6 +9560,7 @@ packages: /strip-final-newline@2.0.0: resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} engines: {node: '>=6'} + dev: false /strip-indent@3.0.0: resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} @@ -9427,19 +9605,23 @@ packages: resolution: {integrity: sha512-H2N9c26eXjzL/S/K+i/RHHcFanE74dptvvjM8iwzwbVcWY/zjBbgRqF3K0DY4+OD+uTTASTBvDoxPDaPN02D7g==} dev: true - /sucrase@3.34.0: - resolution: {integrity: sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==} - engines: {node: '>=8'} - hasBin: true + /styled-jsx@5.1.1(@babel/core@7.22.10)(react@18.2.0): + resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} + engines: {node: '>= 12.0.0'} + peerDependencies: + '@babel/core': '*' + babel-plugin-macros: '*' + react: '>= 16.8.0 || 17.x.x || ^18.0.0-0' + peerDependenciesMeta: + '@babel/core': + optional: true + babel-plugin-macros: + optional: true dependencies: - '@jridgewell/gen-mapping': 0.3.3 - commander: 4.1.1 - glob: 7.1.6 - lines-and-columns: 1.2.4 - mz: 2.7.0 - pirates: 4.0.6 - ts-interface-checker: 0.1.13 - dev: true + '@babel/core': 7.22.10 + client-only: 0.0.1 + react: 18.2.0 + dev: false /sudo-prompt@9.2.1: resolution: {integrity: sha512-Mu7R0g4ig9TUuGSxJavny5Rv0egCEtpZRNMrZaYS1vxkiIxGiGUwoezU3LazIQ+KE04hTrTfNPgxU5gzi7F5Pw==} @@ -9523,19 +9705,6 @@ packages: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} dev: true - /thenify-all@1.6.0: - resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} - engines: {node: '>=0.8'} - dependencies: - thenify: 3.3.1 - dev: true - - /thenify@3.3.1: - resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} - dependencies: - any-promise: 1.3.0 - dev: true - /throat@5.0.0: resolution: {integrity: sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==} dev: false @@ -9692,12 +9861,6 @@ packages: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} dev: false - /tr46@1.0.1: - resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==} - dependencies: - punycode: 2.3.0 - dev: true - /tr46@4.1.1: resolution: {integrity: sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==} engines: {node: '>=14'} @@ -9733,10 +9896,6 @@ packages: typescript: 5.2.2 dev: true - /ts-interface-checker@0.1.13: - resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} - dev: true - /tsconfig-paths@3.14.2: resolution: {integrity: sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==} dependencies: @@ -9758,58 +9917,6 @@ packages: /tslib@2.6.2: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} - /tsup-preset-solid@2.2.0(esbuild@0.19.10)(solid-js@1.7.12)(tsup@8.0.1): - resolution: {integrity: sha512-sPAzeArmYkVAZNRN+m4tkiojdd0GzW/lCwd4+TQDKMENe8wr2uAuro1s0Z59ASmdBbkXoxLgCiNcuQMyiidMZg==} - peerDependencies: - tsup: ^8.0.0 - dependencies: - esbuild-plugin-solid: 0.5.0(esbuild@0.19.10)(solid-js@1.7.12) - tsup: 8.0.1(typescript@5.2.2) - transitivePeerDependencies: - - esbuild - - solid-js - - supports-color - dev: true - - /tsup@8.0.1(typescript@5.2.2): - resolution: {integrity: sha512-hvW7gUSG96j53ZTSlT4j/KL0q1Q2l6TqGBFc6/mu/L46IoNWqLLUzLRLP1R8Q7xrJTmkDxxDoojV5uCVs1sVOg==} - engines: {node: '>=18'} - hasBin: true - peerDependencies: - '@microsoft/api-extractor': ^7.36.0 - '@swc/core': ^1 - postcss: ^8.4.12 - typescript: '>=4.5.0' - peerDependenciesMeta: - '@microsoft/api-extractor': - optional: true - '@swc/core': - optional: true - postcss: - optional: true - typescript: - optional: true - dependencies: - bundle-require: 4.0.1(esbuild@0.19.10) - cac: 6.7.14 - chokidar: 3.5.3 - debug: 4.3.4 - esbuild: 0.19.10 - execa: 5.1.1 - globby: 11.1.0 - joycon: 3.1.1 - postcss-load-config: 4.0.1 - resolve-from: 5.0.0 - rollup: 4.9.1 - source-map: 0.8.0-beta.0 - sucrase: 3.34.0 - tree-kill: 1.2.2 - typescript: 5.2.2 - transitivePeerDependencies: - - supports-color - - ts-node - dev: true - /type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} @@ -9898,12 +10005,6 @@ packages: is-typed-array: 1.1.12 dev: true - /typescript@4.8.4: - resolution: {integrity: sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==} - engines: {node: '>=4.2.0'} - hasBin: true - dev: true - /typescript@4.9.5: resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} engines: {node: '>=4.2.0'} @@ -9928,6 +10029,12 @@ packages: hasBin: true dev: true + /typescript@5.3.3: + resolution: {integrity: sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==} + engines: {node: '>=14.17'} + hasBin: true + dev: true + /ufo@1.3.0: resolution: {integrity: sha512-bRn3CsoojyNStCZe0BG0Mt4Nr/4KF+rhFlnNXybgqt5pXHNFRlqinSoQaTrGyzE4X8aHplSb+TorH+COin9Yxw==} dev: true @@ -9980,7 +10087,6 @@ packages: /universalify@0.1.2: resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} engines: {node: '>= 4.0.0'} - dev: false /universalify@0.2.0: resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} @@ -10066,6 +10172,11 @@ packages: spdx-expression-parse: 3.0.1 dev: true + /validator@13.11.0: + resolution: {integrity: sha512-Ii+sehpSfZy+At5nPdnyMhx78fEoPDkR2XW/zimHEL3MyGJQOCQ7WeP20jPYRz7ZCpcKLB21NxuXHF3bxjStBQ==} + engines: {node: '>= 0.10'} + dev: true + /vary@1.1.2: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} @@ -10093,6 +10204,38 @@ packages: - terser dev: true + /vite-plugin-dts@3.7.0(@types/node@18.19.2)(typescript@5.2.2)(vite@4.4.9): + resolution: {integrity: sha512-np1uPaYzu98AtPReB8zkMnbjwcNHOABsLhqVOf81b3ol9b5M2wPcAVs8oqPnOpr6Us+7yDXVauwkxsk5+ldmRA==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + typescript: '*' + vite: '*' + peerDependenciesMeta: + vite: + optional: true + dependencies: + '@microsoft/api-extractor': 7.39.0(@types/node@18.19.2) + '@rollup/pluginutils': 5.1.0 + '@vue/language-core': 1.8.27(typescript@5.2.2) + debug: 4.3.4 + kolorist: 1.8.0 + typescript: 5.2.2 + vite: 4.4.9(@types/node@18.19.2) + vue-tsc: 1.8.27(typescript@5.2.2) + transitivePeerDependencies: + - '@types/node' + - rollup + - supports-color + dev: true + + /vite-plugin-externalize-deps@0.8.0(vite@4.4.9): + resolution: {integrity: sha512-MdC8kRNQ1ZjhUicU2HcqGVhL0UUFqv83Zp1JZdHjE82PoPR8wsSWZ3axpot7B6img3sW6g8shYJikE0CKA0chA==} + peerDependencies: + vite: ^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 + dependencies: + vite: 4.4.9(@types/node@18.19.2) + dev: true + /vite-plugin-solid@2.7.0(solid-js@1.7.12)(vite@4.4.9): resolution: {integrity: sha512-avp/Jl5zOp/Itfo67xtDB2O61U7idviaIp4mLsjhCa13PjKNasz+IID0jYTyqUp9SFx6/PmBr6v4KgDppqompg==} peerDependencies: @@ -10286,6 +10429,18 @@ packages: typescript: 5.2.2 dev: true + /vue-tsc@1.8.27(typescript@5.2.2): + resolution: {integrity: sha512-WesKCAZCRAbmmhuGl3+VrdWItEvfoFIPXOvUJkjULi+x+6G/Dy69yO3TBRJDr9eUlmsNAwVmxsNZxvHKzbkKdg==} + hasBin: true + peerDependencies: + typescript: '*' + dependencies: + '@volar/typescript': 1.11.1 + '@vue/language-core': 1.8.27(typescript@5.2.2) + semver: 7.5.4 + typescript: 5.2.2 + dev: true + /vue@3.3.4: resolution: {integrity: sha512-VTyEYn3yvIeY1Py0WaYGZsXnz3y5UnGi62GjVEqvEGPl6nxbOrCXbVOTQWBEJUqAyTUk2uJ5JLVnYJ6ZzGbrSw==} dependencies: @@ -10308,6 +10463,14 @@ packages: makeerror: 1.0.12 dev: false + /watchpack@2.4.0: + resolution: {integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==} + engines: {node: '>=10.13.0'} + dependencies: + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + dev: false + /wcwidth@1.0.1: resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} dependencies: @@ -10318,10 +10481,6 @@ packages: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} dev: false - /webidl-conversions@4.0.2: - resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==} - dev: true - /webidl-conversions@7.0.0: resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} engines: {node: '>=12'} @@ -10362,14 +10521,6 @@ packages: webidl-conversions: 3.0.1 dev: false - /whatwg-url@7.1.0: - resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==} - dependencies: - lodash.sortby: 4.7.0 - tr46: 1.0.1 - webidl-conversions: 4.0.2 - dev: true - /when-exit@2.1.2: resolution: {integrity: sha512-u9J+toaf3CCxCAzM/484qNAxQE75rFdVgiFEEV8Xps2gzYhf0tx73s1WXDQhkwV17E3MxRMz40m7Ekd2/121Lg==} dev: true @@ -10567,6 +10718,7 @@ packages: /yaml@2.3.1: resolution: {integrity: sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==} engines: {node: '>= 14'} + dev: false /yargs-parser@18.1.3: resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} @@ -10631,6 +10783,18 @@ packages: toposort: 2.0.2 type-fest: 2.19.0 + /z-schema@5.0.5: + resolution: {integrity: sha512-D7eujBWkLa3p2sIpJA0d1pr7es+a7m0vFAnZLlCEKq/Ij2k0MLi9Br2UPxoxdYystm5K1yeBGzub0FlYUEWj2Q==} + engines: {node: '>=8.0.0'} + hasBin: true + dependencies: + lodash.get: 4.4.2 + lodash.isequal: 4.5.0 + validator: 13.11.0 + optionalDependencies: + commander: 9.5.0 + dev: true + /zeptomatch@1.2.2: resolution: {integrity: sha512-0ETdzEO0hdYmT8aXHHf5aMjpX+FHFE61sG4qKFAoJD2Umt3TWdCmH7ADxn2oUiWTlqBGC+SGr8sYMfr+37J8pQ==} dependencies: diff --git a/scripts/getTsupConfig.js b/scripts/getTsupConfig.js deleted file mode 100644 index 28fd7edde..000000000 --- a/scripts/getTsupConfig.js +++ /dev/null @@ -1,39 +0,0 @@ -// @ts-check - -import { esbuildPluginFilePathExtensions } from 'esbuild-plugin-file-path-extensions' - -/** - * @param {Object} opts - Options for building configurations. - * @param {string[]} opts.entry - The entry array. - * @returns {import('tsup').Options} - */ -export function modernConfig(opts) { - return { - entry: opts.entry, - format: ['cjs', 'esm'], - target: ['chrome91', 'firefox90', 'edge91', 'safari15', 'ios15', 'opera77'], - outDir: 'build/modern', - dts: true, - sourcemap: true, - clean: true, - esbuildPlugins: [esbuildPluginFilePathExtensions({ esmExtension: 'js' })], - } -} - -/** - * @param {Object} opts - Options for building configurations. - * @param {string[]} opts.entry - The entry array. - * @returns {import('tsup').Options} - */ -export function legacyConfig(opts) { - return { - entry: opts.entry, - format: ['cjs', 'esm'], - target: ['es2020', 'node16'], - outDir: 'build/legacy', - dts: true, - sourcemap: true, - clean: true, - esbuildPlugins: [esbuildPluginFilePathExtensions({ esmExtension: 'js' })], - } -}