From 590c7c23e37335c66596caf029754e71a6df4fe8 Mon Sep 17 00:00:00 2001 From: mathieudutour Date: Thu, 25 May 2023 14:44:01 +0200 Subject: [PATCH] Open source @raycast/utils --- .eslintrc.json | 32 + .github/workflows/test.yml | 36 + .gitignore | 2 + .prettierrc | 5 + README.md | 19 + .../.gitbook/assets/utils-avatar-icon.png | Bin 0 -> 19666 bytes .../.gitbook/assets/utils-favicon.png | Bin 0 -> 17422 bytes .../.gitbook/assets/utils-illustration.jpg | Bin 0 -> 379060 bytes .../.gitbook/assets/utils-progress-icon.png | Bin 0 -> 18970 bytes docs/utils-reference/SUMMARY.md | 16 + docs/utils-reference/getting-started.md | 42 + docs/utils-reference/icons/README.md | 1 + docs/utils-reference/icons/getAvatarIcon.md | 38 + docs/utils-reference/icons/getFavicon.md | 42 + docs/utils-reference/icons/getProgressIcon.md | 40 + docs/utils-reference/react-hooks/README.md | 1 + docs/utils-reference/react-hooks/useAI.md | 95 + .../react-hooks/useCachedPromise.md | 243 + .../react-hooks/useCachedState.md | 52 + docs/utils-reference/react-hooks/useExec.md | 295 ++ docs/utils-reference/react-hooks/useFetch.md | 212 + docs/utils-reference/react-hooks/useForm.md | 130 + .../utils-reference/react-hooks/usePromise.md | 196 + docs/utils-reference/react-hooks/useSQL.md | 200 + package-lock.json | 4501 +++++++++++++++++ package.json | 54 + src/exec-utils.ts | 165 + src/handle-error-toast-action.ts | 45 + src/icon/avatar.ts | 142 + src/icon/color.ts | 170 + src/icon/favicon.ts | 49 + src/icon/index.ts | 3 + src/icon/progress.ts | 67 + src/index.ts | 14 + src/types.ts | 113 + src/useAI.ts | 61 + src/useCachedPromise.ts | 173 + src/useCachedState.ts | 104 + src/useDeepMemo.ts | 19 + src/useExec.ts | 389 ++ src/useFetch.ts | 103 + src/useForm.tsx | 240 + src/useLatest.ts | 12 + src/usePromise.ts | 250 + src/useSQL.tsx | 244 + tests/.eslintrc.json | 4 + tests/.gitignore | 10 + tests/.prettierrc | 4 + tests/README.md | 3 + tests/assets/extension_icon.png | Bin 0 -> 96020 bytes tests/package-lock.json | 3458 +++++++++++++ tests/package.json | 115 + tests/src/ai.tsx | 37 + tests/src/avatar.tsx | 11 + tests/src/cached-promise.tsx | 36 + tests/src/cached-state.tsx | 20 + tests/src/exec.tsx | 19 + tests/src/favicon.tsx | 10 + tests/src/fetch.tsx | 20 + tests/src/form.tsx | 63 + tests/src/progress.tsx | 12 + tests/src/promise.tsx | 32 + tests/src/sql.tsx | 53 + tests/tsconfig.json | 17 + tsconfig.json | 19 + 65 files changed, 12558 insertions(+) create mode 100644 .eslintrc.json create mode 100644 .github/workflows/test.yml create mode 100644 .gitignore create mode 100644 .prettierrc create mode 100644 README.md create mode 100644 docs/utils-reference/.gitbook/assets/utils-avatar-icon.png create mode 100644 docs/utils-reference/.gitbook/assets/utils-favicon.png create mode 100644 docs/utils-reference/.gitbook/assets/utils-illustration.jpg create mode 100644 docs/utils-reference/.gitbook/assets/utils-progress-icon.png create mode 100644 docs/utils-reference/SUMMARY.md create mode 100644 docs/utils-reference/getting-started.md create mode 100644 docs/utils-reference/icons/README.md create mode 100644 docs/utils-reference/icons/getAvatarIcon.md create mode 100644 docs/utils-reference/icons/getFavicon.md create mode 100644 docs/utils-reference/icons/getProgressIcon.md create mode 100644 docs/utils-reference/react-hooks/README.md create mode 100644 docs/utils-reference/react-hooks/useAI.md create mode 100644 docs/utils-reference/react-hooks/useCachedPromise.md create mode 100644 docs/utils-reference/react-hooks/useCachedState.md create mode 100644 docs/utils-reference/react-hooks/useExec.md create mode 100644 docs/utils-reference/react-hooks/useFetch.md create mode 100644 docs/utils-reference/react-hooks/useForm.md create mode 100644 docs/utils-reference/react-hooks/usePromise.md create mode 100644 docs/utils-reference/react-hooks/useSQL.md create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 src/exec-utils.ts create mode 100644 src/handle-error-toast-action.ts create mode 100644 src/icon/avatar.ts create mode 100644 src/icon/color.ts create mode 100644 src/icon/favicon.ts create mode 100644 src/icon/index.ts create mode 100644 src/icon/progress.ts create mode 100644 src/index.ts create mode 100644 src/types.ts create mode 100644 src/useAI.ts create mode 100644 src/useCachedPromise.ts create mode 100644 src/useCachedState.ts create mode 100644 src/useDeepMemo.ts create mode 100644 src/useExec.ts create mode 100644 src/useFetch.ts create mode 100644 src/useForm.tsx create mode 100644 src/useLatest.ts create mode 100644 src/usePromise.ts create mode 100644 src/useSQL.tsx create mode 100644 tests/.eslintrc.json create mode 100644 tests/.gitignore create mode 100644 tests/.prettierrc create mode 100644 tests/README.md create mode 100644 tests/assets/extension_icon.png create mode 100644 tests/package-lock.json create mode 100644 tests/package.json create mode 100644 tests/src/ai.tsx create mode 100644 tests/src/avatar.tsx create mode 100644 tests/src/cached-promise.tsx create mode 100644 tests/src/cached-state.tsx create mode 100644 tests/src/exec.tsx create mode 100644 tests/src/favicon.tsx create mode 100644 tests/src/fetch.tsx create mode 100644 tests/src/form.tsx create mode 100644 tests/src/progress.tsx create mode 100644 tests/src/promise.tsx create mode 100644 tests/src/sql.tsx create mode 100644 tests/tsconfig.json create mode 100644 tsconfig.json diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100644 index 0000000..17b7253 --- /dev/null +++ b/.eslintrc.json @@ -0,0 +1,32 @@ +{ + "root": true, + "env": { + "es2021": true, + "node": true + }, + "parser": "@typescript-eslint/parser", + "plugins": ["@typescript-eslint", "react-hooks"], + "extends": [ + "eslint:recommended", + "plugin:import/recommended", + "plugin:import/typescript", + "plugin:@typescript-eslint/recommended", + "prettier", + "plugin:react-hooks/recommended" + ], + "rules": { + "react-hooks/rules-of-hooks": "error", + "react-hooks/exhaustive-deps": "warn", + "@typescript-eslint/no-unused-vars": ["warn", { "argsIgnorePattern": "^_" }], + "import/no-unresolved": [2, { "ignore": ["@raycast/api"] }] + }, + "overrides": [ + { + "files": ["*.ts", "*.tsx"], + "rules": { + "@typescript-eslint/explicit-module-boundary-types": "off", + "@typescript-eslint/no-namespace": "off" + } + } + ] +} diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 0000000..4e41b0e --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,36 @@ +name: Test + +on: + workflow_dispatch: + pull_request: + paths: + - "src/**" + - "tests/**" + branches: [main, master] + push: + paths: + - "src/**" + - "tests/**" + branches: [main, master] + +jobs: + tests: + if: github.repository == 'raycast/utils' + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: raycast/github-actions/git-checkout@v1.13.0 + - name: Setup node + uses: raycast/github-actions/setup-node@v1.13.0 + - name: Npm Install + run: npm ci + - name: Npm Lint + run: npm run test + - name: Build + run: npm run build + - name: Npm Install Tests + run: npm ci + working-directory: ./tests + - name: Build tests + run: npm run build + working-directory: ./tests diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..f06235c --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +node_modules +dist diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..de3bd60 --- /dev/null +++ b/.prettierrc @@ -0,0 +1,5 @@ +{ + "tabWidth": 2, + "printWidth": 120, + "singleQuote": false +} diff --git a/README.md b/README.md new file mode 100644 index 0000000..c1f06e8 --- /dev/null +++ b/README.md @@ -0,0 +1,19 @@ +# Raycast Utilities + +In addition to the [Raycast API](https://developers.raycast.com/api-reference/ai) which is bundled as part of the app, we also provide a sibling package that contains a set of utilities to streamline common patterns and operations used in extensions. + +![image](https://user-images.githubusercontent.com/3254314/181186048-37bf34c2-a317-4181-8976-2122af6a8506.png) + +## Installation + +This package can be installed independently using `npm`. + +``` +npm install --save @raycast/utils +``` + +[`@raycast/utils`](https://www.npmjs.com/package/@raycast/utils) has a [peer dependency](https://docs.npmjs.com/cli/v8/configuring-npm/package-json#peerdependencies) on [`@raycast/api`](https://www.npmjs.com/package/@raycast/api). This means that a certain version of `@raycast/utils` will require a version above a certain version of `@raycast/api`. `npm` will warn you if that is not the case. + +## Documentation + +Find the documentation on [developers.raycast.com](https://developers.raycast.com/utils-reference). diff --git a/docs/utils-reference/.gitbook/assets/utils-avatar-icon.png b/docs/utils-reference/.gitbook/assets/utils-avatar-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..3c6269820bd9ecb9d18550e31d2fff626deefdc5 GIT binary patch literal 19666 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 literal 0 HcmV?d00001 diff --git a/docs/utils-reference/.gitbook/assets/utils-favicon.png b/docs/utils-reference/.gitbook/assets/utils-favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..8383499b76a723de43e610079031cd2543c52a66 GIT binary patch literal 17422 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 s-gV-3W&#!d1# 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�Q?Yk^#LT+;Rd0Vw%T8B4|n^qepVCH`9oQ;{Jx#B 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
+ + + } + > + + + + + + {[1, 2, 3, 4, 5, 6, 7].map((num) => { + return ; + })} + + + ); +} +``` + +## Types + +### FormValidation + +Shorthands for common validation cases + +#### Enumeration members + +| Name | Description | +| :------- | :------------------------------------------------ | +| Required | Show an error when the value of the item is empty | diff --git a/docs/utils-reference/react-hooks/usePromise.md b/docs/utils-reference/react-hooks/usePromise.md new file mode 100644 index 0000000..56b6b56 --- /dev/null +++ b/docs/utils-reference/react-hooks/usePromise.md @@ -0,0 +1,196 @@ +# `usePromise` + +Hook which wraps an asynchronous function or a function that returns a Promise and returns the [AsyncState](#asyncstate) corresponding to the execution of the function. + +{% hint style="info" %} +The function is assumed to be constant (eg. changing it won't trigger a revalidation). +{% endhint %} + +## Signature + +```ts +type Result = `type of the returned value of the returned Promise`; + +function usePromise( + fn: T, + args?: Parameters, + options?: { + abortable?: MutableRefObject; + execute?: boolean; + onError?: (error: Error) => void; + onData?: (data: Result) => void; + onWillExecute?: (args: Parameters) -> void; + } +): AsyncState> & { + revalidate: () => void; + mutate: MutatePromise | undefined>; +}; +``` + +### Arguments + +- `fn` is an asynchronous function or a function that returns a Promise. +- `args` is the array of arguments to pass to the function. Every time they change, the function will be executed again. You can omit the array if the function doesn't require any argument. + +With a few options: + +- `options.abortable` is a reference to an [`AbortController`](https://developer.mozilla.org/en-US/docs/Web/API/AbortController) to cancel a previous call when triggering a new one. +- `options.execute` is a boolean to indicate whether to actually execute the function or not. This is useful for cases where one of the function's arguments depends on something that might not be available right away (for example, depends on some user inputs). Because React requires every hook to be defined on the render, this flag enables you to define the hook right away but wait until you have all the arguments ready to execute the function. +- `options.onError` is a function called when an execution fails. By default, it will log the error and show a generic failure toast with an action to retry. +- `options.onData` is a function called when an execution succeeds. +- `options.onWillExecute` is a function called when an execution will start. + +### Returns + +Returns an object with the [AsyncState](#asyncstate) corresponding to the execution of the function as well as a couple of methods to manipulate it. + +- `data`, `error`, `isLoading` - see [AsyncState](#asyncstate). +- `revalidate` is a method to manually call the function with the same arguments again. +- `mutate` is a method to wrap an asynchronous update and gives some control about how the `usePromise`'s data should be updated while the update is going through. By default, the data will be revalidated (eg. the function will be called again) after the update is done. See [Mutation and Optimistic Updates](#mutation-and-optimistic-updates) for more information. + +## Example + +```tsx +import { Detail, ActionPanel, Action } from "@raycast/api"; +import { usePromise } from "@raycast/utils"; + +const Demo = () => { + const abortable = useRef(); + const { isLoading, data, revalidate } = usePromise( + async (url: string) => { + const response = await fetch(url, { signal: abortable.current?.signal }); + const result = await response.text(); + return result; + }, + ["https://api.example"], + { + abortable, + } + ); + + return ( + + revalidate()} /> + + } + /> + ); +}; +``` + +## Mutation and Optimistic Updates + +In an optimistic update, the UI behaves as though a change was successfully completed before receiving confirmation from the server that it was - it is being optimistic that it will eventually get the confirmation rather than an error. This allows for a more responsive user experience. + +You can specify an `optimisticUpdate` function to mutate the data in order to reflect the change introduced by the asynchronous update. + +When doing so, you can specify a `rollbackOnError` function to mutate back the data if the asynchronous update fails. If not specified, the data will be automatically rolled back to its previous value (before the optimistic update). + +```tsx +import { Detail, ActionPanel, Action, showToast, Toast } from "@raycast/api"; +import { usePromise } from "@raycast/utils"; + +const Demo = () => { + const { isLoading, data, mutate } = usePromise( + async (url: string) => { + const response = await fetch(url); + const result = await response.text(); + return result; + }, + ["https://api.example"] + ); + + const appendFoo = async () => { + const toast = await showToast({ style: Toast.Style.Animated, title: "Appending Foo" }); + try { + await mutate( + // we are calling an API to do something + fetch("https://api.example/append-foo"), + { + // but we are going to do it on our local data right away, + // without waiting for the call to return + optimisticUpdate(data) { + return data + "foo"; + }, + } + ); + // yay, the API call worked! + toast.style = Toast.Style.Success; + toast.title = "Foo appended"; + } catch (err) { + // oh, the API call didn't work :( + // the data will automatically be rolled back to its previous value + toast.style = Toast.Style.Failure; + toast.title = "Could not append Foo"; + toast.message = err.message; + } + }; + + return ( + + appendFoo()} /> + + } + /> + ); +}; +``` + +## Types + +### AsyncState + +An object corresponding to the execution state of the function. + +```ts +// Initial State +{ + isLoading: true, // or `false` if `options.execute` is `false` + data: undefined, + error: undefined +} + +// Success State +{ + isLoading: false, + data: T, + error: undefined +} + +// Error State +{ + isLoading: false, + data: undefined, + error: Error +} + +// Reloading State +{ + isLoading: true, + data: T | undefined, + error: Error | undefined +} +``` + +### MutatePromise + +A method to wrap an asynchronous update and gives some control about how the `usePromise`'s data should be updated while the update is going through. + +```ts +export type MutatePromise = ( + asyncUpdate?: Promise, + options?: { + optimisticUpdate?: (data: T) => T; + rollbackOnError?: boolean | ((data: T) => T); + shouldRevalidateAfter?: boolean; + } +) => Promise; +``` diff --git a/docs/utils-reference/react-hooks/useSQL.md b/docs/utils-reference/react-hooks/useSQL.md new file mode 100644 index 0000000..4632dc1 --- /dev/null +++ b/docs/utils-reference/react-hooks/useSQL.md @@ -0,0 +1,200 @@ +# `useSQL` + +Hook which executes a query on a local SQL database and returns the [AsyncState](#asyncstate) corresponding to the execution of the query. The last value will be kept between command runs. + +## Signature + +```ts +function useSQL( + databasePath: string, + query: string, + options?: { + permissionPriming?: string; + execute?: boolean; + onError?: (error: Error) => void; + onData?: (data: T) => void; + onWillExecute?: (args: string[]) -> void; + } +): AsyncState & { + revalidate: () => void; + mutate: MutatePromise; + permissionView: React.ReactNode | undefined; +}; +``` + +### Arguments + +- `databasePath` is the path to the local SQL database. +- `query` is the SQL query to run on the database. + +With a few options: + +- `options.permissionPriming` is a string explaining why the extension needs full disk access. For example, the Apple Notes extension uses `"This is required to search your Apple Notes."`. While it is optional, we recommend setting it to help users understand. + +Including the [usePromise](./usePromise.md)'s options: + +- `options.execute` is a boolean to indicate whether to actually execute the function or not. This is useful for cases where one of the function's arguments depends on something that might not be available right away (for example, depends on some user inputs). Because React requires every hook to be defined on the render, this flag enables you to define the hook right away but wait until you have all the arguments ready to execute the function. +- `options.onError` is a function called when an execution fails. By default, it will log the error and show a generic failure toast with an action to retry. +- `options.onData` is a function called when an execution succeeds. +- `options.onWillExecute` is a function called when an execution will start. + +### Return + +Returns an object with the [AsyncState](#asyncstate) corresponding to the execution of the function as well as a couple of methods to manipulate it. + +- `data`, `error`, `isLoading` - see [AsyncState](#asyncstate). +- `permissionView` is a React Node that should be returned when present. It will prompt users to grant full disk access (which is required for the hook to work). +- `revalidate` is a method to manually call the function with the same arguments again. +- `mutate` is a method to wrap an asynchronous update and gives some control over how the `useSQL`'s data should be updated while the update is going through. By default, the data will be revalidated (eg. the function will be called again) after the update is done. See [Mutation and Optimistic Updates](#mutation-and-optimistic-updates) for more information. + +## Example + +```tsx +import { useSQL } from "@raycast/utils"; +import { resolve } from "path"; +import { homedir } from "os"; + +const NOTES_DB = resolve(homedir(), "Library/Group Containers/group.com.apple.notes/NoteStore.sqlite"); +const notesQuery = `SELECT id, title FROM ...`; +type NoteItem = { + id: string; + title: string; +}; + +const Demo = () => { + const { isLoading, data, permissionView } = useSQL(NOTES_DB, notesQuery); + + if (permissionView) { + return permissionView; + } + + return ( + + {(data || []).map((item) => ( + + ))} + + ); +}; +``` + +## Mutation and Optimistic Updates + +In an optimistic update, the UI behaves as though a change was successfully completed before receiving confirmation from the server that it was - it is being optimistic that it will eventually get the confirmation rather than an error. This allows for a more responsive user experience. + +You can specify an `optimisticUpdate` function to mutate the data in order to reflect the change introduced by the asynchronous update. + +When doing so, you can specify a `rollbackOnError` function to mutate back the data if the asynchronous update fails. If not specified, the data will be automatically rolled back to its previous value (before the optimistic update). + +```tsx +import { Detail, ActionPanel, Action, showToast, Toast } from "@raycast/api"; +import { useSQL } from "@raycast/utils"; + +const NOTES_DB = resolve(homedir(), "Library/Group Containers/group.com.apple.notes/NoteStore.sqlite"); +const notesQuery = `SELECT id, title FROM ...`; +type NoteItem = { + id: string; + title: string; +}; + +const Demo = () => { + const { isLoading, data, mutate, permissionView } = useFetch("https://api.example"); + + if (permissionView) { + return permissionView; + } + + const createNewNote = async () => { + const toast = await showToast({ style: Toast.Style.Animated, title: "Creating new Note" }); + try { + await mutate( + // we are calling an API to do something + somehowCreateANewNote(), + { + // but we are going to do it on our local data right away, + // without waiting for the call to return + optimisticUpdate(data) { + return data?.concat([{ id: "" + Math.random(), title: "New Title" }]); + }, + } + ); + // yay, the API call worked! + toast.style = Toast.Style.Success; + toast.title = "Note created"; + } catch (err) { + // oh, the API call didn't work :( + // the data will automatically be rolled back to its previous value + toast.style = Toast.Style.Failure; + toast.title = "Could not create Note"; + toast.message = err.message; + } + }; + + return ( + + {(data || []).map((item) => ( + + createNewNote()} /> + + } + /> + ))} + + ); +}; +``` + +## Types + +### AsyncState + +An object corresponding to the execution state of the function. + +```ts +// Initial State +{ + isLoading: true, // or `false` if `options.execute` is `false` + data: undefined, + error: undefined +} + +// Success State +{ + isLoading: false, + data: T, + error: undefined +} + +// Error State +{ + isLoading: false, + data: undefined, + error: Error +} + +// Reloading State +{ + isLoading: true, + data: T | undefined, + error: Error | undefined +} +``` + +### MutatePromise + +A method to wrap an asynchronous update and gives some control about how the `useSQL`'s data should be updated while the update is going through. + +```ts +export type MutatePromise = ( + asyncUpdate?: Promise, + options?: { + optimisticUpdate?: (data: T) => T; + rollbackOnError?: boolean | ((data: T) => T); + shouldRevalidateAfter?: boolean; + } +) => Promise; +``` diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..0cc249e --- /dev/null +++ b/package-lock.json @@ -0,0 +1,4501 @@ +{ + "name": "@raycast/utils", + "version": "1.7.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "@raycast/utils", + "version": "1.7.0", + "license": "MIT", + "dependencies": { + "content-type": "^1.0.5", + "cross-fetch": "^3.1.6", + "dequal": "^2.0.3", + "media-typer": "^1.1.0", + "object-hash": "^3.0.0", + "signal-exit": "^4.0.2" + }, + "devDependencies": { + "@raycast/api": "^1.51.0", + "@types/content-type": "^1.1.5", + "@types/media-typer": "^1.1.1", + "@types/object-hash": "^3.0.2", + "@types/signal-exit": "^3.0.1", + "@typescript-eslint/eslint-plugin": "5.26.0", + "@typescript-eslint/parser": "5.26.0", + "eslint": "8.16.0", + "eslint-config-prettier": "8.5.0", + "eslint-plugin-import": "2.26.0", + "eslint-plugin-jest": "26.2.2", + "eslint-plugin-prettier": "4.0.0", + "eslint-plugin-react-hooks": "4.5.0", + "typescript": "4.7.2" + }, + "peerDependencies": { + "@raycast/api": ">=1.52.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.0.tgz", + "integrity": "sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.3.2", + "globals": "^13.15.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.9.5", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz", + "integrity": "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@raycast/api": { + "version": "1.51.0", + "resolved": "https://registry.npmjs.org/@raycast/api/-/api-1.51.0.tgz", + "integrity": "sha512-SiDguyZQLIuUQ1//shmhOAN18N/lrT8fuVjHuHnx/O/KDQf//0zwTLjd040ZQIiUiaINX0TfQ4BLngmjI0nOSg==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "@types/node": "18.8.3", + "@types/react": "18.0.9", + "react": "18.1.0", + "react-reconciler": "0.28.0" + }, + "bin": { + "ray": "bin/ray" + }, + "peerDependencies": { + "@types/node": "18.8.3", + "@types/react": "18.0.9" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "@types/react": { + "optional": true + } + } + }, + "node_modules/@types/content-type": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@types/content-type/-/content-type-1.1.5.tgz", + "integrity": "sha512-dgMN+syt1xb7Hk8LU6AODOfPlvz5z1CbXpPuJE5ZrX9STfBOIXF09pEB8N7a97WT9dbngt3ksDCm6GW6yMrxfQ==", + "dev": true + }, + "node_modules/@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "dev": true + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true + }, + "node_modules/@types/media-typer": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@types/media-typer/-/media-typer-1.1.1.tgz", + "integrity": "sha512-pj9YTwjWbh+cuwZ/74+SPNe+MI6npNZ13o9WslckpgXhOaVrugE/ru1XhZCkAoob+oOiD6zrdhtzVTObfqIRgQ==", + "dev": true + }, + "node_modules/@types/node": { + "version": "18.8.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.8.3.tgz", + "integrity": "sha512-0os9vz6BpGwxGe9LOhgP/ncvYN5Tx1fNcd2TM3rD/aCGBkysb+ZWpXEocG24h6ZzOi13+VB8HndAQFezsSOw1w==", + "dev": true + }, + "node_modules/@types/object-hash": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/object-hash/-/object-hash-3.0.2.tgz", + "integrity": "sha512-tfyXl1JPCf2hzIDK29gO7qGqJjThKBzg/Cn3bA68R9NmWdOx+f7k5mm4to/n43BHspCwcoUC6FU4NpUoK/h9bQ==", + "dev": true + }, + "node_modules/@types/prop-types": { + "version": "15.7.5", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", + "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==", + "dev": true + }, + "node_modules/@types/react": { + "version": "18.0.9", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.9.tgz", + "integrity": "sha512-9bjbg1hJHUm4De19L1cHiW0Jvx3geel6Qczhjd0qY5VKVE2X5+x77YxAepuCwVh4vrgZJdgEJw48zrhRIeF4Nw==", + "dev": true, + "dependencies": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/scheduler": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", + "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==", + "dev": true + }, + "node_modules/@types/signal-exit": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/signal-exit/-/signal-exit-3.0.1.tgz", + "integrity": "sha512-OSitN9PP9E/c4tlt1Qdj3CAz5uHD9Da5rhUqlaKyQRCX1T7Zdpbk6YdeZbR2eiE2ce+NMBgVnMxGqpaPSNQDUQ==", + "dev": true + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "5.26.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.26.0.tgz", + "integrity": "sha512-oGCmo0PqnRZZndr+KwvvAUvD3kNE4AfyoGCwOZpoCncSh4MVD06JTE8XQa2u9u+NX5CsyZMBTEc2C72zx38eYA==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "5.26.0", + "@typescript-eslint/type-utils": "5.26.0", + "@typescript-eslint/utils": "5.26.0", + "debug": "^4.3.4", + "functional-red-black-tree": "^1.0.1", + "ignore": "^5.2.0", + "regexpp": "^3.2.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "5.26.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.26.0.tgz", + "integrity": "sha512-n/IzU87ttzIdnAH5vQ4BBDnLPly7rC5VnjN3m0xBG82HK6rhRxnCb3w/GyWbNDghPd+NktJqB/wl6+YkzZ5T5Q==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "5.26.0", + "@typescript-eslint/types": "5.26.0", + "@typescript-eslint/typescript-estree": "5.26.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "5.26.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.26.0.tgz", + "integrity": "sha512-gVzTJUESuTwiju/7NiTb4c5oqod8xt5GhMbExKsCTp6adU3mya6AGJ4Pl9xC7x2DX9UYFsjImC0mA62BCY22Iw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.26.0", + "@typescript-eslint/visitor-keys": "5.26.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "5.26.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.26.0.tgz", + "integrity": "sha512-7ccbUVWGLmcRDSA1+ADkDBl5fP87EJt0fnijsMFTVHXKGduYMgienC/i3QwoVhDADUAPoytgjbZbCOMj4TY55A==", + "dev": true, + "dependencies": { + "@typescript-eslint/utils": "5.26.0", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "5.26.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.26.0.tgz", + "integrity": "sha512-8794JZFE1RN4XaExLWLI2oSXsVImNkl79PzTOOWt9h0UHROwJedNOD2IJyfL0NbddFllcktGIO2aOu10avQQyA==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "5.26.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.26.0.tgz", + "integrity": "sha512-EyGpw6eQDsfD6jIqmXP3rU5oHScZ51tL/cZgFbFBvWuCwrIptl+oueUZzSmLtxFuSOQ9vDcJIs+279gnJkfd1w==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.26.0", + "@typescript-eslint/visitor-keys": "5.26.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "5.26.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.26.0.tgz", + "integrity": "sha512-PJFwcTq2Pt4AMOKfe3zQOdez6InIDOjUJJD3v3LyEtxHGVVRK3Vo7Dd923t/4M9hSH2q2CLvcTdxlLPjcIk3eg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "@typescript-eslint/scope-manager": "5.26.0", + "@typescript-eslint/types": "5.26.0", + "@typescript-eslint/typescript-estree": "5.26.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "5.26.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.26.0.tgz", + "integrity": "sha512-wei+ffqHanYDOQgg/fS6Hcar6wAWv0CUPQ3TZzOWd2BLfgP539rb49bwua8WRAs7R6kOSLn82rfEu2ro6Llt8Q==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.26.0", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/acorn": { + "version": "8.7.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", + "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/array-includes": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.5.tgz", + "integrity": "sha512-iSDYZMMyTPkiFasVqfuAQnWAYcvO/SeBSCGKePoEthjp4LEMTe4uLc7b025o4jAZpHhihh8xPo99TNWUWWkGDQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5", + "get-intrinsic": "^1.1.1", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.0.tgz", + "integrity": "sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.2", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cross-fetch": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.6.tgz", + "integrity": "sha512-riRvo06crlE8HiqOwIpQhxwdOk4fOeR7FVM/wXoxchFEqMNUjvbs3bfo4OTgMEMHzppd4DxFBDbyySj8Cv781g==", + "dependencies": { + "node-fetch": "^2.6.11" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/csstype": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.0.tgz", + "integrity": "sha512-uX1KG+x9h5hIJsaKR9xHUeUraxf8IODOwq9JLNPq6BwB04a/xgpq3rcx47l5BZu5zBPlgD342tdke3Hom/nJRA==", + "dev": true + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/define-properties": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", + "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", + "dev": true, + "dependencies": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/es-abstract": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.1.tgz", + "integrity": "sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "function.prototype.name": "^1.1.5", + "get-intrinsic": "^1.1.1", + "get-symbol-description": "^1.0.0", + "has": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.4", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "regexp.prototype.flags": "^1.4.3", + "string.prototype.trimend": "^1.0.5", + "string.prototype.trimstart": "^1.0.5", + "unbox-primitive": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", + "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.16.0.tgz", + "integrity": "sha512-MBndsoXY/PeVTDJeWsYj7kLZ5hQpJOfMYLsF6LicLHQWbRDG19lK5jOix4DPl8yY4SUFcE3txy86OzFLWT+yoA==", + "dev": true, + "dependencies": { + "@eslint/eslintrc": "^1.3.0", + "@humanwhocodes/config-array": "^0.9.2", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.1.1", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.3.2", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^6.0.1", + "globals": "^13.15.0", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "regexpp": "^3.2.0", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-prettier": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz", + "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==", + "dev": true, + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz", + "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==", + "dev": true, + "dependencies": { + "debug": "^3.2.7", + "resolve": "^1.20.0" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-module-utils": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.3.tgz", + "integrity": "sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ==", + "dev": true, + "dependencies": { + "debug": "^3.2.7", + "find-up": "^2.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import": { + "version": "2.26.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz", + "integrity": "sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.4", + "array.prototype.flat": "^1.2.5", + "debug": "^2.6.9", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.6", + "eslint-module-utils": "^2.7.3", + "has": "^1.0.3", + "is-core-module": "^2.8.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.values": "^1.1.5", + "resolve": "^1.22.0", + "tsconfig-paths": "^3.14.1" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" + } + }, + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/eslint-plugin-import/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-import/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/eslint-plugin-jest": { + "version": "26.2.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-26.2.2.tgz", + "integrity": "sha512-etSFZ8VIFX470aA6kTqDPhIq7YWe0tjBcboFNV3WeiC18PJ/AVonGhuTwlmuz2fBkH8FJHA7JQ4k7GsQIj1Gew==", + "dev": true, + "dependencies": { + "@typescript-eslint/utils": "^5.10.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "@typescript-eslint/eslint-plugin": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "@typescript-eslint/eslint-plugin": { + "optional": true + }, + "jest": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-prettier": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.0.0.tgz", + "integrity": "sha512-98MqmCJ7vJodoQK359bqQWaxOE0CS8paAz/GgjaZLyex4TTk3g9HugoO89EqWCrFiOqn9EVvcoo7gZzONCWVwQ==", + "dev": true, + "dependencies": { + "prettier-linter-helpers": "^1.0.0" + }, + "engines": { + "node": ">=6.0.0" + }, + "peerDependencies": { + "eslint": ">=7.28.0", + "prettier": ">=2.0.0" + }, + "peerDependenciesMeta": { + "eslint-config-prettier": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.5.0.tgz", + "integrity": "sha512-8k1gRt7D7h03kd+SAAlzXkQwWK22BnK6GKZG+FJA6BAGy22CFvl8kCIXKpVux0cCxMWDQUPqSok0LKaZ0aOcCw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5" + } + }, + "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/eslint/node_modules/eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/eslint/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/espree": { + "version": "9.3.2", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.2.tgz", + "integrity": "sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA==", + "dev": true, + "dependencies": { + "acorn": "^8.7.1", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esquery/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-diff": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", + "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", + "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", + "dev": true, + "dependencies": { + "locate-path": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "dependencies": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.6.tgz", + "integrity": "sha512-0sQoMh9s0BYsm+12Huy/rkKxVu4R1+r96YX5cG44rHV0pQ6iC3Q+mkoMFaGWObMFYQxCVT+ssG1ksneA2MI9KQ==", + "dev": true + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/function.prototype.name": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", + "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0", + "functions-have-names": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", + "dev": true + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.2.tgz", + "integrity": "sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "13.15.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.15.0.tgz", + "integrity": "sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", + "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", + "dev": true, + "dependencies": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dev": true, + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/media-typer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", + "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", + "dev": true + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/node-fetch": { + "version": "2.6.11", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.11.tgz", + "integrity": "sha512-4I6pdBY1EthSqDmJkiNk3JIT8cswwR9nfeW/cPdUagJYEQG7R95WRH74wpz7ma8Gh/9dI9FP+OU+0E4FvtA55w==", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/object-inspect": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", + "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.values": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz", + "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "dependencies": { + "p-try": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", + "dev": true, + "dependencies": { + "p-limit": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz", + "integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==", + "dev": true, + "peer": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "dependencies": { + "fast-diff": "^1.1.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/react": { + "version": "18.1.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.1.0.tgz", + "integrity": "sha512-4oL8ivCz5ZEPyclFQXaNksK3adutVS8l2xzZU0cqEFrE9Sb7fC0EFK5uEk74wIreL1DERyjvsU915j1pcT2uEQ==", + "dev": true, + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-reconciler": { + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/react-reconciler/-/react-reconciler-0.28.0.tgz", + "integrity": "sha512-sGIHDOpgVjRYgsi8NgosDnbkDvvkYFFSF900ZUhUw0+lSBEA5n76TcKFaVkfYMIuYm+7W6mT8Q673DLBfuTxcQ==", + "dev": true, + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.22.0" + }, + "engines": { + "node": ">=0.10.0" + }, + "peerDependencies": { + "react": "^18.1.0" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", + "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "functions-have-names": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/scheduler": { + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.22.0.tgz", + "integrity": "sha512-6QAm1BgQI88NPYymgGQLCZgvep4FyePDWFpXVK+zNSUgHwlqpJy8VEh8Et0KxTACS4VWwMousBElAZOH9nkkoQ==", + "dev": true, + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.0.2.tgz", + "integrity": "sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q==", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz", + "integrity": "sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz", + "integrity": "sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "node_modules/tsconfig-paths": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", + "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", + "dev": true, + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.1", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + } + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typescript": { + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.2.tgz", + "integrity": "sha512-Mamb1iX2FDUpcTRzltPxgWMKy3fhg0TN378ylbktPGPK/99KbDtMQ4W1hwgsbPAsG3a0xKa1vmw4VKZQbkvz5A==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/v8-compile-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "dev": true + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + }, + "dependencies": { + "@eslint/eslintrc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.0.tgz", + "integrity": "sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.3.2", + "globals": "^13.15.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + } + }, + "@humanwhocodes/config-array": { + "version": "0.9.5", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz", + "integrity": "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==", + "dev": true, + "requires": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + } + }, + "@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, + "@raycast/api": { + "version": "1.51.0", + "resolved": "https://registry.npmjs.org/@raycast/api/-/api-1.51.0.tgz", + "integrity": "sha512-SiDguyZQLIuUQ1//shmhOAN18N/lrT8fuVjHuHnx/O/KDQf//0zwTLjd040ZQIiUiaINX0TfQ4BLngmjI0nOSg==", + "dev": true, + "requires": { + "@types/node": "18.8.3", + "@types/react": "18.0.9", + "react": "18.1.0", + "react-reconciler": "0.28.0" + } + }, + "@types/content-type": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@types/content-type/-/content-type-1.1.5.tgz", + "integrity": "sha512-dgMN+syt1xb7Hk8LU6AODOfPlvz5z1CbXpPuJE5ZrX9STfBOIXF09pEB8N7a97WT9dbngt3ksDCm6GW6yMrxfQ==", + "dev": true + }, + "@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "dev": true + }, + "@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true + }, + "@types/media-typer": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@types/media-typer/-/media-typer-1.1.1.tgz", + "integrity": "sha512-pj9YTwjWbh+cuwZ/74+SPNe+MI6npNZ13o9WslckpgXhOaVrugE/ru1XhZCkAoob+oOiD6zrdhtzVTObfqIRgQ==", + "dev": true + }, + "@types/node": { + "version": "18.8.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.8.3.tgz", + "integrity": "sha512-0os9vz6BpGwxGe9LOhgP/ncvYN5Tx1fNcd2TM3rD/aCGBkysb+ZWpXEocG24h6ZzOi13+VB8HndAQFezsSOw1w==", + "dev": true + }, + "@types/object-hash": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/object-hash/-/object-hash-3.0.2.tgz", + "integrity": "sha512-tfyXl1JPCf2hzIDK29gO7qGqJjThKBzg/Cn3bA68R9NmWdOx+f7k5mm4to/n43BHspCwcoUC6FU4NpUoK/h9bQ==", + "dev": true + }, + "@types/prop-types": { + "version": "15.7.5", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", + "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==", + "dev": true + }, + "@types/react": { + "version": "18.0.9", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.9.tgz", + "integrity": "sha512-9bjbg1hJHUm4De19L1cHiW0Jvx3geel6Qczhjd0qY5VKVE2X5+x77YxAepuCwVh4vrgZJdgEJw48zrhRIeF4Nw==", + "dev": true, + "requires": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "@types/scheduler": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", + "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==", + "dev": true + }, + "@types/signal-exit": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/signal-exit/-/signal-exit-3.0.1.tgz", + "integrity": "sha512-OSitN9PP9E/c4tlt1Qdj3CAz5uHD9Da5rhUqlaKyQRCX1T7Zdpbk6YdeZbR2eiE2ce+NMBgVnMxGqpaPSNQDUQ==", + "dev": true + }, + "@typescript-eslint/eslint-plugin": { + "version": "5.26.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.26.0.tgz", + "integrity": "sha512-oGCmo0PqnRZZndr+KwvvAUvD3kNE4AfyoGCwOZpoCncSh4MVD06JTE8XQa2u9u+NX5CsyZMBTEc2C72zx38eYA==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "5.26.0", + "@typescript-eslint/type-utils": "5.26.0", + "@typescript-eslint/utils": "5.26.0", + "debug": "^4.3.4", + "functional-red-black-tree": "^1.0.1", + "ignore": "^5.2.0", + "regexpp": "^3.2.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/parser": { + "version": "5.26.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.26.0.tgz", + "integrity": "sha512-n/IzU87ttzIdnAH5vQ4BBDnLPly7rC5VnjN3m0xBG82HK6rhRxnCb3w/GyWbNDghPd+NktJqB/wl6+YkzZ5T5Q==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "5.26.0", + "@typescript-eslint/types": "5.26.0", + "@typescript-eslint/typescript-estree": "5.26.0", + "debug": "^4.3.4" + } + }, + "@typescript-eslint/scope-manager": { + "version": "5.26.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.26.0.tgz", + "integrity": "sha512-gVzTJUESuTwiju/7NiTb4c5oqod8xt5GhMbExKsCTp6adU3mya6AGJ4Pl9xC7x2DX9UYFsjImC0mA62BCY22Iw==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.26.0", + "@typescript-eslint/visitor-keys": "5.26.0" + } + }, + "@typescript-eslint/type-utils": { + "version": "5.26.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.26.0.tgz", + "integrity": "sha512-7ccbUVWGLmcRDSA1+ADkDBl5fP87EJt0fnijsMFTVHXKGduYMgienC/i3QwoVhDADUAPoytgjbZbCOMj4TY55A==", + "dev": true, + "requires": { + "@typescript-eslint/utils": "5.26.0", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/types": { + "version": "5.26.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.26.0.tgz", + "integrity": "sha512-8794JZFE1RN4XaExLWLI2oSXsVImNkl79PzTOOWt9h0UHROwJedNOD2IJyfL0NbddFllcktGIO2aOu10avQQyA==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "5.26.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.26.0.tgz", + "integrity": "sha512-EyGpw6eQDsfD6jIqmXP3rU5oHScZ51tL/cZgFbFBvWuCwrIptl+oueUZzSmLtxFuSOQ9vDcJIs+279gnJkfd1w==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.26.0", + "@typescript-eslint/visitor-keys": "5.26.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/utils": { + "version": "5.26.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.26.0.tgz", + "integrity": "sha512-PJFwcTq2Pt4AMOKfe3zQOdez6InIDOjUJJD3v3LyEtxHGVVRK3Vo7Dd923t/4M9hSH2q2CLvcTdxlLPjcIk3eg==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "@typescript-eslint/scope-manager": "5.26.0", + "@typescript-eslint/types": "5.26.0", + "@typescript-eslint/typescript-estree": "5.26.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "5.26.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.26.0.tgz", + "integrity": "sha512-wei+ffqHanYDOQgg/fS6Hcar6wAWv0CUPQ3TZzOWd2BLfgP539rb49bwua8WRAs7R6kOSLn82rfEu2ro6Llt8Q==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.26.0", + "eslint-visitor-keys": "^3.3.0" + } + }, + "acorn": { + "version": "8.7.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", + "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", + "dev": true + }, + "acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "requires": {} + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "array-includes": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.5.tgz", + "integrity": "sha512-iSDYZMMyTPkiFasVqfuAQnWAYcvO/SeBSCGKePoEthjp4LEMTe4uLc7b025o4jAZpHhihh8xPo99TNWUWWkGDQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5", + "get-intrinsic": "^1.1.1", + "is-string": "^1.0.7" + } + }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true + }, + "array.prototype.flat": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.0.tgz", + "integrity": "sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.2", + "es-shim-unscopables": "^1.0.0" + } + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==" + }, + "cross-fetch": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.6.tgz", + "integrity": "sha512-riRvo06crlE8HiqOwIpQhxwdOk4fOeR7FVM/wXoxchFEqMNUjvbs3bfo4OTgMEMHzppd4DxFBDbyySj8Cv781g==", + "requires": { + "node-fetch": "^2.6.11" + } + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "csstype": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.0.tgz", + "integrity": "sha512-uX1KG+x9h5hIJsaKR9xHUeUraxf8IODOwq9JLNPq6BwB04a/xgpq3rcx47l5BZu5zBPlgD342tdke3Hom/nJRA==", + "dev": true + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "define-properties": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", + "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", + "dev": true, + "requires": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + } + }, + "dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==" + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "requires": { + "path-type": "^4.0.0" + } + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "es-abstract": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.1.tgz", + "integrity": "sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "function.prototype.name": "^1.1.5", + "get-intrinsic": "^1.1.1", + "get-symbol-description": "^1.0.0", + "has": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.4", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "regexp.prototype.flags": "^1.4.3", + "string.prototype.trimend": "^1.0.5", + "string.prototype.trimstart": "^1.0.5", + "unbox-primitive": "^1.0.2" + } + }, + "es-shim-unscopables": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", + "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true + }, + "eslint": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.16.0.tgz", + "integrity": "sha512-MBndsoXY/PeVTDJeWsYj7kLZ5hQpJOfMYLsF6LicLHQWbRDG19lK5jOix4DPl8yY4SUFcE3txy86OzFLWT+yoA==", + "dev": true, + "requires": { + "@eslint/eslintrc": "^1.3.0", + "@humanwhocodes/config-array": "^0.9.2", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.1.1", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.3.2", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^6.0.1", + "globals": "^13.15.0", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "regexpp": "^3.2.0", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "dependencies": { + "eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + } + }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, + "eslint-config-prettier": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz", + "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==", + "dev": true, + "requires": {} + }, + "eslint-import-resolver-node": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz", + "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==", + "dev": true, + "requires": { + "debug": "^3.2.7", + "resolve": "^1.20.0" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "eslint-module-utils": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.3.tgz", + "integrity": "sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ==", + "dev": true, + "requires": { + "debug": "^3.2.7", + "find-up": "^2.1.0" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "eslint-plugin-import": { + "version": "2.26.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz", + "integrity": "sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==", + "dev": true, + "requires": { + "array-includes": "^3.1.4", + "array.prototype.flat": "^1.2.5", + "debug": "^2.6.9", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.6", + "eslint-module-utils": "^2.7.3", + "has": "^1.0.3", + "is-core-module": "^2.8.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.values": "^1.1.5", + "resolve": "^1.22.0", + "tsconfig-paths": "^3.14.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + }, + "eslint-plugin-jest": { + "version": "26.2.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-26.2.2.tgz", + "integrity": "sha512-etSFZ8VIFX470aA6kTqDPhIq7YWe0tjBcboFNV3WeiC18PJ/AVonGhuTwlmuz2fBkH8FJHA7JQ4k7GsQIj1Gew==", + "dev": true, + "requires": { + "@typescript-eslint/utils": "^5.10.0" + } + }, + "eslint-plugin-prettier": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.0.0.tgz", + "integrity": "sha512-98MqmCJ7vJodoQK359bqQWaxOE0CS8paAz/GgjaZLyex4TTk3g9HugoO89EqWCrFiOqn9EVvcoo7gZzONCWVwQ==", + "dev": true, + "requires": { + "prettier-linter-helpers": "^1.0.0" + } + }, + "eslint-plugin-react-hooks": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.5.0.tgz", + "integrity": "sha512-8k1gRt7D7h03kd+SAAlzXkQwWK22BnK6GKZG+FJA6BAGy22CFvl8kCIXKpVux0cCxMWDQUPqSok0LKaZ0aOcCw==", + "dev": true, + "requires": {} + }, + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^2.0.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true + } + } + }, + "eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "dev": true + }, + "espree": { + "version": "9.3.2", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.2.tgz", + "integrity": "sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA==", + "dev": true, + "requires": { + "acorn": "^8.7.1", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.3.0" + } + }, + "esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "fast-diff": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", + "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", + "dev": true + }, + "fast-glob": { + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", + "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "dependencies": { + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + } + } + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } + }, + "file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "requires": { + "flat-cache": "^3.0.4" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "requires": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + } + }, + "flatted": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.6.tgz", + "integrity": "sha512-0sQoMh9s0BYsm+12Huy/rkKxVu4R1+r96YX5cG44rHV0pQ6iC3Q+mkoMFaGWObMFYQxCVT+ssG1ksneA2MI9KQ==", + "dev": true + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "function.prototype.name": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", + "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0", + "functions-have-names": "^1.2.2" + } + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", + "dev": true + }, + "functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true + }, + "get-intrinsic": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.2.tgz", + "integrity": "sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" + } + }, + "get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + } + }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "requires": { + "is-glob": "^4.0.3" + } + }, + "globals": { + "version": "13.15.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.15.0.tgz", + "integrity": "sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.1" + } + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true + }, + "has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.2" + } + }, + "ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + } + }, + "is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "requires": { + "has-bigints": "^1.0.1" + } + }, + "is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-callable": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", + "dev": true + }, + "is-core-module": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", + "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2" + } + }, + "is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "requires": { + "has-symbols": "^1.0.2" + } + }, + "is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2" + } + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "requires": { + "argparse": "^2.0.1" + } + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dev": true, + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "media-typer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", + "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==" + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true + }, + "micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "requires": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + } + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node-fetch": { + "version": "2.6.11", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.11.tgz", + "integrity": "sha512-4I6pdBY1EthSqDmJkiNk3JIT8cswwR9nfeW/cPdUagJYEQG7R95WRH74wpz7ma8Gh/9dI9FP+OU+0E4FvtA55w==", + "requires": { + "whatwg-url": "^5.0.0" + } + }, + "object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==" + }, + "object-inspect": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", + "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", + "dev": true + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + } + }, + "object.values": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz", + "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "requires": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + } + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", + "dev": true + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true + }, + "prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true + }, + "prettier": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz", + "integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==", + "dev": true, + "peer": true + }, + "prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "requires": { + "fast-diff": "^1.1.2" + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true + }, + "react": { + "version": "18.1.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.1.0.tgz", + "integrity": "sha512-4oL8ivCz5ZEPyclFQXaNksK3adutVS8l2xzZU0cqEFrE9Sb7fC0EFK5uEk74wIreL1DERyjvsU915j1pcT2uEQ==", + "dev": true, + "requires": { + "loose-envify": "^1.1.0" + } + }, + "react-reconciler": { + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/react-reconciler/-/react-reconciler-0.28.0.tgz", + "integrity": "sha512-sGIHDOpgVjRYgsi8NgosDnbkDvvkYFFSF900ZUhUw0+lSBEA5n76TcKFaVkfYMIuYm+7W6mT8Q673DLBfuTxcQ==", + "dev": true, + "requires": { + "loose-envify": "^1.1.0", + "scheduler": "^0.22.0" + } + }, + "regexp.prototype.flags": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", + "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "functions-have-names": "^1.2.2" + } + }, + "regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true + }, + "resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "dev": true, + "requires": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "scheduler": { + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.22.0.tgz", + "integrity": "sha512-6QAm1BgQI88NPYymgGQLCZgvep4FyePDWFpXVK+zNSUgHwlqpJy8VEh8Et0KxTACS4VWwMousBElAZOH9nkkoQ==", + "dev": true, + "requires": { + "loose-envify": "^1.1.0" + } + }, + "semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, + "signal-exit": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.0.2.tgz", + "integrity": "sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q==" + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "string.prototype.trimend": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz", + "integrity": "sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5" + } + }, + "string.prototype.trimstart": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz", + "integrity": "sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "tsconfig-paths": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", + "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", + "dev": true, + "requires": { + "@types/json5": "^0.0.29", + "json5": "^1.0.1", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + } + }, + "type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1" + } + }, + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true + }, + "typescript": { + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.2.tgz", + "integrity": "sha512-Mamb1iX2FDUpcTRzltPxgWMKy3fhg0TN378ylbktPGPK/99KbDtMQ4W1hwgsbPAsG3a0xKa1vmw4VKZQbkvz5A==", + "dev": true + }, + "unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + } + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "v8-compile-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "dev": true + }, + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "requires": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "requires": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + } + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..5310fca --- /dev/null +++ b/package.json @@ -0,0 +1,54 @@ +{ + "name": "@raycast/utils", + "version": "1.7.0", + "description": "Set of utilities to streamline building Raycast extensions", + "author": "Raycast Technologies Ltd.", + "homepage": "https://developers.raycast.com/utils-reference", + "main": "dist/index.js", + "types": "dist/index.d.ts", + "scripts": { + "lint": "eslint src/", + "build": "tsc", + "dev": "tsc --watch", + "test": "npm run lint", + "prepublishOnly": "npm run build && npm test", + "postpublish": "gh workflow run sync-utils-docs.yml --repo raycast/extensions" + }, + "peerDependencies": { + "@raycast/api": ">=1.52.0" + }, + "keywords": [ + "Raycast", + "utilities", + "extensions" + ], + "files": [ + "dist", + "README.md" + ], + "license": "MIT", + "dependencies": { + "content-type": "^1.0.5", + "cross-fetch": "^3.1.6", + "dequal": "^2.0.3", + "media-typer": "^1.1.0", + "object-hash": "^3.0.0", + "signal-exit": "^4.0.2" + }, + "devDependencies": { + "@raycast/api": "^1.51.0", + "@types/content-type": "^1.1.5", + "@types/media-typer": "^1.1.1", + "@types/object-hash": "^3.0.2", + "@types/signal-exit": "^3.0.1", + "@typescript-eslint/eslint-plugin": "5.26.0", + "@typescript-eslint/parser": "5.26.0", + "eslint": "8.16.0", + "eslint-config-prettier": "8.5.0", + "eslint-plugin-import": "2.26.0", + "eslint-plugin-jest": "26.2.2", + "eslint-plugin-prettier": "4.0.0", + "eslint-plugin-react-hooks": "4.5.0", + "typescript": "4.7.2" + } +} diff --git a/src/exec-utils.ts b/src/exec-utils.ts new file mode 100644 index 0000000..d0d95e8 --- /dev/null +++ b/src/exec-utils.ts @@ -0,0 +1,165 @@ +import childProcess from "node:child_process"; +import { constants as BufferConstants } from "node:buffer"; +import Stream from "node:stream"; +import { promisify } from "node:util"; +import { onExit } from "signal-exit"; + +export type SpawnedPromise = Promise<{ + exitCode: number | null; + error?: Error; + signal: NodeJS.Signals | null; + timedOut: boolean; +}>; + +export function getSpawnedPromise( + spawned: childProcess.ChildProcessWithoutNullStreams, + { timeout }: { timeout?: number } = {} +): SpawnedPromise { + const spawnedPromise: SpawnedPromise = new Promise((resolve, reject) => { + spawned.on("exit", (exitCode, signal) => { + resolve({ exitCode, signal, timedOut: false }); + }); + + spawned.on("error", (error) => { + reject(error); + }); + + if (spawned.stdin) { + spawned.stdin.on("error", (error) => { + reject(error); + }); + } + }); + + if (timeout === 0 || timeout === undefined) { + return spawnedPromise; + } + + let timeoutId: NodeJS.Timeout; + const timeoutPromise: SpawnedPromise = new Promise((_resolve, reject) => { + timeoutId = setTimeout(() => { + spawned.kill("SIGTERM"); + reject(Object.assign(new Error("Timed out"), { timedOut: true, signal: "SIGTERM" })); + }, timeout); + }); + + const safeSpawnedPromise = spawnedPromise.finally(() => { + clearTimeout(timeoutId); + }); + + const removeExitHandler = onExit(() => { + spawned.kill(); + }); + + return Promise.race([timeoutPromise, safeSpawnedPromise]).finally(() => removeExitHandler()); +} + +class MaxBufferError extends Error { + constructor() { + super("The output is too big"); + this.name = "MaxBufferError"; + } +} + +const streamPipelinePromisified = promisify(Stream.pipeline); + +function bufferStream(options: { encoding: BufferEncoding | "buffer" }) { + const { encoding } = options; + const isBuffer = encoding === "buffer"; + + // @ts-expect-error missing the methods we are adding below + const stream: Stream.PassThrough & { getBufferedValue: () => T; getBufferedLength: () => number } = + new Stream.PassThrough({ objectMode: false }); + + if (encoding && encoding !== "buffer") { + stream.setEncoding(encoding); + } + + let length = 0; + const chunks: any[] = []; + + stream.on("data", (chunk) => { + chunks.push(chunk); + + length += chunk.length; + }); + + stream.getBufferedValue = () => { + return (isBuffer ? Buffer.concat(chunks, length) : chunks.join("")) as T; + }; + + stream.getBufferedLength = () => length; + + return stream; +} + +async function getStream( + inputStream: Stream.Readable, + options: { encoding: BufferEncoding | "buffer" } +) { + const stream = bufferStream(options); + + await new Promise((resolve, reject) => { + const rejectPromise = (error: Error & { bufferedData?: T }) => { + // Don't retrieve an oversized buffer. + if (error && stream.getBufferedLength() <= BufferConstants.MAX_LENGTH) { + error.bufferedData = stream.getBufferedValue(); + } + + reject(error); + }; + + (async () => { + try { + await streamPipelinePromisified(inputStream, stream); + resolve(); + } catch (error) { + rejectPromise(error as any); + } + })(); + + stream.on("data", () => { + // 80mb + if (stream.getBufferedLength() > 1000 * 1000 * 80) { + rejectPromise(new MaxBufferError()); + } + }); + }); + + return stream.getBufferedValue(); +} + +// On failure, `result.stdout|stderr` should contain the currently buffered stream +async function getBufferedData(stream: Stream.Readable, streamPromise: Promise) { + stream.destroy(); + + try { + return await streamPromise; + } catch (error) { + return (error as any as { bufferedData: T }).bufferedData; + } +} + +export async function getSpawnedResult( + { stdout, stderr }: childProcess.ChildProcessWithoutNullStreams, + { encoding }: { encoding: BufferEncoding | "buffer" }, + processDone: SpawnedPromise +) { + const stdoutPromise = getStream(stdout, { encoding }); + const stderrPromise = getStream(stderr, { encoding }); + + try { + return await Promise.all([processDone, stdoutPromise, stderrPromise]); + } catch (error: any) { + return Promise.all([ + { + error: error as Error, + exitCode: null, + signal: error.signal as NodeJS.Signals | null, + timedOut: (error.timedOut as boolean) || false, + }, + getBufferedData(stdout, stdoutPromise), + getBufferedData(stderr, stderrPromise), + ]); + } +} diff --git a/src/handle-error-toast-action.ts b/src/handle-error-toast-action.ts new file mode 100644 index 0000000..b39eb0f --- /dev/null +++ b/src/handle-error-toast-action.ts @@ -0,0 +1,45 @@ +import * as fs from "fs"; +import * as path from "path"; +import { Clipboard, environment, open, Toast } from "@raycast/api"; + +export const handleErrorToastAction = (error: Error): Toast.ActionOptions => { + let privateExtension = true; + let title = "[Extension Name]..."; + let extensionURL = ""; + try { + const packageJSON = JSON.parse(fs.readFileSync(path.join(environment.assetsPath, "..", "package.json"), "utf8")); + title = `[${packageJSON.title}]...`; + extensionURL = `https://raycast.com/${packageJSON.owner || packageJSON.author}/${packageJSON.name}`; + if (!packageJSON.owner || packageJSON.access === "public") { + privateExtension = false; + } + } catch (err) { + // no-op + } + + // if it's a private extension, we can't construct the URL to report the error + // so we fallback to copying the error to the clipboard + const fallback = environment.isDevelopment || privateExtension; + + return { + title: fallback ? "Copy Logs" : "Report Error", + onAction(toast) { + toast.hide(); + if (fallback) { + Clipboard.copy(error?.stack || error?.message || ""); + } else { + open( + `https://github.com/raycast/extensions/issues/new?&labels=extension%2Cbug&template=extension_bug_report.yml&title=${encodeURIComponent( + title + )}&extension-url=${encodeURI(extensionURL)}&description=${encodeURIComponent( + `#### Error: +\`\`\` +${error?.stack || error?.message || ""} +\`\`\` +` + )}` + ); + } + }, + }; +}; diff --git a/src/icon/avatar.ts b/src/icon/avatar.ts new file mode 100644 index 0000000..99f908f --- /dev/null +++ b/src/icon/avatar.ts @@ -0,0 +1,142 @@ +import type { Image } from "@raycast/api"; +import { slightlyLighterColor, slightlyDarkerColor } from "./color"; + +function getWholeCharAndI(str: string, i: number): [string, number] { + const code = str.charCodeAt(i); + + if (Number.isNaN(code)) { + return ["", i]; + } + if (code < 0xd800 || code > 0xdfff) { + return [str.charAt(i), i]; // Normal character, keeping 'i' the same + } + + // High surrogate (could change last hex to 0xDB7F to treat high private + // surrogates as single characters) + if (0xd800 <= code && code <= 0xdbff) { + if (str.length <= i + 1) { + throw new Error("High surrogate without following low surrogate"); + } + const next = str.charCodeAt(i + 1); + if (0xdc00 > next || next > 0xdfff) { + throw new Error("High surrogate without following low surrogate"); + } + return [str.charAt(i) + str.charAt(i + 1), i + 1]; + } + + // Low surrogate (0xDC00 <= code && code <= 0xDFFF) + if (i === 0) { + throw new Error("Low surrogate without preceding high surrogate"); + } + + const prev = str.charCodeAt(i - 1); + + // (could change last hex to 0xDB7F to treat high private surrogates + // as single characters) + if (0xd800 > prev || prev > 0xdbff) { + throw new Error("Low surrogate without preceding high surrogate"); + } + + // Return the next character instead (and increment) + return [str.charAt(i + 1), i + 1]; +} + +const avatarColorSet = [ + "#DC829A", // Pink + "#D64854", // Red + "#D47600", // YellowOrange + "#D36CDD", // Magenta + "#52A9E4", // Aqua + "#7871E8", // Indigo + "#70920F", // YellowGreen + "#43B93A", // Green + "#EB6B3E", // Orange + "#26B795", // BlueGreen + "#D85A9B", // HotPink + "#A067DC", // Purple + "#BD9500", // Yellow + "#5385D9", // Blue +]; + +/** + * Icon to represent an avatar when you don't have one. The generated avatar + * will be generated from the initials of the name and have a colorful but consistent background. + * + * @returns an Image that can be used where Raycast expects them. + * + * @example + * ``` + * + * ``` + */ +export function getAvatarIcon( + name: string, + options?: { + /** + * Custom background color + */ + background?: string; + /** + * Whether to use a gradient for the background or not. + * @default true + */ + gradient?: boolean; + } +): Image.Asset { + const words = name.trim().split(" "); + let initials: string; + if (words.length == 1 && getWholeCharAndI(words[0], 0)[0]) { + initials = getWholeCharAndI(words[0], 0)[0]; + } else if (words.length > 1) { + const firstWordFirstLetter = getWholeCharAndI(words[0], 0)[0] || ""; + const lastWordFirstLetter = getWholeCharAndI(words[words.length - 1], 0)[0] ?? ""; + initials = firstWordFirstLetter + lastWordFirstLetter; + } else { + initials = ""; + } + + let backgroundColor: string; + + if (options?.background) { + backgroundColor = options?.background; + } else { + let initialsCharIndex = 0; + let [char, i] = getWholeCharAndI(initials, 0); + while (char) { + initialsCharIndex += char.charCodeAt(0); + [char, i] = getWholeCharAndI(initials, i + 1); + } + + const colorIndex = initialsCharIndex % avatarColorSet.length; + backgroundColor = avatarColorSet[colorIndex]; + } + + const padding = 0; + const radius = 50 - padding; + + const svg = ` + ${ + options?.gradient !== false + ? ` + + + + + + ` + : "" + } + + ${ + initials + ? `${initials.toUpperCase()}` + : "" + } + + `.replaceAll("\n", ""); + return `data:image/svg+xml,${svg}`; +} diff --git a/src/icon/color.ts b/src/icon/color.ts new file mode 100644 index 0000000..7352f8b --- /dev/null +++ b/src/icon/color.ts @@ -0,0 +1,170 @@ +function hexToRGB(hex: string) { + let r = 0; + let g = 0; + let b = 0; + + // 3 digits + if (hex.length === 4) { + r = parseInt(`${hex[1]}${hex[1]}`, 16); + g = parseInt(`${hex[2]}${hex[2]}`, 16); + b = parseInt(`${hex[3]}${hex[3]}`, 16); + + // 6 digits + } else if (hex.length === 7) { + r = parseInt(`${hex[1]}${hex[2]}`, 16); + g = parseInt(`${hex[3]}${hex[4]}`, 16); + b = parseInt(`${hex[5]}${hex[6]}`, 16); + } else { + throw new Error(`Malformed hex color: ${hex}`); + } + + return { r, g, b }; +} + +function rgbToHex({ r, g, b }: { r: number; g: number; b: number }) { + let rString = r.toString(16); + let gString = g.toString(16); + let bString = b.toString(16); + + if (rString.length === 1) { + rString = `0${rString}`; + } + if (gString.length === 1) { + gString = `0${gString}`; + } + if (bString.length === 1) { + bString = `0${bString}`; + } + + return `#${rString}${gString}${bString}`; +} + +function rgbToHSL({ r, g, b }: { r: number; g: number; b: number }) { + // Make r, g, and b fractions of 1 + r /= 255; + g /= 255; + b /= 255; + + // Find greatest and smallest channel values + const cmin = Math.min(r, g, b); + const cmax = Math.max(r, g, b); + const delta = cmax - cmin; + let h = 0; + let s = 0; + let l = 0; + + // Calculate hue + // No difference + if (delta === 0) { + h = 0; + } + // Red is max + else if (cmax === r) { + h = ((g - b) / delta) % 6; + } + // Green is max + else if (cmax === g) { + h = (b - r) / delta + 2; + } + // Blue is max + else { + h = (r - g) / delta + 4; + } + + h = Math.round(h * 60); + + // Make negative hues positive behind 360° + if (h < 0) { + h += 360; + } + + // Calculate lightness + l = (cmax + cmin) / 2; + + // Calculate saturation + s = delta === 0 ? 0 : delta / (1 - Math.abs(2 * l - 1)); + + // Multiply l and s by 100 + s = +(s * 100).toFixed(1); + l = +(l * 100).toFixed(1); + + return { h, s, l }; +} + +function hslToRGB({ h, s, l }: { h: number; s: number; l: number }) { + // Must be fractions of 1 + s /= 100; + l /= 100; + + const c = (1 - Math.abs(2 * l - 1)) * s; + const x = c * (1 - Math.abs(((h / 60) % 2) - 1)); + const m = l - c / 2; + let r = 0; + let g = 0; + let b = 0; + + if (h >= 0 && h < 60) { + r = c; + g = x; + b = 0; + } else if (h >= 60 && h < 120) { + r = x; + g = c; + b = 0; + } else if (h >= 120 && h < 180) { + r = 0; + g = c; + b = x; + } else if (h >= 180 && h < 240) { + r = 0; + g = x; + b = c; + } else if (h >= 240 && h < 300) { + r = x; + g = 0; + b = c; + } else if (h >= 300 && h < 360) { + r = c; + g = 0; + b = x; + } + r = Math.round((r + m) * 255); + g = Math.round((g + m) * 255); + b = Math.round((b + m) * 255); + + return { r, g, b }; +} + +function hexToHSL(hex: string) { + return rgbToHSL(hexToRGB(hex)); +} + +function hslToHex(hsl: { h: number; s: number; l: number }) { + return rgbToHex(hslToRGB(hsl)); +} + +function clamp(value: number, min: number, max: number) { + return min < max ? (value < min ? min : value > max ? max : value) : value < max ? max : value > min ? min : value; +} + +const offset = 12; + +export function slightlyDarkerColor(hex: string) { + const hsl = hexToHSL(hex); + + return hslToHex({ + h: hsl.h, + s: hsl.s, + l: clamp(hsl.l - offset, 0, 100), + }); +} + +export function slightlyLighterColor(hex: string) { + const hsl = hexToHSL(hex); + + return hslToHex({ + h: hsl.h, + s: hsl.s, + l: clamp(hsl.l + offset, 0, 100), + }); +} diff --git a/src/icon/favicon.ts b/src/icon/favicon.ts new file mode 100644 index 0000000..19a9588 --- /dev/null +++ b/src/icon/favicon.ts @@ -0,0 +1,49 @@ +import { Icon, Image } from "@raycast/api"; +import { URL } from "url"; + +/** + * Icon showing the favicon of a website. + * + * A favicon (favorite icon) is a tiny icon included along with a website, which is displayed in places like the browser's address bar, page tabs, and bookmarks menu. + * + * @param url The URL of the website to represent. + * + * @returns an Image that can be used where Raycast expects them. + * + * @example + * ``` + * + * ``` + */ +export function getFavicon( + url: string | URL, + options?: { + /** + * Size of the Favicon + * @default 64 + */ + size?: number; + /** + * Fallback icon in case the Favicon is not found. + * @default Icon.Link + */ + fallback?: Image.Fallback; + /** + * A {@link Image.Mask} to apply to the Favicon. + */ + mask?: Image.Mask; + } +): Image.ImageLike { + try { + const urlObj = typeof url === "string" ? new URL(url) : url; + const hostname = urlObj.hostname; + return { + source: `https://www.google.com/s2/favicons?sz=${options?.size ?? 64}&domain=${hostname}`, + fallback: options?.fallback ?? Icon.Link, + mask: options?.mask, + }; + } catch (e) { + console.error(e); + return Icon.Link; + } +} diff --git a/src/icon/index.ts b/src/icon/index.ts new file mode 100644 index 0000000..271fb59 --- /dev/null +++ b/src/icon/index.ts @@ -0,0 +1,3 @@ +export * from "./avatar"; +export * from "./favicon"; +export * from "./progress"; diff --git a/src/icon/progress.ts b/src/icon/progress.ts new file mode 100644 index 0000000..fcf090a --- /dev/null +++ b/src/icon/progress.ts @@ -0,0 +1,67 @@ +import { environment, Color } from "@raycast/api"; +import type { Image } from "@raycast/api"; + +function polarToCartesian(centerX: number, centerY: number, radius: number, angleInDegrees: number) { + const angleInRadians = ((angleInDegrees - 90) * Math.PI) / 180.0; + + return { + x: centerX + radius * Math.cos(angleInRadians), + y: centerY + radius * Math.sin(angleInRadians), + }; +} + +function describeArc(x: number, y: number, radius: number, startAngle: number, endAngle: number) { + const start = polarToCartesian(x, y, radius, endAngle); + const end = polarToCartesian(x, y, radius, startAngle); + + const largeArcFlag = endAngle - startAngle <= 180 ? "0" : "1"; + + const d = ["M", start.x, start.y, "A", radius, radius, 0, largeArcFlag, 0, end.x, end.y].join(" "); + + return d; +} + +/** + * Icon to represent the progress of _something_. + * + * @param progress Number between 0 and 1. + * @param color Hex color (default `"#FF6363"`) or Color. + * + * @returns an Image that can be used where Raycast expects them. + * + * @example + * ``` + * + * ``` + */ +export function getProgressIcon( + progress: number, + color: Color | string = Color.Red, + options?: { background?: string; backgroundOpacity?: number } +): Image.Asset { + const background = options?.background || (environment.appearance === "light" ? "black" : "white"); + const backgroundOpacity = options?.backgroundOpacity || 0.1; + + const stroke = 10; + const padding = 5; + const radius = 50 - padding - stroke / 2; + + const svg = ` + + ${ + progress > 0 && progress < 1 + ? `` + : "" + } + + `.replaceAll("\n", ""); + return `data:image/svg+xml,${svg}`; +} diff --git a/src/index.ts b/src/index.ts new file mode 100644 index 0000000..7ec8701 --- /dev/null +++ b/src/index.ts @@ -0,0 +1,14 @@ +export * from "./usePromise"; +export * from "./useCachedState"; +export * from "./useCachedPromise"; + +export * from "./useFetch"; +export * from "./useExec"; +export * from "./useSQL"; +export * from "./useForm"; +export * from "./useAI"; + +export * from "./icon"; + +export type { AsyncState, MutatePromise } from "./types"; +export type { Response } from "cross-fetch"; diff --git a/src/types.ts b/src/types.ts new file mode 100644 index 0000000..83e04f2 --- /dev/null +++ b/src/types.ts @@ -0,0 +1,113 @@ +export type FunctionReturningPromise = (...args: T) => Promise; + +export type AsyncState = + | { + isLoading: boolean; + error?: undefined; + data?: undefined; + } + | { + isLoading: true; + error?: Error | undefined; + data?: T; + } + | { + isLoading: false; + error: Error; + data?: undefined; + } + | { + isLoading: false; + error?: undefined; + data: T; + }; + +/** + * Function to wrap an asynchronous update and gives some control about how the + * hook's data should be updated while the update is going through. + * + * By default, the data will be revalidated (eg. the function will be called again) + * after the update is done. + * + * **Optimistic Update** + * + * In an optimistic update, the UI behaves as though a change was successfully + * completed before receiving confirmation from the server that it actually was - + * it is being optimistic that it will eventually get the confirmation rather than an error. + * This allows for a more responsive user experience. + * + * You can specify an `optimisticUpdate` function to mutate the data in order to reflect + * the change introduced by the asynchronous update. + * + * When doing so, you can specify a `rollbackOnError` function to mutate back the + * data if the asynchronous update fails. If not specified, the data will be automatically + * rolled back to its previous value (before the optimistic update). + */ +export type MutatePromise = ( + asyncUpdate?: Promise, + options?: { + optimisticUpdate?: (data: T | U) => T; + rollbackOnError?: boolean | ((data: T | U) => T); + shouldRevalidateAfter?: boolean; + } +) => Promise; + +export type UsePromiseReturnType = AsyncState & { + /** + * Function to manually call the function again + */ + revalidate: () => Promise; + /** + * Function to wrap an asynchronous update and gives some control about how the + * hook's data should be updated while the update is going through. + * + * By default, the data will be revalidated (eg. the function will be called again) + * after the update is done. + * + * **Optimistic Update** + * + * In an optimistic update, the UI behaves as though a change was successfully + * completed before receiving confirmation from the server that it actually was - + * it is being optimistic that it will eventually get the confirmation rather than an error. + * This allows for a more responsive user experience. + * + * You can specify an `optimisticUpdate` function to mutate the data in order to reflect + * the change introduced by the asynchronous update. + * + * When doing so, you can specify a `rollbackOnError` function to mutate back the + * data if the asynchronous update fails. If not specified, the data will be automatically + * rolled back to its previous value (before the optimistic update). + */ + mutate: MutatePromise; +}; + +export type UseCachedPromiseReturnType = AsyncState & { + // we override the type of the data because it won't be `undefined` (except when the initial state is `undefined`) + data: T | U; + /** + * Function to manually call the function again + */ + revalidate: () => void; + /** + * Function to wrap an asynchronous update and gives some control about how the + * hook's data should be updated while the update is going through. + * + * By default, the data will be revalidated (eg. the function will be called again) + * after the update is done. + * + * **Optimistic Update** + * + * In an optimistic update, the UI behaves as though a change was successfully + * completed before receiving confirmation from the server that it actually was - + * it is being optimistic that it will eventually get the confirmation rather than an error. + * This allows for a more responsive user experience. + * + * You can specify an `optimisticUpdate` function to mutate the data in order to reflect + * the change introduced by the asynchronous update. + * + * When doing so, you can specify a `rollbackOnError` function to mutate back the + * data if the asynchronous update fails. If not specified, the data will be automatically + * rolled back to its previous value (before the optimistic update). + */ + mutate: MutatePromise; +}; diff --git a/src/useAI.ts b/src/useAI.ts new file mode 100644 index 0000000..e33b2a6 --- /dev/null +++ b/src/useAI.ts @@ -0,0 +1,61 @@ +import { useRef, useState } from "react"; +import { AI } from "@raycast/api"; +import { PromiseOptions, usePromise } from "./usePromise"; +import { FunctionReturningPromise } from "./types"; + +/** + * + * Stream a prompt completion. + * + * @example + * ```typescript + * import { Detail, LaunchProps } from "@raycast/api"; + * import { use AI } from "@raycast/utils"; + * + * export default function Command(props: LaunchProps<{ arguments: { prompt: string } }>) { + * const { isLoading, data } = useAI(props.arguments.prompt); + * + * return ; + * } + * ``` + */ +export function useAI( + prompt: string, + options: { + /** + * Concrete tasks, such as fixing grammar, require less creativity while open-ended questions, such as generating ideas, require more. + * If a number is passed, it needs to be in the range 0-2. For larger values, 2 will be used. For lower values, 0 will be used. + */ + creativity?: AI.Creativity; + /** + * The AI model to use to answer to the prompt. + */ + model?: AI.Model; + /** + * Whether to stream the answer or only update the data when the entire answer has been received. + */ + stream?: boolean; + } & Omit, "abortable"> = {} +) { + const { creativity, stream, model, ...usePromiseOptions } = options; + const [data, setData] = useState(""); + const abortable = useRef(); + const { isLoading, error, revalidate } = usePromise( + async (prompt: string, creativity?: AI.Creativity, shouldStream?: boolean) => { + setData(""); + const stream = AI.ask(prompt, { creativity, model, signal: abortable.current?.signal }); + if (shouldStream === false) { + setData(await stream); + } else { + stream.on("data", (data) => { + setData((x) => x + data); + }); + await stream; + } + }, + [prompt, creativity, stream], + { ...usePromiseOptions, abortable } + ); + + return { isLoading, data, error, revalidate }; +} diff --git a/src/useCachedPromise.ts b/src/useCachedPromise.ts new file mode 100644 index 0000000..ac46d4c --- /dev/null +++ b/src/useCachedPromise.ts @@ -0,0 +1,173 @@ +import { useEffect, useRef, useCallback } from "react"; +import hash from "object-hash"; +import { FunctionReturningPromise, UseCachedPromiseReturnType, MutatePromise } from "./types"; +import { useCachedState } from "./useCachedState"; +import { usePromise, PromiseOptions } from "./usePromise"; + +import { useLatest } from "./useLatest"; + +// Symbol to differentiate an empty cache from `undefined` +const emptyCache = Symbol(); + +export type CachedPromiseOptions = PromiseOptions & { + /** + * The initial data if there aren't any in the Cache yet. + */ + initialData?: U; + /** + * Tells the hook to keep the previous results instead of returning the initial value + * if there aren't any in the cache for the new arguments. + * This is particularly useful when used for data for a List to avoid flickering. + */ + keepPreviousData?: boolean; +}; + +/** + * Wraps an asynchronous function or a function that returns a Promise and returns the {@link AsyncState} corresponding to the execution of the function. The last value will be kept between command runs. + * + * @remark The value needs to be JSON serializable. + * @remark The function is assumed to be constant (eg. changing it won't trigger a revalidation). + * + * @example + * ``` + * import { useCachedPromise } from '@raycast/utils'; + * + * const Demo = () => { + * const abortable = useRef(); + * const { isLoading, data, revalidate } = useCachedPromise(async (url: string) => { + * const response = await fetch(url, { signal: abortable.current?.signal }); + * const result = await response.text(); + * return result + * }, + * ['https://api.example'], + * { + * abortable + * }); + * + * return ( + * + * revalidate()} /> + * + * } + * /> + * ); + * }; + * ``` + */ +export function useCachedPromise>( + fn: T +): UseCachedPromiseReturnType>, undefined>; +export function useCachedPromise( + fn: T, + args: Parameters, + options?: CachedPromiseOptions +): UseCachedPromiseReturnType>, U>; +export function useCachedPromise( + fn: T, + args?: Parameters, + options?: CachedPromiseOptions +) { + const { initialData, keepPreviousData, ...usePromiseOptions } = options || {}; + const lastUpdateFrom = useRef<"cache" | "promise">(); + + const [cachedData, mutateCache] = useCachedState> | U)>( + hash(args || []), + emptyCache, + { + cacheNamespace: hash(fn), + } + ); + + // Use a ref to store previous returned data. Use the inital data as its inital value from the cache. + const laggyDataRef = useRef> | U>(cachedData !== emptyCache ? cachedData : (initialData as U)); + + const { + mutate: _mutate, + revalidate, + ...state + // eslint-disable-next-line @typescript-eslint/no-explicit-any + } = usePromise(fn, args || ([] as any as Parameters), { + ...usePromiseOptions, + onData(data) { + if (usePromiseOptions.onData) { + usePromiseOptions.onData(data); + } + // update the cache when we fetch new values + lastUpdateFrom.current = "promise"; + laggyDataRef.current = data; + mutateCache(data); + }, + }); + + // data returned if there are no special cases + const data = cachedData !== emptyCache ? cachedData : (initialData as U); + + const returnedData = + // if the latest update if from the Promise, we keep it + lastUpdateFrom.current === "promise" + ? laggyDataRef.current + : // if we want to keep the latest data, we pick the cache but only if it's not empty + keepPreviousData + ? cachedData !== emptyCache + ? cachedData + : // if the cache is empty, we will return the previous data + laggyDataRef.current + : data; + + const latestData = useLatest(returnedData); + + // we rewrite the mutate function to update the cache instead + const mutate = useCallback> | U>>( + async (asyncUpdate, options) => { + let dataBeforeOptimisticUpdate; + try { + if (options?.optimisticUpdate) { + if (typeof options?.rollbackOnError !== "function" && options?.rollbackOnError !== false) { + // keep track of the data before the optimistic update, + // but only if we need it (eg. only when we want to automatically rollback after) + dataBeforeOptimisticUpdate = structuredClone(latestData.current); + } + const data = options.optimisticUpdate(latestData.current); + lastUpdateFrom.current = "cache"; + laggyDataRef.current = data; + mutateCache(data); + } + return await _mutate(asyncUpdate, { shouldRevalidateAfter: options?.shouldRevalidateAfter }); + } catch (err) { + if (typeof options?.rollbackOnError === "function") { + const data = options.rollbackOnError(latestData.current); + lastUpdateFrom.current = "cache"; + laggyDataRef.current = data; + mutateCache(data); + } else if (options?.optimisticUpdate && options?.rollbackOnError !== false) { + lastUpdateFrom.current = "cache"; + // @ts-expect-error when undefined, it's expected + laggyDataRef.current = dataBeforeOptimisticUpdate; + // @ts-expect-error when undefined, it's expected + mutateCache(dataBeforeOptimisticUpdate); + } + throw err; + } + }, + [mutateCache, _mutate, latestData, laggyDataRef, lastUpdateFrom] + ); + + useEffect(() => { + if (cachedData !== emptyCache) { + lastUpdateFrom.current = "cache"; + laggyDataRef.current = cachedData; + } + }, [cachedData]); + + return { + data: returnedData, + isLoading: state.isLoading, + error: state.error, + mutate, + revalidate, + }; +} diff --git a/src/useCachedState.ts b/src/useCachedState.ts new file mode 100644 index 0000000..ef07a74 --- /dev/null +++ b/src/useCachedState.ts @@ -0,0 +1,104 @@ +import { useCallback, Dispatch, SetStateAction, useSyncExternalStore, useMemo } from "react"; +import { Cache } from "@raycast/api"; +import { useLatest } from "./useLatest"; + +// eslint-disable-next-line @typescript-eslint/no-explicit-any +function replacer(this: any, key: string, _value: unknown) { + const value = this[key]; + if (value instanceof Date) { + return `__raycast_cached_date__${value.toString()}`; + } + if (Buffer.isBuffer(value)) { + return `__raycast_cached_buffer__${value.toString("base64")}`; + } + return _value; +} + +function reviver(_key: string, value: unknown) { + if (typeof value === "string" && value.startsWith("__raycast_cached_date__")) { + return new Date(value.replace("__raycast_cached_date__", "")); + } + if (typeof value === "string" && value.startsWith("__raycast_cached_buffer__")) { + return Buffer.from(value.replace("__raycast_cached_buffer__", ""), "base64"); + } + return value; +} + +const rootCache = Symbol("cache without namespace"); +const cacheMap = new Map(); + +/** + * Returns a stateful value, and a function to update it. The value will be kept between command runs. + * + * @remark The value needs to be JSON serializable. + * + * @param key - The unique identifier of the state. This can be used to share the state across components and/or commands. + * @param initialState - The initial value of the state if there aren't any in the Cache yet. + */ +export function useCachedState( + key: string, + initialState: T, + config?: { cacheNamespace?: string } +): [T, Dispatch>]; +export function useCachedState(key: string): [T | undefined, Dispatch>]; +export function useCachedState( + key: string, + initialState?: T, + config?: { cacheNamespace?: string } +): [T, Dispatch>] { + const cacheKey = config?.cacheNamespace || rootCache; + const cache = + cacheMap.get(cacheKey) || cacheMap.set(cacheKey, new Cache({ namespace: config?.cacheNamespace })).get(cacheKey); + + if (!cache) { + throw new Error("Missing cache"); + } + + const keyRef = useLatest(key); + const initialValueRef = useLatest(initialState); + + const cachedState = useSyncExternalStore(cache.subscribe, () => { + try { + return cache.get(keyRef.current); + } catch (error) { + console.error("Could not get Cache data:", error); + return undefined; + } + }); + + const state = useMemo(() => { + if (typeof cachedState !== "undefined") { + if (cachedState === "undefined") { + return undefined; + } + try { + return JSON.parse(cachedState, reviver); + } catch (err) { + // the data got corrupted somehow + console.warn("The cached data is corrupted", err); + return initialValueRef.current; + } + } else { + return initialValueRef.current; + } + }, [cachedState, initialValueRef]); + + const stateRef = useLatest(state); + + const setStateAndCache = useCallback( + (updater: SetStateAction) => { + // @ts-expect-error TS struggles to infer the types as T could potentially be a function + const newValue = typeof updater === "function" ? updater(stateRef.current) : updater; + if (typeof newValue === "undefined") { + cache.set(keyRef.current, "undefined"); + } else { + const stringifiedValue = JSON.stringify(newValue, replacer); + cache.set(keyRef.current, stringifiedValue); + } + return newValue; + }, + [cache, keyRef, stateRef] + ); + + return [state, setStateAndCache]; +} diff --git a/src/useDeepMemo.ts b/src/useDeepMemo.ts new file mode 100644 index 0000000..bb6b2db --- /dev/null +++ b/src/useDeepMemo.ts @@ -0,0 +1,19 @@ +import { useRef, useMemo } from "react"; +import { dequal } from "dequal/lite"; + +/** + * @param value the value to be memoized (usually a dependency list) + * @returns a memoized version of the value as long as it remains deeply equal + */ +export function useDeepMemo(value: T) { + const ref = useRef(value); + const signalRef = useRef(0); + + if (!dequal(value, ref.current)) { + ref.current = value; + signalRef.current += 1; + } + + // eslint-disable-next-line react-hooks/exhaustive-deps + return useMemo(() => ref.current, [signalRef.current]); +} diff --git a/src/useExec.ts b/src/useExec.ts new file mode 100644 index 0000000..60a329f --- /dev/null +++ b/src/useExec.ts @@ -0,0 +1,389 @@ +/* + * Inspired by Execa + */ + +import childProcess from "node:child_process"; +import { useCallback, useRef } from "react"; + +import { useCachedPromise, CachedPromiseOptions } from "./useCachedPromise"; +import { useLatest } from "./useLatest"; +import { UseCachedPromiseReturnType } from "./types"; +import { getSpawnedPromise, getSpawnedResult } from "./exec-utils"; + +type ExecOptions = { + /** + * If `true`, runs the command inside of a shell. Uses `/bin/sh`. A different shell can be specified as a string. The shell should understand the `-c` switch. + * + * We recommend against using this option since it is: + * - not cross-platform, encouraging shell-specific syntax. + * - slower, because of the additional shell interpretation. + * - unsafe, potentially allowing command injection. + * + * @default false + */ + shell?: boolean | string; + /** + * Strip the final newline character from the output. + * @default true + */ + stripFinalNewline?: boolean; + /** + * Current working directory of the child process. + * @default process.cwd() + */ + cwd?: string; + /** + * Environment key-value pairs. Extends automatically from `process.env`. + * @default process.env + */ + env?: NodeJS.ProcessEnv; + /** + * Specify the character encoding used to decode the stdout and stderr output. If set to `"buffer"`, then stdout and stderr will be a Buffer instead of a string. + * + * @default "utf8" + */ + encoding?: BufferEncoding | "buffer"; + /** + * Write some input to the `stdin` of your binary. + */ + input?: string | Buffer; + /** If timeout is greater than `0`, the parent will send the signal `SIGTERM` if the child runs longer than timeout milliseconds. */ + timeout?: number; +}; + +export type ParseExecOutputHandler = (args: { + /** The output of the process on stdout. */ + stdout: DecodedOutput; + /** The output of the process on stderr. */ + stderr: DecodedOutput; + error?: Error; + /** The numeric exit code of the process that was run. */ + exitCode: number | null; + /** + * The name of the signal that was used to terminate the process. For example, SIGFPE. + * + * If a signal terminated the process, this property is defined. Otherwise it is null. + */ + signal: NodeJS.Signals | null; + /** Whether the process timed out. */ + timedOut: boolean; + /** The command that was run, for logging purposes. */ + command: string; + options?: ExecOptions; +}) => T; + +const SPACES_REGEXP = / +/g; +function parseCommand(command: string, args?: string[]) { + if (args) { + return [command, ...args]; + } + const tokens: string[] = []; + for (const token of command.trim().split(SPACES_REGEXP)) { + // Allow spaces to be escaped by a backslash if not meant as a delimiter + const previousToken = tokens[tokens.length - 1]; + if (previousToken && previousToken.endsWith("\\")) { + // Merge previous token with current one + tokens[tokens.length - 1] = `${previousToken.slice(0, -1)} ${token}`; + } else { + tokens.push(token); + } + } + + return tokens; +} + +function stripFinalNewline(input: T) { + const LF = typeof input === "string" ? "\n" : "\n".charCodeAt(0); + const CR = typeof input === "string" ? "\r" : "\r".charCodeAt(0); + + if (input[input.length - 1] === LF) { + // @ts-expect-error we are doing some nasty stuff here + input = input.slice(0, -1); + } + + if (input[input.length - 1] === CR) { + // @ts-expect-error we are doing some nasty stuff here + input = input.slice(0, -1); + } + + return input; +} + +function handleOutput(options: { stripFinalNewline?: boolean }, value: T) { + if (options.stripFinalNewline) { + return stripFinalNewline(value); + } + + return value; +} + +const getErrorPrefix = ({ + timedOut, + timeout, + signal, + exitCode, +}: { + exitCode: number | null; + signal: NodeJS.Signals | null; + timedOut: boolean; + timeout?: number; +}) => { + if (timedOut) { + return `timed out after ${timeout} milliseconds`; + } + + if (signal !== undefined) { + return `was killed with ${signal}`; + } + + if (exitCode !== undefined) { + return `failed with exit code ${exitCode}`; + } + + return "failed"; +}; + +const makeError = ({ + stdout, + stderr, + error, + signal, + exitCode, + command, + timedOut, + options, +}: { + stdout: string | Buffer; + stderr: string | Buffer; + error?: Error; + exitCode: number | null; + signal: NodeJS.Signals | null; + timedOut: boolean; + command: string; + options?: { timeout?: number }; +}) => { + const prefix = getErrorPrefix({ timedOut, timeout: options?.timeout, signal, exitCode }); + const execaMessage = `Command ${prefix}: ${command}`; + const shortMessage = error ? `${execaMessage}\n${error.message}` : execaMessage; + const message = [shortMessage, stderr, stdout].filter(Boolean).join("\n"); + + if (error) { + // @ts-expect-error not on Error + error.originalMessage = error.message; + error.message = message; + } else { + error = new Error(message); + } + + // @ts-expect-error not on Error + error.shortMessage = shortMessage; + // @ts-expect-error not on Error + error.command = command; + // @ts-expect-error not on Error + error.exitCode = exitCode; + // @ts-expect-error not on Error + error.signal = signal; + // @ts-expect-error not on Error + error.stdout = stdout; + // @ts-expect-error not on Error + error.stderr = stderr; + + if ("bufferedData" in error) { + delete error["bufferedData"]; + } + + return error; +}; + +function defaultParsing({ + stdout, + stderr, + error, + exitCode, + signal, + timedOut, + command, + options, +}: { + stdout: T; + stderr: T; + error?: Error; + exitCode: number | null; + signal: NodeJS.Signals | null; + timedOut: boolean; + command: string; + options?: ExecOptions; +}) { + if (error || exitCode !== 0 || signal !== null) { + const returnedError = makeError({ + error, + exitCode, + signal, + stdout, + stderr, + command, + timedOut, + options, + }); + + throw returnedError; + } + + return stdout; +} + +type ExecCachedPromiseOptions = Omit< + CachedPromiseOptions< + (_command: string, _args: string[], _options?: ExecOptions, input?: string | Buffer) => Promise, + U + >, + "abortable" +>; + +/** + * Executes a command and returns the {@link AsyncState} corresponding to the execution of the command. The last value will be kept between command runs. + * + * @remark When specifying the arguments via the `command` string, if the file or an argument of the command contains spaces, they must be escaped with backslashes. This matters especially if `command` is not a constant but a variable, for example with `__dirname` or `process.cwd()`. Except for spaces, no escaping/quoting is needed. + * + * The `shell` option must be used if the command uses shell-specific features (for example, `&&` or `||`), as opposed to being a simple file followed by its arguments. + * + * @example + * ``` + * import { useExec } from '@raycast/utils'; + * + * const Demo = () => { + * const { isLoading, data, revalidate } = useExec("brew", ["info", "--json=v2", "--installed"]); + * const results = useMemo<{}[]>(() => JSON.parse(data || "[]"), [data]); + * + * return ( + * + * {(data || []).map((item) => ( + * + * ))} + * + * ); + * }; + * ``` + */ +export function useExec( + command: string, + options: { + parseOutput?: ParseExecOutputHandler; + } & ExecOptions & { + encoding: "buffer"; + } & ExecCachedPromiseOptions +): UseCachedPromiseReturnType; +export function useExec( + command: string, + options?: { + parseOutput?: ParseExecOutputHandler; + } & ExecOptions & { + encoding?: BufferEncoding; + } & ExecCachedPromiseOptions +): UseCachedPromiseReturnType; +export function useExec( + file: string, + /** + * The arguments to pass to the file. No escaping/quoting is needed. + * + * If defined, the commands needs to be a file to execute. If undefined, the arguments will be parsed from the command. + */ + args: string[], + options: { + parseOutput?: ParseExecOutputHandler; + } & ExecOptions & { + encoding: "buffer"; + } & ExecCachedPromiseOptions +): UseCachedPromiseReturnType; +export function useExec( + file: string, + /** + * The arguments to pass to the file. No escaping/quoting is needed. + * + * If defined, the commands needs to be a file to execute. If undefined, the arguments will be parsed from the command. + */ + args: string[], + options?: { + parseOutput?: ParseExecOutputHandler; + } & ExecOptions & { + encoding?: BufferEncoding; + } & ExecCachedPromiseOptions +): UseCachedPromiseReturnType; +export function useExec( + command: string, + optionsOrArgs?: + | string[] + | ({ + parseOutput?: ParseExecOutputHandler | ParseExecOutputHandler; + } & ExecOptions & + ExecCachedPromiseOptions), + options?: { + parseOutput?: ParseExecOutputHandler | ParseExecOutputHandler; + } & ExecOptions & + ExecCachedPromiseOptions +): UseCachedPromiseReturnType { + const { parseOutput, input, onData, onWillExecute, initialData, execute, keepPreviousData, onError, ...execOptions } = + Array.isArray(optionsOrArgs) ? options || {} : optionsOrArgs || {}; + + const useCachedPromiseOptions: ExecCachedPromiseOptions = { + initialData, + execute, + keepPreviousData, + onError, + onData, + onWillExecute, + }; + + const abortable = useRef(); + const parseOutputRef = useLatest(parseOutput || defaultParsing); + + const fn = useCallback( + async (_command: string, _args: string[], _options?: ExecOptions, input?: string | Buffer) => { + const [file, ...args] = parseCommand(_command, _args); + const command = [file, ...args].join(" "); + + const options = { + stripFinalNewline: true, + ..._options, + signal: abortable.current?.signal, + encoding: _options?.encoding === null ? "buffer" : _options?.encoding || "utf8", + env: { ...process.env, ..._options?.env }, + }; + + const spawned = childProcess.spawn(file, args, options); + const spawnedPromise = getSpawnedPromise(spawned, options); + + if (input) { + spawned.stdin.end(input); + } + + const [{ error, exitCode, signal, timedOut }, stdoutResult, stderrResult] = await getSpawnedResult( + spawned, + options, + spawnedPromise + ); + const stdout = handleOutput(options, stdoutResult); + const stderr = handleOutput(options, stderrResult); + + return parseOutputRef.current({ + // @ts-expect-error too many generics, I give up + stdout, + // @ts-expect-error too many generics, I give up + stderr, + error, + exitCode, + signal, + timedOut, + command, + options, + }) as T; + }, + [parseOutputRef] + ); + + // @ts-expect-error T can't be a Promise so it's actually the same + return useCachedPromise(fn, [command, Array.isArray(optionsOrArgs) ? optionsOrArgs : [], execOptions, input], { + ...useCachedPromiseOptions, + abortable, + }); +} diff --git a/src/useFetch.ts b/src/useFetch.ts new file mode 100644 index 0000000..26e2110 --- /dev/null +++ b/src/useFetch.ts @@ -0,0 +1,103 @@ +import { useCallback, useRef } from "react"; +import mediaTyper from "media-typer"; +import contentType from "content-type"; +import { useCachedPromise, CachedPromiseOptions } from "./useCachedPromise"; +import { useLatest } from "./useLatest"; +import { UseCachedPromiseReturnType } from "./types"; +import { fetch } from "cross-fetch"; + +function isJSON(contentTypeHeader: string | null | undefined): boolean { + if (contentTypeHeader) { + const ct = contentType.parse(contentTypeHeader); + + const mediaType = mediaTyper.parse(ct.type); + + if (mediaType.subtype === "json") { + return true; + } + + if (mediaType.suffix === "json") { + return true; + } + + if (mediaType.suffix && /\bjson\b/i.test(mediaType.suffix)) { + return true; + } + + if (mediaType.subtype && /\bjson\b/i.test(mediaType.subtype)) { + return true; + } + } + return false; +} + +async function defaultParsing(response: Response) { + if (!response.ok) { + throw new Error(response.statusText); + } + + const contentTypeHeader = response.headers.get("content-type"); + + if (contentTypeHeader && isJSON(contentTypeHeader)) { + return await response.json(); + } + return await response.text(); +} + +/** + * Fetch the URL and returns the {@link AsyncState} corresponding to the execution of the fetch. The last value will be kept between command runs. + * + * @example + * ``` + * import { useFetch } from '@raycast/utils'; + * + * const Demo = () => { + * const { isLoading, data, revalidate } = useFetch('https://api.example'); + * + * return ( + * + * revalidate()} /> + * + * } + * /> + * ); + * }; + * ``` + */ +export function useFetch( + url: RequestInfo, + options?: RequestInit & { parseResponse?: (response: Response) => Promise } & Omit< + CachedPromiseOptions<(url: RequestInfo, options?: RequestInit) => Promise, U>, + "abortable" + > +): UseCachedPromiseReturnType { + const { parseResponse, initialData, execute, keepPreviousData, onError, onData, onWillExecute, ...fetchOptions } = + options || {}; + + const useCachedPromiseOptions: CachedPromiseOptions<(url: RequestInfo, options?: RequestInit) => Promise, U> = { + initialData, + execute, + keepPreviousData, + onError, + onData, + onWillExecute, + }; + + const parseResponseRef = useLatest(parseResponse || defaultParsing); + const abortable = useRef(); + + const fn = useCallback( + async (url: RequestInfo, options?: RequestInit) => { + const res = await fetch(url, { signal: abortable.current?.signal, ...options }); + return (await parseResponseRef.current(res)) as T; + }, + [parseResponseRef] + ); + + // @ts-expect-error T can't be a Promise so it's actually the same + return useCachedPromise(fn, [url, fetchOptions], { ...useCachedPromiseOptions, abortable }); +} diff --git a/src/useForm.tsx b/src/useForm.tsx new file mode 100644 index 0000000..1eeb9a6 --- /dev/null +++ b/src/useForm.tsx @@ -0,0 +1,240 @@ +import { Form } from "@raycast/api"; +import { useState, useCallback, useMemo, useRef, SetStateAction } from "react"; +import { useLatest } from "./useLatest"; + +/** + * Shorthands for common validation cases + */ +export enum FormValidation { + /** Show an error when the value of the item is empty */ + Required = "required", +} + +type ValidationError = string | undefined | null; +type Validator = ((value: ValueType | undefined) => ValidationError) | FormValidation; + +function validationError( + validation: Validator | undefined, + value: ValueType | undefined +): ValidationError { + if (validation) { + if (typeof validation === "function") { + return validation(value); + } else if (validation === FormValidation.Required) { + let valueIsValid = typeof value !== "undefined" && value !== null; + if (valueIsValid) { + switch (typeof value) { + case "string": + valueIsValid = value.length > 0; + break; + case "object": + if (Array.isArray(value)) { + valueIsValid = value.length > 0; + } else if (value instanceof Date) { + valueIsValid = value.getTime() > 0; + } + break; + default: + break; + } + } + if (!valueIsValid) { + return "The item is required"; + } + } + } +} + +type Validation = { [id in keyof T]?: Validator }; + +interface FormProps { + /** Function to pass to the `onSubmit` prop of the `` element. It wraps the initial `onSubmit` argument with some goodies related to the validation. */ + handleSubmit: (values: T) => void | boolean | Promise; + /** The props that must be passed to the `` elements to handle the validations. */ + itemProps: { + [id in keyof Required]: Partial> & { + id: string; + }; + }; + /** Function that can be used to programmatically set the validation of a specific field. */ + setValidationError: (id: keyof T, error: ValidationError) => void; + /** Function that can be used to programmatically set the value of a specific field. */ + setValue: (id: K, value: SetStateAction) => void; + /** The current values of the form. */ + values: T; + /** Function that can be used to programmatically focus a specific field. */ + focus: (id: keyof T) => void; + /** Function that can be used to reset the values of the Form. */ + reset: (initialValues?: Partial) => void; +} + +/** + * Hook that provides a high-level interface to work with Forms, and more particularly, with Form validations. It incorporates all the good practices to provide a great User Experience for your Forms. + * + * @returns an object which contains the necessary methods and props to provide a good User Experience in your Form. + * + * @example + * ``` + * import { Action, ActionPanel, Form, showToast, Toast } from "@raycast/api"; + * import { useForm, FormValidation } from "@raycast/utils"; + * + * interface SignUpFormValues { + * nickname: string; + * password: string; + * } + * + * export default function Main() { + * const { handleSubmit, itemProps } = useForm({ + * onSubmit(values) { + * showToast(Toast.Style.Success, "Yay!", `${values.nickname} account created`); + * }, + * validation: { + * nickname: FormValidation.Required, + * password: (value) => { + * if (value && value.length < 8) { + * return "Password must be at least 8 symbols"; + * } else if (!value) { + * return "The item is required"; + * } + * }, + * }, + * }); + * + * return ( + *
+ * + * + * } + * > + * + * + * + * ); + * } + * ``` + */ +function useForm(props: { + /** Callback that will be called when the form is submitted and all validations pass. */ + onSubmit: (values: T) => void | boolean | Promise; + /** The initial values to set when the Form is first rendered. */ + initialValues?: Partial; + /** The validation rules for the Form. A validation for a Form item is a function that takes the current value of the item as an argument and must return a string when the validation is failing. + * + * There are also some shorthands for common cases, see {@link FormValidation}. + * */ + validation?: Validation; +}): FormProps { + const { onSubmit: _onSubmit, validation, initialValues = {} } = props; + + // @ts-expect-error it's fine if we don't specify all the values + const [values, setValues] = useState(initialValues); + const [errors, setErrors] = useState<{ [id in keyof T]?: ValidationError }>({}); + const refs = useRef<{ [id in keyof T]?: Form.ItemReference }>({}); + + const latestValidation = useLatest>(validation || {}); + const latestOnSubmit = useLatest(_onSubmit); + + const focus = useCallback( + (id: keyof T) => { + refs.current[id]?.focus(); + }, + [refs] + ); + + const handleSubmit = useCallback( + async (values: T): Promise => { + let validationErrors: false | { [key in keyof T]?: ValidationError } = false; + for (const [id, validation] of Object.entries(latestValidation.current)) { + const error = validationError(validation, values[id]); + if (error) { + if (!validationErrors) { + validationErrors = {}; + // we focus the first item that has an error + focus(id); + } + validationErrors[id as keyof T] = error; + } + } + if (validationErrors) { + setErrors(validationErrors); + return false; + } + const result = await latestOnSubmit.current(values); + return typeof result === "boolean" ? result : true; + }, + [latestValidation, latestOnSubmit, focus] + ); + + const setValidationError = useCallback( + (id: keyof T, error: ValidationError) => { + setErrors((errors) => ({ ...errors, [id]: error })); + }, + [setErrors] + ); + + const setValue = useCallback( + function (id: K, value: SetStateAction) { + // @ts-expect-error TS is always confused about SetStateAction, but it's fine here + setValues((values) => ({ ...values, [id]: typeof value === "function" ? value(values[id]) : value })); + }, + [setValues] + ); + + const itemProps = useMemo<{ [id in keyof Required]: Partial> & { id: string } }>(() => { + // we have to use a proxy because we don't actually have any object to iterate through + // so instead we dynamically create the props when required + return new Proxy<{ [id in keyof Required]: Partial> & { id: string } }>( + // @ts-expect-error the whole point of a proxy... + {}, + { + get(target, id: keyof T) { + const validation = latestValidation.current[id]; + const value = values[id]; + return { + onChange(value) { + if (errors[id]) { + const error = validationError(validation, value); + if (!error) { + setValidationError(id, undefined); + } + } + setValue(id, value); + }, + onBlur(event) { + const error = validationError(validation, event.target.value); + if (error) { + setValidationError(id, error); + } + }, + error: errors[id], + id, + // we shouldn't return `undefined` otherwise it will be an uncontrolled component + value: typeof value === "undefined" ? null : value, + ref: (instance: Form.ItemReference) => { + refs.current[id] = instance; + }, + } as Partial> & { id: string }; + }, + } + ); + }, [errors, latestValidation, setValidationError, values, refs, setValue]); + + const reset = useCallback( + (initialValues: Partial = {}) => { + // @ts-expect-error it's fine if we don't specify all the values + setValues(initialValues); + setErrors({}); + }, + [setValues, setErrors] + ); + + return { handleSubmit, setValidationError, setValue, values, itemProps, focus, reset }; +} + +export { useForm }; diff --git a/src/useLatest.ts b/src/useLatest.ts new file mode 100644 index 0000000..c15a10d --- /dev/null +++ b/src/useLatest.ts @@ -0,0 +1,12 @@ +import { useRef } from "react"; + +/** + * Returns the latest state. + * + * This is mostly useful to get access to the latest value of some props or state inside an asynchronous callback, instead of that value at the time the callback was created from. + */ +export function useLatest(value: T): { readonly current: T } { + const ref = useRef(value); + ref.current = value; + return ref; +} diff --git a/src/usePromise.ts b/src/usePromise.ts new file mode 100644 index 0000000..79be984 --- /dev/null +++ b/src/usePromise.ts @@ -0,0 +1,250 @@ +import { useEffect, useCallback, MutableRefObject, useRef, useState } from "react"; +import { showToast, Toast, environment, LaunchType } from "@raycast/api"; +import { useDeepMemo } from "./useDeepMemo"; +import { FunctionReturningPromise, MutatePromise, UsePromiseReturnType, AsyncState } from "./types"; +import { useLatest } from "./useLatest"; +import { handleErrorToastAction } from "./handle-error-toast-action"; + +export type PromiseOptions = { + /** + * A reference to an `AbortController` to cancel a previous call when triggering a new one + */ + abortable?: MutableRefObject; + /** + * Whether to actually execute the function or not. + * This is useful for cases where one of the function's arguments depends on something that + * might not be available right away (for example, depends on some user inputs). Because React requires + * every hooks to be defined on the render, this flag enables you to define the hook right away but + * wait util you have all the arguments ready to execute the function. + */ + execute?: boolean; + /** + * Called when an execution fails. By default it will log the error and show + * a generic failure toast. + */ + onError?: (error: Error) => void | Promise; + /** + * Called when an execution succeeds. + */ + onData?: (data: Awaited>) => void | Promise; + /** + * Called when an execution will start + */ + onWillExecute?: (parameters: Parameters) => void; +}; + +/** + * Wraps an asynchronous function or a function that returns a Promise and returns the {@link AsyncState} corresponding to the execution of the function. + * + * @remark The function is assumed to be constant (eg. changing it won't trigger a revalidation). + * + * @example + * ``` + * import { usePromise } from '@raycast/utils'; + * + * const Demo = () => { + * const abortable = useRef(); + * const { isLoading, data, revalidate } = usePromise(async (url: string) => { + * const response = await fetch(url, { signal: abortable.current?.signal }); + * const result = await response.text(); + * return result + * }, + * ['https://api.example'], + * { + * abortable + * }); + * + * return ( + * + * revalidate()} /> + * + * } + * /> + * ); + * }; + * ``` + */ +export function usePromise>(fn: T): UsePromiseReturnType>>; +export function usePromise( + fn: T, + args: Parameters, + options?: PromiseOptions +): UsePromiseReturnType>>; +export function usePromise( + fn: T, + args?: Parameters, + options?: PromiseOptions +): UsePromiseReturnType>> { + const lastCallId = useRef(0); + const [state, set] = useState>>>({ isLoading: true }); + + const fnRef = useLatest(fn); + const latestAbortable = useLatest(options?.abortable); + const latestArgs = useLatest(args || []); + const latestOnError = useLatest(options?.onError); + const latestOnData = useLatest(options?.onData); + const latestOnWillExecute = useLatest(options?.onWillExecute); + const latestValue = useLatest(state.data); + const latestCallback = useRef(); + + const callback = useCallback( + (...args: Parameters): ReturnType => { + const callId = ++lastCallId.current; + + if (latestAbortable.current) { + latestAbortable.current.current?.abort(); + latestAbortable.current.current = new AbortController(); + } + + latestOnWillExecute.current?.(args); + + set((prevState) => ({ ...prevState, isLoading: true })); + + return bindPromiseIfNeeded(fnRef.current)(...args).then( + (data: Awaited>) => { + if (callId === lastCallId.current) { + if (latestOnData.current) { + latestOnData.current(data); + } + set({ data, isLoading: false }); + } + + return data; + }, + (error) => { + if (error.name == "AbortError") { + return error; + } + + if (callId === lastCallId.current) { + // handle errors + if (latestOnError.current) { + latestOnError.current(error); + } else { + console.error(error); + if (environment.launchType !== LaunchType.Background) { + showToast({ + style: Toast.Style.Failure, + title: "Failed to fetch latest data", + message: error.message, + primaryAction: { + title: "Retry", + onAction(toast) { + toast.hide(); + latestCallback.current?.(...(latestArgs.current || [])); + }, + }, + secondaryAction: handleErrorToastAction(error), + }); + } + } + set({ error, isLoading: false }); + } + + return error; + } + ) as ReturnType; + }, + [latestAbortable, latestOnData, latestOnError, latestArgs, fnRef, set, latestCallback, latestOnWillExecute] + // eslint-disable-next-line @typescript-eslint/no-explicit-any + ) as any as T; + + latestCallback.current = callback; + + const revalidate = useCallback(() => { + return callback(...(latestArgs.current || [])); + }, [callback, latestArgs]); + + const mutate = useCallback>, undefined>>( + async (asyncUpdate, options) => { + let dataBeforeOptimisticUpdate: Awaited> | undefined; + try { + if (options?.optimisticUpdate) { + if (typeof options?.rollbackOnError !== "function" && options?.rollbackOnError !== false) { + // keep track of the data before the optimistic update, + // but only if we need it (eg. only when we want to automatically rollback after) + dataBeforeOptimisticUpdate = structuredClone(latestValue.current?.value); + } + const update = options.optimisticUpdate; + set((prevState) => ({ ...prevState, data: update(prevState.data) })); + } + return await asyncUpdate; + } catch (err) { + if (typeof options?.rollbackOnError === "function") { + const update = options.rollbackOnError; + set((prevState) => ({ ...prevState, data: update(prevState.data) })); + } else if (options?.optimisticUpdate && options?.rollbackOnError !== false) { + set((prevState) => ({ ...prevState, data: dataBeforeOptimisticUpdate })); + } + throw err; + } finally { + if (options?.shouldRevalidateAfter !== false) { + if (environment.launchType === LaunchType.Background || environment.commandMode === "menu-bar") { + // when in the background or in a menu bar, we are going to await the revalidation + // to make sure we get the right data at the end of the mutation + await revalidate(); + } else { + revalidate(); + } + } + } + }, + [revalidate, latestValue, set] + ); + + // revalidate when the args change + useEffect(() => { + if (options?.execute !== false) { + callback(...(args || [])); + } else { + // cancel the previous request if we don't want to execute anymore + if (latestAbortable.current) { + latestAbortable.current.current?.abort(); + } + } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [useDeepMemo([args, options?.execute, callback]), latestAbortable]); + + // abort request when unmounting + useEffect(() => { + return () => { + if (latestAbortable.current) { + // eslint-disable-next-line react-hooks/exhaustive-deps + latestAbortable.current.current?.abort(); + } + }; + }, [latestAbortable]); + + // we only want to show the loading indicator if the promise is executing + const isLoading = options?.execute !== false ? state.isLoading : false; + + // @ts-expect-error loading is has some fixed value in the enum which + const stateWithLoadingFixed: AsyncState>> = { ...state, isLoading }; + + return { ...stateWithLoadingFixed, revalidate, mutate }; +} + +/** Bind the fn if it's a Promise method */ +function bindPromiseIfNeeded(fn: T): T { + if (fn === (Promise.all as any)) { + // @ts-expect-error this is fine + return fn.bind(Promise); + } + if (fn === (Promise.race as any)) { + // @ts-expect-error this is fine + return fn.bind(Promise); + } + if (fn === (Promise.resolve as any)) { + // @ts-expect-error this is fine + return fn.bind(Promise as any); + } + if (fn === (Promise.reject as any)) { + // @ts-expect-error this is fine + return fn.bind(Promise); + } + return fn; +} diff --git a/src/useSQL.tsx b/src/useSQL.tsx new file mode 100644 index 0000000..aee35f8 --- /dev/null +++ b/src/useSQL.tsx @@ -0,0 +1,244 @@ +import { + showToast, + Toast, + List, + ActionPanel, + Action, + environment, + MenuBarExtra, + Icon, + open, + LaunchType, +} from "@raycast/api"; +import { existsSync } from "node:fs"; +import { copyFile, mkdir, writeFile } from "node:fs/promises"; +import os from "node:os"; +import childProcess from "node:child_process"; +import path from "node:path"; +import hash from "object-hash"; +import { useRef, useState, useCallback, useMemo } from "react"; +import { usePromise, PromiseOptions } from "./usePromise"; +import { useLatest } from "./useLatest"; +import { getSpawnedPromise, getSpawnedResult } from "./exec-utils"; +import { handleErrorToastAction } from "./handle-error-toast-action"; + +/** + * Executes a query on a local SQL database and returns the {@link AsyncState} corresponding to the query of the command. The last value will be kept between command runs. + * + * @example + * ``` + * import { useSQL } from "@raycast/utils"; + * import { resolve } from "path"; + * import { homedir } from "os"; + * + * const NOTES_DB = resolve(homedir(), "Library/Group Containers/group.com.apple.notes/NoteStore.sqlite"); + * const notesQuery = `SELECT id, title FROM ...`; + * type NoteItem = { + * id: string; + * title: string; + * }; + * + * const Demo = () => { + * const { isLoading, data, permissionView } = useSQL(NOTES_DB, notesQuery); + * + * if (permissionView) { + * return permissionView; + * } + * + * return ( + * + * {(data || []).map((item) => ( + * + * ))} + * + * ); + * }; + * ``` + */ +export function useSQL( + databasePath: string, + query: string, + options?: { + /** A string explaining why the extension needs full disk access. For example, the Apple Notes extension uses `"This is required to search your Apple Notes."`. While it is optional, we recommend setting it to help users understand. */ + permissionPriming?: string; + } & Omit Promise>, "abortable"> +) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + const { permissionPriming, ...usePromiseOptions } = options || {}; + + const [permissionView, setPermissionView] = useState(); + const latestOptions = useLatest(options || {}); + const abortable = useRef(); + + const handleError = useCallback( + (_error: Error) => { + console.error(_error); + const error = + _error instanceof Error && _error.message.includes("authorization denied") + ? new PermissionError("You do not have permission to access the database.") + : (_error as Error); + + if (isPermissionError(error)) { + setPermissionView(); + } else { + if (latestOptions.current.onError) { + latestOptions.current.onError(error); + } else { + console.error(error); + if (environment.launchType !== LaunchType.Background) { + showToast({ + style: Toast.Style.Failure, + title: "Cannot query the data", + message: error.message, + primaryAction: handleErrorToastAction(error), + }); + } + } + } + }, + [latestOptions] + ); + + const fn = useMemo(() => { + if (!existsSync(databasePath)) { + throw new Error("The database does not exist"); + } + let workaroundCopiedDb: string | undefined = undefined; + + return async (databasePath: string, query: string) => { + const abortSignal = abortable.current?.signal; + const spawned = childProcess.spawn("sqlite3", ["--json", "--readonly", databasePath, query], { + signal: abortSignal, + }); + const spawnedPromise = getSpawnedPromise(spawned); + let [{ error, exitCode, signal }, stdoutResult, stderrResult] = await getSpawnedResult( + spawned, + { encoding: "utf-8" }, + spawnedPromise + ); + + checkAborted(abortSignal); + + if (stderrResult.match("(5)") || stderrResult.match("(14)")) { + // That means that the DB is busy because of another app is locking it + // This happens when Chrome or Arc is opened: they lock the History db. + // As an ugly workaround, we duplicate the file and read that instead + // (with vfs unix - none to just not care about locks) + if (!workaroundCopiedDb) { + const tempFolder = path.join(os.tmpdir(), "useSQL", hash(databasePath)); + await mkdir(tempFolder, { recursive: true }); + checkAborted(abortSignal); + + workaroundCopiedDb = path.join(tempFolder, "db.db"); + await copyFile(databasePath, workaroundCopiedDb); + + // needed for certain db + await writeFile(workaroundCopiedDb + "-shm", ""); + await writeFile(workaroundCopiedDb + "-wal", ""); + + checkAborted(abortSignal); + } + const spawned = childProcess.spawn( + "sqlite3", + ["--json", "--readonly", "--vfs", "unix-none", workaroundCopiedDb, query], + { + signal: abortSignal, + } + ); + const spawnedPromise = getSpawnedPromise(spawned); + [{ error, exitCode, signal }, stdoutResult, stderrResult] = await getSpawnedResult( + spawned, + { encoding: "utf-8" }, + spawnedPromise + ); + checkAborted(abortSignal); + } + + if (error || exitCode !== 0 || signal !== null) { + throw new Error(stderrResult); + } + + return JSON.parse(stdoutResult.trim() || "[]") as T[]; + }; + }, [databasePath]); + + return { + ...usePromise(fn, [databasePath, query], { ...usePromiseOptions, onError: handleError }), + permissionView, + }; +} + +class PermissionError extends Error { + constructor(message: string) { + super(message); + this.name = "PermissionError"; + } +} + +function isPermissionError(error: unknown) { + return error instanceof Error && error.name === "PermissionError"; +} + +const macosVenturaAndLater = parseInt(os.release().split(".")[0]) >= 22; +const preferencesString = macosVenturaAndLater ? "Settings" : "Preferences"; + +function PermissionErrorScreen(props: { priming?: string }) { + const action = macosVenturaAndLater + ? { + title: "Open System Settings -> Privacy", + target: "x-apple.systempreferences:com.apple.preference.security?Privacy_AllFiles", + } + : { + title: "Open System Preferences -> Security", + target: "x-apple.systempreferences:com.apple.preference.security?Privacy_AllFiles", + }; + + if (environment.commandMode === "menu-bar") { + return ( + + + {props.priming ? ( + + ) : null} + + open(action.target)} /> + + ); + } + + return ( + + + + + } + /> + + ); +} + +function checkAborted(signal?: AbortSignal) { + if (signal?.aborted) { + const error = new Error("aborted"); + error.name = "AbortError"; + throw error; + } +} diff --git a/tests/.eslintrc.json b/tests/.eslintrc.json new file mode 100644 index 0000000..e6258e1 --- /dev/null +++ b/tests/.eslintrc.json @@ -0,0 +1,4 @@ +{ + "root": true, + "extends": ["@raycast"] +} diff --git a/tests/.gitignore b/tests/.gitignore new file mode 100644 index 0000000..ad70d66 --- /dev/null +++ b/tests/.gitignore @@ -0,0 +1,10 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules + +# Raycast specific files +raycast-env.d.ts + +# misc +.DS_Store diff --git a/tests/.prettierrc b/tests/.prettierrc new file mode 100644 index 0000000..fc0f503 --- /dev/null +++ b/tests/.prettierrc @@ -0,0 +1,4 @@ +{ + "printWidth": 120, + "singleQuote": false +} diff --git a/tests/README.md b/tests/README.md new file mode 100644 index 0000000..e8a894c --- /dev/null +++ b/tests/README.md @@ -0,0 +1,3 @@ +# Utils Smoke Tests + +Test cases for the most common usage of the utils \ No newline at end of file diff --git a/tests/assets/extension_icon.png b/tests/assets/extension_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..1ab766fd6823609f1f64d593ccc9d9010a98cf5d GIT binary patch literal 96020 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.51.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", + "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.10.4" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.18.6", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/@babel/highlight/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.1.tgz", + "integrity": "sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", + "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.1.1", + "espree": "^7.3.0", + "globals": "^13.9.0", + "ignore": "^4.0.6", + "import-fresh": "^3.2.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/@eslint/eslintrc/node_modules/ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", + "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.0", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@raycast/api": { + "version": "1.51.3", + "resolved": "https://registry.npmjs.org/@raycast/api/-/api-1.51.3.tgz", + "integrity": "sha512-eHUs4gxeG1K1aQjY/IZlCnG4hY5c2RzBuxPID6LFq9E8jq9INdBBbGGakqSz/fNvQtjPAuuN9goZ+oErPqvjEA==", + "hasInstallScript": true, + "dependencies": { + "@types/node": "18.8.3", + "@types/react": "18.0.9", + "react": "18.1.0", + "react-reconciler": "0.28.0" + }, + "bin": { + "ray": "bin/ray" + }, + "peerDependencies": { + "@types/node": "18.8.3", + "@types/react": "18.0.9" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "@types/react": { + "optional": true + } + } + }, + "node_modules/@raycast/eslint-config": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@raycast/eslint-config/-/eslint-config-1.0.5.tgz", + "integrity": "sha512-oxpj+3/zQ5aB5+sH9BriiiTcwkR9+ERpfBDJGpqe6eiveNjKRJe5JVt5lHPyeghLF0fl86GhQz9hnvXbuIMJ8g==", + "dev": true, + "dependencies": { + "@raycast/eslint-plugin": "^1.0.4", + "@rushstack/eslint-patch": "^1.2.0", + "@typescript-eslint/eslint-plugin": "^5.0.0", + "@typescript-eslint/parser": "^5.0.0", + "eslint-config-prettier": "^8.3.0" + }, + "peerDependencies": { + "eslint": ">=7", + "prettier": ">=2", + "typescript": ">=4" + } + }, + "node_modules/@raycast/eslint-plugin": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@raycast/eslint-plugin/-/eslint-plugin-1.0.4.tgz", + "integrity": "sha512-d94MpqETpOOEKi09kwkMRNBzwPDYkJn9UPuhVoXK+HwjXtUevGzJAhd7xoxOXzlh5aL854JqN75Y5DbkyJjr0w==", + "dev": true, + "dependencies": { + "@typescript-eslint/utils": "^5.48.1", + "title-case": "^3.0.3" + }, + "peerDependencies": { + "eslint": ">=7" + } + }, + "node_modules/@raycast/utils": { + "resolved": "..", + "link": true + }, + "node_modules/@rushstack/eslint-patch": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.3.0.tgz", + "integrity": "sha512-IthPJsJR85GhOkp3Hvp8zFOPK5ynKn6STyHa/WZpioK7E1aYDiBzpqQPrngc14DszIUkIrdd3k9Iu0XSzlP/1w==", + "dev": true + }, + "node_modules/@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "dev": true + }, + "node_modules/@types/node": { + "version": "18.8.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.8.3.tgz", + "integrity": "sha512-0os9vz6BpGwxGe9LOhgP/ncvYN5Tx1fNcd2TM3rD/aCGBkysb+ZWpXEocG24h6ZzOi13+VB8HndAQFezsSOw1w==" + }, + "node_modules/@types/prop-types": { + "version": "15.7.5", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", + "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==" + }, + "node_modules/@types/react": { + "version": "18.0.9", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.9.tgz", + "integrity": "sha512-9bjbg1hJHUm4De19L1cHiW0Jvx3geel6Qczhjd0qY5VKVE2X5+x77YxAepuCwVh4vrgZJdgEJw48zrhRIeF4Nw==", + "dependencies": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/scheduler": { + "version": "0.16.3", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.3.tgz", + "integrity": "sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==" + }, + "node_modules/@types/semver": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.0.tgz", + "integrity": "sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==", + "dev": true + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "5.59.7", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.59.7.tgz", + "integrity": "sha512-BL+jYxUFIbuYwy+4fF86k5vdT9lT0CNJ6HtwrIvGh0PhH8s0yy5rjaKH2fDCrz5ITHy07WCzVGNvAmjJh4IJFA==", + "dev": true, + "dependencies": { + "@eslint-community/regexpp": "^4.4.0", + "@typescript-eslint/scope-manager": "5.59.7", + "@typescript-eslint/type-utils": "5.59.7", + "@typescript-eslint/utils": "5.59.7", + "debug": "^4.3.4", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "5.59.7", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.59.7.tgz", + "integrity": "sha512-VhpsIEuq/8i5SF+mPg9jSdIwgMBBp0z9XqjiEay+81PYLJuroN+ET1hM5IhkiYMJd9MkTz8iJLt7aaGAgzWUbQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "5.59.7", + "@typescript-eslint/types": "5.59.7", + "@typescript-eslint/typescript-estree": "5.59.7", + "debug": "^4.3.4" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "5.59.7", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.59.7.tgz", + "integrity": "sha512-FL6hkYWK9zBGdxT2wWEd2W8ocXMu3K94i3gvMrjXpx+koFYdYV7KprKfirpgY34vTGzEPPuKoERpP8kD5h7vZQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.59.7", + "@typescript-eslint/visitor-keys": "5.59.7" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "5.59.7", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.59.7.tgz", + "integrity": "sha512-ozuz/GILuYG7osdY5O5yg0QxXUAEoI4Go3Do5xeu+ERH9PorHBPSdvD3Tjp2NN2bNLh1NJQSsQu2TPu/Ly+HaQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "5.59.7", + "@typescript-eslint/utils": "5.59.7", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "5.59.7", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.7.tgz", + "integrity": "sha512-UnVS2MRRg6p7xOSATscWkKjlf/NDKuqo5TdbWck6rIRZbmKpVNTLALzNvcjIfHBE7736kZOFc/4Z3VcZwuOM/A==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "5.59.7", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.7.tgz", + "integrity": "sha512-4A1NtZ1I3wMN2UGDkU9HMBL+TIQfbrh4uS0WDMMpf3xMRursDbqEf1ahh6vAAe3mObt8k3ZATnezwG4pdtWuUQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.59.7", + "@typescript-eslint/visitor-keys": "5.59.7", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "5.59.7", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.59.7.tgz", + "integrity": "sha512-yCX9WpdQKaLufz5luG4aJbOpdXf/fjwGMcLFXZVPUz3QqLirG5QcwwnIHNf8cjLjxK4qtzTO8udUtMQSAToQnQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.59.7", + "@typescript-eslint/types": "5.59.7", + "@typescript-eslint/typescript-estree": "5.59.7", + "eslint-scope": "^5.1.1", + "semver": "^7.3.7" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "5.59.7", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.7.tgz", + "integrity": "sha512-tyN+X2jvMslUszIiYbF0ZleP+RqQsFVpGrKI6e0Eet1w8WmhsAtmzaqm8oM8WJQ1ysLwhnsK/4hYHJjOgJVfQQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.59.7", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/csstype": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", + "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "dependencies": { + "ansi-colors": "^4.1.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "7.32.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", + "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "7.12.11", + "@eslint/eslintrc": "^0.4.3", + "@humanwhocodes/config-array": "^0.5.0", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "enquirer": "^2.3.5", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^2.1.0", + "eslint-visitor-keys": "^2.0.0", + "espree": "^7.3.1", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.1.2", + "globals": "^13.6.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "progress": "^2.0.0", + "regexpp": "^3.1.0", + "semver": "^7.2.1", + "strip-ansi": "^6.0.0", + "strip-json-comments": "^3.1.0", + "table": "^6.0.9", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-prettier": { + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.8.0.tgz", + "integrity": "sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==", + "dev": true, + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz", + "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint/node_modules/ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/espree": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", + "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", + "dev": true, + "dependencies": { + "acorn": "^7.4.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^1.3.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esquery/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "dependencies": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "dev": true + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", + "dev": true + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/globals": { + "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "dev": true + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/lodash.truncate": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", + "dev": true + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", + "dev": true + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/react": { + "version": "18.1.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.1.0.tgz", + "integrity": "sha512-4oL8ivCz5ZEPyclFQXaNksK3adutVS8l2xzZU0cqEFrE9Sb7fC0EFK5uEk74wIreL1DERyjvsU915j1pcT2uEQ==", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-reconciler": { + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/react-reconciler/-/react-reconciler-0.28.0.tgz", + "integrity": "sha512-sGIHDOpgVjRYgsi8NgosDnbkDvvkYFFSF900ZUhUw0+lSBEA5n76TcKFaVkfYMIuYm+7W6mT8Q673DLBfuTxcQ==", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.22.0" + }, + "engines": { + "node": ">=0.10.0" + }, + "peerDependencies": { + "react": "^18.1.0" + } + }, + "node_modules/regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/scheduler": { + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.22.0.tgz", + "integrity": "sha512-6QAm1BgQI88NPYymgGQLCZgvep4FyePDWFpXVK+zNSUgHwlqpJy8VEh8Et0KxTACS4VWwMousBElAZOH9nkkoQ==", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/semver": { + "version": "7.5.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz", + "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/table": { + "version": "6.8.1", + "resolved": "https://registry.npmjs.org/table/-/table-6.8.1.tgz", + "integrity": "sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==", + "dev": true, + "dependencies": { + "ajv": "^8.0.1", + "lodash.truncate": "^4.4.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/table/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/table/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/title-case": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/title-case/-/title-case-3.0.3.tgz", + "integrity": "sha512-e1zGYRvbffpcHIrnuqT0Dh+gEJtDaxDSoG4JAIpq4oDFyooziLBIiYQv0GBT4FUAnUop5uZ1hiIAj7oAF6sOCA==", + "dev": true, + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/tslib": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.2.tgz", + "integrity": "sha512-5svOrSA2w3iGFDs1HibEVBGbDrAY82bFQ3HZ3ixB+88nsbsWQoKqDRb5UBYAUPEzbBn6dAp5gRNXglySbx1MlA==", + "dev": true + }, + "node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + } + }, + "node_modules/tsutils/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typescript": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/v8-compile-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "dev": true + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", + "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", + "dev": true, + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "dev": true + }, + "@babel/highlight": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.18.6", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^3.3.0" + } + }, + "@eslint-community/regexpp": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.1.tgz", + "integrity": "sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==", + "dev": true + }, + "@eslint/eslintrc": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", + "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.1.1", + "espree": "^7.3.0", + "globals": "^13.9.0", + "ignore": "^4.0.6", + "import-fresh": "^3.2.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + } + } + }, + "@humanwhocodes/config-array": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", + "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", + "dev": true, + "requires": { + "@humanwhocodes/object-schema": "^1.2.0", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + } + }, + "@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, + "@raycast/api": { + "version": "1.51.3", + "resolved": "https://registry.npmjs.org/@raycast/api/-/api-1.51.3.tgz", + "integrity": "sha512-eHUs4gxeG1K1aQjY/IZlCnG4hY5c2RzBuxPID6LFq9E8jq9INdBBbGGakqSz/fNvQtjPAuuN9goZ+oErPqvjEA==", + "requires": { + "@types/node": "18.8.3", + "@types/react": "18.0.9", + "react": "18.1.0", + "react-reconciler": "0.28.0" + } + }, + "@raycast/eslint-config": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@raycast/eslint-config/-/eslint-config-1.0.5.tgz", + "integrity": "sha512-oxpj+3/zQ5aB5+sH9BriiiTcwkR9+ERpfBDJGpqe6eiveNjKRJe5JVt5lHPyeghLF0fl86GhQz9hnvXbuIMJ8g==", + "dev": true, + "requires": { + "@raycast/eslint-plugin": "^1.0.4", + "@rushstack/eslint-patch": "^1.2.0", + "@typescript-eslint/eslint-plugin": "^5.0.0", + "@typescript-eslint/parser": "^5.0.0", + "eslint-config-prettier": "^8.3.0" + } + }, + "@raycast/eslint-plugin": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@raycast/eslint-plugin/-/eslint-plugin-1.0.4.tgz", + "integrity": "sha512-d94MpqETpOOEKi09kwkMRNBzwPDYkJn9UPuhVoXK+HwjXtUevGzJAhd7xoxOXzlh5aL854JqN75Y5DbkyJjr0w==", + "dev": true, + "requires": { + "@typescript-eslint/utils": "^5.48.1", + "title-case": "^3.0.3" + } + }, + "@raycast/utils": { + "version": "file:..", + "requires": { + "@raycast/api": "^1.51.0", + "@types/content-type": "^1.1.5", + "@types/media-typer": "^1.1.1", + "@types/object-hash": "^3.0.2", + "@types/signal-exit": "^3.0.1", + "@typescript-eslint/eslint-plugin": "5.26.0", + "@typescript-eslint/parser": "5.26.0", + "content-type": "^1.0.5", + "cross-fetch": "^3.1.5", + "dequal": "^2.0.3", + "eslint": "8.16.0", + "eslint-config-prettier": "8.5.0", + "eslint-plugin-import": "2.26.0", + "eslint-plugin-jest": "26.2.2", + "eslint-plugin-prettier": "4.0.0", + "eslint-plugin-react-hooks": "4.5.0", + "media-typer": "^1.1.0", + "object-hash": "^3.0.0", + "signal-exit": "^3.0.7", + "typescript": "4.7.2" + } + }, + "@rushstack/eslint-patch": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.3.0.tgz", + "integrity": "sha512-IthPJsJR85GhOkp3Hvp8zFOPK5ynKn6STyHa/WZpioK7E1aYDiBzpqQPrngc14DszIUkIrdd3k9Iu0XSzlP/1w==", + "dev": true + }, + "@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "dev": true + }, + "@types/node": { + "version": "18.8.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.8.3.tgz", + "integrity": "sha512-0os9vz6BpGwxGe9LOhgP/ncvYN5Tx1fNcd2TM3rD/aCGBkysb+ZWpXEocG24h6ZzOi13+VB8HndAQFezsSOw1w==" + }, + "@types/prop-types": { + "version": "15.7.5", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", + "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==" + }, + "@types/react": { + "version": "18.0.9", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.9.tgz", + "integrity": "sha512-9bjbg1hJHUm4De19L1cHiW0Jvx3geel6Qczhjd0qY5VKVE2X5+x77YxAepuCwVh4vrgZJdgEJw48zrhRIeF4Nw==", + "requires": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "@types/scheduler": { + "version": "0.16.3", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.3.tgz", + "integrity": "sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==" + }, + "@types/semver": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.0.tgz", + "integrity": "sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==", + "dev": true + }, + "@typescript-eslint/eslint-plugin": { + "version": "5.59.7", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.59.7.tgz", + "integrity": "sha512-BL+jYxUFIbuYwy+4fF86k5vdT9lT0CNJ6HtwrIvGh0PhH8s0yy5rjaKH2fDCrz5ITHy07WCzVGNvAmjJh4IJFA==", + "dev": true, + "requires": { + "@eslint-community/regexpp": "^4.4.0", + "@typescript-eslint/scope-manager": "5.59.7", + "@typescript-eslint/type-utils": "5.59.7", + "@typescript-eslint/utils": "5.59.7", + "debug": "^4.3.4", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/parser": { + "version": "5.59.7", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.59.7.tgz", + "integrity": "sha512-VhpsIEuq/8i5SF+mPg9jSdIwgMBBp0z9XqjiEay+81PYLJuroN+ET1hM5IhkiYMJd9MkTz8iJLt7aaGAgzWUbQ==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "5.59.7", + "@typescript-eslint/types": "5.59.7", + "@typescript-eslint/typescript-estree": "5.59.7", + "debug": "^4.3.4" + } + }, + "@typescript-eslint/scope-manager": { + "version": "5.59.7", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.59.7.tgz", + "integrity": "sha512-FL6hkYWK9zBGdxT2wWEd2W8ocXMu3K94i3gvMrjXpx+koFYdYV7KprKfirpgY34vTGzEPPuKoERpP8kD5h7vZQ==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.59.7", + "@typescript-eslint/visitor-keys": "5.59.7" + } + }, + "@typescript-eslint/type-utils": { + "version": "5.59.7", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.59.7.tgz", + "integrity": "sha512-ozuz/GILuYG7osdY5O5yg0QxXUAEoI4Go3Do5xeu+ERH9PorHBPSdvD3Tjp2NN2bNLh1NJQSsQu2TPu/Ly+HaQ==", + "dev": true, + "requires": { + "@typescript-eslint/typescript-estree": "5.59.7", + "@typescript-eslint/utils": "5.59.7", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/types": { + "version": "5.59.7", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.7.tgz", + "integrity": "sha512-UnVS2MRRg6p7xOSATscWkKjlf/NDKuqo5TdbWck6rIRZbmKpVNTLALzNvcjIfHBE7736kZOFc/4Z3VcZwuOM/A==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "5.59.7", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.7.tgz", + "integrity": "sha512-4A1NtZ1I3wMN2UGDkU9HMBL+TIQfbrh4uS0WDMMpf3xMRursDbqEf1ahh6vAAe3mObt8k3ZATnezwG4pdtWuUQ==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.59.7", + "@typescript-eslint/visitor-keys": "5.59.7", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/utils": { + "version": "5.59.7", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.59.7.tgz", + "integrity": "sha512-yCX9WpdQKaLufz5luG4aJbOpdXf/fjwGMcLFXZVPUz3QqLirG5QcwwnIHNf8cjLjxK4qtzTO8udUtMQSAToQnQ==", + "dev": true, + "requires": { + "@eslint-community/eslint-utils": "^4.2.0", + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.59.7", + "@typescript-eslint/types": "5.59.7", + "@typescript-eslint/typescript-estree": "5.59.7", + "eslint-scope": "^5.1.1", + "semver": "^7.3.7" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "5.59.7", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.7.tgz", + "integrity": "sha512-tyN+X2jvMslUszIiYbF0ZleP+RqQsFVpGrKI6e0Eet1w8WmhsAtmzaqm8oM8WJQ1ysLwhnsK/4hYHJjOgJVfQQ==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.59.7", + "eslint-visitor-keys": "^3.3.0" + } + }, + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true + }, + "acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "requires": {} + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "dev": true + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true + }, + "astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "csstype": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", + "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "requires": { + "path-type": "^4.0.0" + } + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "requires": { + "ansi-colors": "^4.1.1" + } + }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true + }, + "eslint": { + "version": "7.32.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", + "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", + "dev": true, + "requires": { + "@babel/code-frame": "7.12.11", + "@eslint/eslintrc": "^0.4.3", + "@humanwhocodes/config-array": "^0.5.0", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "enquirer": "^2.3.5", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^2.1.0", + "eslint-visitor-keys": "^2.0.0", + "espree": "^7.3.1", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.1.2", + "globals": "^13.6.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "progress": "^2.0.0", + "regexpp": "^3.1.0", + "semver": "^7.2.1", + "strip-ansi": "^6.0.0", + "strip-json-comments": "^3.1.0", + "table": "^6.0.9", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + } + } + }, + "eslint-config-prettier": { + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.8.0.tgz", + "integrity": "sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==", + "dev": true, + "requires": {} + }, + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + } + } + }, + "eslint-visitor-keys": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz", + "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==", + "dev": true + }, + "espree": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", + "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", + "dev": true, + "requires": { + "acorn": "^7.4.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^1.3.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + } + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "fast-glob": { + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + } + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } + }, + "file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "requires": { + "flat-cache": "^3.0.4" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "requires": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + } + }, + "flatted": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "dev": true + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", + "dev": true + }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "globals": { + "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + } + }, + "grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "dev": true + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + } + }, + "lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "lodash.truncate": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", + "dev": true + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true + }, + "micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "requires": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + } + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "requires": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + } + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true + }, + "prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true + }, + "prettier": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "dev": true + }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true + }, + "punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "dev": true + }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true + }, + "react": { + "version": "18.1.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.1.0.tgz", + "integrity": "sha512-4oL8ivCz5ZEPyclFQXaNksK3adutVS8l2xzZU0cqEFrE9Sb7fC0EFK5uEk74wIreL1DERyjvsU915j1pcT2uEQ==", + "requires": { + "loose-envify": "^1.1.0" + } + }, + "react-reconciler": { + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/react-reconciler/-/react-reconciler-0.28.0.tgz", + "integrity": "sha512-sGIHDOpgVjRYgsi8NgosDnbkDvvkYFFSF900ZUhUw0+lSBEA5n76TcKFaVkfYMIuYm+7W6mT8Q673DLBfuTxcQ==", + "requires": { + "loose-envify": "^1.1.0", + "scheduler": "^0.22.0" + } + }, + "regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true + }, + "require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "scheduler": { + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.22.0.tgz", + "integrity": "sha512-6QAm1BgQI88NPYymgGQLCZgvep4FyePDWFpXVK+zNSUgHwlqpJy8VEh8Et0KxTACS4VWwMousBElAZOH9nkkoQ==", + "requires": { + "loose-envify": "^1.1.0" + } + }, + "semver": { + "version": "7.5.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz", + "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "table": { + "version": "6.8.1", + "resolved": "https://registry.npmjs.org/table/-/table-6.8.1.tgz", + "integrity": "sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==", + "dev": true, + "requires": { + "ajv": "^8.0.1", + "lodash.truncate": "^4.4.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" + }, + "dependencies": { + "ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + } + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "title-case": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/title-case/-/title-case-3.0.3.tgz", + "integrity": "sha512-e1zGYRvbffpcHIrnuqT0Dh+gEJtDaxDSoG4JAIpq4oDFyooziLBIiYQv0GBT4FUAnUop5uZ1hiIAj7oAF6sOCA==", + "dev": true, + "requires": { + "tslib": "^2.0.3" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "tslib": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.2.tgz", + "integrity": "sha512-5svOrSA2w3iGFDs1HibEVBGbDrAY82bFQ3HZ3ixB+88nsbsWQoKqDRb5UBYAUPEzbBn6dAp5gRNXglySbx1MlA==", + "dev": true + }, + "tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } + }, + "type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1" + } + }, + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true + }, + "typescript": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "dev": true + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "v8-compile-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } +} diff --git a/tests/package.json b/tests/package.json new file mode 100644 index 0000000..e0ca780 --- /dev/null +++ b/tests/package.json @@ -0,0 +1,115 @@ +{ + "$schema": "https://www.raycast.com/schemas/extension.json", + "name": "utils-smoke-tests", + "title": "Utils Smoke Tests", + "description": "Test cases for the most common usage of the utils", + "icon": "extension_icon.png", + "author": "mathieudutour", + "license": "MIT", + "commands": [ + { + "name": "avatar", + "title": "getAvatarIcon", + "subtitle": "Utils Smoke Tests", + "description": "Utils Smoke Tests", + "mode": "view" + }, + { + "name": "favicon", + "title": "getFavicon", + "subtitle": "Utils Smoke Tests", + "description": "Utils Smoke Tests", + "mode": "view" + }, + { + "name": "progress", + "title": "getProgressIcon", + "subtitle": "Utils Smoke Tests", + "description": "Utils Smoke Tests", + "mode": "view" + }, + { + "name": "ai", + "title": "useAI", + "subtitle": "Utils Smoke Tests", + "description": "Utils Smoke Tests", + "mode": "view", + "arguments": [ + { + "name": "prompt", + "placeholder": "prompt", + "type": "text", + "required": true + } + ] + }, + { + "name": "cached-promise", + "title": "useCachedPromise", + "subtitle": "Utils Smoke Tests", + "description": "Utils Smoke Tests", + "mode": "view" + }, + { + "name": "cached-state", + "title": "useCachedState", + "subtitle": "Utils Smoke Tests", + "description": "Utils Smoke Tests", + "mode": "view" + }, + { + "name": "exec", + "title": "useExec", + "subtitle": "Utils Smoke Tests", + "description": "Utils Smoke Tests", + "mode": "view" + }, + { + "name": "fetch", + "title": "useFetch", + "subtitle": "Utils Smoke Tests", + "description": "Utils Smoke Tests", + "mode": "view" + }, + { + "name": "form", + "title": "useForm", + "subtitle": "Utils Smoke Tests", + "description": "Utils Smoke Tests", + "mode": "view" + }, + { + "name": "promise", + "title": "usePromise", + "subtitle": "Utils Smoke Tests", + "description": "Utils Smoke Tests", + "mode": "view" + }, + { + "name": "sql", + "title": "useSQL", + "subtitle": "Utils Smoke Tests", + "description": "Utils Smoke Tests", + "mode": "view" + } + ], + "dependencies": { + "@raycast/api": "^1.51.3", + "@raycast/utils": "file:../" + }, + "devDependencies": { + "@raycast/eslint-config": "1.0.5", + "@types/node": "18.8.3", + "@types/react": "18.0.9", + "eslint": "^7.32.0", + "prettier": "^2.5.1", + "typescript": "^4.4.3" + }, + "scripts": { + "build": "ray build -e dist", + "dev": "ray develop", + "fix-lint": "ray lint --fix", + "lint": "ray lint", + "publish": "npx @raycast/api@latest publish" + } +} diff --git a/tests/src/ai.tsx b/tests/src/ai.tsx new file mode 100644 index 0000000..521c7ed --- /dev/null +++ b/tests/src/ai.tsx @@ -0,0 +1,37 @@ +import { Detail, LaunchProps, AI, ActionPanel, Action } from "@raycast/api"; +import { useAI } from "@raycast/utils"; +import { useState } from "react"; + +export default function Command(props: LaunchProps<{ arguments: Arguments.Ai }>) { + const [creativity, setCreativity] = useState(undefined); + const [execute, setExecute] = useState(false); + const { isLoading, data } = useAI(props.arguments.prompt, { creativity, execute }); + + const handleSetCreativity = (creativity: AI.Creativity | undefined) => { + setCreativity(creativity); + setExecute(true); + }; + + return ( + + + handleSetCreativity("none")} /> + handleSetCreativity("low")} /> + handleSetCreativity("medium")} /> + handleSetCreativity("high")} /> + handleSetCreativity("maximum")} /> + handleSetCreativity(-1)} /> + handleSetCreativity(0)} /> + handleSetCreativity(2)} /> + handleSetCreativity(3)} /> + handleSetCreativity(undefined)} /> + + + } + /> + ); +} diff --git a/tests/src/avatar.tsx b/tests/src/avatar.tsx new file mode 100644 index 0000000..e2591ab --- /dev/null +++ b/tests/src/avatar.tsx @@ -0,0 +1,11 @@ +import { List } from "@raycast/api"; +import { getAvatarIcon } from "@raycast/utils"; + +export default function Command() { + return ( + + + + + ); +} diff --git a/tests/src/cached-promise.tsx b/tests/src/cached-promise.tsx new file mode 100644 index 0000000..c8efd3e --- /dev/null +++ b/tests/src/cached-promise.tsx @@ -0,0 +1,36 @@ +import { List, ActionPanel, Action } from "@raycast/api"; +import { useCachedPromise } from "@raycast/utils"; +import { useState } from "react"; + +export default function Command() { + const [searchText, setSearchText] = useState(""); + const { isLoading, data, revalidate } = useCachedPromise( + async (text: string) => { + await sleep(300); + return `result: ${text}`; + }, + [searchText], + { + initialData: "Shown before any data is loaded", + keepPreviousData: true, + } + ); + + return ( + + revalidate()} /> + + } + > + + + ); +} + +const sleep = function (ms: number) { + return new Promise((resolve) => setTimeout(resolve, ms)); +}; diff --git a/tests/src/cached-state.tsx b/tests/src/cached-state.tsx new file mode 100644 index 0000000..8704cd4 --- /dev/null +++ b/tests/src/cached-state.tsx @@ -0,0 +1,20 @@ +import { List, ActionPanel, Action } from "@raycast/api"; +import { useCachedState } from "@raycast/utils"; + +export default function Command() { + const [showDetails, setShowDetails] = useCachedState("show-details", false); + + return ( + + } + actions={ + + setShowDetails((x) => !x)} /> + + } + /> + + ); +} diff --git a/tests/src/exec.tsx b/tests/src/exec.tsx new file mode 100644 index 0000000..137cd6d --- /dev/null +++ b/tests/src/exec.tsx @@ -0,0 +1,19 @@ +import { List } from "@raycast/api"; +import { useExec } from "@raycast/utils"; +import { cpus } from "os"; +import { useMemo } from "react"; + +const brewPath = cpus()[0].model.includes("Apple") ? "/opt/homebrew/bin/brew" : "/usr/local/bin/brew"; + +export default function () { + const { isLoading, data } = useExec(brewPath, ["info", "--json=v2", "--installed"]); + const results = useMemo<{ id: string; name: string }[]>(() => JSON.parse(data || "{}").formulae || [], [data]); + + return ( + + {results.map((item) => ( + + ))} + + ); +} diff --git a/tests/src/favicon.tsx b/tests/src/favicon.tsx new file mode 100644 index 0000000..2828aab --- /dev/null +++ b/tests/src/favicon.tsx @@ -0,0 +1,10 @@ +import { List } from "@raycast/api"; +import { getFavicon } from "@raycast/utils"; + +export default function Command() { + return ( + + + + ); +} diff --git a/tests/src/fetch.tsx b/tests/src/fetch.tsx new file mode 100644 index 0000000..7450de1 --- /dev/null +++ b/tests/src/fetch.tsx @@ -0,0 +1,20 @@ +import { Detail, ActionPanel, Action } from "@raycast/api"; +import { useFetch } from "@raycast/utils"; + +export default function Command() { + const { isLoading, data, revalidate } = useFetch( + "https://raw.githubusercontent.com/mdn/dom-examples/main/fetch/fetch-text/page1.txt" + ); + + return ( + + revalidate()} /> + + } + /> + ); +} diff --git a/tests/src/form.tsx b/tests/src/form.tsx new file mode 100644 index 0000000..8b099a1 --- /dev/null +++ b/tests/src/form.tsx @@ -0,0 +1,63 @@ +import { Action, ActionPanel, Form, showToast, Toast } from "@raycast/api"; +import { useForm, FormValidation } from "@raycast/utils"; + +interface SignUpFormValues { + firstName: string; + lastName: string; + birthday: Date | null; + password: string; + number: string; + hobbies: string[]; +} + +export default function Main() { + const { handleSubmit, itemProps } = useForm({ + onSubmit(values) { + showToast({ + style: Toast.Style.Success, + title: "Yay!", + message: `${values.firstName} ${values.lastName} account created`, + }); + }, + validation: { + firstName: FormValidation.Required, + lastName: FormValidation.Required, + password: (value) => { + if (value && value.length < 8) { + return "Password must be at least 8 symbols"; + } else if (!value) { + return "The item is required"; + } + }, + number: (value) => { + if (value && value !== "2") { + return "Please select '2'"; + } + }, + }, + }); + + return ( +
+ + + } + > + + + + + + {[1, 2, 3, 4, 5, 6, 7].map((num) => { + return ; + })} + + + ); +} diff --git a/tests/src/progress.tsx b/tests/src/progress.tsx new file mode 100644 index 0000000..b2df501 --- /dev/null +++ b/tests/src/progress.tsx @@ -0,0 +1,12 @@ +import { List } from "@raycast/api"; +import { getProgressIcon } from "@raycast/utils"; + +export default function Command() { + return ( + + {Array.from({ length: 11 }, (_, i) => i / 10).map((i) => ( + + ))} + + ); +} diff --git a/tests/src/promise.tsx b/tests/src/promise.tsx new file mode 100644 index 0000000..ca07910 --- /dev/null +++ b/tests/src/promise.tsx @@ -0,0 +1,32 @@ +import { List, ActionPanel, Action } from "@raycast/api"; +import { usePromise } from "@raycast/utils"; +import { useState } from "react"; + +export default function Command() { + const [searchText, setSearchText] = useState(""); + const { isLoading, data, revalidate } = usePromise( + async (text: string) => { + await sleep(300); + return `result: ${text}`; + }, + [searchText] + ); + + return ( + + revalidate()} /> + + } + > + + + ); +} + +const sleep = function (ms: number) { + return new Promise((resolve) => setTimeout(resolve, ms)); +}; diff --git a/tests/src/sql.tsx b/tests/src/sql.tsx new file mode 100644 index 0000000..f96cdf7 --- /dev/null +++ b/tests/src/sql.tsx @@ -0,0 +1,53 @@ +import { useSQL } from "@raycast/utils"; +import { resolve } from "path"; +import { homedir } from "os"; +import { List } from "@raycast/api"; + +const NOTES_DB = resolve(homedir(), "Library/Group Containers/group.com.apple.notes/NoteStore.sqlite"); +const notesQuery = ` + SELECT + 'x-coredata://' || z_uuid || '/ICNote/p' || xcoreDataID AS id, + noteTitle AS title, + datetime(modDate + 978307200, 'unixepoch') AS modifiedAt, + UUID as UUID + FROM ( + SELECT + c.ztitle1 AS noteTitle, + c.zmodificationdate1 AS modDate, + c.z_pk AS xcoredataID, + c.zidentifier AS UUID + FROM + ziccloudsyncingobject AS c + WHERE + noteTitle IS NOT NULL AND + modDate IS NOT NULL AND + xcoredataID IS NOT NULL AND + c.zmarkedfordeletion != 1 + ) AS notes + LEFT JOIN ( + SELECT z_uuid FROM z_metadata + ) + ORDER BY modDate DESC + `; +type NoteItem = { + id: string; + UUID: string; + title: string; + modifiedAt?: Date; +}; + +export default function Command() { + const { isLoading, data, permissionView } = useSQL(NOTES_DB, notesQuery); + + if (permissionView) { + return permissionView; + } + + return ( + + {(data || []).map((item) => ( + + ))} + + ); +} diff --git a/tests/tsconfig.json b/tests/tsconfig.json new file mode 100644 index 0000000..c993d8a --- /dev/null +++ b/tests/tsconfig.json @@ -0,0 +1,17 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "display": "Node 16", + "include": ["src/**/*", "raycast-env.d.ts"], + "compilerOptions": { + "lib": ["es2021"], + "module": "commonjs", + "target": "es2021", + "strict": true, + "isolatedModules": true, + "esModuleInterop": true, + "skipLibCheck": true, + "forceConsistentCasingInFileNames": true, + "jsx": "react-jsx", + "resolveJsonModule": true + } +} diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..1e1be70 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,19 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "include": ["src/**/*", "scripts/**/*"], + "compilerOptions": { + "lib": ["ES2021"], + "module": "commonjs", + "target": "es2021", + "strict": true, + "isolatedModules": true, + "esModuleInterop": true, + "skipLibCheck": true, + "forceConsistentCasingInFileNames": true, + "jsx": "react-jsx", + "resolveJsonModule": true, + "declaration": true, + "declarationMap": true, + "outDir": "dist" + } +}

V25oMR!MeY9v7jzr|^qp7L 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%0DD!hROup6a-bTdP-x`7WIx~ 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‹s_F3UPY%$A_-E7a&=RpWRo6Q$Fw@( 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
8CCp3GgA}L{;4` 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≻4?m9ZZ=`Rw5iAaVsk$=U*OtL&Y3CC z$xeR{zbjx-m|g?CE#tZQaO)^P}QC$T?e}Tz{1mq+X~B zWSy3L1-$7+<6KV7yc(QX-|mIIim!=x7}jl$Ktbv!WK*}SKg-Gz`y0a!tJXJGqZOld zgoR7WL+s{5L~Ru5M+G#`0Q&BY@$aWa4%YZSU$~)q(8RbM_C&=@Qf&Tv0BZ(h-*#Ra zd-~Wk*=zyazi5ECb*8O4s>6u+QBnsNXHC4>9+2A^G3J1H1NApCVOWFZM>B@d8=O6f zlmbw1Ug%j+ZoP{*VM%m`{f;(a)JMGKFiQ%0D`{3;u=zPouOSlFG+9!NgP*RyqaXCx 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
0k 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 literal 0 HcmV?d00001 diff --git a/docs/utils-reference/.gitbook/assets/utils-progress-icon.png b/docs/utils-reference/.gitbook/assets/utils-progress-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..8d31dd8b07fabd4eba1a4ab2d4f256bc50f0fb9c GIT binary patch literal 18970 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 literal 0 HcmV?d00001 diff --git a/docs/utils-reference/SUMMARY.md b/docs/utils-reference/SUMMARY.md new file mode 100644 index 0000000..0c5d1f1 --- /dev/null +++ b/docs/utils-reference/SUMMARY.md @@ -0,0 +1,16 @@ +## Utilities + +- [Getting Started](utils-reference/getting-started.md) +- [Icons](utils-reference/icons/README.md) + - [getAvatarIcon](utils-reference/icons/getAvatarIcon.md) + - [getFavicon](utils-reference/icons/getFavicon.md) + - [getProgressIcon](utils-reference/icons/getProgressIcon.md) +- [React hooks](utils-reference/react-hooks/README.md) + - [useCachedState](utils-reference/react-hooks/useCachedState.md) + - [usePromise](utils-reference/react-hooks/usePromise.md) + - [useCachedPromise](utils-reference/react-hooks/useCachedPromise.md) + - [useFetch](utils-reference/react-hooks/useFetch.md) + - [useForm](utils-reference/react-hooks/useForm.md) + - [useExec](utils-reference/react-hooks/useExec.md) + - [useSQL](utils-reference/react-hooks/useSQL.md) + - [useAI](utils-reference/react-hooks/useAI.md) diff --git a/docs/utils-reference/getting-started.md b/docs/utils-reference/getting-started.md new file mode 100644 index 0000000..183dd5e --- /dev/null +++ b/docs/utils-reference/getting-started.md @@ -0,0 +1,42 @@ +# Raycast Utilities + +In addition to the [Raycast API](../api-reference/cache.md) which is bundled as part of the app, we also provide a sibling package that contains a set of utilities to streamline common patterns and operations used in extensions. + +![](../.gitbook/assets/utils-illustration.jpg) + +## Installation + +This package can be installed independently using `npm`. + +``` +npm install --save @raycast/utils +``` + +`@raycast/utils` has a [peer dependency](https://docs.npmjs.com/cli/v8/configuring-npm/package-json#peerdependencies) on `@raycast/api`. This means that a certain version of `utils` will require a version above a certain version of `api`. `npm` will warn you if that is not the case. + +## Changelog + +### v1.4.0 + +Added the [`useSQL`](./react-hooks/useSQL.md) hook. + +### v1.3.1 + +- Added the `reset` method to `useForm`. + +### v1.3.0 + +- Added the `focus` method to `useForm`. +- Added the `input` option to `useExec`. + +### v1.2.0 + +Added [`useExec`](./react-hooks/useExec.md) and [`useForm`](./react-hooks/useForm.md) hooks. + +### v1.1.0 + +Added [`getFavicon`](./icons/getFavicon.md) method. + +### v1.0.0 + +First release of the utilities. diff --git a/docs/utils-reference/icons/README.md b/docs/utils-reference/icons/README.md new file mode 100644 index 0000000..9ab760e --- /dev/null +++ b/docs/utils-reference/icons/README.md @@ -0,0 +1 @@ +# Icons diff --git a/docs/utils-reference/icons/getAvatarIcon.md b/docs/utils-reference/icons/getAvatarIcon.md new file mode 100644 index 0000000..4636895 --- /dev/null +++ b/docs/utils-reference/icons/getAvatarIcon.md @@ -0,0 +1,38 @@ +# `getAvatarIcon` + +Icon to represent an avatar when you don't have one. The generated avatar will be generated from the initials of the name and have a colorful but consistent background. + +![Avatar Icon example](../../.gitbook/assets/utils-avatar-icon.png) + +## Signature + +```ts +function getAvatarIcon( + name: string, + options?: { + background?: string; + gradient?: boolean; + } +): Image.Asset; +``` + +- `name` is a string of the subject's name. +- `options.background` is a hexadecimal representation of a color to be used as the background color. By default, the hook will pick a random but consistent (eg. the same name will the same color) color from a set handpicked to nicely match Raycast. +- `options.gradient` is a boolean to choose whether the background should have a slight gradient or not. By default, it will. + +Returns an [Image.Asset](../../api-reference/user-interface/icons-and-images.md) that can be used where Raycast expects them. + +## Example + +```tsx +import { List } from "@raycast/api"; +import { getAvatarIcon } from "@raycast/utils"; + +export default function Command() { + return ( + + + + ); +} +``` diff --git a/docs/utils-reference/icons/getFavicon.md b/docs/utils-reference/icons/getFavicon.md new file mode 100644 index 0000000..d85c37a --- /dev/null +++ b/docs/utils-reference/icons/getFavicon.md @@ -0,0 +1,42 @@ +# `getFavicon` + +Icon showing the favicon of a website. + +A favicon (favorite icon) is a tiny icon included along with a website, which is displayed in places like the browser's address bar, page tabs, and bookmarks menu. + +![Favicon example](../../.gitbook/assets/utils-favicon.png) + +## Signature + +```ts +function getFavicon( + url: string | URL, + options?: { + fallback?: Image.Fallback; + size?: boolean; + mask?: Image.Mask; + } +): Image.ImageLike; +``` + +- `name` is a string of the subject's name. +- `options.fallback` is a [Image.Fallback](../../api-reference/user-interface/icons-and-images.md#image.fallback) icon in case the Favicon is not found. By default, the fallback will be `Icon.Link`. +- `options.size` is the size of the returned favicon. By default, it is 64 pixels. +- `options.mask` is the size of the [Image.Mask](../../api-reference/user-interface/icons-and-images.md#image.mask) to apply to the favicon. + +Returns an [Image.ImageLike](../../api-reference/user-interface/icons-and-images.md) that can be used where Raycast expects them. + +## Example + +```tsx +import { List } from "@raycast/api"; +import { getFavicon } from "@raycast/utils"; + +export default function Command() { + return ( + + + + ); +} +``` diff --git a/docs/utils-reference/icons/getProgressIcon.md b/docs/utils-reference/icons/getProgressIcon.md new file mode 100644 index 0000000..91920ba --- /dev/null +++ b/docs/utils-reference/icons/getProgressIcon.md @@ -0,0 +1,40 @@ +# `getProgressIcon` + +Icon to represent the progress of a task, a project, _something_. + +![Progress Icon example](../../.gitbook/assets/utils-progress-icon.png) + +## Signature + +```ts +function getProgressIcon( + progress: number, + color?: Color | string, + options?: { + background?: string; + backgroundOpacity?: number; + } +): Image.Asset; +``` + +- `progress` is a number between 0 and 1 (0 meaning not started, 1 meaning finished). +- `color` is a Raycast `Color` or a hexadecimal representation of a color. By default it will be `Color.Red`. +- `options.background` is the color of the background of the progress icon. By default, it will be `white` if the Raycast's appearance is `dark`, and `black` if the appearance is `light`. +- `options.backgroundOpacity` is the opacity of the background of the progress icon. By default, it will be `0.1`. + +Returns an [Image.Asset](../../api-reference/user-interface/icons-and-images.md) that can be used where Raycast expects them. + +## Example + +```tsx +import { List } from "@raycast/api"; +import { getProgressIcon } from "@raycast/utils"; + +export default function Command() { + return ( + + + + ); +} +``` diff --git a/docs/utils-reference/react-hooks/README.md b/docs/utils-reference/react-hooks/README.md new file mode 100644 index 0000000..46743b7 --- /dev/null +++ b/docs/utils-reference/react-hooks/README.md @@ -0,0 +1 @@ +# React Hooks diff --git a/docs/utils-reference/react-hooks/useAI.md b/docs/utils-reference/react-hooks/useAI.md new file mode 100644 index 0000000..67717d5 --- /dev/null +++ b/docs/utils-reference/react-hooks/useAI.md @@ -0,0 +1,95 @@ +# `useAI` + +Hook which asks the AI to answer a prompt and returns the [AsyncState](#asyncstate) corresponding to the execution of the query. + +## Signature + +```ts +function useAI( + prompt: string, + options?: { + creativity?: AI.Creativity; + model?: AI.Model; + stream?: boolean; + execute?: boolean; + onError?: (error: Error) => void; + onData?: (data: T) => void; + onWillExecute?: (args: string[]) -> void; + } +): AsyncState & { + revalidate: () => void; +}; +``` + +### Arguments + +- `prompt` is the prompt to ask the AI. + +With a few options: + +- `options.creativity` is a number between 0 and 2 to control the creativity of the answer. Concrete tasks, such as fixing grammar, require less creativity while open-ended questions, such as generating ideas, require more. +- `options.model` is a string determining which AI model will be used to answer. +- `options.stream` is a boolean controlling whether to stream the answer or only update the data when the entire answer has been received. By default, the `data` will be streamed. + +Including the [usePromise](./usePromise.md)'s options: + +- `options.execute` is a boolean to indicate whether to actually execute the function or not. This is useful for cases where one of the function's arguments depends on something that might not be available right away (for example, depends on some user inputs). Because React requires every hook to be defined on the render, this flag enables you to define the hook right away but wait until you have all the arguments ready to execute the function. +- `options.onError` is a function called when an execution fails. By default, it will log the error and show a generic failure toast with an action to retry. +- `options.onData` is a function called when an execution succeeds. +- `options.onWillExecute` is a function called when an execution will start. + +### Return + +Returns an object with the [AsyncState](#asyncstate) corresponding to the execution of the function as well as a couple of methods to manipulate it. + +- `data`, `error`, `isLoading` - see [AsyncState](#asyncstate). +- `revalidate` is a method to manually call the function with the same arguments again. + +## Example + +```tsx +import { Detail } from "@raycast/api"; +import { useAI } from "@raycast/utils"; + +export default function Command() { + const { data, isLoading } = useAI("Suggest 5 jazz songs"); + + return ; +} +``` + +## Types + +### AsyncState + +An object corresponding to the execution state of the function. + +```ts +// Initial State +{ + isLoading: true, // or `false` if `options.execute` is `false` + data: undefined, + error: undefined +} + +// Success State +{ + isLoading: false, + data: string, + error: undefined +} + +// Error State +{ + isLoading: false, + data: undefined, + error: Error +} + +// Reloading State +{ + isLoading: true, + data: string | undefined, + error: Error | undefined +} +``` diff --git a/docs/utils-reference/react-hooks/useCachedPromise.md b/docs/utils-reference/react-hooks/useCachedPromise.md new file mode 100644 index 0000000..075203e --- /dev/null +++ b/docs/utils-reference/react-hooks/useCachedPromise.md @@ -0,0 +1,243 @@ +# `useCachedPromise` + +Hook which wraps an asynchronous function or a function that returns a Promise and returns the [AsyncState](#asyncstate) corresponding to the execution of the function. The last value will be kept between command runs. + +{% hint style="info" %} +The value needs to be JSON serializable. +The function is assumed to be constant (eg. changing it won't trigger a revalidation). +{% endhint %} + +## Signature + +```ts +type Result = `type of the returned value of the returned Promise`; + +function useCachedPromise( + fn: T, + args?: Parameters, + options?: { + initialData?: U; + keepPreviousData?: boolean; + abortable?: MutableRefObject; + execute?: boolean; + onError?: (error: Error) => void; + onData?: (data: Result) => void; + onWillExecute?: (args: Parameters) -> void; + } +): AsyncState> & { + revalidate: () => void; + mutate: MutatePromise | U>; +}; +``` + +### Arguments + +- `fn` is an asynchronous function or a function that returns a Promise. +- `args` is the array of arguments to pass to the function. Every time they change, the function will be executed again. You can omit the array if the function doesn't require any argument. + +With a few options: + +- `options.keepPreviousData` is a boolean to tell the hook to keep the previous results instead of returning the initial value if there aren't any in the cache for the new arguments. This is particularly useful when used for data for a List to avoid flickering. See [Promise Argument dependent on List search text](#promise-argument-dependent-on-list-search-text) for more information. + +Including the [useCachedState](./useCachedState.md)'s options: + +- `options.initialData` is the initial value of the state if there aren't any in the Cache yet. + +Including the [usePromise](./usePromise.md)'s options: + +- `options.abortable` is a reference to an [`AbortController`](https://developer.mozilla.org/en-US/docs/Web/API/AbortController) to cancel a previous call when triggering a new one. +- `options.execute` is a boolean to indicate whether to actually execute the function or not. This is useful for cases where one of the function's arguments depends on something that might not be available right away (for example, depends on some user inputs). Because React requires every hook to be defined on the render, this flag enables you to define the hook right away but wait until you have all the arguments ready to execute the function. +- `options.onError` is a function called when an execution fails. By default, it will log the error and show a generic failure toast with an action to retry. +- `options.onData` is a function called when an execution succeeds. +- `options.onWillExecute` is a function called when an execution will start. + +### Return + +Returns an object with the [AsyncState](#asyncstate) corresponding to the execution of the function as well as a couple of methods to manipulate it. + +- `data`, `error`, `isLoading` - see [AsyncState](#asyncstate). +- `revalidate` is a method to manually call the function with the same arguments again. +- `mutate` is a method to wrap an asynchronous update and gives some control over how the `useCachedPromise`'s data should be updated while the update is going through. By default, the data will be revalidated (eg. the function will be called again) after the update is done. See [Mutation and Optimistic Updates](#mutation-and-optimistic-updates) for more information. + +## Example + +```tsx +import { Detail, ActionPanel, Action } from "@raycast/api"; +import { useCachedPromise } from "@raycast/utils"; + +const Demo = () => { + const abortable = useRef(); + const { isLoading, data, revalidate } = useCachedPromise( + async (url: string) => { + const response = await fetch(url); + const result = await response.text(); + return result; + }, + ["https://api.example"], + { + initialData: "Some Text", + } + ); + + return ( + + revalidate()} /> + + } + /> + ); +}; +``` + +## Promise Argument dependent on List search text + +By default, when an argument passed to the hook changes, the function will be executed again and the cache's value for those arguments will be returned immediately. This means that in the case of new arguments that haven't been used yet, the initial data will be returned. + +This behaviour can cause some flickering (initial data -> fetched data -> arguments change -> initial data -> fetched data, etc.). To avoid that, we can set `keepPreviousData` to `true` and the hook will keep the latest fetched data if the cache is empty for the new arguments (initial data -> fetched data -> arguments change -> fetched data). + +```tsx +import { useState } from "react"; +import { List, ActionPanel, Action } from "@raycast/api"; +import { useCachedPromise } from "@raycast/utils"; + +const Demo = () => { + const [searchText, setSearchText] = useState(""); + const { isLoading, data } = useCachedPromise( + async (url: string) => { + const response = await fetch(url); + const result = await response.text(); + return result; + }, + ["https://api.example"], + { + // to make sure the screen isn't flickering when the searchText changes + keepPreviousData: true, + } + ); + + return ( + + {(data || []).map((item) => ( + + ))} + + ); +}; +``` + +## Mutation and Optimistic Updates + +In an optimistic update, the UI behaves as though a change was successfully completed before receiving confirmation from the server that it was - it is being optimistic that it will eventually get the confirmation rather than an error. This allows for a more responsive user experience. + +You can specify an `optimisticUpdate` function to mutate the data in order to reflect the change introduced by the asynchronous update. + +When doing so, you can specify a `rollbackOnError` function to mutate back the data if the asynchronous update fails. If not specified, the data will be automatically rolled back to its previous value (before the optimistic update). + +```tsx +import { Detail, ActionPanel, Action, showToast, Toast } from "@raycast/api"; +import { useCachedPromise } from "@raycast/utils"; + +const Demo = () => { + const { isLoading, data, mutate } = useCachedPromise( + async (url: string) => { + const response = await fetch(url); + const result = await response.text(); + return result; + }, + ["https://api.example"] + ); + + const appendFoo = async () => { + const toast = await showToast({ style: Toast.Style.Animated, title: "Appending Foo" }); + try { + await mutate( + // we are calling an API to do something + fetch("https://api.example/append-foo"), + { + // but we are going to do it on our local data right away, + // without waiting for the call to return + optimisticUpdate(data) { + return data + "foo"; + }, + } + ); + // yay, the API call worked! + toast.style = Toast.Style.Success; + toast.title = "Foo appended"; + } catch (err) { + // oh, the API call didn't work :( + // the data will automatically be rolled back to its previous value + toast.style = Toast.Style.Failure; + toast.title = "Could not append Foo"; + toast.message = err.message; + } + }; + + return ( + + appendFoo()} /> + + } + /> + ); +}; +``` + +## Types + +### AsyncState + +An object corresponding to the execution state of the function. + +```ts +// Initial State +{ + isLoading: true, // or `false` if `options.execute` is `false` + data: undefined, + error: undefined +} + +// Success State +{ + isLoading: false, + data: T, + error: undefined +} + +// Error State +{ + isLoading: false, + data: undefined, + error: Error +} + +// Reloading State +{ + isLoading: true, + data: T | undefined, + error: Error | undefined +} +``` + +### MutatePromise + +A method to wrap an asynchronous update and gives some control about how the `useCachedPromise`'s data should be updated while the update is going through. + +```ts +export type MutatePromise = ( + asyncUpdate?: Promise, + options?: { + optimisticUpdate?: (data: T) => T; + rollbackOnError?: boolean | ((data: T) => T); + shouldRevalidateAfter?: boolean; + } +) => Promise; +``` diff --git a/docs/utils-reference/react-hooks/useCachedState.md b/docs/utils-reference/react-hooks/useCachedState.md new file mode 100644 index 0000000..e83b349 --- /dev/null +++ b/docs/utils-reference/react-hooks/useCachedState.md @@ -0,0 +1,52 @@ +# `useCachedState` + +Hook which returns a stateful value, and a function to update it. It is similar to React's `useState` but the value will be kept between command runs. + +{% hint style="info" %} +The value needs to be JSON serializable. +{% endhint %} + +## Signature + +```ts +function useCachedState( + key: string, + initialState?: T, + config?: { + cacheNamespace?: string; + } +): [T, (newState: T | ((prevState: T) => T)) => void]; +``` + +### Arguments + +- `key` is the unique identifier of the state. This can be used to share the state across components and/or commands (hooks using the same key will share the same state, eg. updating one will update the others). + +With a few options: + +- `initialState` is the initial value of the state if there aren't any in the Cache yet. +- `config.cacheNamespace` is a string that can be used to namespace the key. + +## Example + +```tsx +import { List, ActionPanel, Action } from "@raycast/api"; +import { useCachedState } from "@raycast/utils"; + +export default function Command() { + const [showDetails, setShowDetails] = useCachedState("show-details", false); + + return ( + + setShowDetails((x) => !x)} /> + + } + > + ... + + ); +} +``` diff --git a/docs/utils-reference/react-hooks/useExec.md b/docs/utils-reference/react-hooks/useExec.md new file mode 100644 index 0000000..5e09768 --- /dev/null +++ b/docs/utils-reference/react-hooks/useExec.md @@ -0,0 +1,295 @@ +# `useExec` + +Hook that executes a command and returns the [AsyncState](#asyncstate) corresponding to the execution of the command. The last value will be kept between command runs. + +## Signature + +There are two ways to use the hook. + +The first one should be preferred when executing a single file. The file and its arguments don't have to be escaped. + +```ts +function useExec( + file: string, + arguments: string[], + options?: { + shell?: boolean | string; + stripFinalNewline?: boolean; + cwd?: string; + env?: NodeJS.ProcessEnv; + encoding?: BufferEncoding | "buffer"; + input?: string | Buffer; + timeout?: number; + parseOutput?: ParseExecOutputHandler; + initialData?: U; + keepPreviousData?: boolean; + execute?: boolean; + onError?: (error: Error) => void; + onData?: (data: T) => void; + onWillExecute?: (args: string[]) -> void; + } +): AsyncState & { + revalidate: () => void; + mutate: MutatePromise; +}; +``` + +The second one can be used to execute more complex commands. The file and arguments are specified in a single `command` string. For example, `useExec('echo', ['Raycast'])` is the same as `useExec('echo Raycast')`. + +If the file or an argument contains spaces, they must be escaped with backslashes. This matters especially if `command` is not a constant but a variable, for example with `environment.supportPath` or `process.cwd()`. Except for spaces, no escaping/quoting is needed. + +The `shell` option must be used if the command uses shell-specific features (for example, `&&` or `||`), as opposed to being a simple file followed by its arguments. + +```ts +function useExec( + command: string, + options?: { + shell?: boolean | string; + stripFinalNewline?: boolean; + cwd?: string; + env?: NodeJS.ProcessEnv; + encoding?: BufferEncoding | "buffer"; + input?: string | Buffer; + timeout?: number; + parseOutput?: ParseExecOutputHandler; + initialData?: U; + keepPreviousData?: boolean; + execute?: boolean; + onError?: (error: Error) => void; + onData?: (data: T) => void; + onWillExecute?: (args: string[]) -> void; + } +): AsyncState & { + revalidate: () => void; + mutate: MutatePromise; +}; +``` + +### Arguments + +- `file` is the path to the file to execute. +- `arguments` is an array of strings to pass as arguments to the file. + +or + +- `command` is the string to execute. + +With a few options: + +- `options.shell` is a boolean or a string to tell whether to run the command inside of a shell or not. If `true`, uses `/bin/sh`. A different shell can be specified as a string. The shell should understand the `-c` switch. + + We recommend against using this option since it is: + + - not cross-platform, encouraging shell-specific syntax. + - slower, because of the additional shell interpretation. + - unsafe, potentially allowing command injection. + +- `options.stripFinalNewline` is a boolean to tell the hook to strip the final newline character from the output. By default, it will. +- `options.cwd` is a string to specify the current working directory of the child process. By default, it will be `process.cwd()`. +- `options.env` is a key-value pairs to set as the environment of the child process. It will extend automatically from `process.env`. +- `options.encoding` is a string to specify the character encoding used to decode the `stdout` and `stderr` output. If set to `"buffer"`, then `stdout` and `stderr` will be a `Buffer` instead of a string. +- `options.input` is a string or a Buffer to write to the `stdin` of the file. +- `options.timeout` is a number. If greater than `0`, the parent will send the signal `SIGTERM` if the child runs longer than timeout milliseconds. +- `options.parseOutput` is a function that accepts the output of the child process as an argument and returns the data the hooks will return - see [ParseExecOutputHandler](#parseexecoutputhandler). By default, the hook will return `stdout`. + +Including the [useCachedPromise](./useCachedPromise.md)'s options: + +- `options.keepPreviousData` is a boolean to tell the hook to keep the previous results instead of returning the initial value if there aren't any in the cache for the new arguments. This is particularly useful when used for data for a List to avoid flickering. See [Argument dependent on user input](#argument-dependent-on-user-input) for more information. + +Including the [useCachedState](./useCachedState.md)'s options: + +- `options.initialData` is the initial value of the state if there aren't any in the Cache yet. + +Including the [usePromise](./usePromise.md)'s options: + +- `options.execute` is a boolean to indicate whether to actually execute the function or not. This is useful for cases where one of the function's arguments depends on something that might not be available right away (for example, depends on some user inputs). Because React requires every hook to be defined on the render, this flag enables you to define the hook right away but wait until you have all the arguments ready to execute the function. +- `options.onError` is a function called when an execution fails. By default, it will log the error and show a generic failure toast with an action to retry. +- `options.onData` is a function called when an execution succeeds. +- `options.onWillExecute` is a function called when an execution will start. + +### Return + +Returns an object with the [AsyncState](#asyncstate) corresponding to the execution of the command as well as a couple of methods to manipulate it. + +- `data`, `error`, `isLoading` - see [AsyncState](#asyncstate). +- `revalidate` is a method to manually call the function with the same arguments again. +- `mutate` is a method to wrap an asynchronous update and gives some control over how the `useFetch`'s data should be updated while the update is going through. By default, the data will be revalidated (eg. the function will be called again) after the update is done. See [Mutation and Optimistic Updates](#mutation-and-optimistic-updates) for more information. + +## Example + +```tsx +import { List } from "@raycast/api"; +import { useExec } from "@raycast/utils"; +import { useMemo } from "react"; + +export default function () { + const { isLoading, data } = useExec("brew", ["info", "--json=v2", "--installed"]); + const results = useMemo<{ id: string; name: string }[]>(() => JSON.parse(data || "[]"), [data]); + + return ( + + {results.map((item) => ( + + ))} + + ); +} +``` + +## Argument dependent on user input + +By default, when an argument passed to the hook changes, the function will be executed again and the cache's value for those arguments will be returned immediately. This means that in the case of new arguments that haven't been used yet, the initial data will be returned. + +This behaviour can cause some flickering (initial data -> fetched data -> arguments change -> initial data -> fetched data, etc.). To avoid that, we can set `keepPreviousData` to `true` and the hook will keep the latest fetched data if the cache is empty for the new arguments (initial data -> fetched data -> arguments change -> fetched data). + +```tsx +import { useState } from "react"; +import { Detail, ActionPanel, Action } from "@raycast/api"; +import { useFetch } from "@raycast/utils"; + +const Demo = () => { + const [searchText, setSearchText] = useState(""); + const { isLoading, data } = useExec("brew", ["info", searchText]); + + return ; +}; +``` + +{% hint style="info" %} +When passing a user input to a command, be very careful about using the `shell` option as it could be potentially dangerous. +{% endhint %} + +## Mutation and Optimistic Updates + +In an optimistic update, the UI behaves as though a change was successfully completed before receiving confirmation from the server that it was - it is being optimistic that it will eventually get the confirmation rather than an error. This allows for a more responsive user experience. + +You can specify an `optimisticUpdate` function to mutate the data in order to reflect the change introduced by the asynchronous update. + +When doing so, you can specify a `rollbackOnError` function to mutate back the data if the asynchronous update fails. If not specified, the data will be automatically rolled back to its previous value (before the optimistic update). + +```tsx +import { Detail, ActionPanel, Action, showToast, Toast } from "@raycast/api"; +import { useFetch } from "@raycast/utils"; + +const Demo = () => { + const { isLoading, data, revalidate } = useExec("brew", ["info", "--json=v2", "--installed"]); + const results = useMemo<{}[]>(() => JSON.parse(data || "[]"), [data]); + + const installFoo = async () => { + const toast = await showToast({ style: Toast.Style.Animated, title: "Installing Foo" }); + try { + await mutate( + // we are calling an API to do something + installBrewCask("foo"), + { + // but we are going to do it on our local data right away, + // without waiting for the call to return + optimisticUpdate(data) { + return data?.concat({ name: "foo", id: "foo" }); + }, + } + ); + // yay, the API call worked! + toast.style = Toast.Style.Success; + toast.title = "Foo installed"; + } catch (err) { + // oh, the API call didn't work :( + // the data will automatically be rolled back to its previous value + toast.style = Toast.Style.Failure; + toast.title = "Could not install Foo"; + toast.message = err.message; + } + }; + + return ( + + {(data || []).map((item) => ( + + installFoo()} /> + + } + /> + ))} + + ); +}; +``` + +## Types + +### AsyncState + +An object corresponding to the execution state of the function. + +```ts +// Initial State +{ + isLoading: true, // or `false` if `options.execute` is `false` + data: undefined, + error: undefined +} + +// Success State +{ + isLoading: false, + data: T, + error: undefined +} + +// Error State +{ + isLoading: false, + data: undefined, + error: Error +} + +// Reloading State +{ + isLoading: true, + data: T | undefined, + error: Error | undefined +} +``` + +### MutatePromise + +A method to wrap an asynchronous update and gives some control about how the `useFetch`'s data should be updated while the update is going through. + +```ts +export type MutatePromise = ( + asyncUpdate?: Promise, + options?: { + optimisticUpdate?: (data: T) => T; + rollbackOnError?: boolean | ((data: T) => T); + shouldRevalidateAfter?: boolean; + } +) => Promise; +``` + +### ParseExecOutputHandler + +A function that accepts the output of the child process as an argument and returns the data the hooks will return. + +```ts +export type ParseExecOutputHandler = (args: { + /** The output of the process on stdout. */ + stdout: string | Buffer; // depends on the encoding option + /** The output of the process on stderr. */ + stderr: string | Buffer; // depends on the encoding option + error?: Error | undefined; + /** The numeric exit code of the process that was run. */ + exitCode: number | null; + /** The name of the signal that was used to terminate the process. For example, SIGFPE. */ + signal: NodeJS.Signals | null; + /** Whether the process timed out. */ + timedOut: boolean; + /** The command that was run, for logging purposes. */ + command: string; + /** The options passed to the child process, for logging purposes. */ + options?: ExecOptions | undefined; +}) => T; +``` diff --git a/docs/utils-reference/react-hooks/useFetch.md b/docs/utils-reference/react-hooks/useFetch.md new file mode 100644 index 0000000..feea42d --- /dev/null +++ b/docs/utils-reference/react-hooks/useFetch.md @@ -0,0 +1,212 @@ +# `useFetch` + +Hook which fetches the URL and returns the [AsyncState](#asyncstate) corresponding to the execution of the fetch. The last value will be kept between command runs. + +## Signature + +```ts +function useFetch( + url: string, + options?: RequestInit & { + parseResponse?: (response: Response) => Promise; + initialData?: U; + keepPreviousData?: boolean; + execute?: boolean; + onError?: (error: Error) => void; + onData?: (data: T) => void; + onWillExecute?: (args: [string, RequestInit]) -> void; + } +): AsyncState & { + revalidate: () => void; + mutate: MutatePromise; +}; +``` + +### Arguments + +- `url` is the string representation of the URL to fetch. + +With a few options: + +- `options` extends [`RequestInit`](https://github.com/nodejs/undici/blob/v5.7.0/types/fetch.d.ts#L103-L117) allowing you to specify a body, headers, etc. to apply to the request. +- `options.parseResponse` is a function that accepts the Response as an argument and returns the data the hooks will return. By default, the hook will return `response.json()` if the response has a JSON `Content-Type` header or `response.text()` otherwise. + +Including the [useCachedPromise](./useCachedPromise.md)'s options: + +- `options.keepPreviousData` is a boolean to tell the hook to keep the previous results instead of returning the initial value if there aren't any in the cache for the new arguments. This is particularly useful when used for data for a List to avoid flickering. See [Argument dependent on List search text](#argument-dependent-on-list-search-text) for more information. + +Including the [useCachedState](./useCachedState.md)'s options: + +- `options.initialData` is the initial value of the state if there aren't any in the Cache yet. + +Including the [usePromise](./usePromise.md)'s options: + +- `options.execute` is a boolean to indicate whether to actually execute the function or not. This is useful for cases where one of the function's arguments depends on something that might not be available right away (for example, depends on some user inputs). Because React requires every hook to be defined on the render, this flag enables you to define the hook right away but wait until you have all the arguments ready to execute the function. +- `options.onError` is a function called when an execution fails. By default, it will log the error and show a generic failure toast with an action to retry. +- `options.onData` is a function called when an execution succeeds. +- `options.onWillExecute` is a function called when an execution will start. + +### Return + +Returns an object with the [AsyncState](#asyncstate) corresponding to the execution of the fetch as well as a couple of methods to manipulate it. + +- `data`, `error`, `isLoading` - see [AsyncState](#asyncstate). +- `revalidate` is a method to manually call the function with the same arguments again. +- `mutate` is a method to wrap an asynchronous update and gives some control over how the `useFetch`'s data should be updated while the update is going through. By default, the data will be revalidated (eg. the function will be called again) after the update is done. See [Mutation and Optimistic Updates](#mutation-and-optimistic-updates) for more information. + +## Example + +```tsx +import { Detail, ActionPanel, Action } from "@raycast/api"; +import { useFetch } from "@raycast/utils"; + +const Demo = () => { + const { isLoading, data, revalidate } = useFetch("https://api.example"); + + return ( + + revalidate()} /> + + } + /> + ); +}; +``` + +## Argument dependent on List search text + +By default, when an argument passed to the hook changes, the function will be executed again and the cache's value for those arguments will be returned immediately. This means that in the case of new arguments that haven't been used yet, the initial data will be returned. + +This behaviour can cause some flickering (initial data -> fetched data -> arguments change -> initial data -> fetched data, etc.). To avoid that, we can set `keepPreviousData` to `true` and the hook will keep the latest fetched data if the cache is empty for the new arguments (initial data -> fetched data -> arguments change -> fetched data). + +```tsx +import { useState } from "react"; +import { List, ActionPanel, Action } from "@raycast/api"; +import { useFetch } from "@raycast/utils"; + +const Demo = () => { + const [searchText, setSearchText] = useState(""); + const { isLoading, data } = useFetch(`https://api.example?q=${searchText}`, { + // to make sure the screen isn't flickering when the searchText changes + keepPreviousData: true, + }); + + return ( + + {(data || []).map((item) => ( + + ))} + + ); +}; +``` + +## Mutation and Optimistic Updates + +In an optimistic update, the UI behaves as though a change was successfully completed before receiving confirmation from the server that it was - it is being optimistic that it will eventually get the confirmation rather than an error. This allows for a more responsive user experience. + +You can specify an `optimisticUpdate` function to mutate the data in order to reflect the change introduced by the asynchronous update. + +When doing so, you can specify a `rollbackOnError` function to mutate back the data if the asynchronous update fails. If not specified, the data will be automatically rolled back to its previous value (before the optimistic update). + +```tsx +import { Detail, ActionPanel, Action, showToast, Toast } from "@raycast/api"; +import { useFetch } from "@raycast/utils"; + +const Demo = () => { + const { isLoading, data, mutate } = useFetch("https://api.example"); + + const appendFoo = async () => { + const toast = await showToast({ style: Toast.Style.Animated, title: "Appending Foo" }); + try { + await mutate( + // we are calling an API to do something + fetch("https://api.example/append-foo"), + { + // but we are going to do it on our local data right away, + // without waiting for the call to return + optimisticUpdate(data) { + return data + "foo"; + }, + } + ); + // yay, the API call worked! + toast.style = Toast.Style.Success; + toast.title = "Foo appended"; + } catch (err) { + // oh, the API call didn't work :( + // the data will automatically be rolled back to its previous value + toast.style = Toast.Style.Failure; + toast.title = "Could not append Foo"; + toast.message = err.message; + } + }; + + return ( + + appendFoo()} /> + + } + /> + ); +}; +``` + +## Types + +### AsyncState + +An object corresponding to the execution state of the function. + +```ts +// Initial State +{ + isLoading: true, // or `false` if `options.execute` is `false` + data: undefined, + error: undefined +} + +// Success State +{ + isLoading: false, + data: T, + error: undefined +} + +// Error State +{ + isLoading: false, + data: undefined, + error: Error +} + +// Reloading State +{ + isLoading: true, + data: T | undefined, + error: Error | undefined +} +``` + +### MutatePromise + +A method to wrap an asynchronous update and gives some control about how the `useFetch`'s data should be updated while the update is going through. + +```ts +export type MutatePromise = ( + asyncUpdate?: Promise, + options?: { + optimisticUpdate?: (data: T) => T; + rollbackOnError?: boolean | ((data: T) => T); + shouldRevalidateAfter?: boolean; + } +) => Promise; +``` diff --git a/docs/utils-reference/react-hooks/useForm.md b/docs/utils-reference/react-hooks/useForm.md new file mode 100644 index 0000000..755e371 --- /dev/null +++ b/docs/utils-reference/react-hooks/useForm.md @@ -0,0 +1,130 @@ +# `useForm` + +Hook that provides a high-level interface to work with Forms, and more particularly, with Form validations. It incorporates all the good practices to provide a great User Experience for your Forms. + +## Signature + +```ts +function useForm(props: { + onSubmit: (values: T) => void | boolean | Promise; + initialValues?: Partial; + validation?: { + [id in keyof T]?: ((value: T[id]) => string | undefined | null) | FormValidation; + }; +}): { + handleSubmit: (values: T) => void | boolean | Promise; + itemProps: { + [id in keyof T]: Partial> & { + id: string; + }; + }; + setValidationError: (id: keyof T, error: ValidationError) => void; + setValue: (id: K, value: T[K]) => void; + values: T; + focus: (id: keyof T) => void; + reset: (initialValues?: Partial) => void; +}; +``` + +### Arguments + +- `onSubmit` is a callback that will be called when the form is submitted and all validations pass. + +With a few options: + +- `initialValues` are the initial values to set when the Form is first rendered. +- `validation` are the validation rules for the Form. A validation for a Form item is a function that takes the current value of the item as an argument and must return a string when the validation is failing. We also provide some shorthands for common cases, see [FormValidation](#formvalidation). + +### Return + +Returns an object which contains the necessary methods and props to provide a good User Experience in your Form. + +- `handleSubmit` is a function to pass to the `onSubmit` prop of the `` element. It wraps the initial `onSubmit` argument with some goodies related to the validation. +- `itemProps` are the props that must be passed to the `` elements to handle the validations. + +It also contains some additions for easy manipulation of the Form's data. + +- `values` is the current values of the Form. +- `setValue` is a function that can be used to programmatically set the value of a specific field. +- `setValidationError` is a function that can be used to programmatically set the validation of a specific field. +- `focus` is a function that can be used to programmatically focus a specific field. +- `reset` is a function that can be used to reset the values of the Form. Optionally, you can specify the values to set when the Form is reset. + +## Example + +```tsx +import { Action, ActionPanel, Form, showToast, Toast } from "@raycast/api"; +import { useForm, FormValidation } from "@raycast/utils"; + +interface SignUpFormValues { + firstName: string; + lastName: string; + birthday: Date | null; + password: string; + number: string; + hobbies: string[]; +} + +export default function Main() { + const { handleSubmit, itemProps } = useForm({ + onSubmit(values) { + showToast({ + style: Toast.Style.Success, + title: "Yay!", + message: `${values.firstName} ${values.lastName} account created`, + }); + }, + validation: { + firstName: FormValidation.Required, + lastName: FormValidation.Required, + password: (value) => { + if (value && value.length < 8) { + return "Password must be at least 8 symbols"; + } else if (!value) { + return "The item is required"; + } + }, + number: (value) => { + if (value && value !== "2") { + return "Please select '2'"; + } + }, + }, + }); + return ( +