diff --git a/.github/workflows/deploy_vercel_prod.yml b/.github/workflows/deploy_vercel_prod.yml deleted file mode 100644 index dceb61fbcde..00000000000 --- a/.github/workflows/deploy_vercel_prod.yml +++ /dev/null @@ -1,27 +0,0 @@ -name: Deploy studio app to production on vercel -on: - push: - branches: - - studio - paths: - - 'studio/**' -jobs: - deploy: - runs-on: ubuntu-18.04 - timeout-minutes: 10 - - steps: - - uses: actions/checkout@v2 - # remove ./studio/pages/api folder before deploying to vercel - - uses: JesseTG/rm@v1.0.2 - with: - path: ./studio/pages/api - - uses: amondnet/vercel-action@v19 - with: - vercel-token: ${{ secrets.VERCEL_TOKEN }} # Required - github-comment: false - vercel-args: '--prod -A .vercel/production.json' - vercel-org-id: team_E6KJ1W561hMTjon1QSwOh0WO #Required - vercel-project-id: Qmd7Mw8yFW8SbtvTWFV9uyRzw9P1rJLmgtHjSezywhtYec #Required - working-directory: ./studio #Your Working Directory, Optional - vercel-project-name: app diff --git a/.github/workflows/deploy_vercel_staging.yml b/.github/workflows/deploy_vercel_staging.yml deleted file mode 100644 index d6bb3760187..00000000000 --- a/.github/workflows/deploy_vercel_staging.yml +++ /dev/null @@ -1,27 +0,0 @@ -name: Deploy studio app to staging on vercel -on: - push: - branches: - - master - paths: - - 'studio/**' -jobs: - deploy: - runs-on: ubuntu-18.04 - timeout-minutes: 10 - - steps: - - uses: actions/checkout@v2 - # remove ./studio/pages/api folder before deploying to vercel - - uses: JesseTG/rm@v1.0.2 - with: - path: ./studio/pages/api - - uses: amondnet/vercel-action@v19 - with: - vercel-token: ${{ secrets.VERCEL_TOKEN }} # Required - github-comment: false - vercel-args: '--prod -A .vercel/staging.json' - vercel-org-id: team_E6KJ1W561hMTjon1QSwOh0WO #Required - vercel-project-id: QmcmhbiAtCMFTAHCuGgQscNbke4TzgWULECctNcKmxWCoT #Required - working-directory: ./studio #Your Working Directory, Optional - vercel-project-name: staging-app diff --git a/.github/workflows/integration-tests.yml b/.github/workflows/integration-tests.yml index 7d798d837a8..0c9a3c46ebd 100644 --- a/.github/workflows/integration-tests.yml +++ b/.github/workflows/integration-tests.yml @@ -1,15 +1,9 @@ -# This is a basic workflow to help you get started with Actions name: Tests # Controls when the workflow will run on: - # Triggers the workflow on push or pull request events but only for the main branch - push: - branches: [master] - pull_request: - branches: [master] - - # Allows you to run this workflow manually from the Actions tab + schedule: + - cron: '0 4/6 * * *' workflow_dispatch: # A workflow run is made up of one or more jobs that can run sequentially or in parallel @@ -41,17 +35,23 @@ jobs: - name: Install dependencies run: npm ci - - name: Run infrastructure - run: | - cp ../docker/.env.example ../docker/.env - npm run docker:up + - uses: supabase/setup-cli@v1 + - run: supabase start - name: Run Test - run: npm run test + run: npm run test:local + env: + SUPABASE_DB_PORT: 54322 + SUPABASE_DB_PASS: postgres + SUPABASE_DB_HOST: localhost + SUPABASE_GOTRUE: http://localhost:54321 + SUPABASE_URL: http://localhost:54321 + SUPABASE_KEY_ANON: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZS1kZW1vIiwicm9sZSI6ImFub24ifQ.625_WdcF3KHqz5amU0x2X5WWHP-OEs_4qj0ssLNHzTs + SUPABASE_KEY_ADMIN: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZS1kZW1vIiwicm9sZSI6InNlcnZpY2Vfcm9sZSJ9.vI9obAHOGyVVKa3pD--kJlyxp-Z2zV9UUMAhKpNLAcU - name: Stop infrastructure if: always() - run: npm run docker:down + run: supabase stop - name: Get Allure history uses: actions/checkout@v2 @@ -73,7 +73,7 @@ jobs: keep_reports: 50 - name: Deploy report to Github Pages - if: ${{ !github.event.pull_request.head.repo.fork }} + if: always() uses: peaceiris/actions-gh-pages@v2 env: EXTERNAL_REPOSITORY: supabase/test-reports @@ -82,7 +82,7 @@ jobs: PUBLISH_DIR: allure-history - name: Post the link to the report - if: ${{ !github.event.pull_request.head.repo.fork }} + if: always() uses: Sibz/github-status-action@v1 with: authToken: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/studio-build.yml b/.github/workflows/studio-build.yml index b51253bbf04..570baa1aa61 100644 --- a/.github/workflows/studio-build.yml +++ b/.github/workflows/studio-build.yml @@ -9,7 +9,6 @@ on: - 'studio/**' jobs: build: - runs-on: ubuntu-latest strategy: @@ -18,15 +17,15 @@ jobs: # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ steps: - - uses: actions/checkout@v2 - - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v2 - with: - node-version: ${{ matrix.node-version }} - cache: 'npm' - - name: Install deps - run: npm i - working-directory: ./studio - - name: Run build - run: npm run build - working-directory: ./studio + - uses: actions/checkout@v2 + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v2 + with: + node-version: ${{ matrix.node-version }} + cache: 'npm' + - name: Install deps + run: npm ci + working-directory: ./ + - name: Run build + run: npx turbo run build --filter=studio + working-directory: ./ diff --git a/.github/workflows/studio-tests.yml b/.github/workflows/studio-tests.yml index 5f4c6cf4b04..1a99a50182d 100644 --- a/.github/workflows/studio-tests.yml +++ b/.github/workflows/studio-tests.yml @@ -5,16 +5,15 @@ name: Studio Unit Tests on: push: - branches: [ master ] + branches: [master] paths: - 'studio/**' pull_request: - branches: [ master ] + branches: [master] paths: - 'studio/**' jobs: build: - runs-on: ubuntu-latest strategy: @@ -23,15 +22,15 @@ jobs: # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ steps: - - uses: actions/checkout@v2 - - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v2 - with: - node-version: ${{ matrix.node-version }} - cache: 'npm' - - name: Install deps - run: npm install - working-directory: ./ - - name: Run tests - run: npm test - working-directory: ./studio + - uses: actions/checkout@v2 + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v2 + with: + node-version: ${{ matrix.node-version }} + cache: 'npm' + - name: Install deps + run: npm ci + working-directory: ./ + - name: Run tests + run: npm run test:studio + working-directory: ./ diff --git a/DEVELOPERS.md b/DEVELOPERS.md index a0dd47cb371..c3448678b88 100644 --- a/DEVELOPERS.md +++ b/DEVELOPERS.md @@ -195,6 +195,15 @@ The monorepo has a set of shared components under `/packages`: - `/packages/config`: All shared config - `/packages/spec`: Generates documentation using spec files. - `/packages/tsconfig`: Shared Typescript settings +- `/packages/ui`: Shared UI components (formerly @supabase/ui) + +To use these 'packages', or any of their components from a Next.JS app, you must use `next-transpile-modules` in the `next.config.js` file. This looks like: + +```tsx +// next.config.js +const withTM = require('next-transpile-modules')(['ui', 'common']) +module.exports = withTM({}) +``` ### Installing packages diff --git a/apps/reference/_auth_helpers/intro.md b/apps/reference/_auth_helpers/intro.md deleted file mode 100644 index 51239a87b48..00000000000 --- a/apps/reference/_auth_helpers/intro.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -slug: / -sidebar_label: Auth Helpers ---- - -# Auth Helpers - -A collection of framework specific Auth utilities for working with Supabase. - -## Status - -The Auth Helpers are in `beta`. They are usable in their current state, but it's likely that there will be breaking changes. - -## Additional Links - -- [Source code](https://github.com/supabase/auth-helpers) -- [Known bugs and issues](https://github.com/supabase/auth-helpers/issues) diff --git a/apps/reference/_auth_helpers/next-js.md b/apps/reference/_auth_helpers/next-js.md deleted file mode 100644 index 7ae2a9873cc..00000000000 --- a/apps/reference/_auth_helpers/next-js.md +++ /dev/null @@ -1,315 +0,0 @@ ---- -id: next-js -slug: next-js -sidebar_label: With Next.js ---- - -# Supabase Auth with Next.js - -This submodule provides convenience helpers for implementing user authentication in Next.js applications. - -## Installation - -Using [npm](https://npmjs.org): - -```sh -npm install @supabase/auth-helpers-nextjs - -# Main components and hooks for React based frameworks (optional) -npm install @supabase/auth-helpers-react -``` - -Using [yarn](https://yarnpkg.com/): - -```sh -yarn add @supabase/auth-helpers-nextjs - -# Main components and hooks for React based frameworks (optional) -yarn add @supabase/auth-helpers-react -``` - -This library supports the following tooling versions: - -- Node.js: `^10.13.0 || >=12.0.0` - -- Next.js: `>=10` - -## Getting Started - -### Configuration - -Set up the following env vars. For local development you can set them in a `.env.local` file. See an [example](https://github.com/supabase/auth-helpers/blob/main/examples/nextjs/.env.local.example). - -```bash -# Find these in your Supabase project settings > API -NEXT_PUBLIC_SUPABASE_URL=https://your-project.supabase.co -NEXT_PUBLIC_SUPABASE_ANON_KEY=your-anon-key -``` - -### Basic Setup - -- Create an `auth` directory under the `/pages/api/` directory. - -- Create a `[...supabase].js` file under the newly created `auth` directory. - -The path to your dynamic API route file would be `/pages/api/auth/[...supabase].js`. Populate that file as follows: - -```js -import { handleAuth } from '@supabase/auth-helpers-nextjs' - -export default handleAuth({ logout: { returnTo: '/' } }) -``` - -Executing `handleAuth()` creates the following route handlers under the hood that perform different parts of the authentication flow: - -- `/api/auth/callback`: The `UserProvider` forwards the session details here every time `onAuthStateChange` fires on the client side. This is needed to set up the cookies for your application so that SSR works seamlessly. - -- `/api/auth/user`: You can fetch user profile information in JSON format. - -- `/api/auth/logout`: Your Next.js application logs out the user. You can optionally pass a `returnTo` parameter to return to a custom relative URL after logout, eg `/api/auth/logout?returnTo=/login`. This will overwrite the logout `returnTo` option specified `handleAuth()` - -Wrap your `pages/_app.js` component with the `UserProvider` component: - -```jsx -// pages/_app.js -import React from 'react' -import { UserProvider } from '@supabase/auth-helpers-react' -import { supabaseClient } from '@supabase/auth-helpers-nextjs' - -export default function App({ Component, pageProps }) { - return ( - - - - ) -} -``` - -You can now determine if a user is authenticated by checking that the `user` object returned by the `useUser()` hook is defined. - -## Client-side data fetching with RLS - -For [row level security](https://supabase.com/docs/learn/auth-deep-dive/auth-row-level-security) to work properly when fetching data client-side, you need to make sure to import the `{ supabaseClient }` from `# @supabase/auth-helpers-nextjs` and only run your query once the user is defined client-side in the `useUser()` hook: - -```js -import { Auth } from '@supabase/ui' -import { useUser } from '@supabase/auth-helpers-react' -import { supabaseClient } from '@supabase/auth-helpers-nextjs' -import { useEffect, useState } from 'react' - -const LoginPage = () => { - const { user, error } = useUser() - const [data, setData] = useState() - - useEffect(() => { - async function loadData() { - const { data } = await supabaseClient.from('test').select('*') - setData(data) - } - // Only run query once user is logged in. - if (user) loadData() - }, [user]) - - if (!user) - return ( - <> - {error &&

{error.message}

} - - - ) - - return ( - <> - -

user:

-
{JSON.stringify(user, null, 2)}
-

client-side data fetching with RLS

-
{JSON.stringify(data, null, 2)}
- - ) -} - -export default LoginPage -``` - -### Server-side rendering (SSR) - withPageAuth - -If you wrap your `getServerSideProps` with `withPageAuth` your props object will be augmented with the user object. - -```js -// pages/profile.js -import { withPageAuth } from '@supabase/auth-helpers-nextjs' - -export default function Profile({ user }) { - return
Hello {user.name}
-} - -export const getServerSideProps = withPageAuth({ redirectTo: '/login' }) -``` - -If there is no authenticated user, they will be redirect to your home page, unless you specify the `redirectTo` option. - -You can pass in your own `getServerSideProps` method, the props returned from this will be merged with the -user props. You can also access the user session data by calling `getUser` inside of this method, eg: - -```js -// pages/protected-page.js -import { withPageAuth, getUser } from '@supabase/auth-helpers-nextjs' - -export default function ProtectedPage({ user, customProp }) { - return
Protected content
-} - -export const getServerSideProps = withPageAuth({ - redirectTo: '/foo', - async getServerSideProps(ctx) { - // Access the user object - const { user, accessToken } = await getUser(ctx) - return { props: { email: user?.email } } - }, -}) -``` - -### Server-side data fetching with RLS - -For [row level security](https://supabase.com/docs/learn/auth-deep-dive/auth-row-level-security) to work in a server environment, you need to inject the request context into the supabase client: - -```js -import { - User, - withPageAuth, - supabaseServerClient, -} from '@supabase/auth-helpers-nextjs' - -export default function ProtectedPage({ - user, - data, -}: { - user: User, - data: any, -}) { - return ( - <> -
Protected content for {user.email}
-
{JSON.stringify(data, null, 2)}
-
{JSON.stringify(user, null, 2)}
- - ) -} - -export const getServerSideProps = withPageAuth({ - redirectTo: '/', - async getServerSideProps(ctx) { - // Run queries with RLS on the server - const { data } = await supabaseServerClient(ctx).from('test').select('*') - return { props: { data } } - }, -}) -``` - -### Server-side data fetching to OAuth APIs using `provider_token` - -When using third-party auth providers, sessions are initiated with an additional `provider_token` field which is persisted as an HTTPOnly cookie upon logging in to enabled usage on the server side. The `provider_token` can be used to make API requests to the OAuth provider's API endpoints on behalf of the logged-in user. In the following example, we fetch the user's full profile from the third-party API during SSR using their id and auth token: - -```js -import { User, withPageAuth, getUser } from '@supabase/auth-helpers-nextjs' - -interface Profile { - /* ... */ -} - -export default function ProtectedPage({ - user, - data, -}: { - user: User, - profile: Profile, -}) { - return
Protected content
-} - -export const getServerSideProps = withPageAuth({ - redirectTo: '/', - async getServerSideProps(ctx) { - // Retrieve provider_token from cookies - const provider_token = ctx.req.cookies['sb-provider-token'] - // Get logged in user's third-party id from metadata - const { user } = await getUser(ctx) - const userId = user?.user_metadata.provider_id - const profile: Profile = await ( - await fetch(`https://api.example.com/users/${userId}`, { - method: 'GET', - headers: { - Authorization: `Bearer ${provider_token}`, - }, - }) - ).json() - return { props: { profile } } - }, -}) -``` - -## Protecting API routes - -Wrap an API Route to check that the user has a valid session. If they're not logged in the handler will return a -401 Unauthorized. - -```js -// pages/api/protected-route.js -import { - withApiAuth, - supabaseServerClient, -} from '@supabase/auth-helpers-nextjs' - -export default withApiAuth(async function ProtectedRoute(req, res) { - // Run queries with RLS on the server - const { data } = await supabaseServerClient({ req, res }) - .from('test') - .select('*') - res.json(data) -}) -``` - -If you visit `/api/protected-route` without a valid session cookie, you will get a 401 response. - -## Protecting routes with [Nextjs Middleware](https://nextjs.org/docs/middleware) - -As an alternative to protecting individual pages using `getServerSideProps` with `withPageAuth`, `withMiddlewareAuth` can be used from inside a `_middleware` file to protect an entire directory. In the following example, all requests to `/protected/*` will check whether a user is signed in, if successful the request will be forwarded to the destination route, otherwise the user will be redirected to `/login` (defaults to: `/`) with a 307 Temporary Redirect response status: - -```ts -// pages/protected/_middleware.ts -import { withMiddlewareAuth } from '@supabase/auth-helpers-nextjs/middleware' - -export const middleware = withMiddlewareAuth({ redirectTo: '/login' }) -``` - -It is also possible to add finer granularity based on the user logged in. I.e. you can specify a promise to determine if a specific user has permission or not. - -```ts -// pages/protected/_middleware.ts -import { withMiddlewareAuth } from '@supabase/auth-helpers-nextjs/dist/middleware' - -export const middleware = withMiddlewareAuth({ - redirectTo: '/login', - authGuard: { - isPermitted: async (user) => user.email?.endsWith('@example.com') ?? false, - redirectTo: '/insufficient-permissions', - }, -}) -``` - -## Migrating from @supabase/supabase-auth-helpers to @supabase/auth-helpers - -This is a step by step guide on migrating away from the `@supabase/supabase-auth-helpers` to the newly released `@supabase/auth-helpers`. - -1. Install `@supabase/supabase-js`, `@supabase/auth-helpers-nextjs` and `@supabase/auth-helpers-react` libraries from npm. -2. Replace all imports of `@supabase/supabase-auth-helpers/nextjs` in your project with `@supabase/auth-helpers-nextjs`. -3. Replace all imports of `@supabase/supabase-auth-helpers/react` in your project with `@supabase/auth-helpers-react`. -4. Replace all instances of `withAuthRequired` in any of your NextJS pages with `withPageAuth`. -5. Replace all instances of `withAuthRequired` in any of your NextJS API endpoints with `withApiAuth`. -6. Uninstall `@supabase/supabase-auth-helpers`. diff --git a/apps/reference/_auth_helpers/svelte-kit.md b/apps/reference/_auth_helpers/svelte-kit.md deleted file mode 100644 index 46980643cb9..00000000000 --- a/apps/reference/_auth_helpers/svelte-kit.md +++ /dev/null @@ -1,303 +0,0 @@ ---- -id: sveltekit -slug: sveltekit -sidebar_label: With SvelteKit ---- - -# Supabase Auth with SvelteKit - -This submodule provides convenience helpers for implementing user authentication in [SvelteKit](https://kit.svelte.dev/) applications. - -## Installation - -Using [npm](https://npmjs.org): - -```sh -npm install @supabase/auth-helpers-sveltekit - -# Main component for Svelte based frameworks (optional but recommended) -npm install @supabase/auth-helpers-svelte -``` - -Using [yarn](https://yarnpkg.com/): - -```sh -yarn add @supabase/auth-helpers-sveltekit - -# Main component for Svelte based frameworks (optional but recommended) -yarn add @supabase/auth-helpers-svelte -``` - -This library supports the following tooling versions: - -- Node.js: `^16.15.0` - -## Getting Started - -### Configuration - -Set up the fillowing env vars. For local development you can set them in a `.env` file. See an [example](https://github.com/supabase/auth-helpers/blob/main/examples/sveltekit/.env.example). - -```bash -# Find these in your Supabase project settings > API -VITE_SUPABASE_URL=https://your-project.supabase.co -VITE_SUPABASE_ANON_KEY=your-anon-key -``` - -### SupabaseClient and SupaAuthHelper component setup - -We will start off by creating a `db.ts` file inside of our `src/lib` directory. Now lets instantiate our `supabaseClient` by using our `createSupabaseClient` function from the `@supabase/auth-helpers-sveltekit` library. - -```ts -// src/lib/db.ts -import { createSupabaseClient } from '@supabase/auth-helpers-sveltekit' - -const { supabaseClient } = createSupabaseClient( - import.meta.env.VITE_SUPABASE_URL as string, - import.meta.env.VITE_SUPABASE_ANON_KEY as string -) - -export { supabaseClient } -``` - -Edit your `__layout.svelte` file and add import the `SupaAuthHelper` component, the `supabaseClient` we just instantiated and the `session` store. - -```html -// src/routes/__layout.svelte - - - - - -``` - -### Hooks setup - -Our `hooks.ts` file is where the heavy lifting of this library happens, we need to import our function to handle the sign in, signing out and cookie creation phase. we can import all the hooks using `handleAuth` function and destructure its returned data. - -```ts -// src/hooks.ts -import { handleAuth } from '@supabase/auth-helpers-sveltekit' -import type { GetSession, Handle } from '@sveltejs/kit' -import { sequence } from '@sveltejs/kit/hooks' - -export const handle: Handle = sequence(...handleAuth()) - -export const getSession: GetSession = async (event) => { - const { user, accessToken, error } = event.locals - return { - user, - accessToken, - error, - } -} -``` - -These will create the handlers under the hood that perform different parts of the authentication flow: - -- `/api/auth/callback`: The `UserHelper` forwards the session details here every time `onAuthStateChange` fires on the client side. This is needed to set up the cookies for your application so that SSR works seamlessly. -- `/api/auth/user`: You can fetch user profile information in JSON format. -- `/api/auth/logout`: You can logout the user. - -### Typings - -In order to get the most out of TypeScript and its intellisense, you should import our types into the `app.d.ts` type definition file that comes with your SvelteKit project. - -```ts -// src/app.d.ts -/// -// See https://kit.svelte.dev/docs/types#app -// for information about these interfaces -declare namespace App { - interface UserSession { - user: import('@supabase/supabase-js').User - accessToken?: string - } - interface Locals extends UserSession { - error: import('@supabase/supabase-js').ApiError - } - - interface Session extends UserSession {} // interface Platform {} // interface Stuff {} -} -``` - -### Signing out - -This library has provided a dedicated endpoint for you to use to sign a user out. This endpoint will sign the user out of the Gotrue server, clear the cookies that were set when the user logged in and redirect the user to a configurable path. - -The logout handler endpoint is `/api/auth/logout`, this will take a `GET` request which means it can be used as the href for a normal `a` tag in your html. - -```html -Sign out -``` - -### Logout handler configuration - -In your `src/hooks.ts` file the logout handler is already setup and you can configure the redirect path from here. - -> By default the redirect path after logging out will be `/`. - -```ts -export const handle = sequence( - ...handleAuth({ - logout: { returnTo: '/auth/signin' }, - }) -) -``` - -### Basic Setup - -You can now determine if a user is authenticated on the client-side by checking that the `user` object returned by the `$session` store is defined. - -```html -// example - - -{#if !$session.user} -

I am not logged in

-{:else} -

Welcome {$session.user.email}

-

I am logged in!

-{/if} -``` - -## Client-side data fetching with RLS - -For [row level security](https://supabase.com/docs/learn/auth-deep-dive/auth-row-level-security) to work properly when fetching data client-side, you need to make sure to import the `{ supabaseClient }` from `@supabase/auth-helpers-sveltekit` and only run your query once the user is defined client-side in the `$session`: - -```html - - -{#if !$session.user} - {#if $error} -

{$error.message}

- {/if} -

{$isLoading ? `Loading...` : `Loaded!`}

- -{:else} - Sign out -

user:

-
{JSON.stringify($session.user, null, 2)}
-

client-side data fetching with RLS

-
{JSON.stringify(loadedData, null, 2)}
-{/if} -``` - -### Server-side data fetching with RLS - -For [row level security](https://supabase.com/docs/learn/auth-deep-dive/auth-row-level-security) to work in a server environment, you need to inject the request context into the supabase client: - -```html - - - -
Protected content for {user.email}
-
{JSON.stringify(data, null, 2)}
-
{JSON.stringify(user, null, 2)}
-``` - -```ts -// src/routes/profile.ts -import { - supabaseServerClient, - withApiAuth, -} from '@supabase/auth-helpers-sveltekit' -import type { RequestHandler } from './__types/profile' - -interface TestTable { - id: string - created_at: string -} - -interface GetOutput { - user: User - data: TestTable[] -} - -export const GET: RequestHandler = async ({ locals }) => - withApiAuth( - { - redirectTo: '/', - user: locals.user, - }, - async () => { - const { data } = await supabaseServerClient(session.accessToken) - .from('test') - .select('*') - - return { - body: { - user: locals.user, - data, - }, - } - } - ) -``` - -## Protecting API routes - -Wrap an API Route to check that the user has a valid session. If they're not logged in the handler will return a -303 and redirect header. - -```ts -// src/routes/api/protected-route.ts -import { - supabaseServerClient, - withApiAuth, -} from '@supabase/auth-helpers-sveltekit' -import type { RequestHandler } from './__types/protected-route' - -interface TestTable { - id: string - created_at: string -} - -interface GetOutput { - data: TestTable[] -} - -export const GET: RequestHandler = async ({ locals, request }) => - withApiAuth({ user: locals.user }, async () => { - // Run queries with RLS on the server - const { data } = await supabaseServerClient(request) - .from('test') - .select('*') - - return { - status: 200, - body: { data }, - } - }) -``` - -If you visit `/api/protected-route` without a valid session cookie, you will get a 303 response. diff --git a/apps/reference/_cli/intro.mdx b/apps/reference/_cli/intro.mdx index 1615aa7ae28..8ac2186ca6e 100644 --- a/apps/reference/_cli/intro.mdx +++ b/apps/reference/_cli/intro.mdx @@ -16,6 +16,9 @@ The CLI is still under development, but it contains all the functionality for wo - CI/CD for releasing to production: [`supabase db push`](https://supabase.com/docs/reference/cli/usage#supabase-db-push) - Manage your Supabase projects: [`supabase projects`](https://supabase.com/docs/reference/cli/usage#supabase-projects) - Generate types directly from your database schema: [`supabase gen types`](https://supabase.com/docs/reference/cli/usage#supabase-gen) + - A [community-supported GitHub Action](https://github.com/lyqht/generate-supabase-db-types-github-action) to generate TypeScript types +- Shell autocomplete: [`supabase completion`](https://supabase.com/docs/reference/cli/usage#supabase-completion) + - A [community-supported Fig autocomplete spec](https://fig.io/manual/supabase) for macOS terminal ## Additional Links diff --git a/apps/reference/_gotrue/usage.mdx b/apps/reference/_gotrue/usage.mdx new file mode 100644 index 00000000000..64eed5538f0 --- /dev/null +++ b/apps/reference/_gotrue/usage.mdx @@ -0,0 +1,18 @@ +--- +id: usage +slug: /usage +title: Usage +toc_max_heading_level: 3 +--- + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + + + + +Documentation of the gotrue API. + + + + diff --git a/apps/reference/_supabase_js/installing.mdx b/apps/reference/_supabase_js/installing.mdx index 960bac4e30f..96b254beca2 100644 --- a/apps/reference/_supabase_js/installing.mdx +++ b/apps/reference/_supabase_js/installing.mdx @@ -31,7 +31,7 @@ Find the source code on [GitHub](https://github.com/supabase/supabase-js). Or via CDN ```js - + //or - + ``` diff --git a/apps/reference/_supabase_js/intro.md b/apps/reference/_supabase_js/intro.md index 3d1394ddd95..bec6b4f975e 100644 --- a/apps/reference/_supabase_js/intro.md +++ b/apps/reference/_supabase_js/intro.md @@ -7,14 +7,6 @@ hide_table_of_contents: true # Supabase JavaScript Library -:::note - -You're viewing the Supabase docs for the next version of our library which is not yet released. - -Refer to the `v1` docs for a stable release. - -::: - This reference documents every object and method available in Supabase's isomorphic JavaScript library, `supabase-js`. You can use the `supabase-js` library to: @@ -28,6 +20,6 @@ You can use the `supabase-js` library to: ## Additional Links - Source Code: [github.com/supabase/supabase-js](https://github.com/supabase/supabase-js) -- TypeDoc: [supabase.github.io/supabase-js](https://supabase.github.io/supabase-js) +- TypeDoc: [supabase.github.io/supabase-js](https://supabase.github.io/supabase-js/v2/) - NPM: [npmjs.com/package/@supabase/supabase-js](https://www.npmjs.com/package/@supabase/supabase-js) - [Known bugs and issues](https://github.com/supabase/supabase-js/issues) diff --git a/apps/reference/_supabase_js/release-notes.md b/apps/reference/_supabase_js/release-notes.md index 9a242632754..57af05f0980 100644 --- a/apps/reference/_supabase_js/release-notes.md +++ b/apps/reference/_supabase_js/release-notes.md @@ -6,9 +6,9 @@ id: release-notes Supabase.js v2 release notes. -## 2.0.0 Release Candidate +## 2.0.0 -Install the latest with `npm install @supabase/supabase-js@rc`. +Install the latest with `npm install @supabase/supabase-js`. ### Explicit constructor options diff --git a/apps/reference/_supabase_js/working-with-types.md b/apps/reference/_supabase_js/working-with-types.md index 90314b8fa92..519650ed995 100644 --- a/apps/reference/_supabase_js/working-with-types.md +++ b/apps/reference/_supabase_js/working-with-types.md @@ -76,9 +76,9 @@ async function getMovies() { return await supabase.from('movies').select('id, title, actors(*)') } -type actors = Database['public']['Tables']['actors']['Row'] +type Actors = Database['public']['Tables']['actors']['Row'] type MoviesResponse = Awaited> type MoviesResponseSuccess = MoviesResponse['data'] & { - actors: actors[] + actors: Actors[] } ``` diff --git a/apps/reference/_supabase_js_versioned_docs/version-v1/generating-types.mdx b/apps/reference/_supabase_js_versioned_docs/version-v1/generating-types.mdx index a5089800e99..033cfdb9165 100644 --- a/apps/reference/_supabase_js_versioned_docs/version-v1/generating-types.mdx +++ b/apps/reference/_supabase_js_versioned_docs/version-v1/generating-types.mdx @@ -1,12 +1,12 @@ --- id: generating-types -title: "Generating Types" +title: 'Generating Types' slug: generating-types -custom_edit_url: https://github.com/supabase/supabase/edit/master/spec/supabase_js_v1_legacy.yml +custom_edit_url: https://github.com/supabase/supabase/edit/master/spec/supabase_js_v1.yml --- -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; +import Tabs from '@theme/Tabs' +import TabItem from '@theme/TabItem' Supabase will soon release native type generators that dump your database types for various languages. For now, we support TypeScript [through third-party tools](/docs/guides/api/generating-types). @@ -19,12 +19,12 @@ If you don't provide a type for the row you need to explicitly pass `from(' ```ts type Message = { - id: number; - inserted_at: string; - message: string; - user_id: string; - channel_id: number; - author: { username: string }; + id: number + inserted_at: string + message: string + user_id: string + channel_id: number + author: { username: string } } const response = await supabase @@ -39,4 +39,4 @@ const response = await supabase .select('*, author:user_id(username)') .match({ channel_id: 2 }) response.data // Response data will be of type Array. -``` \ No newline at end of file +``` diff --git a/apps/reference/_supabase_js_versioned_docs/version-v1/index.mdx b/apps/reference/_supabase_js_versioned_docs/version-v1/index.mdx index d4f3a229100..8f37f5853e8 100644 --- a/apps/reference/_supabase_js_versioned_docs/version-v1/index.mdx +++ b/apps/reference/_supabase_js_versioned_docs/version-v1/index.mdx @@ -1,12 +1,11 @@ --- id: index -title: "Supabase Client" +title: 'Supabase Client' slug: supabase-client -custom_edit_url: ../../spec/supabase_js_v1_legacy.yml +custom_edit_url: ../../spec/supabase_js_v1.yml --- -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; +import Tabs from '@theme/Tabs' +import TabItem from '@theme/TabItem' - -Supabase JavaScript. \ No newline at end of file +Supabase JavaScript. diff --git a/apps/reference/_supabase_js_versioned_docs/version-v1/initializing.mdx b/apps/reference/_supabase_js_versioned_docs/version-v1/initializing.mdx index 5b95cefa7dc..711f03f2aed 100644 --- a/apps/reference/_supabase_js_versioned_docs/version-v1/initializing.mdx +++ b/apps/reference/_supabase_js_versioned_docs/version-v1/initializing.mdx @@ -1,24 +1,20 @@ --- id: initializing -title: "Initializing" +title: 'Initializing' slug: initializing -custom_edit_url: https://github.com/supabase/supabase/edit/master/spec/supabase_js_v1_legacy.yml +custom_edit_url: https://github.com/supabase/supabase/edit/master/spec/supabase_js_v1.yml --- -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; +import Tabs from '@theme/Tabs' +import TabItem from '@theme/TabItem' You can initialize a new Supabase client using the `createClient()` method. The Supabase client is your entrypoint to the rest of the Supabase functionality and is the easiest way to interact with everything we offer within the Supabase ecosystem. - - - ## Parameters -
  • @@ -41,7 +37,6 @@ The unique Supabase URL which is supplied when you create a new project in your
  • -
  • @@ -62,7 +57,6 @@ The unique Supabase Key which is supplied when you create a new project in your

  • -
  • @@ -77,7 +71,7 @@ The unique Supabase Key which is supplied when you create a new project in your

    -No description provided. +No description provided.
    @@ -85,36 +79,22 @@ No description provided.
- - - - - - - - - - - - - ## Examples ### createClient() - - ```js import { createClient } from '@supabase/supabase-js' // Create a single supabase client for interacting with your database -const supabase = createClient('https://xyzcompany.supabase.co', 'public-anon-key') +const supabase = createClient( + 'https://xyzcompany.supabase.co', + 'public-anon-key' +) ``` ### With additional parameters - - ```js import { createClient } from '@supabase/supabase-js' @@ -123,22 +103,28 @@ const options = { headers: { 'x-my-custom-header': 'my-app-name' }, autoRefreshToken: true, persistSession: true, - detectSessionInUrl: true + detectSessionInUrl: true, } -const supabase = createClient("https://xyzcompany.supabase.co", "public-anon-key", options) +const supabase = createClient( + 'https://xyzcompany.supabase.co', + 'public-anon-key', + options +) ``` ### API schemas - - ```js import { createClient } from '@supabase/supabase-js' // Provide a custom schema. Defaults to "public". -const supabase = createClient('https://xyzcompany.supabase.co', 'public-anon-key', { - schema: 'other_schema' -}) +const supabase = createClient( + 'https://xyzcompany.supabase.co', + 'public-anon-key', + { + schema: 'other_schema', + } +) ``` By default the API server points to the `public` schema. You can enable other database schemas within the Dashboard. @@ -148,16 +134,18 @@ Note: each client connection can only access a single schema, so the code above ### Custom `fetch` implementation - - ```js import { createClient } from '@supabase/supabase-js' -const supabase = createClient('https://xyzcompany.supabase.co', 'public-anon-key', { - fetch: fetch.bind(globalThis) -}) +const supabase = createClient( + 'https://xyzcompany.supabase.co', + 'public-anon-key', + { + fetch: fetch.bind(globalThis), + } +) ``` `supabase-js` uses the [`cross-fetch`](https://www.npmjs.com/package/cross-fetch) library to make HTTP requests, but an alternative `fetch` implementation can be provided as an option. -This is most useful in environments where `cross-fetch` is not compatible (for instance Cloudflare Workers). \ No newline at end of file +This is most useful in environments where `cross-fetch` is not compatible (for instance Cloudflare Workers). diff --git a/apps/reference/_supabase_js_versioned_docs/version-v1/installing.mdx b/apps/reference/_supabase_js_versioned_docs/version-v1/installing.mdx index 37dca1ccac5..4441c7253d7 100644 --- a/apps/reference/_supabase_js_versioned_docs/version-v1/installing.mdx +++ b/apps/reference/_supabase_js_versioned_docs/version-v1/installing.mdx @@ -1,12 +1,12 @@ --- id: installing -title: "Installing" +title: 'Installing' slug: installing -custom_edit_url: https://github.com/supabase/supabase/edit/master/spec/supabase_js_v1_legacy.yml +custom_edit_url: https://github.com/supabase/supabase/edit/master/spec/supabase_js_v1.yml --- -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; +import Tabs from '@theme/Tabs' +import TabItem from '@theme/TabItem' All JavaScript libraries are built directly by the Supabase team. @@ -15,11 +15,13 @@ Other languages are built by the community and supported by Supabase. ## JavaScript Via NPM + ```bash npm install @supabase/supabase-js ``` Via Yarn + ```bash yarn add @supabase/supabase-js ``` @@ -27,8 +29,9 @@ yarn add @supabase/supabase-js Find the source code on [GitHub](https://github.com/supabase/supabase-js). Or via CDN + ```js - + //or - -``` \ No newline at end of file + +``` diff --git a/apps/reference/_supabase_js_versioned_docs/version-v1/intro.md b/apps/reference/_supabase_js_versioned_docs/version-v1/intro.md index c076ac88b67..97230e84aea 100644 --- a/apps/reference/_supabase_js_versioned_docs/version-v1/intro.md +++ b/apps/reference/_supabase_js_versioned_docs/version-v1/intro.md @@ -5,6 +5,10 @@ slug: / sidebar_label: Supabase JavaScript Library --- +:::caution +You're viewing the docs for an older version of the `supabase-js` library. +::: + This reference documents every object and method available in Supabase's isomorphic JavaScript library, `supabase-js`. You can use the `supabase-js` library to: diff --git a/apps/reference/docs/about.mdx b/apps/reference/docs/about.mdx index 07e696f4a9e..f254130c552 100755 --- a/apps/reference/docs/about.mdx +++ b/apps/reference/docs/about.mdx @@ -79,7 +79,7 @@ You can use it completely, or just the features you need. description={'User management with Row Level Security.'} style={{ height: '100%' }} /> - + {/* Auto-generated APIs */}
@@ -150,7 +150,7 @@ Supabase is just Postgres, which makes it compatible with a large number of tool
{frameworks.map((x) => ( -
+
) : ( , - authorization: `Bearer: ${ + authorization: `Bearer ${ } // Create GraphQL client diff --git a/apps/reference/docs/guides/auth.mdx b/apps/reference/docs/guides/auth.mdx index 1505754d7ef..f292dccfa2b 100644 --- a/apps/reference/docs/guides/auth.mdx +++ b/apps/reference/docs/guides/auth.mdx @@ -177,7 +177,14 @@ Supabase provides a special function in Postgres, `auth.uid()`, which extracts t ## User Management -Supabase makes it simple to manage your users. +Supabase provides multiple endpoints to authenticate and manage your users: +- [Sign up](/docs/reference/javascript/auth-signup) +- [Sign in with password](/docs/reference/javascript/auth-signinwithpassword) +- [Sign in with passwordless / one-time password (OTP)](/docs/reference/javascript/auth-signinwithotp) +- [Sign in with OAuth](/docs/reference/javascript/auth-signinwithoauth) +- [Sign out](/docs/reference/javascript/auth-signout) + +When users sign up, Supabase assigns them a unique ID. You can reference this ID anywhere in your database. For example, you might create a `profiles` table referencing `id` in the `auth.users` table using a `user_id` field. - -When users sign up, Supabase assigns them a unique ID. You can reference this ID anywhere in your database. For example, you might create a `profiles` table referencing `id` in the `auth.users` table using a `user_id` field. - -Supabase provides the routes to [sign up](/docs/reference/javascript/auth-signup), [log in](/docs/reference/javascript/auth-signin), -[log out](/docs/reference/javascript/auth-signout), and manage users in your apps and websites. - -## Next Steps - -- Sign in: [app.supabase.com](https://app.supabase.com) diff --git a/apps/reference/docs/guides/auth/auth-apple.mdx b/apps/reference/docs/guides/auth/auth-apple.mdx index 653ebcd527b..524212403b3 100644 --- a/apps/reference/docs/guides/auth/auth-apple.mdx +++ b/apps/reference/docs/guides/auth/auth-apple.mdx @@ -20,16 +20,14 @@ Apple OAuth consists of six broad steps: - Add your `client id` and `client secret` keys to your [Supabase Project](https://app.supabase.com). - Add the login code to your [Supabase JS Client App](https://github.com/supabase/supabase-js). -## Steps - -### Access your Apple Developer account +## Access your Apple Developer account - Go to [developer.apple.com](https://developer.apple.com). - Click on `Account` at the top right to log in. ![Apple Developer Portal.](/img/guides/auth-apple/apple-developer-portal.png) -### Obtain an App ID +## Obtain an App ID - Go to `Certificates, Identifiers & Profiles`. - Click on `Identifiers` at the left. @@ -43,7 +41,7 @@ Apple OAuth consists of six broad steps: - Click `Continue` at the top right. - Click `Register` at the top right. -### Obtain a Services ID +## Obtain a Services ID This will serve as the `client_id` when you make API calls to authenticate the user. @@ -58,7 +56,7 @@ This will serve as the `client_id` when you make API calls to authenticate the u - Click `Continue` at the top right. - Click `Register` at the top right. -### Find your callback URL +## Find your callback URL The next step requires a callback URL, which looks like this: @@ -79,7 +77,7 @@ The next step requires a callback URL, which looks like this: /> -### Configure your Services ID +## Configure your Services ID - Under `Identifiers`, click on your newly-created Services ID. - Check the box next to `Sign In With Apple` to enable it. @@ -91,7 +89,7 @@ The next step requires a callback URL, which looks like this: - Click `Continue` at the top right. - Click `Save` at the top right. -### Download your secret key +## Download your secret key Now you'll need to download a `secret key` file from Apple that will be used to generate your `client_secret`. @@ -109,7 +107,7 @@ Now you'll need to download a `secret key` file from Apple that will be used to - Save the downloaded file -- this contains your "secret key" that will be used to generate your `client_secret`. - Click `Done` at the top right. -### Generate a `client_secret` +## Generate a `client_secret` The `secret key` you downloaded is used to create the `client_secret` string you'll need to authenticate your users. @@ -173,7 +171,7 @@ puts token 2. From the command line, run: `ruby secret_gen.rb > client_secret.txt`. 3. Your `client_secret` is now stored in this `client_secret.txt` file. -### Add your OAuth credentials to Supabase +## Add your OAuth credentials to Supabase - Go to your [Supabase Dashboard](https://app.supabase.com). - In the left sidebar, click the `Authentication` icon (near the top). @@ -183,27 +181,19 @@ puts token - Enter your `client_id` and `client_secret` saved in the previous steps. - Click `Save`. -### Add login code to your client app +## Add login code to your client app -The JavaScript client code is documented in the [Supabase OAuth Reference](/docs/reference/javascript/auth-signin#sign-in-using-third-party-providers). - -```js -const { user, session, error } = await supabase.auth.signIn({ - provider: 'apple', -}) -``` - -Add a function which you can call from a button, link, or UI element. +When your user signs in, call [signInWithOAuth()](/docs/reference/javascript/auth-signinwithoauth) with `apple` as the `provider`: ```js async function signInWithApple() { - const { user, session, error } = await supabase.auth.signIn({ + const { data, error } = await supabase.auth.signInWithOAuth({ provider: 'apple', }) } ``` -To log out: +When your user signs out, call [signOut()](/docs/reference/javascript/auth-signout) to remove them from the browser session and any objects from localStorage: ```js async function signout() { diff --git a/apps/reference/docs/guides/auth/auth-azure.mdx b/apps/reference/docs/guides/auth/auth-azure.mdx index 0f7984fdaa5..93d1a6c11c6 100644 --- a/apps/reference/docs/guides/auth/auth-azure.mdx +++ b/apps/reference/docs/guides/auth/auth-azure.mdx @@ -18,14 +18,12 @@ Azure OAuth consists of four broad steps: - Create a `Secret ID` with “Sign In with Azure” capabilities. The value of the secret will be used as the `client secret`. - Add the callback url of your application to the allowlist. -## Steps - -### Access your Azure Developer account +## Access your Azure Developer account - Go to [portal.azure.com](https://portal.azure.com/#home). - Login and select "Azure Active Directory" under the list of Azure Services. -### Register an application +## Register an application - Under Azure Active Directory, select "App registrations" in the side panel. - Select "New registration". @@ -36,7 +34,7 @@ Azure OAuth consists of four broad steps: ![Register an application.](/img/guides/auth-azure/azure-register-app.png) -### Obtain a Client ID +## Obtain a Client ID This will serve as the `client_id` when you make API calls to authenticate the user. @@ -44,7 +42,7 @@ This will serve as the `client_id` when you make API calls to authenticate the u ![Obtain the client id](/img/guides/auth-azure/azure-client-id.png) -### Obtain a Secret ID +## Obtain a Secret ID This will serve as the `client_secret` when you make API calls to authenticate the user. @@ -65,21 +63,13 @@ This will allow your users to use your custom Azure login page when logging in. ![Obtain the tenant url](/img/guides/auth-azure/azure-tenant-url.png) -### Add login code to your client app +## Add login code to your client app -The JavaScript client code is documented in the [Supabase OAuth Reference](/docs/reference/javascript/auth-signin#sign-in-using-third-party-providers). - -```js -const { user, session, error } = await supabase.auth.signIn({ - provider: 'azure', -}) -``` - -Add a function which you can call from a button, link, or UI element. +When your user signs in, call [signInWithOAuth()](/docs/reference/javascript/auth-signinwithoauth) with `azure` as the `provider`: ```js async function signInWithAzure() { - const { user, session, error } = await supabase.auth.signIn( + const { data, error } = await supabase.auth.signInWithOAuth( { provider: 'azure', }, @@ -90,7 +80,7 @@ async function signInWithAzure() { } ``` -To log out: +When your user signs out, call [signOut()](/docs/reference/javascript/auth-signout) to remove them from the browser session and any objects from localStorage: ```js async function signout() { @@ -100,5 +90,5 @@ async function signout() { ## Resources -- [Azure Developer Account](https://portal.azure.com). -- [GitHub Discussion](https://github.com/supabase/gotrue/pull/54#issuecomment-757043573). +- [Azure Developer Account](https://portal.azure.com) +- [GitHub Discussion](https://github.com/supabase/gotrue/pull/54#issuecomment-757043573) diff --git a/apps/reference/docs/guides/auth/auth-bitbucket.mdx b/apps/reference/docs/guides/auth/auth-bitbucket.mdx index 6b1f4e96a9a..d7e279cd3c3 100644 --- a/apps/reference/docs/guides/auth/auth-bitbucket.mdx +++ b/apps/reference/docs/guides/auth/auth-bitbucket.mdx @@ -17,16 +17,14 @@ Setting up Bitbucket logins for your application consists of 3 parts: - Add your Bitbucket OAuth Consumer keys to your [Supabase Project](https://app.supabase.com) - Add the login code to your [Supabase JS Client App](https://github.com/supabase/supabase-js) -## Steps - -### Access your Bitbucket account +## Access your Bitbucket account - Go to [bitbucket.org](https://bitbucket.org/). - Click on `Login` at the top right to log in. ![Bitbucket Developer Portal.](/img/guides/auth-bitbucket/bitbucket-portal.png) -### Find your callback URL +## Find your callback URL The next step requires a callback URL, which looks like this: @@ -47,7 +45,7 @@ The next step requires a callback URL, which looks like this: /> -### Create a Bitbucket OAuth app +## Create a Bitbucket OAuth app - Click on your profile icon at the bottom left - Click on `All Workspaces` @@ -62,7 +60,7 @@ The next step requires a callback URL, which looks like this: - Click on your app name (the name of your new OAuth Consumer) - Copy your `Key` (`client_key`) and `Secret` (`client_secret`) codes -### Add your Bitbucket credentials into your Supabase Project +## Add your Bitbucket credentials into your Supabase Project - Go to your [Supabase Project Dashboard](https://app.supabase.com) - In the left sidebar, click the `Authentication` icon (near the top) @@ -72,27 +70,19 @@ The next step requires a callback URL, which looks like this: - Enter your `client_id` and `client_secret` saved in the previous step - Click `Save` -### Add login code to your client app +## Add login code to your client app -The JavaScript client code is documented here: [Supabase OAuth Client Code](/docs/reference/javascript/auth-signin#sign-in-using-third-party-providers) - -```js -const { user, session, error } = await supabase.auth.signIn({ - provider: 'bitbucket', -}) -``` - -Add this function which you can call from a button, link, or UI element. +When your user signs in, call [signInWithOAuth()](/docs/reference/javascript/auth-signinwithoauth) with `bitbucket` as the `provider`: ```js async function signInWithBitbucket() { - const { user, session, error } = await supabase.auth.signIn({ + const { data, error } = await supabase.auth.signInWithOAuth({ provider: 'bitbucket', }) } ``` -To log out: +When your user signs out, call [signOut()](/docs/reference/javascript/auth-signout) to remove them from the browser session and any objects from localStorage: ```js async function signout() { diff --git a/apps/reference/docs/guides/auth/auth-discord.mdx b/apps/reference/docs/guides/auth/auth-discord.mdx index 8591a232d16..11193ec9c8a 100644 --- a/apps/reference/docs/guides/auth/auth-discord.mdx +++ b/apps/reference/docs/guides/auth/auth-discord.mdx @@ -17,9 +17,7 @@ Setting up Discord logins for your application consists of 3 parts: - Add your Discord OAuth Consumer keys to your [Supabase Project](https://app.supabase.com) - Add the login code to your [Supabase JS Client App](https://github.com/supabase/supabase-js) -## Steps - -### Access your Discord account +## Access your Discord account - Go to [discord.com](https://discord.com/). - Click on `Login` at the top right to log in. @@ -30,7 +28,7 @@ Setting up Discord logins for your application consists of 3 parts: ![Discord Portal.](/img/guides/auth-discord/discord-developer-portal.png) -### Find your callback URL +## Find your callback URL In the next step you require a callback URL, which looks like this: @@ -51,7 +49,7 @@ In the next step you require a callback URL, which looks like this: /> -### Create a Discord Application +## Create a Discord Application - Click on `New Application` at the top right. - Enter the name of your application and click `Create`. @@ -61,7 +59,7 @@ In the next step you require a callback URL, which looks like this: - Click `Save Changes` at the bottom. - Copy your `Client ID` and `Client Secret` under `Client information`. -### Add your Discord credentials into your Supabase Project +## Add your Discord credentials into your Supabase Project - Go to your [Supabase Project Dashboard](https://app.supabase.com) - In the left sidebar, click the `Authentication` icon (near the top) @@ -71,33 +69,21 @@ In the next step you require a callback URL, which looks like this: - Enter your `client_id` and `client_secret` saved in the previous step - Click `Save` -### Add login code to your client app +## Add login code to your client app -The JavaScript client code is documented here: [Supabase OAuth Client Code](/docs/reference/javascript/auth-signin#sign-in-using-third-party-providers) - -```js -const { user, session, error } = await supabase.auth.signIn({ - provider: 'discord', -}) -``` - -:::note - -If you call `signIn()` when already logged in, Discord will prompt the user again for authorization. - -::: - -Add this function which you can call from a button, link, or UI element. +When your user signs in, call [signInWithOAuth()](/docs/reference/javascript/auth-signinwithoauth) with `discord` as the `provider`: ```js async function signInWithDiscord() { - const { user, session, error } = await supabase.auth.signIn({ + const { data, error } = await supabase.auth.signInWithOAuth({ provider: 'discord', }) } ``` -To log out: +If your user is already signed in, Discord prompts the user again for authorization. + +When your user signs out, call [signOut()](/docs/reference/javascript/auth-signout) to remove them from the browser session and any objects from localStorage: ```js async function signout() { diff --git a/apps/reference/docs/guides/auth/auth-email.mdx b/apps/reference/docs/guides/auth/auth-email.mdx index d776dc8e6af..27c3f83874c 100644 --- a/apps/reference/docs/guides/auth/auth-email.mdx +++ b/apps/reference/docs/guides/auth/auth-email.mdx @@ -30,12 +30,7 @@ See the [self-hosting docs](/docs/guides/hosting/overview#configuration) for det ::: -### Add login code to your client app - -Add logins using our client libraries: - -- [JavaScript](/docs/reference/javascript/auth-signin#sign-in-with-email) -- [Dart](/docs/reference/dart/auth-signin#sign-in-with-email) +## Add login code to your client app -```js -const { user, error } = await supabase.auth.signIn({ - email: 'example@email.com', - password: 'example-password', -}) -``` - - - - - -```dart -final res = await supabase.auth.signIn( - email: 'example@email.com', - password: 'example-password' -); - -final user = res.data?.user; -final error = res.error; -``` - - - - - -Add this function which you can call from a button, link, or UI element. - - - - +When your user signs in, call [signInWithPassword()](/docs/reference/javascript/auth-signinwithpassword) with their email address and password: ```js async function signInWithEmail() { - const { user, error } = await supabase.auth.signIn({ + const { data, error } = await supabase.auth.signInWithPassword({ email: 'example@email.com', password: 'example-password', }) @@ -93,6 +55,8 @@ async function signInWithEmail() { +When your user signs in, call [signIn()](/docs/reference/dart/auth-signin) with their email address and password: + ```dart Future signInWithEmail() async { await supabase.auth.signIn( @@ -106,8 +70,6 @@ Future signInWithEmail() async { -To log out: - +When your user signs out, call [signOut()](/docs/reference/javascript/auth-signout) to remove them from the browser session and any objects from localStorage: + ```js async function signOut() { const { error } = await supabase.auth.signOut() @@ -126,6 +90,8 @@ async function signOut() { +When your user signs out, call [signOut()](/docs/reference/dart/auth-signout) to remove them from the browser session and any objects from localStorage: + ```dart Future signOut() async { await supabase.auth.signOut(); diff --git a/apps/reference/docs/guides/auth/auth-facebook.mdx b/apps/reference/docs/guides/auth/auth-facebook.mdx index c7a76ef1902..3cb6ac68947 100644 --- a/apps/reference/docs/guides/auth/auth-facebook.mdx +++ b/apps/reference/docs/guides/auth/auth-facebook.mdx @@ -17,16 +17,14 @@ Setting up Facebook logins for your application consists of 3 parts: - Add your Facebook keys to your [Supabase Project](https://app.supabase.com) - Add the login code to your [Supabase JS Client App](https://github.com/supabase/supabase-js) -## Steps - -### Access your Facebook Developer account +## Access your Facebook Developer account - Go to [developers.facebook.com](https://developers.facebook.com). - Click on `Log In` at the top right to log in. ![Facebook Developer Portal.](/img/guides/auth-facebook/facebook-portal.png) -### Create a Facebook App +## Create a Facebook App - Click on `My Apps` at the top right. - Click `Create App` near the top right. @@ -34,7 +32,7 @@ Setting up Facebook logins for your application consists of 3 parts: - Fill in your app information, then click `Create App`. - This should bring you to the screen: `Add Products to Your App`. (Alternatively you can click on `Add Product` in the left sidebar to get to this screen.) -### Find your callback URI +## Find your callback URI The next step requires a callback URI, which looks like this: @@ -55,7 +53,7 @@ The next step requires a callback URI, which looks like this: /> -### Set up FaceBook Login for your Facebook App +## Set up FaceBook Login for your Facebook App From the `Add Products to your App` screen: @@ -72,14 +70,14 @@ From the `App Review -> Permissions and Features` screen: You can read more about access levels [here](https://developers.facebook.com/docs/graph-api/overview/access-levels/) -### Copy your Facebook App ID and Secret +## Copy your Facebook App ID and Secret - Click `Settings / Basic` in the left sidebar - Copy your App ID from the top of the `Basic Settings` page - Under `App Secret` click `Show` then copy your secret - Make sure all required fields are completed on this screen. -### Enter your Facebook App ID and Secret into your Supabase Project +## Enter your Facebook App ID and Secret into your Supabase Project - Go to your [Supabase Project Dashboard](https://app.supabase.com) - In the left sidebar, click the `Authentication` icon (near the top) @@ -89,27 +87,19 @@ You can read more about access levels [here](https://developers.facebook.com/doc - Enter your `Facebook client ID` and `Facebook secret` saved in the previous step - Click `Save` -### Add login code to your client app +## Add login code to your client app -The JavaScript client code is documented here: [Supabase OAuth Client Code](/docs/reference/javascript/auth-signin#sign-in-using-third-party-providers) - -```js -const { user, session, error } = await supabase.auth.signIn({ - provider: 'facebook', -}) -``` - -Add this function which you can call from a button, link, or UI element. +When your user signs in, call [signInWithOAuth()](/docs/reference/javascript/auth-signinwithoauth) with `facebook` as the `provider`: ```js async function signInWithFacebook() { - const { user, session, error } = await supabase.auth.signIn({ + const { data, error } = await supabase.auth.signInWithOAuth({ provider: 'facebook', }) } ``` -To log out: +When your user signs out, call [signOut()](/docs/reference/javascript/auth-signout) to remove them from the browser session and any objects from localStorage: ```js async function signout() { diff --git a/apps/reference/docs/guides/auth/auth-github.mdx b/apps/reference/docs/guides/auth/auth-github.mdx index d171495bafb..471d37935b1 100644 --- a/apps/reference/docs/guides/auth/auth-github.mdx +++ b/apps/reference/docs/guides/auth/auth-github.mdx @@ -17,16 +17,14 @@ Setting up GitHub logins for your application consists of 3 parts: - Add your GitHub OAuth keys to your [Supabase Project](https://app.supabase.com) - Add the login code to your [Supabase JS Client App](https://github.com/supabase/supabase-js) -## Steps - -### Access your GitHub account +## Access your GitHub account - Go to [github.com](https://github.com). - Click on `Sign In` at the top right to log in. ![GitHub Developer Portal.](/img/guides/auth-github/github-portal.png) -### Create a GitHub Oauth App +## Create a GitHub Oauth App Go to the [GitHub Developer Settings](https://github.com/settings/developers) page: @@ -35,7 +33,7 @@ Go to the [GitHub Developer Settings](https://github.com/settings/developers) pa - In the left sidebar, click `Developer settings` (near the bottom) - In the left sidebar, click `OAuth Apps` -### Find your callback URL +## Find your callback URL The next step requires a callback URL, which looks like this: @@ -56,7 +54,7 @@ The next step requires a callback URL, which looks like this: /> -### Register a new OAuth application +## Register a new OAuth application - Click `Register a new application`. If you've created an app before, click `New OAuth App` here. - In `Application name`, type the name of your app. @@ -72,7 +70,7 @@ Copy your new OAuth credentials - Click `Generate a new client secret`. - Copy and save your `Client secret`. -### Enter your GitHub credentials into your Supabase Project +## Enter your GitHub credentials into your Supabase Project - Go to your [Supabase Project Dashboard](https://app.supabase.com) - In the left sidebar, click the `Authentication` icon (near the top) @@ -82,27 +80,19 @@ Copy your new OAuth credentials - Enter your `GitHub Client ID` and `GitHub Client Secret` saved in the previous step - Click `Save` -### Add login code to your client app +## Add login code to your client app -The JavaScript client code is documented here: [Supabase OAuth Client Code](/docs/reference/javascript/auth-signin#sign-in-using-third-party-providers) +When your user signs in, call [signInWithOAuth()](/docs/reference/javascript/auth-signinwithoauth) with `github` as the `provider`: ```js -const { user, session, error } = await supabase.auth.signIn({ - provider: 'github', -}) -``` - -Add this function which you can call from a button, link, or UI element. - -```js -async function signInWithGithub() { - const { user, session, error } = await supabase.auth.signIn({ +async function signInWithGitHub() { + const { data, error } = await supabase.auth.signInWithOAuth({ provider: 'github', }) } ``` -To log out: +When your user signs out, call [signOut()](/docs/reference/javascript/auth-signout) to remove them from the browser session and any objects from localStorage: ```js async function signout() { diff --git a/apps/reference/docs/guides/auth/auth-gitlab.mdx b/apps/reference/docs/guides/auth/auth-gitlab.mdx index adf4287ff03..9f5bfd29360 100644 --- a/apps/reference/docs/guides/auth/auth-gitlab.mdx +++ b/apps/reference/docs/guides/auth/auth-gitlab.mdx @@ -17,16 +17,14 @@ Setting up GitLab logins for your application consists of 3 parts: - Add your GitLab Application keys to your [Supabase Project](https://app.supabase.com) - Add the login code to your [Supabase JS Client App](https://github.com/supabase/supabase-js) -## Steps - -### Access your GitLab account +## Access your GitLab account - Go to [gitlab.com](https://gitlab.com). - Click on `Login` at the top right to log in. ![GitLab Developer Portal.](/img/guides/auth-gitlab/gitlab-portal.png) -### Find your callback URL +## Find your callback URL The next step requires a callback URL, which looks like this: @@ -47,7 +45,7 @@ The next step requires a callback URL, which looks like this: /> -### Create your GitLab Application +## Create your GitLab Application - Click on your `profile logo` (avatar) in the top-right corner. - Select `Edit profile`. @@ -59,7 +57,7 @@ The next step requires a callback URL, which looks like this: - Click `Save Application` at the bottom. - Copy and save your `Application ID` (`client_id`) and `Secret` (`client_secret`) which you'll need later. -### Add your GitLab credentials into your Supabase Project +## Add your GitLab credentials into your Supabase Project - Go to your [Supabase Project Dashboard](https://app.supabase.com). - In the left sidebar, click the `Authentication` icon (near the top). @@ -69,27 +67,19 @@ The next step requires a callback URL, which looks like this: - Enter your `client_id` and `client_secret` saved in the previous step. - Click `Save`. -### Add login code to your client app +## Add login code to your client app -The JavaScript client code is documented here: [Supabase OAuth Client Code](/docs/reference/javascript/auth-signin#sign-in-using-third-party-providers) - -```js -const { user, session, error } = await supabase.auth.signIn({ - provider: 'gitlab', -}) -``` - -Add this function which you can call from a button, link, or UI element. +When your user signs in, call [signInWithOAuth()](/docs/reference/javascript/auth-signinwithoauth) with `gitlab` as the `provider`: ```js async function signInWithGitLab() { - const { user, session, error } = await supabase.auth.signIn({ + const { data, error } = await supabase.auth.signInWithOAuth({ provider: 'gitlab', }) } ``` -To log out: +When your user signs out, call [signOut()](/docs/reference/javascript/auth-signout) to remove them from the browser session and any objects from localStorage: ```js async function signout() { diff --git a/apps/reference/docs/guides/auth/auth-google.mdx b/apps/reference/docs/guides/auth/auth-google.mdx index e3788c3f3aa..051ce6cab03 100644 --- a/apps/reference/docs/guides/auth/auth-google.mdx +++ b/apps/reference/docs/guides/auth/auth-google.mdx @@ -17,16 +17,14 @@ Setting up Google logins for your application consists of 3 parts: - Add your Google OAuth keys to your [Supabase Project](https://app.supabase.com) - Add the login code to your [Supabase JS Client App](https://github.com/supabase/supabase-js) -## Steps - -### Access your Google Cloud Platform account +## Access your Google Cloud Platform account - Go to [cloud.google.com](https://cloud.google.com). - Click on `Sign in` at the top right to log in. ![Google Developer Portal.](/img/guides/auth-google/google-portal.png) -### Create a Google Cloud Platform Project +## Create a Google Cloud Platform Project - Click on `Select a Project` at the top left. - (Or, if a project is currently selected, click on the current project name at the top left.) @@ -35,7 +33,7 @@ Setting up Google logins for your application consists of 3 parts: - (This can take a few minutes.) - This should bring you to the dashboard for your new project. -### Create the OAuth Keys for your project +## Create the OAuth Keys for your project From your project's dashboard screen: @@ -44,12 +42,12 @@ From your project's dashboard screen: - On the `OAuth consent screen` page select `External`. - Click `Create`. -### Edit your app information +## Edit your app information - On the `Edit app registration` page fill out your app information. - Click `Save and continue` at the bottom. -### Find your callback URL +## Find your callback URL The next step requires a callback URL, which looks like this: @@ -70,7 +68,7 @@ The next step requires a callback URL, which looks like this: /> -### Create your Google credentials +## Create your Google credentials - Click `Credentials` at the left to go to the `Credentials` page on the Google Cloud Platform console. - Click `Create Credentials` near the top then select `OAuth client ID` @@ -87,7 +85,7 @@ Copy your new OAuth credentials - A box will appear called `OAuth client created`. - Copy and save the values under `Your Client ID` and `Your Client Secret`. -### Enter your Google credentials into your Supabase Project +## Enter your Google credentials into your Supabase Project - Go to your [Supabase Project Dashboard](https://app.supabase.com) - In the left sidebar, click the `Authentication` icon (near the top) @@ -97,27 +95,19 @@ Copy your new OAuth credentials - Enter your `Google Client ID` and `Google Client Secret` saved in the previous step - Click `Save` -### Add login code to your client app +## Add login code to your client app -The JavaScript client code is documented here: [Supabase OAuth Client Code](/docs/reference/javascript/auth-signin#sign-in-using-third-party-providers) - -```js -const { user, session, error } = await supabase.auth.signIn({ - provider: 'google', -}) -``` - -Add this function which you can call from a button, link, or UI element. +When your user signs in, call [signInWithOAuth()](/docs/reference/javascript/auth-signinwithoauth) with `google` as the `provider`: ```js async function signInWithGoogle() { - const { user, session, error } = await supabase.auth.signIn({ + const { data, error } = await supabase.auth.signInWithOAuth({ provider: 'google', }) } ``` -To log out: +When your user signs out, call [signOut()](/docs/reference/javascript/auth-signout) to remove them from the browser session and any objects from localStorage: ```js async function signout() { diff --git a/apps/reference/docs/guides/auth/auth-helpers/auth-ui.mdx b/apps/reference/docs/guides/auth/auth-helpers/auth-ui.mdx index f92a18f9322..0ee2493a61e 100644 --- a/apps/reference/docs/guides/auth/auth-helpers/auth-ui.mdx +++ b/apps/reference/docs/guides/auth/auth-helpers/auth-ui.mdx @@ -18,10 +18,10 @@ It supports custom themes and extensible styles to match your brand and aestheti ## Set up Auth UI -Install the latest version of [supabase-js](/docs/reference/javascript/next/) and the Auth UI package: +Install the latest version of [supabase-js](/docs/reference/javascript) and the Auth UI package: ```bash -npm install @supabase/supabase-js@rc @supabase/auth-ui-react +npm install @supabase/supabase-js @supabase/auth-ui-react ``` ### Import the Auth component diff --git a/apps/reference/docs/guides/auth/auth-helpers/index.mdx b/apps/reference/docs/guides/auth/auth-helpers/index.mdx index 91247a76c9c..bcb52c6a759 100644 --- a/apps/reference/docs/guides/auth/auth-helpers/index.mdx +++ b/apps/reference/docs/guides/auth/auth-helpers/index.mdx @@ -21,14 +21,16 @@ A collection of framework-specific Auth utilities for working with Supabase. description={'A pre-built React component for authenticating users.'} style={{ height: '100%' }} /> -
+
{/* Next.js */}
@@ -38,7 +40,9 @@ A collection of framework-specific Auth utilities for working with Supabase. class="card" to={useBaseUrl('/guides/auth/auth-helpers/sveltekit')} title={'SvelteKit'} - description={'Helpers for authenticating users in SvelteKit applications.'} + description={ + 'Helpers for authenticating users in SvelteKit applications.' + } style={{ height: '100%' }} />
diff --git a/apps/reference/docs/guides/auth/auth-helpers/nextjs.mdx b/apps/reference/docs/guides/auth/auth-helpers/nextjs.mdx index 193a970ebe9..700a1a75765 100644 --- a/apps/reference/docs/guides/auth/auth-helpers/nextjs.mdx +++ b/apps/reference/docs/guides/auth/auth-helpers/nextjs.mdx @@ -2,104 +2,196 @@ id: nextjs title: Supabase Auth with Next.js description: Authentication helpers for Next.js API routes, middleware, and SSR. -sidebar_label: "Next.js" +sidebar_label: 'Next.js' --- +import Tabs from '@theme/Tabs' +import TabItem from '@theme/TabItem' + This submodule provides convenience helpers for implementing user authentication in Next.js applications. -## Installation +## Install the Next.js helper library -Using [npm](https://npmjs.org): + + + ```sh npm install @supabase/auth-helpers-nextjs - -# Main components and hooks for React based frameworks (optional) -npm install @supabase/auth-helpers-react -``` - -Using [yarn](https://yarnpkg.com/): - -```sh -yarn add @supabase/auth-helpers-nextjs - -# Main components and hooks for React based frameworks (optional) -yarn add @supabase/auth-helpers-react ``` This library supports the following tooling versions: - Node.js: `^10.13.0 || >=12.0.0` - - Next.js: `>=10` -## Getting Started +Additionally, install the **React Auth Helpers** for components and hooks that can be used across all React-based frameworks. -### Configuration - -Set up the following env vars. For local development you can set them in a `.env.local` file. See an [example](https://github.com/supabase/auth-helpers/blob/main/examples/nextjs/.env.local.example). - -```bash -# Find these in your Supabase project settings > API -NEXT_PUBLIC_SUPABASE_URL=https://your-project.supabase.co -NEXT_PUBLIC_SUPABASE_ANON_KEY=your-anon-key +```sh +npm install @supabase/auth-helpers-react ``` -### Basic Setup + + -- Create an `auth` directory under the `/pages/api/` directory. - -- Create a `[...supabase].js` file under the newly created `auth` directory. - -The path to your dynamic API route file would be `/pages/api/auth/[...supabase].js`. Populate that file as follows: - -```js -import { handleAuth } from '@supabase/auth-helpers-nextjs' - -export default handleAuth({ logout: { returnTo: '/' } }) +```sh +yarn add @supabase/auth-helpers-nextjs ``` -Executing `handleAuth()` creates the following route handlers under the hood that perform different parts of the authentication flow: +This library supports the following tooling versions: -- `/api/auth/callback`: The `UserProvider` forwards the session details here every time `onAuthStateChange` fires on the client side. This is needed to set up the cookies for your application so that SSR works seamlessly. +- Node.js: `^10.13.0 || >=12.0.0` +- Next.js: `>=10` -- `/api/auth/user`: You can fetch user profile information in JSON format. +Additionally, install the **React Auth Helpers** for components and hooks that can be used across all React-based frameworks. -- `/api/auth/logout`: Your Next.js application logs out the user. You can optionally pass a `returnTo` parameter to return to a custom relative URL after logout, eg `/api/auth/logout?returnTo=/login`. This will overwrite the logout `returnTo` option specified `handleAuth()` +```sh +yarn add @supabase/auth-helpers-react +``` -Wrap your `pages/_app.js` component with the `UserProvider` component: + + -```jsx -// pages/_app.js -import React from 'react' -import { UserProvider } from '@supabase/auth-helpers-react' -import { supabaseClient } from '@supabase/auth-helpers-nextjs' +## Set up environment variables + +Retrieve your project URL and anon key in your project's [API settings](https://app.supabase.com/project/_/settings/api) in the Dashboard to set up the following environment variables. For local development you can set them in a `.env.local` file. See an [example](https://github.com/supabase/auth-helpers/blob/main/examples/nextjs/.env.local.example). + +```bash title=".env.local" +NEXT_PUBLIC_SUPABASE_URL=YOUR_SUPABASE_URL +NEXT_PUBLIC_SUPABASE_ANON_KEY=YOUR_SUPABASE_ANON_KEY +``` + +## Basic Setup + + + + +Wrap your `pages/_app.js` component with the `SessionContextProvider` component: + +```jsx title="pages/_app.js" +import { createBrowserSupabaseClient } from '@supabase/auth-helpers-nextjs' +import { SessionContextProvider } from '@supabase/auth-helpers-react' + +function MyApp({ Component, pageProps }) { + const router = useRouter() + // Create a new supabase browser client on every first render. + const [supabaseClient] = useState(() => createBrowserSupabaseClient()) -export default function App({ Component, pageProps }) { return ( - + - + ) } ``` + + + +Wrap your `pages/_app.tsx` component with the `SessionContextProvider` component: + +```jsx title="pages/_app.tsx" +import { createBrowserSupabaseClient } from '@supabase/auth-helpers-nextjs' +// highlight-next-line +import { SessionContextProvider, Session } from '@supabase/auth-helpers-react' + +function MyApp({ + Component, + pageProps, +}: AppProps<{ + // highlight-next-line + initialSession: Session, +}>) { + // Create a new supabase browser client on every first render. + const [supabaseClient] = useState(() => createBrowserSupabaseClient()) + + return ( + + + + ) +} +``` + + + + You can now determine if a user is authenticated by checking that the `user` object returned by the `useUser()` hook is defined. +## Usage with TypeScript + +You can pass types that were [generated with the Supabase CLI](/docs/reference/javascript/typescript-support#generating-types) to the Supabase Client to get enhanced type safety and auto completion: + +### Browser client + +```ts +// Creating a new supabase client object: +import { createBrowserSupabaseClient } from '@supabase/auth-helpers-nextjs' +import { Database } from '../database.types' + +const supabaseClient = createBrowserSupabaseClient() +``` + +```ts +// Retrieving a supabase client object from the SessionContext: +import { useSupabaseClient } from '@supabase/auth-helpers-react' +import { Database } from '../database.types' + +const supabaseClient = useSupabaseClient() +``` + +### Server client + +```ts +// Creating a new supabase server client object (e.g. in API route): +import type { NextApiRequest, NextApiResponse } from 'next' +import type { Database } from 'types_db' + +export default async (req: NextApiRequest, res: NextApiResponse) => { + const supabaseServerClient = createServerSupabaseClient({ + req, + res, + }) + const { + data: { user }, + } = await supabaseServerClient.auth.getUser() + + res.status(200).json({ name: user?.name ?? '' }) +} +``` + ## Client-side data fetching with RLS -For [row level security](https://supabase.com/docs/learn/auth-deep-dive/auth-row-level-security) to work properly when fetching data client-side, you need to make sure to import the `{ supabaseClient }` from `# @supabase/auth-helpers-nextjs` and only run your query once the user is defined client-side in the `useUser()` hook: +For [row level security](https://supabase.com/docs/learn/auth-deep-dive/auth-row-level-security) to work properly when fetching data client-side, you need to make sure to use the `supabaseClient` from the `useSupabaseClient` hook and only run your query once the user is defined client-side in the `useUser()` hook: ```js -import { Auth } from '@supabase/ui' -import { useUser } from '@supabase/auth-helpers-react' -import { supabaseClient } from '@supabase/auth-helpers-nextjs' +import { Auth, ThemeSupa } from '@supabase/auth-ui-react' +import { useUser, useSupabaseClient } from '@supabase/auth-helpers-react' import { useEffect, useState } from 'react' const LoginPage = () => { - const { user, error } = useUser() + const supabaseClient = useSupabaseClient() + const user = useUser() const [data, setData] = useState() + // highlight-start useEffect(() => { async function loadData() { const { data } = await supabaseClient.from('test').select('*') @@ -108,18 +200,17 @@ const LoginPage = () => { // Only run query once user is logged in. if (user) loadData() }, [user]) + // highlight-end if (!user) return ( - <> - {error &&

{error.message}

} - - + ) return ( @@ -136,12 +227,11 @@ const LoginPage = () => { export default LoginPage ``` -### Server-side rendering (SSR) - withPageAuth +## Server-side rendering (SSR) - withPageAuth If you wrap your `getServerSideProps` with `withPageAuth` your props object will be augmented with the user object. -```js -// pages/profile.js +```js title="pages/profile.js" import { withPageAuth } from '@supabase/auth-helpers-nextjs' export default function Profile({ user }) { @@ -154,11 +244,10 @@ export const getServerSideProps = withPageAuth({ redirectTo: '/login' }) If there is no authenticated user, they will be redirect to your home page, unless you specify the `redirectTo` option. You can pass in your own `getServerSideProps` method, the props returned from this will be merged with the -user props. You can also access the user session data by calling `getUser` inside of this method, eg: +user props. You can also access the user session data by calling `supabase.auth.getUser()` inside of this method, eg: -```js -// pages/protected-page.js -import { withPageAuth, getUser } from '@supabase/auth-helpers-nextjs' +```js title="pages/protected-page.js" +import { withPageAuth } from '@supabase/auth-helpers-nextjs' export default function ProtectedPage({ user, customProp }) { return
Protected content
@@ -166,24 +255,22 @@ export default function ProtectedPage({ user, customProp }) { export const getServerSideProps = withPageAuth({ redirectTo: '/foo', - async getServerSideProps(ctx) { + async getServerSideProps(ctx, supabase) { // Access the user object - const { user, accessToken } = await getUser(ctx) + const { + data: { user }, + } = await supabase.auth.getUser() return { props: { email: user?.email } } }, }) ``` -### Server-side data fetching with RLS +## Server-side data fetching with RLS -For [row level security](https://supabase.com/docs/learn/auth-deep-dive/auth-row-level-security) to work in a server environment, you need to inject the request context into the supabase client: +Both `withApiAuth` and `withPageAuth` return a supabase client that you can use to run [row level security](https://supabase.com/docs/learn/auth-deep-dive/auth-row-level-security) authenticated queries server-side: ```js -import { - User, - withPageAuth, - supabaseServerClient, -} from '@supabase/auth-helpers-nextjs' +import { User, withPageAuth } from '@supabase/auth-helpers-nextjs' export default function ProtectedPage({ user, @@ -203,7 +290,7 @@ export default function ProtectedPage({ export const getServerSideProps = withPageAuth({ redirectTo: '/', - async getServerSideProps(ctx) { + async getServerSideProps(ctx, supabaseServerClient) { // Run queries with RLS on the server const { data } = await supabaseServerClient(ctx).from('test').select('*') return { props: { data } } @@ -211,44 +298,62 @@ export const getServerSideProps = withPageAuth({ }) ``` -### Server-side data fetching to OAuth APIs using `provider_token` +## Server-side data fetching to OAuth APIs using `provider_token` When using third-party auth providers, sessions are initiated with an additional `provider_token` field which is persisted as an HTTPOnly cookie upon logging in to enabled usage on the server side. The `provider_token` can be used to make API requests to the OAuth provider's API endpoints on behalf of the logged-in user. In the following example, we fetch the user's full profile from the third-party API during SSR using their id and auth token: ```js -import { User, withPageAuth, getUser } from '@supabase/auth-helpers-nextjs' - -interface Profile { - /* ... */ -} +import { User, withPageAuth } from '@supabase/auth-helpers-nextjs' export default function ProtectedPage({ user, - data, + allRepos, }: { user: User, - profile: Profile, + allRepos: any, }) { - return
Protected content
+ return ( + <> +
Protected content for {user.email}
+

Data fetched with provider token:

+
{JSON.stringify(allRepos, null, 2)}
+

user:

+
{JSON.stringify(user, null, 2)}
+ + ) } export const getServerSideProps = withPageAuth({ redirectTo: '/', - async getServerSideProps(ctx) { - // Retrieve provider_token from cookies - const provider_token = ctx.req.cookies['sb-provider-token'] - // Get logged in user's third-party id from metadata - const { user } = await getUser(ctx) - const userId = user?.user_metadata.provider_id - const profile: Profile = await ( - await fetch(`https://api.example.com/users/${userId}`, { - method: 'GET', - headers: { - Authorization: `Bearer ${provider_token}`, - }, - }) + async getServerSideProps(ctx, supabase) { + const { + data: { session }, + error, + } = await supabase.auth.getSession() + if (error) { + throw error + } + if (!session) { + return { props: {} } + } + + // Retrieve provider_token & logged in user's third-party id from metadata + const { provider_token, user } = session + const userId = user.user_metadata.user_name + + const allRepos = await ( + await fetch( + `https://api.github.com/search/repositories?q=user:${userId}`, + { + method: 'GET', + headers: { + Authorization: `token ${provider_token}`, + }, + } + ) ).json() - return { props: { profile } } + + return { props: { allRepos, user } } }, }) ``` @@ -258,18 +363,16 @@ export const getServerSideProps = withPageAuth({ Wrap an API Route to check that the user has a valid session. If they're not logged in the handler will return a 401 Unauthorized. -```js -// pages/api/protected-route.js -import { - withApiAuth, - supabaseServerClient, -} from '@supabase/auth-helpers-nextjs' +```js title="pages/api/protected-route.js" +import { withApiAuth } from '@supabase/auth-helpers-nextjs' -export default withApiAuth(async function ProtectedRoute(req, res) { +export default withApiAuth(async function ProtectedRoute( + req, + res, + supabaseServerClient +) { // Run queries with RLS on the server - const { data } = await supabaseServerClient({ req, res }) - .from('test') - .select('*') + const { data } = await supabaseServerClient.from('test').select('*') res.json(data) }) ``` @@ -278,20 +381,22 @@ If you visit `/api/protected-route` without a valid session cookie, you will get ## Protecting routes with [Nextjs Middleware](https://nextjs.org/docs/middleware) -As an alternative to protecting individual pages using `getServerSideProps` with `withPageAuth`, `withMiddlewareAuth` can be used from inside a `_middleware` file to protect an entire directory. In the following example, all requests to `/protected/*` will check whether a user is signed in, if successful the request will be forwarded to the destination route, otherwise the user will be redirected to `/login` (defaults to: `/`) with a 307 Temporary Redirect response status: +As an alternative to protecting individual pages using `getServerSideProps` with `withPageAuth`, `withMiddlewareAuth` can be used from inside a `middleware` file to protect the entire directory or those that match the config object. In the following example, all requests to `/middleware-protected/*` will check whether a user is signed in, if successful the request will be forwarded to the destination route, otherwise the user will be redirected to `/login` (defaults to: `/`) with a 307 Temporary Redirect response status: -```ts -// pages/protected/_middleware.ts -import { withMiddlewareAuth } from '@supabase/auth-helpers-nextjs/middleware' +```ts title="middleware.ts" +import { withMiddlewareAuth } from '@supabase/auth-helpers-nextjs' export const middleware = withMiddlewareAuth({ redirectTo: '/login' }) + +export const config = { + matcher: ['/middleware-protected/:path*'], +} ``` It is also possible to add finer granularity based on the user logged in. I.e. you can specify a promise to determine if a specific user has permission or not. -```ts -// pages/protected/_middleware.ts -import { withMiddlewareAuth } from '@supabase/auth-helpers-nextjs/dist/middleware' +```ts title="middleware.ts" +import { withMiddlewareAuth } from '@supabase/auth-helpers-nextjs' export const middleware = withMiddlewareAuth({ redirectTo: '/login', @@ -300,20 +405,64 @@ export const middleware = withMiddlewareAuth({ redirectTo: '/insufficient-permissions', }, }) + +export const config = { + matcher: ['/middleware-protected/:path*'], +} ``` -## Migrating from @supabase/supabase-auth-helpers to @supabase/auth-helpers +## Migrating to version `0.4.X` {#migration} -This is a step by step guide on migrating away from the `@supabase/supabase-auth-helpers` to the newly released `@supabase/auth-helpers`. +- With `supabase-js` v2, the `auth` API routes are no longer required and you can delete the `auth` directory under the `/pages/api/` directory. +- The `/api/auth/logout` API route has been removed—use the `signout` method instead. + ```js + + ``` +- The `supabaseClient` and `supabaseServerClient` have been removed in favor of the `createBrowserSupabaseClient` and `createServerSupabaseClient` methods. This allows you to provide the CLI-generated types to the client: -1. Install `@supabase/supabase-js`, `@supabase/auth-helpers-nextjs` and `@supabase/auth-helpers-react` libraries from npm. -2. Replace all imports of `@supabase/supabase-auth-helpers/nextjs` in your project with `@supabase/auth-helpers-nextjs`. -3. Replace all imports of `@supabase/supabase-auth-helpers/react` in your project with `@supabase/auth-helpers-react`. -4. Replace all instances of `withAuthRequired` in any of your NextJS pages with `withPageAuth`. -5. Replace all instances of `withAuthRequired` in any of your NextJS API endpoints with `withApiAuth`. -6. Uninstall `@supabase/supabase-auth-helpers`. + ```js + // client-side + import type { Database } from 'types_db'; + const [supabaseClient] = useState(() => + createBrowserSupabaseClient() + ); -## Additional Links + // server-side API route + import type { NextApiRequest, NextApiResponse } from 'next' + import type { Database } from 'types_db'; -- [Auth Helpers Source code](https://github.com/supabase/auth-helpers) -- [Next.js example](https://github.com/supabase/auth-helpers/tree/main/examples/nextjs) + export default async (req: NextApiRequest, res: NextApiResponse) => { + const supabaseServerClient = createServerSupabaseClient({ req, res }) + const { data:{ user } } = await supabaseServerClient.auth.getUser() + + res.status(200).json({ name: user?.name ?? '' }) + } + ``` + +- The `UserProvider` has been replaced by the `SessionContextProvider`. Make sure to wrap your `pages/_app.js` componenent with the `SessionContextProvider`. Then, throughout your application you can use the `useSessionContext` hook to get the `session` and the `useSupabaseClient` hook to get an authenticated `supabaseClient`. +- The `useUser` hook now returns the `user` object or `null`. +- Usage with TypeScript: You can pass types that were [generated with the Supabase CLI](/docs/reference/javascript/typescript-support#generating-types) to the Supabase Client to get enhanced type safety and auto completion: + + ```js + // Creating a new supabase client object: + import { Database } from '../database.types'; + + const [supabaseClient] = useState(() => + createBrowserSupabaseClient() + ); + ``` + + ```js + // Retrieving a supabase client object from the SessionContext: + import { useSupabaseClient } from '@supabase/auth-helpers-react'; + import { Database } from '../database.types'; + + const supabaseClient = useSupabaseClient(); + ``` diff --git a/apps/reference/docs/guides/auth/auth-helpers/sveltekit.mdx b/apps/reference/docs/guides/auth/auth-helpers/sveltekit.mdx index 4d7d1f3d317..5ba0d72572a 100644 --- a/apps/reference/docs/guides/auth/auth-helpers/sveltekit.mdx +++ b/apps/reference/docs/guides/auth/auth-helpers/sveltekit.mdx @@ -56,24 +56,28 @@ PUBLIC_SUPABASE_ANON_KEY=your-anon-key Start off by creating a `db.ts` file inside of the `src/lib` directory and instantiate the `supabaseClient`. ```ts title="src/lib/db.ts" -import { createClient } from '@supabase/supabase-js'; -import { setupSupabaseHelpers } from '@supabase/auth-helpers-sveltekit'; -import { dev } from '$app/environment'; -import { env } from '$env/dynamic/public'; +import { createClient } from '@supabase/supabase-js' +import { setupSupabaseHelpers } from '@supabase/auth-helpers-sveltekit' +import { dev } from '$app/environment' +import { env } from '$env/dynamic/public' // or use the static env // import { PUBLIC_SUPABASE_URL, PUBLIC_SUPABASE_ANON_KEY } from '$env/static/public'; -export const supabaseClient = createClient(env.PUBLIC_SUPABASE_URL, env.PUBLIC_SUPABASE_ANON_KEY, { - persistSession: false, - autoRefreshToken: false -}); +export const supabaseClient = createClient( + env.PUBLIC_SUPABASE_URL, + env.PUBLIC_SUPABASE_ANON_KEY, + { + persistSession: false, + autoRefreshToken: false, + } +) setupSupabaseHelpers({ - supabaseClient, - cookieOptions: { - secure: !dev - } -}); + supabaseClient, + cookieOptions: { + secure: !dev, + }, +}) ``` ### Initialize the client @@ -83,16 +87,16 @@ Edit your `+layout.svelte` file and set up the client-side. ```html title="src/routes/+layout.svelte" @@ -100,20 +104,20 @@ Edit your `+layout.svelte` file and set up the client-side. ### Set up hooks -The `hooks.ts` file is where the heavy lifting of this library happens: +The `hooks.server.ts` file is where the heavy lifting of this library happens: ```ts title="src/hooks.server.ts" // make sure the supabase instance is initialized on the server -import '$lib/db'; -import { dev } from '$app/environment'; -import { auth } from '@supabase/auth-helpers-sveltekit/server'; +import '$lib/db' +import { dev } from '$app/environment' +import { auth } from '@supabase/auth-helpers-sveltekit/server' -export const handle = auth(); +export const handle = auth() // use the sequence helper if you have additional Handle methods -import { sequence } from '@sveltejs/kit/hooks'; +import { sequence } from '@sveltejs/kit/hooks' -export const handle = sequence(auth(), yourHandler); +export const handle = sequence(auth(), yourHandler) ``` There are three handle methods available: @@ -130,13 +134,13 @@ There are three handle methods available: In order to make the session available to the UI (e.g., pages and layouts), pass the session in the root layout load function: ```ts title="src/routes/+layout.server.ts" -import type { LayoutServerLoad } from './$types'; +import type { LayoutServerLoad } from './$types' export const load: LayoutServerLoad = async ({ locals }) => { return { - session: locals.session - }; -}; + session: locals.session, + } +} ``` ### Typings @@ -151,10 +155,10 @@ In order to get the most out of TypeScript and IntelliSense, import the types in // and what to do when importing types declare namespace App { interface Locals { - session: import('@supabase/auth-helpers-sveltekit').SupabaseSession; + session: import('@supabase/auth-helpers-sveltekit').SupabaseSession } interface PageData { - session: import('@supabase/auth-helpers-sveltekit').SupabaseSession; + session: import('@supabase/auth-helpers-sveltekit').SupabaseSession } // interface Error {} // interface Platform {} @@ -168,22 +172,23 @@ This library has provided a method to delete the session cookie. Create a server only page with an action to delete the cookie ```ts title="src/routes/logout/+page.server.ts" -import { deleteSession } from '@supabase/auth-helpers-sveltekit/server'; -import { redirect } from '@sveltejs/kit'; -import type { Actions } from './$types'; +import { deleteSession } from '@supabase/auth-helpers-sveltekit/server' +import { redirect } from '@sveltejs/kit' +import type { Actions } from './$types' export const actions: Actions = { - async default({ cookies }) { - deleteSession(cookies); - throw redirect(303, '/'); - } -}; + async default({ cookies }) { + deleteSession(cookies) + throw redirect(303, '/') + }, +} ``` + Then make a **POST** request with a form to the server only page above. ```html
@@ -197,14 +202,14 @@ You can now determine if a user is authenticated on the client-side by checking ```html title="src/routes/+page.svelte" {#if !$page.data.session.user} -

I am not logged in

+

I am not logged in

{:else} -

Welcome {$page.data.session.user.email}

-

I am logged in!

+

Welcome {$page.data.session.user.email}

+

I am logged in!

{/if} ``` @@ -214,23 +219,23 @@ For [row level security](https://supabase.com/docs/learn/auth-deep-dive/auth-row ```html {#if $page.data.session.user} -

client-side data fetching with RLS

-
{JSON.stringify(loadedData, null, 2)}
+

client-side data fetching with RLS

+
{JSON.stringify(loadedData, null, 2)}
{/if} ``` @@ -239,8 +244,8 @@ For [row level security](https://supabase.com/docs/learn/auth-deep-dive/auth-row ```html title="src/routes/profile/+page.svelte"
Protected content for {user.email}
@@ -281,14 +286,14 @@ Always use the instance returned by `getSupabaseClient()` directly! ```ts // Bad -const supabaseClient = getSupabaseClient(); +const supabaseClient = getSupabaseClient() -await supabaseClient.from('table1').select(); -await supabaseClient.from('table2').select(); +await supabaseClient.from('table1').select() +await supabaseClient.from('table2').select() // Good -await getSupabaseClient().from('table1').select(); -await getSupabaseClient().from('table2').select(); +await getSupabaseClient().from('table1').select() +await getSupabaseClient().from('table2').select() ``` ## Protecting API routes @@ -324,34 +329,34 @@ If you visit `/api/protected-route` without a valid session cookie, you will get Wrap an Action to check that the user has a valid session. If they're not logged in, the session is `null`. ```ts title="src/routes/posts/+page.server.ts" -import type { Actions } from './$types'; -import { withAuth } from '@supabase/auth-helpers-sveltekit'; -import { error, invalid } from '@sveltejs/kit'; +import type { Actions } from './$types' +import { withAuth } from '@supabase/auth-helpers-sveltekit' +import { error, invalid } from '@sveltejs/kit' export const actions: Actions = { createPost: withAuth(async ({ session, getSupabaseClient, request }) => { if (!session.user) { // the user is not signed in - throw error(403, { message: 'Unauthorized' }); + throw error(403, { message: 'Unauthorized' }) } // we are save, let the user create the post - const formData = await request.formData(); - const content = formData.get('content'); + const formData = await request.formData() + const content = formData.get('content') const { error: createPostError, data: newPost } = await getSupabaseClient() .from('posts') - .insert({ content }); + .insert({ content }) if (createPostError) { return invalid(500, { - supabaseErrorMessage: createPostError.message - }); + supabaseErrorMessage: createPostError.message, + }) } return { - newPost - }; - }) -}; + newPost, + } + }), +} ``` If you try to submit a form with the action `?/createPost` without a valid session cookie, you will get a 403 error response. @@ -361,62 +366,62 @@ If you try to submit a form with the action `?/createPost` without a valid sessi Use `saveSession` to save the session cookies: ```ts -import type { Actions } from './$types'; -import { supabaseClient } from '$lib/db'; -import { invalid, redirect } from '@sveltejs/kit'; -import { saveSession } from '@supabase/auth-helpers-sveltekit/server'; +import type { Actions } from './$types' +import { supabaseClient } from '$lib/db' +import { invalid, redirect } from '@sveltejs/kit' +import { saveSession } from '@supabase/auth-helpers-sveltekit/server' export const actions: Actions = { async signin({ request, cookies, url }) { - const formData = await request.formData(); + const formData = await request.formData() - const email = formData.get('email') as string; - const password = formData.get('password') as string; + const email = formData.get('email') as string + const password = formData.get('password') as string const { data, error } = await supabaseClient.auth.api.signInWithEmail( email, password, { - redirectTo: `${url.origin}/logging-in` + redirectTo: `${url.origin}/logging-in`, } - ); + ) if (error || !data) { if (error?.status === 400) { return invalid(400, { error: 'Invalid credentials', values: { - email - } - }); + email, + }, + }) } return invalid(500, { error: 'Server error. Try again later.', values: { - email - } - }); + email, + }, + }) } - saveSession(cookies, data); - throw redirect(303, '/dashboard'); - } -}; + saveSession(cookies, data) + throw redirect(303, '/dashboard') + }, +} ``` Use `deleteSession` to delete the session cookies: ```ts -import type { Actions } from './$types'; -import { deleteSession } from '@supabase/auth-helpers-sveltekit/server'; -import { redirect } from '@sveltejs/kit'; +import type { Actions } from './$types' +import { deleteSession } from '@supabase/auth-helpers-sveltekit/server' +import { redirect } from '@sveltejs/kit' export const actions: Actions = { async logout({ cookies }) { - deleteSession(cookies); - throw redirect(303, '/'); - } -}; + deleteSession(cookies) + throw redirect(303, '/') + }, +} ``` ## Custom session namespace @@ -426,10 +431,10 @@ If you want to use something other than `locals.session` and `$page.data.session ```ts title="src/app.d.ts" declare namespace App { interface Locals { - mySupabaseSession: import('@supabase/auth-helpers-sveltekit').SupabaseSession; + mySupabaseSession: import('@supabase/auth-helpers-sveltekit').SupabaseSession } interface PageData { - mySupabaseSession: import('@supabase/auth-helpers-sveltekit').SupabaseSession; + mySupabaseSession: import('@supabase/auth-helpers-sveltekit').SupabaseSession } } ``` @@ -438,20 +443,20 @@ declare namespace App { setupSupabaseServer({ supabaseClient, cookieOptions: { - secure: !dev + secure: !dev, }, // --- change location within locals --- getSessionFromLocals: (locals) => locals.mySupabaseSession, - setSessionToLocals: (locals, session) => (locals.mySupabaseSession = session) -}); + setSessionToLocals: (locals, session) => (locals.mySupabaseSession = session), +}) ``` ```ts title="src/lib/db.ts" setupSupabaseClient({ supabaseClient, // --- change location within pageData --- - getSessionFromPageData: (data) => data.mySupabaseSession -}); + getSessionFromPageData: (data) => data.mySupabaseSession, +}) ``` ## Migrate from 0.6.11 and below to 0.7.0 {#migration} @@ -489,25 +494,29 @@ export { supabaseClient }; ```js title="src/lib/db.ts" -import { createClient } from '@supabase/supabase-js'; -import { setupSupabaseHelpers } from '@supabase/auth-helpers-sveltekit'; -import { dev } from '$app/environment'; -import { env } from '$env/dynamic/public'; +import { createClient } from '@supabase/supabase-js' +import { setupSupabaseHelpers } from '@supabase/auth-helpers-sveltekit' +import { dev } from '$app/environment' +import { env } from '$env/dynamic/public' // or use the static env // import { PUBLIC_SUPABASE_URL, PUBLIC_SUPABASE_ANON_KEY } from '$env/static/public'; -export const supabaseClient = createClient(env.PUBLIC_SUPABASE_URL, env.PUBLIC_SUPABASE_ANON_KEY, { - persistSession: false, - autoRefreshToken: false -}); +export const supabaseClient = createClient( + env.PUBLIC_SUPABASE_URL, + env.PUBLIC_SUPABASE_ANON_KEY, + { + persistSession: false, + autoRefreshToken: false, + } +) setupSupabaseHelpers({ supabaseClient, cookieOptions: { - secure: !dev - } -}); + secure: !dev, + }, +}) ``` @@ -526,9 +535,9 @@ setupSupabaseHelpers({ ```html title="src/routes/__layout.svelte" @@ -545,16 +554,16 @@ The `@supabase/auth-helpers-svelte` library is no longer required as the `@supab ```html title="src/routes/+layout.svelte" @@ -575,18 +584,18 @@ The `@supabase/auth-helpers-svelte` library is no longer required as the `@supab ```ts title="src/hooks.ts" -import { handleAuth } from '@supabase/auth-helpers-sveltekit'; -import type { GetSession, Handle } from '@sveltejs/kit'; -import { sequence } from '@sveltejs/kit/hooks'; +import { handleAuth } from '@supabase/auth-helpers-sveltekit' +import type { GetSession, Handle } from '@sveltejs/kit' +import { sequence } from '@sveltejs/kit/hooks' -export const handle: Handle = sequence(...handleAuth()); +export const handle: Handle = sequence(...handleAuth()) export const getSession: GetSession = async (event) => { - const { user, accessToken, error } = event.locals; - return { - user, - accessToken, - error + const { user, accessToken, error } = event.locals + return { + user, + accessToken, + error, } } ``` @@ -597,23 +606,23 @@ export const getSession: GetSession = async (event) => { ```ts title="src/hooks.server.ts" // make sure the supabase instance is initialized on the server -import '$lib/db'; -import { dev } from '$app/environment'; -import { auth } from '@supabase/auth-helpers-sveltekit/server'; +import '$lib/db' +import { dev } from '$app/environment' +import { auth } from '@supabase/auth-helpers-sveltekit/server' -export const handle = auth(); +export const handle = auth() ``` -**Optional** *if using additional handle methods* +**Optional** _if using additional handle methods_ ```ts title="src/hooks.server.ts" // make sure the supabase instance is initialized on the server -import '$lib/db'; -import { dev } from '$app/environment'; -import { auth } from '@supabase/auth-helpers-sveltekit/server'; -import { sequence } from '@sveltejs/kit/hooks'; +import '$lib/db' +import { dev } from '$app/environment' +import { auth } from '@supabase/auth-helpers-sveltekit/server' +import { sequence } from '@sveltejs/kit/hooks' -export const handle = sequence(auth(), yourHandler); +export const handle = sequence(auth(), yourHandler) ``` @@ -636,16 +645,16 @@ export const handle = sequence(auth(), yourHandler); // for information about these interfaces declare namespace App { interface UserSession { - user: import('@supabase/supabase-js').User; - accessToken?: string; + user: import('@supabase/supabase-js').User + accessToken?: string } interface Locals extends UserSession { - error: import('@supabase/supabase-js').ApiError; + error: import('@supabase/supabase-js').ApiError } interface Session extends UserSession {} - + // interface Platform {} // interface Stuff {} } @@ -663,11 +672,11 @@ declare namespace App { // and what to do when importing types declare namespace App { interface Locals { - session: import('@supabase/auth-helpers-sveltekit').SupabaseSession; + session: import('@supabase/auth-helpers-sveltekit').SupabaseSession } interface PageData { - session: import('@supabase/auth-helpers-sveltekit').SupabaseSession; + session: import('@supabase/auth-helpers-sveltekit').SupabaseSession } // interface Error {} @@ -691,14 +700,14 @@ declare namespace App { ```html title="src/routes/index.svelte" {#if !$session.user} -

I am not logged in

+

I am not logged in

{:else} -

Welcome {$session.user.email}

-

I am logged in!

+

Welcome {$session.user.email}

+

I am logged in!

{/if} ``` @@ -708,14 +717,14 @@ declare namespace App { ```html title="src/routes/+page.svelte" {#if !$page.data.session.user} -

I am not logged in

+

I am not logged in

{:else} -

Welcome {$page.data.session.user.email}

-

I am logged in!

+

Welcome {$page.data.session.user.email}

+

I am logged in!

{/if} ``` @@ -735,25 +744,30 @@ declare namespace App { ```html title="src/routes/protected-route.svelte"
Protected content for {user.email}
@@ -769,13 +783,12 @@ export let user; ```html title="src/routes/protected-route/+page.svelte" -
Protected content for {user.email}

server-side fetched data with RLS:

{JSON.stringify(tableData, null, 2)}
@@ -784,18 +797,22 @@ export let user; ``` ```ts title="src/routes/protected-route/+page.ts" -import { withAuth } from '@supabase/auth-helpers-sveltekit'; -import { redirect } from '@sveltejs/kit'; -import type { PageLoad } from './$types'; +import { withAuth } from '@supabase/auth-helpers-sveltekit' +import { redirect } from '@sveltejs/kit' +import type { PageLoad } from './$types' -export const load: PageLoad = withAuth(async ({ session, getSupabaseClient }) => { - if (!session.user) { - throw redirect(303, '/'); +export const load: PageLoad = withAuth( + async ({ session, getSupabaseClient }) => { + if (!session.user) { + throw redirect(303, '/') + } + + const { data: tableData } = await getSupabaseClient() + .from('test') + .select('*') + return { tableData, user: session.user } } - - const { data: tableData } = await getSupabaseClient().from('test').select('*'); - return { tableData, user: session.user }; -}); +) ``` @@ -813,28 +830,33 @@ export const load: PageLoad = withAuth(async ({ session, getSupabaseClient }) => ```ts title="src/routes/api/protected-route.ts" -import { supabaseServerClient, withApiAuth } from "@supabase/auth-helpers-sveltekit"; -import type { RequestHandler } from "./__types/protected-route"; +import { + supabaseServerClient, + withApiAuth, +} from '@supabase/auth-helpers-sveltekit' +import type { RequestHandler } from './__types/protected-route' interface TestTable { - id: string; - created_at: string; + id: string + created_at: string } interface GetOutput { - data: TestTable[]; + data: TestTable[] } export const GET: RequestHandler = async ({ locals, request }) => withApiAuth({ user: locals.user }, async () => { // Run queries with RLS on the server - const { data } = await supabaseServerClient(request).from("test").select("*"); + const { data } = await supabaseServerClient(request) + .from('test') + .select('*') return { status: 200, - body: { data } - }; - }); + body: { data }, + } + }) ``` diff --git a/apps/reference/docs/guides/auth/auth-keycloak.mdx b/apps/reference/docs/guides/auth/auth-keycloak.mdx index 0282eb6cb75..76e536063c3 100644 --- a/apps/reference/docs/guides/auth/auth-keycloak.mdx +++ b/apps/reference/docs/guides/auth/auth-keycloak.mdx @@ -24,13 +24,11 @@ Keycloak OAuth consists of five broad steps: - Obtain the `Secret` from the credentials tab which will be used as the `client secret`. - Add the callback url of your application to your allowlist. -## Steps - -### Access your Keycloak Admin console +## Access your Keycloak Admin console - Login by visiting [`http://localhost:8080`](http://localhost:8080) and clicking on "Administration Console". -### Create a Keycloak Realm +## Create a Keycloak Realm - Once you've logged in to the Keycloak console, you can add a realm from the side panel. The default realm should be named "Master". - After you've added a new realm, you can retrieve the `issuer` from the "OpenID Endpoint Configuration" endpoint. The `issuer` will be used as the `Keycloak URL`. @@ -38,13 +36,13 @@ Keycloak OAuth consists of five broad steps: ![Add a Keycloak Realm.](/img/guides/auth-keycloak/keycloak-create-realm.png) -### Create a Keycloak Client +## Create a Keycloak Client The "Client ID" of the created client will serve as the `client_id` when you make API calls to authenticate the user. ![Add a Keycloak client](/img/guides/auth-keycloak/keycloak-add-client.png) -### Client Settings +## Client Settings After you've created the client successfully, ensure that you set the following settings: @@ -55,34 +53,26 @@ After you've created the client successfully, ensure that you set the following ![Obtain the client id, set the client protocol and access type](/img/guides/auth-keycloak/keycloak-client-id.png) ![Set redirect uri](/img/guides/auth-keycloak/keycloak-redirect-uri.png) -### Obtain the Client Secret +## Obtain the Client Secret This will serve as the `client_secret` when you make API calls to authenticate the user. Under the "Credentials" tab, the `Secret` value will be used as the `client secret`. ![Obtain the client secret](/img/guides/auth-keycloak/keycloak-client-secret.png) -### Add login code to your client app +## Add login code to your client app -The JavaScript client code is documented in the [Supabase OAuth Reference](/docs/reference/javascript/auth-signin#sign-in-using-third-party-providers). - -```js -const { user, session, error } = await supabase.auth.signIn({ - provider: 'keycloak', -}) -``` - -Add a function which you can call from a button, link, or UI element. +When your user signs in, call [signInWithOAuth()](/docs/reference/javascript/auth-signinwithoauth) with `keycloak` as the `provider`: ```js async function signInWithKeycloak() { - const { user, session, error } = await supabase.auth.signIn({ + const { data, error } = await supabase.auth.signInWithOAuth({ provider: 'keycloak', - } + }) } ``` -To log out: +When your user signs out, call [signOut()](/docs/reference/javascript/auth-signout) to remove them from the browser session and any objects from localStorage: ```js async function signout() { diff --git a/apps/reference/docs/guides/auth/auth-linkedin.mdx b/apps/reference/docs/guides/auth/auth-linkedin.mdx index db857f6fed4..207d19c0439 100644 --- a/apps/reference/docs/guides/auth/auth-linkedin.mdx +++ b/apps/reference/docs/guides/auth/auth-linkedin.mdx @@ -17,16 +17,14 @@ Setting up LinkedIn logins for your application consists of 3 parts: - Add your LinkedIn `client_id` and `client_secret` to your [Supabase Project](https://app.supabase.com). - Add the login code to your [Supabase JS Client App](https://github.com/supabase/supabase-js). -## Steps - -### Access your LinkedIn Developer account +## Access your LinkedIn Developer account - Go to [LinkedIn Developer Dashboard](https://www.linkedin.com/developers/apps). - Log in (if necessary.) ![LinkedIn Developer Portal](/img/guides/auth-linkedin/linkedin_developers_page.png) -### Find your callback URL +## Find your callback URL The next step requires a callback URL, which looks like this: @@ -47,7 +45,7 @@ The next step requires a callback URL, which looks like this: /> -### Create a LinkedIn OAuth app +## Create a LinkedIn OAuth app - Go to [LinkedIn Developer Dashboard](https://www.linkedin.com/developers/apps). - Click on `Create App` at the top right @@ -58,7 +56,7 @@ The next step requires a callback URL, which looks like this: - Copy and save your newly-generated `Client ID` - Copy and save your newly-generated `Client Secret` -### Enter your LinkedIn credentials into your Supabase Project +## Enter your LinkedIn credentials into your Supabase Project - Go to your [Supabase Project Dashboard](https://app.supabase.com). - In the left sidebar, click the `Authentication` icon (near the top). @@ -68,27 +66,19 @@ The next step requires a callback URL, which looks like this: - Enter your `client_id` and `client_secret` saved in the previous step. - Click `Save`. -### Add login code to your client app +## Add login code to your client app -The JavaScript client code is documented here: [Supabase OAuth Client Code](/docs/reference/javascript/auth-signin#sign-in-using-third-party-providers). - -```js -const { user, session, error } = await supabase.auth.signIn({ - provider: 'LinkedIn', -}) -``` - -Add this function which you can call from a button, link, or UI element. +When your user signs in, call [signInWithOAuth()](/docs/reference/javascript/auth-signinwithoauth) with `linkedin` as the `provider`: ```js async function signInWithLinkedIn() { - const { user, session, error } = await supabase.auth.signIn({ - provider: 'LinkedIn', + const { data, error } = await supabase.auth.signInWithOAuth({ + provider: 'linkedin', }) } ``` -To log out: +When your user signs out, call [signOut()](/docs/reference/javascript/auth-signout) to remove them from the browser session and any objects from localStorage: ```js async function signout() { diff --git a/apps/reference/docs/guides/auth/auth-magic-link.mdx b/apps/reference/docs/guides/auth/auth-magic-link.mdx index 5d320a55abe..391f1ad9365 100644 --- a/apps/reference/docs/guides/auth/auth-magic-link.mdx +++ b/apps/reference/docs/guides/auth/auth-magic-link.mdx @@ -1,13 +1,14 @@ --- id: auth-magic-link title: 'Login With Magic Link' -description: Use Supabase to Authenticate and Authorize your users using Magic Link. +description: Use Supabase to authenticate and authorize your users using magic links. --- import Tabs from '@theme/Tabs' import TabItem from '@theme/TabItem' -By default, if no password is provided, the user will be sent a "magic link" to their email address, which they can click to open your application with a valid session. By default, a given user can only request a Magic Link once every 60 seconds. +Magic links are a form of passwordless logins where users click on a link sent to their email address to log in to their accounts. +Magic links only work with email addresses. By default, a user can only request a magic link once every 60 seconds. ## Overview @@ -25,12 +26,7 @@ Setting up Magic Link logins for your Supabase application. - Under `Email Auth` turn `Enable Email Signup` to ON - Click `Save` -### Add login code to your client app - -Add logins using our client libraries: - -- [JavaScript](/docs/reference/javascript/auth-signin#sign-in-with-magic-link) -- [Dart](/docs/reference/dart/auth-signin#sign-in-with-magic-link) +## Add login code to your client app -```js -const { user, error } = await supabase.auth.signIn({ - email: 'example@email.com', -}) -``` - - - - - -```dart -final res = await supabase.auth.signIn(email: 'example@email.com'); - -final error = res.error; -``` - - - - - -Add this function which you can call from a button, link, or UI element. - - - - +When your user signs in, call [signInWithOtp()](/docs/reference/javascript/auth-signinwithotp) with their email address: ```js async function signInWithEmail() { - const { user, error } = await supabase.auth.signIn({ + const { data, error } = await supabase.auth.signInWithOtp({ email: 'example@email.com', }) } @@ -82,6 +50,8 @@ async function signInWithEmail() { +When your user signs in, call [signIn()](/docs/reference/dart/auth-signin) with their email address: + ```dart Future signInWithEmail() async { await supabase.auth.signIn(email: 'example@email.com'); @@ -92,8 +62,6 @@ Future signInWithEmail() async { -To log out: - +When your user signs out, call [signOut()](/docs/reference/javascript/auth-signout) to remove them from the browser session and any objects from localStorage: + ```js async function signOut() { const { error } = await supabase.auth.signOut() @@ -112,6 +82,8 @@ async function signOut() { +When your user signs out, call [signOut()](/docs/reference/dart/auth-signout) to remove them from the browser session and any objects from localStorage: + ```dart Future signOut() async { await supabase.auth.signOut(); diff --git a/apps/reference/docs/guides/auth/auth-messagebird.mdx b/apps/reference/docs/guides/auth/auth-messagebird.mdx index b67591f0b73..9c7c2bb2756 100644 --- a/apps/reference/docs/guides/auth/auth-messagebird.mdx +++ b/apps/reference/docs/guides/auth/auth-messagebird.mdx @@ -172,7 +172,7 @@ values={[ ```js -let { user, error } = await supabase.auth.signIn({ +let { user, error } = await supabase.auth.signInWithPassword({ phone: '+13334445555', password: 'some-password', }) @@ -209,7 +209,7 @@ values={[ ```js -let { user, error } = await supabase.auth.signIn({ +let { user, error } = await supabase.auth.signInWithOtp({ phone: '+13334445555', }) ``` diff --git a/apps/reference/docs/guides/auth/auth-notion.mdx b/apps/reference/docs/guides/auth/auth-notion.mdx index 1f615f76bbd..31b5d76e778 100644 --- a/apps/reference/docs/guides/auth/auth-notion.mdx +++ b/apps/reference/docs/guides/auth/auth-notion.mdx @@ -17,9 +17,7 @@ Setting up Notion logins for your application consists of 3 parts: - Retrieve your OAuth client ID and OAuth client secret and add them to your [Supabase Project](https://app.supabase.com) - Add the login code to your [Supabase JS Client App](https://github.com/supabase/supabase-js) -## Steps - -### Create your notion integration +## Create your notion integration - Go to [developers.notion.com](https://developers.notion.com/). - Click "View my integrations" and login. @@ -33,7 +31,7 @@ Setting up Notion logins for your application consists of 3 parts: ![notion.so](/img/guides/auth-notion/notion-developer.png) -### Add the redirect uri +## Add the redirect URI - After selecting "Public integration", you should see an option to add "Redirect URIs". @@ -58,7 +56,7 @@ Your redirect uri should look like the following: `https://.supabas /> -### Add your Notion credentials into your Supabase Project +## Add your Notion credentials into your Supabase Project - Once you've created your notion integration, you should be able to retrieve the "OAuth client ID" and "OAuth client secret" from the "OAuth Domain and URIs" tab. @@ -71,27 +69,19 @@ Your redirect uri should look like the following: `https://.supabas - Enter the "OAuth client ID" and "OAuth client secret" obtained in the `client id` and `client secret` fields. - Click `Save` -### Add login code to your client app +## Add login code to your client app -The JavaScript client code is documented here: [Supabase OAuth Client Code](/docs/reference/javascript/auth-signin#sign-in-using-third-party-providers) - -```js -const { user, session, error } = await supabase.auth.signIn({ - provider: 'notion', -}) -``` - -Add this function which you can call from a button, link, or UI element. +When your user signs in, call [signInWithOAuth()](/docs/reference/javascript/auth-signinwithoauth) with `notion` as the `provider`: ```js async function signInWithNotion() { - const { user, session, error } = await supabase.auth.signIn({ + const { data, error } = await supabase.auth.signInWithOAuth({ provider: 'notion', }) } ``` -To log out: +When your user signs out, call [signOut()](/docs/reference/javascript/auth-signout) to remove them from the browser session and any objects from localStorage: ```js async function signout() { diff --git a/apps/reference/docs/guides/auth/auth-slack.mdx b/apps/reference/docs/guides/auth/auth-slack.mdx index c9568eaa593..c00e377747b 100644 --- a/apps/reference/docs/guides/auth/auth-slack.mdx +++ b/apps/reference/docs/guides/auth/auth-slack.mdx @@ -17,16 +17,14 @@ Setting up Slack logins for your application consists of 3 parts: - Add your Slack `API Key` and `API Secret Key` to your [Supabase Project](https://app.supabase.com). - Add the login code to your [Supabase JS Client App](https://github.com/supabase/supabase-js). -## Steps - -### Access your Slack Developer account +## Access your Slack Developer account - Go to [api.slack.com](https://api.slack.com/apps). - Click on `Your Apps` at the top right to log in. ![Slack Developer Portal.](/img/guides/auth-slack/slack-portal.png) -### Find your callback URL +## Find your callback URL The next step requires a callback URL, which looks like this: @@ -47,7 +45,7 @@ The next step requires a callback URL, which looks like this: /> -### Create a Slack OAuth app +## Create a Slack OAuth app - Go to [api.slack.com](https://api.slack.com/apps). - Click on `Create an App` @@ -71,7 +69,7 @@ Under `Redirect URLs`: - Paste your `Callback URL` then click `Add` - Click `Save URLs` -### Enter your Slack credentials into your Supabase Project +## Enter your Slack credentials into your Supabase Project - Go to your [Supabase Project Dashboard](https://app.supabase.com). - In the left sidebar, click the `Authentication` icon (near the top). @@ -81,27 +79,19 @@ Under `Redirect URLs`: - Enter your `Client ID` (`client_id`) and `Client Secret` (`client_secret`) saved in the previous step. - Click `Save`. -### Add login code to your client app +## Add login code to your client app -The JavaScript client code is documented here: [Supabase OAuth Client Code](/docs/reference/javascript/auth-signin#sign-in-using-third-party-providers). - -```js -const { user, session, error } = await supabase.auth.signIn({ - provider: 'slack', -}) -``` - -Add this function which you can call from a button, link, or UI element. +When your user signs in, call [signInWithOAuth()](/docs/reference/javascript/auth-signinwithoauth) with `slack` as the `provider`: ```js async function signInWithSlack() { - const { user, session, error } = await supabase.auth.signIn({ + const { data, error } = await supabase.auth.signInWithOAuth({ provider: 'slack', }) } ``` -To log out: +When your user signs out, call [signOut()](/docs/reference/javascript/auth-signout) to remove them from the browser session and any objects from localStorage: ```js async function signout() { diff --git a/apps/reference/docs/guides/auth/auth-spotify.mdx b/apps/reference/docs/guides/auth/auth-spotify.mdx index c617021e79b..cf282bea973 100644 --- a/apps/reference/docs/guides/auth/auth-spotify.mdx +++ b/apps/reference/docs/guides/auth/auth-spotify.mdx @@ -17,16 +17,14 @@ Setting up Spotify logins for your application consists of 3 parts: - Add your Spotify `API Key` and `API Secret Key` to your [Supabase Project](https://app.supabase.com). - Add the login code to your [Supabase JS Client App](https://github.com/supabase/supabase-js). -## Steps - -### Access your Spotify Developer account +## Access your Spotify Developer account - Log into [Spotify](https://spotify.com) - Access the [Spotify Developer Dashboard](https://developer.spotify.com/dashboard) ![Spotify Developer Portal.](/img/guides/auth-spotify/spotify-portal.png) -### Find your callback URL +## Find your callback URL The next step requires a callback URL, which looks like this: @@ -47,7 +45,7 @@ The next step requires a callback URL, which looks like this: /> -### Create a Spotify OAuth app +## Create a Spotify OAuth app - Log into [Spotify](https://spotify.com). - Go to the [Spotify Developer Dashboard](https://developer.spotify.com/dashboard) @@ -66,7 +64,7 @@ Under `Redirect URIs`: - Click `Add` - Click `Save` at the bottom -### Enter your Spotify credentials into your Supabase Project +## Enter your Spotify credentials into your Supabase Project - Go to your [Supabase Project Dashboard](https://app.supabase.com). - In the left sidebar, click the `Authentication` icon (near the top). @@ -76,27 +74,19 @@ Under `Redirect URIs`: - Enter your `Client ID` (`client_id`) and `Client Secret` (`client_secret`) saved in the previous step. - Click `Save`. -### Add login code to your client app +## Add login code to your client app -The JavaScript client code is documented here: [Supabase OAuth Client Code](/docs/reference/javascript/auth-signin#sign-in-using-third-party-providers). - -```js -const { user, session, error } = await supabase.auth.signIn({ - provider: 'spotify', -}) -``` - -Add this function which you can call from a button, link, or UI element. +When your user signs in, call [signInWithOAuth()](/docs/reference/javascript/auth-signinwithoauth) with `spotify` as the `provider`: ```js async function signInWithSpotify() { - const { user, session, error } = await supabase.auth.signIn({ + const { data, error } = await supabase.auth.signInWithOAuth({ provider: 'spotify', }) } ``` -To log out: +When your user signs out, call [signOut()](/docs/reference/javascript/auth-signout) to remove them from the browser session and any objects from localStorage: ```js async function signout() { diff --git a/apps/reference/docs/guides/auth/auth-twilio.mdx b/apps/reference/docs/guides/auth/auth-twilio.mdx index 685f6554746..96abd4aa723 100644 --- a/apps/reference/docs/guides/auth/auth-twilio.mdx +++ b/apps/reference/docs/guides/auth/auth-twilio.mdx @@ -189,7 +189,7 @@ values={[ ```js -let { user, error } = await supabase.auth.signIn({ +let { user, error } = await supabase.auth.signInWithPassword({ phone: '+13334445555', password: 'some-password', }) @@ -226,7 +226,7 @@ values={[ ```js -let { user, error } = await supabase.auth.signIn({ +let { user, error } = await supabase.auth.signInWithOtp({ phone: '+13334445555', }) ``` diff --git a/apps/reference/docs/guides/auth/auth-twitch.mdx b/apps/reference/docs/guides/auth/auth-twitch.mdx index ef76d915913..56a67e6c82c 100644 --- a/apps/reference/docs/guides/auth/auth-twitch.mdx +++ b/apps/reference/docs/guides/auth/auth-twitch.mdx @@ -17,9 +17,7 @@ Setting up Twitch logins for your application consists of 3 parts: - Add your Twitch OAuth Consumer keys to your [Supabase Project](https://app.supabase.com) - Add the login code to your [Supabase JS Client App](https://github.com/supabase/supabase-js) -## Steps - -### Access your Twitch Developer account +## Access your Twitch Developer account - Go to [dev.twitch.tv](https://dev.twitch.tv). - Click on `Log in with Twitch` at the top right to log in. @@ -31,7 +29,7 @@ Setting up Twitch logins for your application consists of 3 parts: ![Twitch Developer Console](/img/guides/auth-twitch/twitch-console.png) -### Find your callback URL +## Find your callback URL In the next step you require a callback URL, which looks like this: @@ -52,7 +50,7 @@ In the next step you require a callback URL, which looks like this: /> -### Create a Twitch Application +## Create a Twitch Application ![Twitch Developer Console](/img/guides/auth-twitch/twitch-console.png) @@ -65,7 +63,7 @@ In the next step you require a callback URL, which looks like this: - Select a category for your app. - Check the Captcha box and click `Create`. -### Retrieve your Twitch OAuth Client ID and Client Secret +## Retrieve your Twitch OAuth Client ID and Client Secret - Click `Manage` at the right of your application entry in the list. @@ -77,7 +75,7 @@ In the next step you require a callback URL, which looks like this: ![Get Client ID and Secret](/img/guides/auth-twitch/twitch-get-keys.png) -### Add your Twitch credentials into your Supabase Project +## Add your Twitch credentials into your Supabase Project - Go to your [Supabase Project Dashboard](https://app.supabase.com) - In the left sidebar, click the `Authentication` icon (near the top) @@ -87,27 +85,19 @@ In the next step you require a callback URL, which looks like this: - Enter your `client_id` and `client_secret` saved in the previous step - Click `Save` -### Add login code to your client app +## Add login code to your client app -The JavaScript client code is documented here: [Supabase OAuth Client Code](/docs/reference/javascript/auth-signin#sign-in-using-third-party-providers) - -```js -const { user, session, error } = await supabase.auth.signIn({ - provider: 'twitch', -}) -``` - -Add this function which you can call from a button, link, or UI element. +When your user signs in, call [signInWithOAuth()](/docs/reference/javascript/auth-signinwithoauth) with `twitch` as the `provider`: ```js async function signInWithTwitch() { - const { user, session, error } = await supabase.auth.signIn({ + const { data, error } = await supabase.auth.signInWithOAuth({ provider: 'twitch', }) } ``` -To log out: +When your user signs out, call [signOut()](/docs/reference/javascript/auth-signout) to remove them from the browser session and any objects from localStorage: ```js async function signout() { diff --git a/apps/reference/docs/guides/auth/auth-twitter.mdx b/apps/reference/docs/guides/auth/auth-twitter.mdx index d5f5726d756..88448a12eeb 100644 --- a/apps/reference/docs/guides/auth/auth-twitter.mdx +++ b/apps/reference/docs/guides/auth/auth-twitter.mdx @@ -17,16 +17,14 @@ Setting up Twitter logins for your application consists of 3 parts: - Add your Twitter `API Key` and `API Secret Key` to your [Supabase Project](https://app.supabase.com). - Add the login code to your [Supabase JS Client App](https://github.com/supabase/supabase-js). -## Steps - -### Access your Twitter Developer account +## Access your Twitter Developer account - Go to [developer.twitter.com](https://developer.twitter.com). - Click on `Sign in` at the top right to log in. ![Twitter Developer Portal.](/img/guides/auth-twitter/twitter-portal.png) -### Find your callback URL +## Find your callback URL The next step requires a callback URL, which looks like this: @@ -47,7 +45,7 @@ The next step requires a callback URL, which looks like this: /> -### Create a Twitter OAuth app +## Create a Twitter OAuth app - Click `+ Create Project`. - Enter your project name, click `Next`. @@ -67,7 +65,7 @@ The next step requires a callback URL, which looks like this: - Enter your `Privacy policy URL`. - Click `Save`. -### Enter your Twitter credentials into your Supabase Project +## Enter your Twitter credentials into your Supabase Project - Go to your [Supabase Project Dashboard](https://app.supabase.com). - In the left sidebar, click the `Authentication` icon (near the top). @@ -77,27 +75,19 @@ The next step requires a callback URL, which looks like this: - Enter your `API Key` (`client_id`) and `API Secret Key` (`client_secret`) saved in the previous step. - Click `Save`. -### Add login code to your client app +## Add login code to your client app -The JavaScript client code is documented here: [Supabase OAuth Client Code](/docs/reference/javascript/auth-signin#sign-in-using-third-party-providers). - -```js -const { user, session, error } = await supabase.auth.signIn({ - provider: 'twitter', -}) -``` - -Add this function which you can call from a button, link, or UI element. +When your user signs in, call [signInWithOAuth()](/docs/reference/javascript/auth-signinwithoauth) with `twitter` as the `provider`: ```js async function signInWithTwitter() { - const { user, session, error } = await supabase.auth.signIn({ + const { data, error } = await supabase.auth.signInWithOAuth({ provider: 'twitter', }) } ``` -To log out: +When your user signs out, call [signOut()](/docs/reference/javascript/auth-signout) to remove them from the browser session and any objects from localStorage: ```js async function signout() { diff --git a/apps/reference/docs/guides/auth/auth-vonage.mdx b/apps/reference/docs/guides/auth/auth-vonage.mdx index d1a71db6c2b..10fa9378c0c 100644 --- a/apps/reference/docs/guides/auth/auth-vonage.mdx +++ b/apps/reference/docs/guides/auth/auth-vonage.mdx @@ -163,7 +163,7 @@ values={[ ```js -let { user, error } = await supabase.auth.signIn({ +let { user, error } = await supabase.auth.signInWithPassword({ phone: '491512223334444', password: 'some-password', }) @@ -200,7 +200,7 @@ values={[ ```js -let { user, error } = await supabase.auth.signIn({ +let { user, error } = await supabase.auth.signInWithOtp({ phone: '491512223334444', }) ``` diff --git a/apps/reference/docs/guides/auth/auth-workos.mdx b/apps/reference/docs/guides/auth/auth-workos.mdx index 9e2ef7c79e7..422666106ad 100644 --- a/apps/reference/docs/guides/auth/auth-workos.mdx +++ b/apps/reference/docs/guides/auth/auth-workos.mdx @@ -21,27 +21,25 @@ The procedure consists of five broad steps: - Connect a WorkOS Supported Identity Provider - Add your WorkOS credentials into your Supabase project -## Steps - -### Create a WorkOS Organization +## Create a WorkOS Organization Log in to the dashboard and hop over to the Organizations tab to create and organization ![Create an Organization](/img/guides/auth-workos/workos-create-organization.png) -### Obtain the Client ID and configure Redirect URI +## Obtain the Client ID and configure Redirect URI Head over to the Configuration tab and configure the redirect URI.The redirect URI should look like `https://.supabase.co/auth/v1/callback` Note that this is distinct from the redirect URI referred to in the Supabase dashboard ![Fetch Client ID and configure Redirect URI](/img/guides/auth-workos/workos-clientid-redirect-uri.png) -### Obtain the WorkOS Secret +## Obtain the WorkOS Secret Head over to the API Keys page and obtain the secret key. ![WorkOS Secret Key](/img/guides/auth-workos/workos-secret-key.png) -### Connect a WorkOS Supported Identity Provider +## Connect a WorkOS Supported Identity Provider Set up the identity provider by visiting the setup link. @@ -49,7 +47,7 @@ Set up the identity provider by visiting the setup link. You can pick between any one of the many identity providers that WorkOS supports. -### Add your WorkOS credentials into your Supabase Project +## Add your WorkOS credentials into your Supabase Project - Go to your [Supabase Project Dashboard](https://app.supabase.com) - In the left sidebar, click the `Authentication` icon (near the top) @@ -58,42 +56,30 @@ You can pick between any one of the many identity providers that WorkOS supports - Enter the `Client ID`, `Secret`, and `WorkOS URL` saved in the previous steps. The ``WorkOS URL` setting should be set to https://api.workos.com/ - Click `Save` -### Add login code to your client app +## Add login code to your client app -The JavaScript client code is documented in the [Supabase OAuth Reference](/docs/reference/javascript/auth-signin#sign-in-using-third-party-providers). Note that you only need to include one of the three parameters: `connection`, `organization`, and `provider`. -You can refer to the [WorkOS Documentation](https://workos.com/docs/reference/sso/authorize/) to learn more about the different methods. - -```js -const { user, session, error } = await supabase.auth.signIn( - { - provider: 'workos', - }, - { - connection: '', - organization: '', - } -) -``` - -Add a function which you can call from a button, link, or UI element. +When your user signs in, call [signInWithOAuth()](/docs/reference/javascript/auth-signinwithoauth) with `workos` as the `provider`: ```js async function signInWithWorkOS() { - const { user, session, error } = await supabase.auth.signIn( + const { data, error } = await supabase.auth.signInWithOAuth( { provider: 'workos', + options: { + queryParams: { + connection: '', + organization: '', + } + } }, - { - connection: '', - organization: '', - } ) } ``` -To log out: +Refer to the [WorkOS Documentation](https://workos.com/docs/reference/sso/authorize/) to learn more about the different methods. + +When your user signs out, call [signOut()](/docs/reference/javascript/auth-signout) to remove them from the browser session and any objects from localStorage: ```js async function signout() { diff --git a/apps/reference/docs/guides/auth/auth-zoom.mdx b/apps/reference/docs/guides/auth/auth-zoom.mdx index cab2ad3e6f5..98763329bc8 100644 --- a/apps/reference/docs/guides/auth/auth-zoom.mdx +++ b/apps/reference/docs/guides/auth/auth-zoom.mdx @@ -17,16 +17,14 @@ Setting up Zoom logins for your application consists of 3 parts: - Add your Zoom OAuth keys to your [Supabase Project](https://app.supabase.com) - Add the login code to your [Supabase JS Client App](https://github.com/supabase/supabase-js) -## Steps - -### Access your Zoom Developer account +## Access your Zoom Developer account - Go to [marketplace.zoom.us](https://marketplace.zoom.us/). - Click on `Sign In` at the top right to log in. ![Zoom Developer Portal.](/img/guides/auth-zoom/zoom-portal.png) -### Find your callback URL +## Find your callback URL The next step requires a callback URL, which looks like this: @@ -47,7 +45,7 @@ The next step requires a callback URL, which looks like this: /> -### Create a Zoom Oauth App +## Create a Zoom Oauth App - Go to [marketplace.zoom.us](https://marketplace.zoom.us/). - Click on `Sign In` at the top right to log in. @@ -67,7 +65,7 @@ Under `Redirect URL for OAuth` - Paste your `Callback URL` - Click `Continue` -### Enter your Zoom credentials into your Supabase Project +## Enter your Zoom credentials into your Supabase Project - Go to your [Supabase Project Dashboard](https://app.supabase.com) - In the left sidebar, click the `Authentication` icon (near the top) @@ -77,27 +75,19 @@ Under `Redirect URL for OAuth` - Enter your `Zoom Client ID` and `Zoom Client Secret` saved in the previous step - Click `Save` -### Add login code to your client app +## Add login code to your client app -The JavaScript client code is documented here: [Supabase OAuth Client Code](/docs/reference/javascript/auth-signin#sign-in-using-third-party-providers) - -```js -const { user, session, error } = await supabase.auth.signIn({ - provider: 'zoom', -}) -``` - -Add this function which you can call from a button, link, or UI element. +When your user signs in, call [signInWithOAuth()](/docs/reference/javascript/auth-signinwithoauth) with `zoom` as the `provider`: ```js async function signInWithZoom() { - const { user, session, error } = await supabase.auth.signIn({ + const { data, error } = await supabase.auth.signInWithOAuth({ provider: 'zoom', }) } ``` -To log out: +When your user signs out, call [signOut()](/docs/reference/javascript/auth-signout) to remove them from the browser session and any objects from localStorage: ```js async function signout() { diff --git a/apps/reference/docs/guides/cli/cicd-workflow.mdx b/apps/reference/docs/guides/cli/cicd-workflow.mdx index 875d240c300..07afed16df8 100644 --- a/apps/reference/docs/guides/cli/cicd-workflow.mdx +++ b/apps/reference/docs/guides/cli/cicd-workflow.mdx @@ -348,6 +348,24 @@ Once pushed, check that the migration version is up to date for both local and r supabase migration list ``` +### Permission denied on db remote commit + +If you have been using Supabase hosted projects for a long time, you might encounter the following permission error when executing `db remote commit`. + +```bash +Error: Error running pg_dump on remote database: pg_dump: error: query failed: ERROR: permission denied for table _type + +pg_dump: error: query was: LOCK TABLE "graphql"."_type" IN ACCESS SHARE MODE +``` + +To resolve this error, you need to grant `postgres` role permissions to `graphql` schema. You can do that by running the following query from Supabase dashboard's SQL Editor. + +```sql +grant all on all tables in schema graphql to postgres, anon, authenticated, service_role; +grant all on all functions in schema graphql to postgres, anon, authenticated, service_role; +grant all on all sequences in schema graphql to postgres, anon, authenticated, service_role; +``` + ### Permission denied on db push If you created a table through Supabase dashboard, and your new migration script contains `ALTER TABLE` statements, you might run into permission error when applying them on staging or production databases. @@ -358,12 +376,14 @@ ERROR: must be owner of table employees (SQLSTATE 42501); while executing migrat This is because tables created through Supabase dashboard are owned by `supabase_admin` role while the migration scripts executed through CLI are under `postgres` role. -One way to solve this is to grant `postgres` role additional privileges through the SQL Editor available on Supabase dashboard. For example, the following command grants postgres permissions to alter any table in the public schema. +One way to solve this is to reassign the owner of those tables to `postgres` role. For example, if your table is named `users` in the public schema, you can run the following command to reassign owner. ```sql -GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO postgres; +ALTER TABLE users OWNER TO postgres; ``` +Apart from tables, you also need to reassign owner of other entities using their respective commands, including [types](https://www.postgresql.org/docs/current/sql-alterschema.html), [functions](https://www.postgresql.org/docs/current/sql-alterroutine.html), and [schemas](https://www.postgresql.org/docs/current/sql-altertype.html). + ### Rebasing new migrations Sometimes your teammate may merge a new migration file to git main branch, and now you need to rebase your local schema changes on top. diff --git a/apps/reference/docs/guides/cli/local-development.mdx b/apps/reference/docs/guides/cli/local-development.mdx index 7883f25647c..a4d7d7fc38e 100644 --- a/apps/reference/docs/guides/cli/local-development.mdx +++ b/apps/reference/docs/guides/cli/local-development.mdx @@ -110,7 +110,7 @@ http://localhost:54321/auth/v1/ # Auth (GoTrue) :::note To access the database from an edge function in your local Supabase setup, replace `localhost` with `host.docker.internal`. ::: - + ## Database migrations Database changes are managed through "migrations." Database migrations are a common way of tracking changes to your database over time. diff --git a/apps/reference/docs/guides/database/connecting-to-postgres.mdx b/apps/reference/docs/guides/database/connecting-to-postgres.mdx index 3d05bfa1c74..e6882cf3883 100644 --- a/apps/reference/docs/guides/database/connecting-to-postgres.mdx +++ b/apps/reference/docs/guides/database/connecting-to-postgres.mdx @@ -112,7 +112,12 @@ This is the most granular option. Connections are returned to the pool after eve 3. Find your Connection Info and Connection String. Connection pooling is on port `6543`. ## Connecting with SSL diff --git a/apps/reference/docs/guides/database/migrating-between-projects.mdx b/apps/reference/docs/guides/database/migrating-between-projects.mdx index 536fb45f810..c7a877a0462 100644 --- a/apps/reference/docs/guides/database/migrating-between-projects.mdx +++ b/apps/reference/docs/guides/database/migrating-between-projects.mdx @@ -10,27 +10,49 @@ Migrating projects can be achieved using standard PostgreSQL tooling. This is pa - Install [Postgres](https://www.postgresql.org/download/) so you can run `psql` and `pg_dump`. - Create a new [Supabase project](https://app.supabase.com). -- Enable [Database Webhooks](https://app.supabase.com/project/_/database/hooks) in your new project if you enabled them in your old project. - Store the old project's database URL as `$OLD_DB_URL` and the new project's as `$NEW_DB_URL`. ## Migrate the database -In your old project: -1. Run `ALTER ROLE postgres SUPERUSER` in the [SQL editor](https://app.supabase.com/project/_/sql). -1. Run `pg_dump --clean --if-exists --quote-all-identifiers -h $OLD_DB_URL -U postgres > dump.sql` from your terminal. -1. Run `ALTER ROLE postgres NOSUPERUSER` in the [SQL editor](https://app.supabase.com/project/_/sql). +1. Enable [Database Webhooks](https://app.supabase.com/project/_/database/hooks) in your new project if you enabled them in your old project. +2. In your new project, enable all extensions that were enabled in your old project. +3. Run the following command from your terminal: -In your new project: -1. Run `ALTER ROLE postgres SUPERUSER` in the [SQL editor](https://app.supabase.com/project/_/sql). -1. Run `psql -h $NEW_DB_URL -U postgres -f dump.sql` from your terminal. -1. Run `TRUNCATE storage.objects` in the [SQL editor](https://app.supabase.com/project/_/sql). -1. Run `ALTER ROLE postgres NOSUPERUSER` in the [SQL editor](https://app.supabase.com/project/_/sql). +```sh +set -euo pipefail -## Migrate storage objects +pg_dump \ + --clean \ + --if-exists \ + --quote-all-identifiers \ + --exclude-table-data 'storage.objects' \ + --exclude-schema 'extensions|graphql|graphql_public|net|pgbouncer|pgsodium|pgsodium_masks|realtime|supabase_functions|pg_toast|pg_catalog|information_schema' \ + --schema '*' \ + --dbname "$OLD_DB_URL" \ +| sed 's/^DROP SCHEMA IF EXISTS "auth";$/-- DROP SCHEMA IF EXISTS "auth";/' \ +| sed 's/^DROP SCHEMA IF EXISTS "storage";$/-- DROP SCHEMA IF EXISTS "storage";/' \ +| sed 's/^CREATE SCHEMA "auth";$/-- CREATE SCHEMA "auth";/' \ +| sed 's/^CREATE SCHEMA "storage";$/-- CREATE SCHEMA "storage";/' \ +| sed 's/^ALTER DEFAULT PRIVILEGES FOR ROLE "supabase_admin"/-- ALTER DEFAULT PRIVILEGES FOR ROLE "supabase_admin"/' \ +> dump.sql -The new project has the old project's Storage buckets, but the Storage objects need to be migrated manually. Use this script to move storage objects from one project to another. If you have more than 10k objects, we can move the objects for you. Just contact us at [support@supabase.io](mailto:support@supabase.io). +psql \ + --single-transaction \ + --variable ON_ERROR_STOP=1 \ + --file dump.sql \ + --dbname "$NEW_DB_URL" +``` + +## Enable publication on tables + +Replication for Realtime is disabled for all tables in your new project. On the [Replication](https://app.supabase.com/project/_/database/replication) page in the Dashboard, select your new project and enable replication for tables that were enabled in your old project. + +## Migrate Storage objects + +The new project has the old project's Storage buckets, but the Storage objects need to be migrated manually. Use this script to move storage objects from one project to another. If you have more than 10k objects, we can move the objects for you. Just contact us at [support@supabase.com](mailto:support@supabase.com). ```js +// npm install @supabase/supabase-js@1 const { createClient } = require('@supabase/supabase-js') const OLD_PROJECT_URL = 'https://xxx.supabase.co' @@ -94,4 +116,3 @@ const NEW_PROJECT_SERVICE_KEY = 'new-project-service-key-yyy' } })() ``` - diff --git a/apps/reference/docs/guides/functions.mdx b/apps/reference/docs/guides/functions.mdx index b88a5c21a29..0391adce248 100644 --- a/apps/reference/docs/guides/functions.mdx +++ b/apps/reference/docs/guides/functions.mdx @@ -2,33 +2,11 @@ id: functions title: Edge Functions description: 'Globally distributed TypeScript functions.' +sidebar_label: Overview --- import Tabs from '@theme/Tabs' import TabItem from '@theme/TabItem' -import ButtonCard from '@site/src/components/ButtonCard' -const examples = [ - { - name: 'With supabase-js', - description: 'Use the Supabase client inside your Edge Function.', - href: 'https://github.com/supabase/examples/tree/main/supabase-js-v1/edge-functions', - }, - { - name: 'With CORS headers', - description: 'Send CORS headers for invoking from the browser.', - href: 'https://github.com/supabase/examples/tree/main/supabase-js-v1/edge-functions/supabase/functions/browser-with-cors', - }, - { - name: 'React Native with Stripe', - description: 'Full example for using Supabase and Stripe, with Expo.', - href: 'https://github.com/supabase-community/expo-stripe-payments-with-supabase-functions', - }, - { - name: 'Flutter with Stripe', - description: 'Full example for using Supabase and Stripe, with Flutter.', - href: 'https://github.com/supabase-community/flutter-stripe-payments-with-supabase-functions', - }, -] Edge Functions are server-side TypeScript functions, distributed globally at the edge—close to your users. They can be used for listening to webhooks or integrating your Supabase project with third-parties [like Stripe](https://github.com/supabase/supabase/tree/master/examples/edge-functions/supabase/functions/stripe-webhooks). @@ -89,7 +67,7 @@ The command outputs a URL to the Supabase Dashboard which you can open to find v By default, Edge Functions require a valid JWT in the authorization header. This header is automatically set when invoking your function via a Supabase client library. -If you want to use Edge Functions to handle webhooks (e.g. [Stripe payment webhooks](https://github.com/supabase/examples/tree/main/supabase-js-v1/edge-functions/supabase/functions/stripe-webhooks), or [chat bot webhooks](https://github.com/supabase/examples/tree/main/supabase-js-v1/edge-functions/supabase/functions/telegram-bot) etc.), you need to pass the `--no-verify-jwt` flag when deploying your function. +If you want to use Edge Functions to handle webhooks (e.g. [Stripe payment webhooks](https://github.com/supabase/supabase/tree/master/examples/edge-functions/supabase/functions/stripe-webhooks) etc.), you need to pass the `--no-verify-jwt` flag when deploying your function. ::: @@ -234,26 +212,6 @@ To see all the secrets which you have set remotely, use [`supabase secrets list` supabase secrets list ``` -## Examples - -You can find a list of useful [Edge Function Examples](https://github.com/supabase/examples/tree/main/supabase-js-v1/edge-functions) in our GitHub repository. - -
-
- {examples.map((x) => ( -
- -
- ))} -
-
- ## Suggestions ### Database Functions vs Edge Functions @@ -289,6 +247,8 @@ We recommend using hyphens to name functions because hyphens are the most URL-fr We recommend adding a check to handle [CORS Preflight](https://developer.mozilla.org/en-US/docs/Glossary/Preflight_request) requests in your edge function to be able to invoke the function from browsers. +See the [example on GitHub](https://github.com/supabase/supabase/blob/master/examples/edge-functions/supabase/functions/browser-with-cors/index.ts). + ```ts export const corsHeaders = { 'Access-Control-Allow-Origin': '*', @@ -310,5 +270,5 @@ serve(async (req) => { - Cannot write to File System - Edge Functions - Local development - only one function at a time - - Supabase Functions only supports `POST` requests. - - Supabase Functions do not support HTML responses. + - Supabase Functions only supports `POST`, `OPTIONS`, and `GET` requests. + - Serving of HTML content is not supported (`GET` requests that return `text/html` will be rewritten to `text/plain`). diff --git a/apps/reference/docs/guides/functions/auth.mdx b/apps/reference/docs/guides/functions/auth.mdx new file mode 100644 index 00000000000..da021238a02 --- /dev/null +++ b/apps/reference/docs/guides/functions/auth.mdx @@ -0,0 +1,63 @@ +--- +id: auth +title: Auth +description: Supabase Edge Functions and Auth. +--- + +Edge Functions work seamlessly with [Supabase Auth](/docs/guides/auth), allowing you to identify which user called your function. + +When [invoking](/docs/reference/javascript/invoke) a function with one of the [client libraries](/docs/reference), the logged in user's JWT is automatically attached to the function call and becomes accessible within your function. + +This is important, for example, to identify which customer's credit card should be charged. You can see this concept end-to-end in our [Stripe example app](https://github.com/supabase-community/expo-stripe-payments-with-supabase-functions). + +## Auth Context & RLS + +By creating a supabase client with the auth context from the function, you can do two things: + +1. Get the user object. +2. Run queries in the context of the user with [Row Level Security (RLS)](/docs/guides/auth/row-level-security) policies enforced. + +```js title="supabase/functions/select-from-table-with-auth-rls/index.ts" +import { serve } from 'https://deno.land/std@0.131.0/http/server.ts' +import { createClient } from 'https://esm.sh/@supabase/supabase-js@2.0.0-rc.12' + +serve(async (req: Request) => { + try { + // Create a Supabase client with the Auth context of the logged in user. + const supabaseClient = createClient( + // Supabase API URL - env var exported by default. + Deno.env.get('SUPABASE_URL') ?? '', + // Supabase API ANON KEY - env var exported by default. + Deno.env.get('SUPABASE_ANON_KEY') ?? '', + // Create client with Auth context of the user that called the function. + // This way your row-level-security (RLS) policies are applied. + // highlight-next-line + { global: { headers: { Authorization: req.headers.get('Authorization')! } } } + ) + // Now we can get the session or user object + // highlight-start + const { + data: { user }, + } = await supabaseClient.auth.getUser() + // highlight-end + + // And we can run queries in the context of our authenticated user + // highlight-start + const { data, error } = await supabaseClient.from('users').select('*') + if (error) throw error + // highlight-end + + return new Response(JSON.stringify({ user, data }), { + headers: { 'Content-Type': 'application/json' }, + status: 200, + }) + } catch (error) { + return new Response(JSON.stringify({ error: error.message }), { + headers: { 'Content-Type': 'application/json' }, + status: 400, + }) + } +}) +``` + +See the [example on GitHub](https://github.com/supabase/supabase/blob/master/examples/edge-functions/supabase/functions/select-from-table-with-auth-rls/index.ts). diff --git a/apps/reference/docs/guides/functions/cicd-workflow.mdx b/apps/reference/docs/guides/functions/cicd-workflow.mdx new file mode 100644 index 00000000000..15950b15b51 --- /dev/null +++ b/apps/reference/docs/guides/functions/cicd-workflow.mdx @@ -0,0 +1,36 @@ +--- +id: cicd-workflow +title: CI / CD Workflow +description: How to deploy Supabase Edge Functions with a CI / CD pipeline. +--- + +As described in the Supabase CLI [CI / CD Workflow documentation](/docs/guides/cli/cicd-workflow), you can use the [`setup-cli` GitHub Action](https://github.com/marketplace/actions/supabase-cli-action) to run Supabase CLI commands in your GitHub Actions, for example to deploy a Supabase Edge Function: + +```yaml +name: Deploy Function + +on: + push: + branches: + - main + workflow_dispatch: + +jobs: + deploy: + runs-on: ubuntu-latest + + env: + SUPABASE_ACCESS_TOKEN: ${{ secrets.SUPABASE_ACCESS_TOKEN }} + PROJECT_ID: zdtdtxajzydjqzuktnqx + + steps: + - uses: actions/checkout@v3 + + - uses: supabase/setup-cli@v1 + with: + version: 1.0.0 + + - run: supabase functions deploy your-function-name --project-ref $PROJECT_ID +``` + +See the [example on GitHub](https://github.com/supabase/supabase/blob/master/examples/edge-functions/.github/workflows/deploy.yaml). diff --git a/apps/reference/docs/guides/functions/examples.mdx b/apps/reference/docs/guides/functions/examples.mdx new file mode 100644 index 00000000000..e56dc4da517 --- /dev/null +++ b/apps/reference/docs/guides/functions/examples.mdx @@ -0,0 +1,47 @@ +--- +id: examples +title: Examples +description: Useful Supabase Edge Functions Examples. +--- + +import ButtonCard from '@site/src/components/ButtonCard' +const examples = [ + { + name: 'With supabase-js', + description: 'Use the Supabase client inside your Edge Function.', + href: 'https://github.com/supabase/supabase/blob/master/examples/edge-functions/supabase/functions/select-from-table-with-auth-rls/index.ts', + }, + { + name: 'With CORS headers', + description: 'Send CORS headers for invoking from the browser.', + href: 'https://github.com/supabase/supabase/blob/master/examples/edge-functions/supabase/functions/browser-with-cors/index.ts', + }, + { + name: 'React Native with Stripe', + description: 'Full example for using Supabase and Stripe, with Expo.', + href: 'https://github.com/supabase-community/expo-stripe-payments-with-supabase-functions', + }, + { + name: 'Flutter with Stripe', + description: 'Full example for using Supabase and Stripe, with Flutter.', + href: 'https://github.com/supabase-community/flutter-stripe-payments-with-supabase-functions', + }, +] + +You can find a list of useful [Edge Function Examples](https://github.com/supabase/supabase/tree/master/examples/edge-functions) in our GitHub repository. + +
+
+ {examples.map((x) => ( +
+ +
+ ))} +
+
diff --git a/apps/reference/docs/guides/hosting/platform.mdx b/apps/reference/docs/guides/hosting/platform.mdx index 9304734111f..bbfe32e34f8 100644 --- a/apps/reference/docs/guides/hosting/platform.mdx +++ b/apps/reference/docs/guides/hosting/platform.mdx @@ -29,17 +29,22 @@ Organizations are a way to group your projects. Each organization can be configu You can invite your team members into your organizations to collaborate on projects. You can also assign roles to your team members with different access levels. The table below shows the corresponding permissions for each available role in the Dashboard. | Permissions | Owner | Administrator | Developer | | ------------------------ | ----- | ------------- | --------- | -| **Organization** | +| **Organization** | | Change organization name | ✅ | | | | Delete organization | ✅ | | | -| **Members** | +| **Members** | | Add an Owner | ✅ | | | | Remove an Owner | ✅ | | | | Add an Adminstrator | ✅ | ✅ | | @@ -48,7 +53,7 @@ You can also assign roles to your team members with different access levels. The | Remove a Developer | ✅ | ✅ | | | Revoke an invite | ✅ | ✅ | | | Resend an invite | ✅ | ✅ | | -| **Billing** | +| **Billing** | | Read invoices | ✅ | ✅ | ✅ | | Read billing email | ✅ | ✅ | ✅ | | Change billing email | ✅ | | | @@ -60,7 +65,7 @@ You can also assign roles to your team members with different access levels. The | Update tax codes | ✅ | ✅ | | | Read payment methods | ✅ | ✅ | ✅ | | Update payment methods | ✅ | ✅ | | -| **Projects** | +| **Projects** | | Create a project | ✅ | ✅ | | | Delete a project | ✅ | ✅ | | | Update a project | ✅ | ✅ | | diff --git a/apps/reference/docs/guides/integrations/authsignal.mdx b/apps/reference/docs/guides/integrations/authsignal.mdx index ccf1f2e94f4..c98930959f3 100644 --- a/apps/reference/docs/guides/integrations/authsignal.mdx +++ b/apps/reference/docs/guides/integrations/authsignal.mdx @@ -346,7 +346,7 @@ export default function HomePage({ user, isEnrolled }: Props) {
Signed in as: {user?.email}
- -
- - - `, + templateUrl: './auth.component.html', + styleUrls: ['./auth.component.css'], }) -export class AuthComponent { - loading = false +export class AuthComponent implements OnInit { + loading = false; - constructor(private readonly supabase: SupabaseService) {} + signInForm = this.formBuilder.group({ + email: '', + }); - async handleLogin(input: string) { + constructor( + private readonly supabase: SupabaseService, + private readonly formBuilder: FormBuilder + ) {} + + ngOnInit(): void {} + + async onSubmit(): Promise { try { - this.loading = true - await this.supabase.signIn(input) - alert('Check your email for the login link!') + this.loading = true; + const email = this.signInForm.value.email as string; + const { error } = await this.supabase.signIn(email); + if (error) throw error; + alert('Check your email for the login link!'); } catch (error) { - alert(error.error_description || error.message) + if (error instanceof Error) { + alert(error.message); + } } finally { - this.loading = false + this.signInForm.reset(); + this.loading = false; } } } ``` +```html title="src/app/auth/auth.component.html" +
+
+

Supabase + Angular

+

Sign in via magic link with your email below

+
+
+ + +
+
+ +
+
+
+
-
- - -
-
- - -
-
- - -
- -
- -
- -
- -
- - `, + templateUrl: './account.component.html', + styleUrls: ['./account.component.css'], }) export class AccountComponent implements OnInit { - loading = false - profile: Profile | undefined + loading = false; + profile!: Profile; - @Input() session: Session | undefined + @Input() + session!: AuthSession; - constructor(private readonly supabase: SupabaseService) {} + updateProfileForm = this.formBuilder.group({ + username: '', + website: '', + avatar_url: '', + }); - ngOnInit() { - this.getProfile() + constructor( + private readonly supabase: SupabaseService, + private formBuilder: FormBuilder + ) {} + + async ngOnInit(): Promise { + await this.getProfile(); + + const { username, website, avatar_url } = this.profile; + this.updateProfileForm.patchValue({ + username, + website, + avatar_url, + }); } async getProfile() { try { - this.loading = true - let { data: profile, error, status } = await this.supabase.profile + this.loading = true; + const { user } = this.session; + let { data: profile, error, status } = await this.supabase.profile(user); if (error && status !== 406) { - throw error + throw error; } if (profile) { - this.profile = profile + this.profile = profile; } } catch (error) { - alert(error.message) + if (error instanceof Error) { + alert(error.message); + } } finally { - this.loading = false + this.loading = false; } } - async updateProfile( - username: string, - website: string, - avatar_url: string = '' - ) { + async updateProfile(): Promise { try { - this.loading = true - await this.supabase.updateProfile({ username, website, avatar_url }) + this.loading = true; + const { user } = this.session; + + const username = this.updateProfileForm.value.username as string; + const website = this.updateProfileForm.value.website as string; + const avatar_url = this.updateProfileForm.value.avatar_url as string; + + const { error } = await this.supabase.updateProfile({ + id: user.id, + username, + website, + avatar_url, + }); + if (error) throw error; } catch (error) { - alert(error.message) + if (error instanceof Error) { + alert(error.message); + } } finally { - this.loading = false + this.loading = false; } } async signOut() { - await this.supabase.signOut() + await this.supabase.signOut(); } } ``` +```html title="src/app/account/account.component.html" +
+
+ + +
+
+ + +
+
+ + +
+ +
+ +
+ +
+ +
+
+``` + ### Launch! Now that we have all the components in place, let's update **AppComponent**: ```ts title="src/app/app.component.ts" -import { Component, OnInit } from '@angular/core' -import { SupabaseService } from './supabase.service' +import { Component, OnInit } from '@angular/core'; +import { SupabaseService } from './supabase.service'; @Component({ selector: 'app-root', - template: ` -
- - - - -
- `, + templateUrl: './app.component.html', + styleUrls: ['./app.component.css'], }) export class AppComponent implements OnInit { - session = this.supabase.session + title = 'angular-user-management'; + + session = this.supabase.session; constructor(private readonly supabase: SupabaseService) {} ngOnInit() { - this.supabase.authChanges((_, session) => (this.session = session)) + this.supabase.authChanges((_, session) => (this.session = session)); } } ``` +```html title="src/app/app.component.html" +
+ + + + +
+``` + +`app.module.ts` also needs to be modified to include the `ReactiveFormsModule` from the `@angular/forms` package. + +```ts title="src/app/app.module.ts" +import { NgModule } from '@angular/core'; +import { BrowserModule } from '@angular/platform-browser'; + +import { AppComponent } from './app.component'; +import { AuthComponent } from './auth/auth.component'; +import { AccountComponent } from './account/account.component'; +import { ReactiveFormsModule } from '@angular/forms'; +import { AvatarComponent } from './avatar/avatar.component'; + +@NgModule({ + declarations: [ + AppComponent, + AuthComponent, + AccountComponent, + AvatarComponent, + ], + imports: [BrowserModule, ReactiveFormsModule], + providers: [], + bootstrap: [AppComponent], +}) +export class AppModule {} +``` + Once that's done, run this in a terminal window: ```bash @@ -474,110 +558,141 @@ Every Supabase project is configured with [Storage](/docs/guides/storage) for ma Let's create an avatar for the user so that they can upload a profile photo. Create an **AvatarComponent** with `ng g c avatar` Angular CLI command. -```ts title="src/app/avatar.component.ts" -import { Component, EventEmitter, Input, Output } from '@angular/core' -import { SupabaseService } from './supabase.service' -import { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser' +```ts title="src/app/avatar/avatar.component.ts" +import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; +import { SafeResourceUrl, DomSanitizer } from '@angular/platform-browser'; +import { SupabaseService } from '../supabase.service'; @Component({ selector: 'app-avatar', - template: ` -
- Avatar -
-
-
- - -
- `, + templateUrl: './avatar.component.html', + styleUrls: ['./avatar.component.css'], }) -export class AvatarComponent { - _avatarUrl: SafeResourceUrl | undefined - uploading = false +export class AvatarComponent implements OnInit { + _avatarUrl: SafeResourceUrl | undefined; + uploading = false; @Input() - set avatarUrl(url: string | undefined) { + set avatarUrl(url: string | null) { if (url) { - this.downloadImage(url) + this.downloadImage(url); } } - @Output() upload = new EventEmitter() + @Output() upload = new EventEmitter(); constructor( private readonly supabase: SupabaseService, private readonly dom: DomSanitizer ) {} + ngOnInit(): void {} + async downloadImage(path: string) { try { - const { data } = await this.supabase.downLoadImage(path) + const { data } = await this.supabase.downLoadImage(path); if (data instanceof Blob) { this._avatarUrl = this.dom.bypassSecurityTrustResourceUrl( URL.createObjectURL(data) - ) + ); } } catch (error) { - console.error('Error downloading image: ', error.message) + if (error instanceof Error) { + console.error('Error downloading image: ', error.message); + } } } async uploadAvatar(event: any) { try { - this.uploading = true + this.uploading = true; if (!event.target.files || event.target.files.length === 0) { - throw new Error('You must select an image to upload.') + throw new Error('You must select an image to upload.'); } - const file = event.target.files[0] - const fileExt = file.name.split('.').pop() - const fileName = `${Math.random()}.${fileExt}` - const filePath = `${fileName}` + const file = event.target.files[0]; + const fileExt = file.name.split('.').pop(); + const filePath = `${Math.random()}.${fileExt}`; - await this.supabase.uploadAvatar(filePath, file) - this.upload.emit(filePath) + await this.supabase.uploadAvatar(filePath, file); + this.upload.emit(filePath); } catch (error) { - alert(error.message) + if (error instanceof Error) { + alert(error.message); + } } finally { - this.uploading = false + this.uploading = false; } } } ``` +```html title="src/app/avatar/avatar.component.html" +
+ Avatar +
+
+
+ + +
+``` + ### Add the new widget And then we can add the widget on top of the **AccountComponent** html template: -```ts title="src/app/account.component.ts" -template: ` - - +```html title="src/app/account.component.html" +
+ + + +
+``` - -` +And add an `updateAvatar` function along with an `avatarUrl` getter to the **AccountComponent** typescript file: + +```ts title="src/app/account.component.ts" +@Component({ + selector: 'app-account', + templateUrl: './account.component.html', + styleUrls: ['./account.component.css'], +}) +export class AccountComponent implements OnInit { + // ... + get avatarUrl() { + return this.updateProfileForm.value.avatar_url as string; + } + + async updateAvatar(event: string): Promise { + this.updateProfileForm.patchValue({ + avatar_url: event, + }); + await this.updateProfile(); + } + // ... +} ``` ## Next steps diff --git a/apps/reference/docs/guides/with-expo.mdx b/apps/reference/docs/guides/with-expo.mdx index 6419ac9d0cc..95c7650e9b2 100644 --- a/apps/reference/docs/guides/with-expo.mdx +++ b/apps/reference/docs/guides/with-expo.mdx @@ -8,12 +8,6 @@ sidebar_label: Expo import Tabs from '@theme/Tabs' import TabItem from '@theme/TabItem' -:::note - -This guide uses supabase-js v2.0.0 Release Candidate (RC). - -::: - ## Intro This example provides the steps to build a simple user management app (from scratch!) using Supabase and React Native. It includes: @@ -155,7 +149,7 @@ cd expo-user-management Then let's install the additional dependencies: [supabase-js](https://github.com/supabase/supabase-js) ```bash -npm install @supabase/supabase-js@rc +npm install @supabase/supabase-js npm install react-native-elements @react-native-async-storage/async-storage react-native-url-polyfill ``` @@ -165,7 +159,7 @@ These variables will be exposed on the browser, and that's completely fine since [Row Level Security](/docs/guides/auth#row-level-security) enabled on our Database. ```ts title="lib/supabase.ts" -import AsyncStorage from '@react-native-async-storage/async-storage'; +import AsyncStorage from '@react-native-async-storage/async-storage' import { createClient } from '@supabase/supabase-js' const supabaseUrl = YOUR_REACT_NATIVE_SUPABASE_URL @@ -243,10 +237,18 @@ export default function Auth() { /> - - - + + + ) +} +``` + + + + +Wrap your `pages/_app.tsx` component with the `SessionContextProvider` component: + +```jsx title="pages/_app.tsx" +import { createBrowserSupabaseClient } from '@supabase/auth-helpers-nextjs' +// highlight-next-line +import { SessionContextProvider, Session } from '@supabase/auth-helpers-react' + +function MyApp({ + Component, + pageProps, +}: AppProps<{ + // highlight-next-line + initialSession: Session, +}>) { + const [supabaseClient] = useState(() => createBrowserSupabaseClient()) + + return ( + + + + ) +} +``` + +See the [Auth Helpers docs](/docs/guides/auth/auth-helpers/nextjs#usage-with-typescript) for more details on usage with TypeScript. + + + + +#### Supabase Auth UI + +We can use the [Supabase Auth UI](https://supabase.com/docs/guides/auth/auth-helpers/auth-ui) a pre-built React component for authenticating users via OAuth, email, and magic links. + +Install the Supabase Auth UI for React + +```bash +npm install @supabase/auth-ui-react +``` + +Add the `Auth` component to your home page + +```jsx title="pages/index.js" +import type { NextPage } from 'next' +import { Auth, ThemeSupa } from '@supabase/auth-ui-react' +import { useSession, useSupabaseClient } from '@supabase/auth-helpers-react' + +const Home: NextPage = () => { + const session = useSession() + const supabase = useSupabaseClient() + + return ( +
+ {!session ? ( + + ) : ( +

Account page will go here.

+ )}
) } + +export default Home ``` ### Account page After a user is signed in we can allow them to edit their profile details and manage their account. -Let's create a new component for that called `Account.js`. + + -```jsx title="components/Account.js" +Let's create a new component for that called `Account.js` within a `components` folder. + +```tsx title="components/Account.js" import { useState, useEffect } from 'react' -import { supabase } from '../utils/supabaseClient' +import { useUser, useSupabaseClient } from '@supabase/auth-helpers-react' export default function Account({ session }) { + const supabase = useSupabaseClient() + const user = useUser() const [loading, setLoading] = useState(true) const [username, setUsername] = useState(null) const [website, setWebsite] = useState(null) @@ -284,27 +362,9 @@ export default function Account({ session }) { getProfile() }, [session]) - async function getCurrentUser() { - const { - data: { session }, - error, - } = await supabase.auth.getSession() - - if (error) { - throw error - } - - if (!session?.user) { - throw new Error('User not logged in') - } - - return session.user - } - async function getProfile() { try { setLoading(true) - const user = await getCurrentUser() let { data, error, status } = await supabase .from('profiles') @@ -322,7 +382,8 @@ export default function Account({ session }) { setAvatarUrl(data.avatar_url) } } catch (error) { - alert(error.message) + alert('Error loading user data!') + console.log(error) } finally { setLoading(false) } @@ -331,23 +392,21 @@ export default function Account({ session }) { async function updateProfile({ username, website, avatar_url }) { try { setLoading(true) - const user = await getCurrentUser() const updates = { id: user.id, username, website, avatar_url, - updated_at: new Date(), + updated_at: new Date().toISOString(), } let { error } = await supabase.from('profiles').upsert(updates) - - if (error) { - throw error - } + if (error) throw error + alert('Profile updated!') } catch (error) { - alert(error.message) + alert('Error updating the data!') + console.log(error) } finally { setLoading(false) } @@ -360,7 +419,7 @@ export default function Account({ session }) {
- + + + +Let's create a new component for that called `Account.tsx` within a `components` folder. + +```tsx title="components/Account.tsx" +import { useState, useEffect } from 'react' +import { + useUser, + useSupabaseClient, + Session, +} from '@supabase/auth-helpers-react' +import { Database } from '../utils/database.types' +type Profiles = Database['public']['Tables']['profiles']['Row'] + +export default function Account({ session }: { session: Session }) { + const supabase = useSupabaseClient() + const user = useUser() + const [loading, setLoading] = useState(true) + const [username, setUsername] = useState(null) + const [website, setWebsite] = useState(null) + const [avatar_url, setAvatarUrl] = useState(null) + + useEffect(() => { + getProfile() + }, [session]) + + async function getProfile() { + try { + setLoading(true) + if (!user) throw new Error('No user') + + let { data, error, status } = await supabase + .from('profiles') + .select(`username, website, avatar_url`) + .eq('id', user.id) + .single() + + if (error && status !== 406) { + throw error + } + + if (data) { + setUsername(data.username) + setWebsite(data.website) + setAvatarUrl(data.avatar_url) + } + } catch (error) { + alert('Error loading user data!') + console.log(error) + } finally { + setLoading(false) + } + } + + async function updateProfile({ + username, + website, + avatar_url, + }: { + username: Profiles['username'] + website: Profiles['website'] + avatar_url: Profiles['avatar_url'] + }) { + try { + setLoading(true) + if (!user) throw new Error('No user') + + const updates = { + id: user.id, + username, + website, + avatar_url, + updated_at: new Date().toISOString(), + } + + let { error } = await supabase.from('profiles').upsert(updates) + if (error) throw error + alert('Profile updated!') + } catch (error) { + alert('Error updating the data!') + console.log(error) + } finally { + setLoading(false) + } + } + + return ( +
+
+ + +
+
+ + setUsername(e.target.value)} + /> +
+
+ + setWebsite(e.target.value)} + /> +
+ +
+ +
+ +
+ +
+
+ ) +} +``` + +
+ + ### Launch! Now that we have all the components in place, let's update `pages/index.js`: ```jsx title="pages/index.js" -import { useState, useEffect } from 'react' -import { supabase } from '../utils/supabaseClient' -import Auth from '../components/Auth' +import type { NextPage } from 'next' +import { Auth, ThemeSupa } from '@supabase/auth-ui-react' +import { useSession, useSupabaseClient } from '@supabase/auth-helpers-react' +// highlight-next-line import Account from '../components/Account' -export default function Home() { - const [isLoading, setIsLoading] = useState(true) - const [session, setSession] = useState(null) - - useEffect(() => { - let mounted = true - - async function getInitialSession() { - const { - data: { session }, - } = await supabase.auth.getSession() - - // only update the react state if the component is still mounted - if (mounted) { - if (session) { - setSession(session) - } - - setIsLoading(false) - } - } - - getInitialSession() - - const { subscription } = supabase.auth.onAuthStateChange( - (_event, session) => { - setSession(session) - } - ) - - return () => { - mounted = false - - subscription?.unsubscribe() - } - }, []) +const Home: NextPage = () => { + const session = useSession() + const supabase = useSupabaseClient() return (
{!session ? ( - + ) : ( - + // highlight-next-line + )}
) } + +export default Home ``` Once that's done, run this in a terminal window: @@ -468,8 +640,6 @@ npm run dev And then open the browser to [localhost:3000](http://localhost:3000) and you should see the completed app. -![Supabase User demo](/img/supabase-react-demo.png) - ## Bonus: Profile photos Every Supabase project is configured with [Storage](/docs/guides/storage) for managing large files like @@ -477,14 +647,23 @@ photos and videos. ### Create an upload widget -Let's create an avatar for the user so that they can upload a profile photo. -We can start by creating a new component: +Let's create an avatar widget for the user so that they can upload a profile photo. We can start by creating a new component: + + + ```jsx title="components/Avatar.js" -import { useEffect, useState } from 'react' -import { supabase } from '../utils/supabaseClient' +import React, { useEffect, useState } from 'react' +import { useSupabaseClient } from '@supabase/auth-helpers-react' -export default function Avatar({ url, size, onUpload }) { +export default function Avatar({ uid, url, size, onUpload }) { + const supabase = useSupabaseClient() const [avatarUrl, setAvatarUrl] = useState(null) const [uploading, setUploading] = useState(false) @@ -503,11 +682,11 @@ export default function Avatar({ url, size, onUpload }) { const url = URL.createObjectURL(data) setAvatarUrl(url) } catch (error) { - console.log('Error downloading image: ', error.message) + console.log('Error downloading image: ', error) } } - async function uploadAvatar(event) { + const uploadAvatar = async (event) => { try { setUploading(true) @@ -517,12 +696,12 @@ export default function Avatar({ url, size, onUpload }) { const file = event.target.files[0] const fileExt = file.name.split('.').pop() - const fileName = `${Math.random()}.${fileExt}` + const fileName = `${uid}.${fileExt}` const filePath = `${fileName}` let { error: uploadError } = await supabase.storage .from('avatars') - .upload(filePath, file) + .upload(filePath, file, { upsert: true }) if (uploadError) { throw uploadError @@ -530,7 +709,8 @@ export default function Avatar({ url, size, onUpload }) { onUpload(filePath) } catch (error) { - alert(error.message) + alert('Error uploading avatar!') + console.log(error) } finally { setUploading(false) } @@ -572,6 +752,120 @@ export default function Avatar({ url, size, onUpload }) { } ``` + + + +```tsx title="components/Avatar.tsx" +import React, { useEffect, useState } from 'react' +import { useSupabaseClient } from '@supabase/auth-helpers-react' +import { Database } from '../utils/database.types' +type Profiles = Database['public']['Tables']['profiles']['Row'] + +export default function Avatar({ + uid, + url, + size, + onUpload, +}: { + uid: string + url: Profiles['avatar_url'] + size: number + onUpload: (url: string) => void +}) { + const supabase = useSupabaseClient() + const [avatarUrl, setAvatarUrl] = useState(null) + const [uploading, setUploading] = useState(false) + + useEffect(() => { + if (url) downloadImage(url) + }, [url]) + + async function downloadImage(path: string) { + try { + const { data, error } = await supabase.storage + .from('avatars') + .download(path) + if (error) { + throw error + } + const url = URL.createObjectURL(data) + setAvatarUrl(url) + } catch (error) { + console.log('Error downloading image: ', error) + } + } + + const uploadAvatar: React.ChangeEventHandler = async ( + event + ) => { + try { + setUploading(true) + + if (!event.target.files || event.target.files.length === 0) { + throw new Error('You must select an image to upload.') + } + + const file = event.target.files[0] + const fileExt = file.name.split('.').pop() + const fileName = `${uid}.${fileExt}` + const filePath = `${fileName}` + + let { error: uploadError } = await supabase.storage + .from('avatars') + .upload(filePath, file, { upsert: true }) + + if (uploadError) { + throw uploadError + } + + onUpload(filePath) + } catch (error) { + alert('Error uploading avatar!') + console.log(error) + } finally { + setUploading(false) + } + } + + return ( +
+ {avatarUrl ? ( + Avatar + ) : ( +
+ )} +
+ + +
+
+ ) +} +``` + + + + ### Add the new widget And then we can add the widget to the Account page: @@ -586,6 +880,7 @@ return (
{/* Add to the body */} { @@ -602,5 +897,8 @@ return ( At this stage you have a fully functional application! +- See the complete [example on GitHub](https://github.com/supabase/supabase/tree/master/examples/user-management/nextjs-ts-user-management) and deploy it to Vercel. +- Explore the [Auth Helpers for Next.js](https://supabase.com/docs/guides/auth/auth-helpers/nextjs). +- Explore the [pre-built Auth UI for React](https://supabase.com/docs/guides/auth/auth-helpers/auth-ui). - Got a question? [Ask here](https://github.com/supabase/supabase/discussions). - Sign in: [app.supabase.com](https://app.supabase.com) diff --git a/apps/reference/docs/guides/with-nuxt-3.mdx b/apps/reference/docs/guides/with-nuxt-3.mdx index 57872da827f..604e642239c 100644 --- a/apps/reference/docs/guides/with-nuxt-3.mdx +++ b/apps/reference/docs/guides/with-nuxt-3.mdx @@ -188,7 +188,7 @@ Let's set up a Vue component to manage logins and sign ups. We'll use Magic Link ```html title="/components/Auth.vue" ``` @@ -385,7 +385,7 @@ Let's create an avatar for the user so that they can upload a profile photo. We />
-
-
diff --git a/apps/reference/docs/guides/with-react.mdx b/apps/reference/docs/guides/with-react.mdx index f4202cbe688..2d4d2fb9c61 100644 --- a/apps/reference/docs/guides/with-react.mdx +++ b/apps/reference/docs/guides/with-react.mdx @@ -8,12 +8,6 @@ sidebar_label: React import Tabs from '@theme/Tabs' import TabItem from '@theme/TabItem' -:::note - -This guide uses supabase-js v2.0.0 Release Candidate (RC). - -::: - ## Intro This example provides the steps to build a simple user management app (from scratch!) using Supabase and React. It includes: @@ -174,10 +168,10 @@ npx create-react-app supabase-react cd supabase-react ``` -Then let's install the only additional dependency: [supabase-js](https://github.com/supabase/supabase-js). We're going to install the "rc" (release candidate) version until this is released for general use. +Then let's install the only additional dependency: [supabase-js](https://github.com/supabase/supabase-js). ```bash -npm install @supabase/supabase-js@rc +npm install @supabase/supabase-js ``` And finally we want to save the environment variables in a `.env`. diff --git a/apps/reference/docs/guides/with-solidjs.mdx b/apps/reference/docs/guides/with-solidjs.mdx index 77ccae4961a..e601c98aee8 100644 --- a/apps/reference/docs/guides/with-solidjs.mdx +++ b/apps/reference/docs/guides/with-solidjs.mdx @@ -8,12 +8,6 @@ sidebar_label: SolidJS import Tabs from '@theme/Tabs' import TabItem from '@theme/TabItem' -:::note - -This guide uses supabase-js v2.0.0 Release Candidate (RC). - -::: - ## Intro This example provides the steps to build a simple user management app (from scratch!) using Supabase and Solid JS. It includes: @@ -176,7 +170,7 @@ cd supabase-solid Then let's install the only additional dependency: [supabase-js](https://github.com/supabase/supabase-js) ```bash -npm install @supabase/supabase-js@rc +npm install @supabase/supabase-js ``` And finally we want to save the environment variables in a `.env`. @@ -272,7 +266,7 @@ import { Component, createEffect, createSignal } from 'solid-js' import { supabase } from './supabaseClient' interface Props { - session: AuthSession + session: AuthSession; } const Account: Component = ({ session }) => { @@ -366,11 +360,19 @@ const Account: Component = ({ session }) => { />
-
- diff --git a/apps/reference/docs/guides/with-svelte.mdx b/apps/reference/docs/guides/with-svelte.mdx index 7c6a60fffe9..cae5b2d5f05 100644 --- a/apps/reference/docs/guides/with-svelte.mdx +++ b/apps/reference/docs/guides/with-svelte.mdx @@ -8,12 +8,6 @@ sidebar_label: Svelte import Tabs from '@theme/Tabs' import TabItem from '@theme/TabItem' -:::note - -This guide uses supabase-js v2.0.0 Release Candidate (RC). - -::: - ## Intro This example provides the steps to build a simple user management app (from scratch!) using Supabase and Svelte. It includes: @@ -160,7 +154,7 @@ npm install Then let's install the only additional dependency: [supabase-js](https://github.com/supabase/supabase-js) ```bash -npm install @supabase/supabase-js@rc +npm install @supabase/supabase-js ``` And finally we want to save the environment variables in a `.env`. @@ -192,7 +186,7 @@ Let's set up a Svelte component to manage logins and sign ups. We'll use Magic L ```html title="src/lib/Auth.svelte"
- {#if avatarUrl} - {avatarUrl - {:else} -
+ {#if avatarUrl} {avatarUrl {:else} +
{/if}
@@ -497,9 +489,9 @@ And then we can add the widget to the Account page: import Avatar from './Avatar.svelte' -
+ - + diff --git a/apps/reference/docs/guides/with-sveltekit.mdx b/apps/reference/docs/guides/with-sveltekit.mdx index c190597b9c8..fb3374561ae 100644 --- a/apps/reference/docs/guides/with-sveltekit.mdx +++ b/apps/reference/docs/guides/with-sveltekit.mdx @@ -252,27 +252,27 @@ Let's create a new component for that called `Profile.svelte`. let avatar_url = null function getProfile(node) { - try { - loading = true; - const user = supabase.auth.user(); + try { + loading = true + const user = supabase.auth.user() - supabase - .from("profiles") - .select(`username, website, avatar_url`) - .eq("id", user?.id) - .single() - .then(({ data, error, status }) => { - if (data) { - username = data.username; - website = data.website; - avatar_url = data.avatar_url; - } - if (error && status !== 406) throw error; - }); + supabase + .from('profiles') + .select(`username, website, avatar_url`) + .eq('id', user?.id) + .single() + .then(({ data, error, status }) => { + if (data) { + username = data.username + website = data.website + avatar_url = data.avatar_url + } + if (error && status !== 406) throw error + }) } catch (error) { - alert(error.message); + alert(error.message) } finally { - loading = false; + loading = false } } @@ -311,7 +311,6 @@ Let's create a new component for that called `Profile.svelte`. } finally { loading = false } - } diff --git a/apps/reference/docs/guides/with-vue-3.mdx b/apps/reference/docs/guides/with-vue-3.mdx index 06b7f9e0617..49ce6b3739b 100644 --- a/apps/reference/docs/guides/with-vue-3.mdx +++ b/apps/reference/docs/guides/with-vue-3.mdx @@ -24,7 +24,7 @@ By the end of this guide you'll have an app which allows users to login and upda ### GitHub -Whenever you get stuck at any point, take a look at [this repo](https://github.com/zernonia/supabase-vue-3). +Whenever you get stuck at any point, take a look at [this repo](https://github.com/supabase/examples/tree/main/supabase-js-v2/user-management/vue3-user-management). ## Project set up @@ -182,102 +182,141 @@ const supabaseAnonKey = import.meta.env.VITE_SUPABASE_ANON_KEY export const supabase = createClient(supabaseUrl, supabaseAnonKey) ``` -And one optional step is to update the CSS file `src/assets/main.css` to make the app look nice. -You can find the full contents of this file [here](https://raw.githubusercontent.com/supabase/examples/main/supabase-js-v2/user-management/react-user-management/src/index.css). - -```javascript title="src/main.js" -import { createApp } from 'vue' -import App from './App.vue' -import './assets/main.css' - -createApp(App).mount('#app') -``` +Optionally, update [src/style.css](https://raw.githubusercontent.com/supabase/examples/main/supabase-js-v2/user-management/vue3-user-management/src/style.css) to style the app. ### Set up a Login component Let's set up a Vue component to manage logins and sign ups. We'll use Magic Links, so users can sign in with their email without using passwords. ```html title="/src/components/Auth.vue" + + - - -``` - -### User store - -To access the user information in other places, we use a reactive store. Create a new file called `store.js` and utilize Vue 3 `reactive` functionalities. - -```javascript title="src/store.js" -import { reactive } from 'vue' - -export const store = reactive({ - user: {}, -}) ``` ### Account page After a user is signed in we can allow them to edit their profile details and manage their account. -Let's create a new component for that called `Profile.vue`. +Let's create a new component for that called `Account.vue`. + +```html title="src/components/Account.vue" + -```html title="src/components/Profile.vue" - - ``` ### Launch! @@ -403,37 +346,31 @@ Let's create a new component for that called `Profile.vue`. Now that we have all the components in place, let's update `App.vue`: ```html title="src/App.vue" + + - - ``` Once that's done, run this in a terminal window: @@ -442,7 +379,7 @@ Once that's done, run this in a terminal window: npm run dev ``` -And then open the browser to [localhost:3000](http://localhost:3000) and you should see the completed app. +And then open the browser to [localhost:5173](http://localhost:5173) and you should see the completed app. ![Supabase Vue 3](/img/supabase-vue-3-demo.png) @@ -455,132 +392,96 @@ Every Supabase project is configured with [Storage](/docs/guides/storage) for ma Let's create an avatar for the user so that they can upload a profile photo. We can start by creating a new component: ```html title="src/components/Avatar.vue" + + - - ``` ### Add the new widget And then we can add the widget to the Account page: -```html title="src/Profile.vue" +```html title="src/components/Account.vue" + + - - ``` ## Next steps diff --git a/apps/reference/docs/learn/auth-deep-dive/policies.md b/apps/reference/docs/learn/auth-deep-dive/policies.md index 12a4ac8ad0d..32c02e223ea 100644 --- a/apps/reference/docs/learn/auth-deep-dive/policies.md +++ b/apps/reference/docs/learn/auth-deep-dive/policies.md @@ -82,13 +82,13 @@ For the curious, try heading to the SQL editor and querying: select * from auth.users; ``` -If supabase-js is loaded on your site (in this case http://localhost:3000) then it will automatically pluck the access_token out of the URL and initiate a session. You can check the [session()](../../reference/javascript/auth-session) method to see if there is a valid session: +If supabase-js is loaded on your site (in this case http://localhost:3000) it automatically plucks the `access_token` out of the URL and initiates a session. You can retrieve the [session](/docs/reference/javascript/auth-getsession) to see if there is a valid session: ```jsx -console.log(supabase.auth.session()) +console.log(supabase.auth.getSession()) ``` -Now that we can use methods like `supabase.auth.signIn({ email, password})` to issue JWTs to users we want to start fetching resources specific to that user. So let's make some. Go to the SQL editor and run: +Now that we can use methods to issue JWTs to users, we want to start fetching resources specific to that user. So let's make some. Go to the SQL editor and run: ```sql create table my_scores ( diff --git a/apps/reference/docs/reference.mdx b/apps/reference/docs/reference.mdx index aa2ef099dfe..594d661b38c 100644 --- a/apps/reference/docs/reference.mdx +++ b/apps/reference/docs/reference.mdx @@ -41,26 +41,6 @@ Reference documentation for the official Supabase client libraries, APIs, and to
-## Community - -Reference documentation for community-contributed utilities. - -
-
- {/* Auth */} -
- -
- {/* */} -
-
- ## Self-hosting Reference documentation for self-hosting Supabase features. diff --git a/apps/reference/docs/support.md b/apps/reference/docs/support.md index 4c8f1572ffa..2a0bf4f01dd 100644 --- a/apps/reference/docs/support.md +++ b/apps/reference/docs/support.md @@ -12,10 +12,10 @@ For help and questions about best practices, we have a discussion forum set up o ## Business Support -We offer email based support for business users. You can email us at support@supabase.io. +We offer email based support for business users. You can email us at support@supabase.com. If you need SLAs, guaranteed response times, or other enterprise level services, please contact us at this email address. ## Slack Support -If you are building with Supabase and you would like to set up a shared Slack channel (via [Slack Connect](https://slack.com/connect)), please reach out to us at support@supabase.io. +If you are building with Supabase and you would like to set up a shared Slack channel (via [Slack Connect](https://slack.com/connect)), please reach out to us at support@supabase.com. diff --git a/apps/reference/docusaurus.config.js b/apps/reference/docusaurus.config.js index 7534657645b..56e2df43582 100644 --- a/apps/reference/docusaurus.config.js +++ b/apps/reference/docusaurus.config.js @@ -14,7 +14,7 @@ const config = { url: 'https://supabase.com', baseUrl: baseUrl, onBrokenLinks: 'throw', - onBrokenMarkdownLinks: 'warn', + onBrokenMarkdownLinks: 'throw', favicon: '/favicon.ico', themes: ['docusaurus-theme-search-typesense'], @@ -112,11 +112,10 @@ const config = { breadcrumbs: false, editUrl: 'https://github.com/supabase/supabase/edit/master/apps/reference/', - lastVersion: 'v1', + lastVersion: 'current', versions: { current: { - label: 'v2 RC', - path: '/next', + label: 'v2', }, v1: { label: 'v1', @@ -124,18 +123,6 @@ const config = { }, }, ], - [ - '@docusaurus/plugin-content-docs', - { - id: '_auth_helpers', - path: '_auth_helpers', - routeBasePath: '/reference/auth-helpers', - sidebarPath: require.resolve('./nav/auth_helpers_sidebars.js'), - breadcrumbs: false, - editUrl: - 'https://github.com/supabase/supabase/edit/master/apps/reference/', - }, - ], ], presets: [ diff --git a/apps/reference/generator/api.ts b/apps/reference/generator/api.ts index b15086938e7..602842c4014 100644 --- a/apps/reference/generator/api.ts +++ b/apps/reference/generator/api.ts @@ -10,7 +10,7 @@ export default async function gen( apiUrl: string ) { const specRaw = fs.readFileSync(inputFileName, 'utf8') - const spec = JSON.parse(specRaw) + const spec = JSON.parse(specRaw) as any // console.log('spec', spec) switch (spec.openapi || spec.swagger) { diff --git a/apps/reference/generator/cli.ts b/apps/reference/generator/cli.ts index d9708f0752d..9d554feb79f 100644 --- a/apps/reference/generator/cli.ts +++ b/apps/reference/generator/cli.ts @@ -6,8 +6,7 @@ import template from './templates/CliTemplate' import type { CliSpec } from './types/CliSpec' export default async function gen(inputFileName: string, outputDir: string) { - const spec = yaml.load(fs.readFileSync(inputFileName, 'utf8')) - // console.log('spec', spec) + const spec = yaml.load(fs.readFileSync(inputFileName, 'utf8')) as any switch (spec.clispec) { case '001': diff --git a/apps/reference/generator/config.ts b/apps/reference/generator/config.ts index 690a77dc833..378857b998c 100644 --- a/apps/reference/generator/config.ts +++ b/apps/reference/generator/config.ts @@ -12,7 +12,7 @@ type Section = { } export default async function gen(inputFileName: string, outputDir: string) { - const spec = yaml.load(fs.readFileSync(inputFileName, 'utf8')) + const spec = yaml.load(fs.readFileSync(inputFileName, 'utf8')) as any // console.log('spec', spec) switch (spec.configspec) { diff --git a/apps/reference/generator/legacy.ts b/apps/reference/generator/legacy.ts index bbfce52254f..6a2b906af3f 100644 --- a/apps/reference/generator/legacy.ts +++ b/apps/reference/generator/legacy.ts @@ -130,7 +130,16 @@ function recurseThroughParams(paramDefinition: TsDoc.TypeDefinition) { if (param.type?.declaration?.children) { children = param.type?.declaration?.children } else if (isUnion(param)) { - children = param.type.types + // We don't want to show the union types if it's a literal + const nonLiteralVariants = param.type.types.filter( + ({ type }) => type !== 'literal' + ) + + if (nonLiteralVariants.length === 0) { + children = null + } else { + children = nonLiteralVariants + } } else if (param.type === 'reflection') { children = param.declaration.children } diff --git a/apps/reference/generator/sdk.ts b/apps/reference/generator/sdk.ts index ee290d16d2f..2adb10c3898 100644 --- a/apps/reference/generator/sdk.ts +++ b/apps/reference/generator/sdk.ts @@ -6,7 +6,7 @@ import { writeToDisk } from './helpers' import type { SdkSpec } from './types/SdkSpec' export default async function gen(inputFileName: string, outputDir: string) { - const spec = yaml.load(fs.readFileSync(inputFileName, 'utf8')) + const spec = yaml.load(fs.readFileSync(inputFileName, 'utf8')) as any // console.log('spec', spec) switch (spec.sdkspec) { diff --git a/apps/reference/nav/_referenceSidebars.js b/apps/reference/nav/_referenceSidebars.js index bab8deb5fea..475e176cf2d 100644 --- a/apps/reference/nav/_referenceSidebars.js +++ b/apps/reference/nav/_referenceSidebars.js @@ -154,9 +154,14 @@ const sidebars = { }, { type: 'category', - label: 'Functions', + label: 'Edge Functions', collapsed: true, - items: ['guides/functions'], + items: [ + 'guides/functions', + 'guides/functions/auth', + 'guides/functions/examples', + 'guides/functions/cicd-workflow', + ], }, { type: 'category', @@ -164,9 +169,8 @@ const sidebars = { collapsed: true, items: [ 'guides/realtime', - 'guides/realtime/broadcast', - 'guides/realtime/presence', - 'guides/realtime/postgres-changes', + 'guides/realtime/quickstart', + 'guides/realtime/postgres-cdc', ], }, { @@ -211,22 +215,50 @@ const sidebars = { label: 'Integrations', collapsed: true, items: [ - 'guides/integrations/appsmith', - 'guides/integrations/auth0', - 'guides/integrations/authsignal', - 'guides/integrations/clerk', - 'guides/integrations/dashibase', - 'guides/integrations/directus', - 'guides/integrations/draftbit', - 'guides/integrations/pgmustard', - 'guides/integrations/plasmic', - 'guides/integrations/polyscale', - 'guides/integrations/prisma', - 'guides/integrations/sequin', - 'guides/integrations/snaplet', - 'guides/integrations/stytch', - 'guides/integrations/supertokens', - 'guides/integrations/vercel', + 'guides/integrations/integrations', + { + type: 'category', + label: 'Auth', + collapsed: true, + items: [ + 'guides/integrations/auth0', + 'guides/integrations/authsignal', + 'guides/integrations/clerk', + 'guides/integrations/stytch', + 'guides/integrations/supertokens', + ], + }, + { + type: 'category', + label: 'Caching / Offline-first', + collapsed: true, + items: ['guides/integrations/polyscale'], + }, + { + type: 'category', + label: 'Developer Tools', + collapsed: true, + items: [ + 'guides/integrations/pgmustard', + 'guides/integrations/prisma', + 'guides/integrations/sequin', + 'guides/integrations/snaplet', + 'guides/integrations/vercel', + ], + }, + { + type: 'category', + label: 'Low-code', + collapsed: true, + items: [ + 'guides/integrations/appsmith', + 'guides/integrations/dashibase', + 'guides/integrations/dhiwise', + 'guides/integrations/directus', + 'guides/integrations/draftbit', + 'guides/integrations/plasmic', + ], + }, ], }, ], @@ -252,19 +284,20 @@ const sidebars = { { type: 'link', label: 'Supabase API', href: '/reference/api' }, ], }, - { - type: 'category', - label: 'Community', - // link: { type: 'doc', id: 'about' }, - collapsed: false, - items: [ - { - type: 'link', - label: 'Supabase Auth Helpers', - href: '/reference/auth-helpers', - }, - ], - }, + // TODO: add back in with typedocs + // { + // type: 'category', + // label: 'Community', + // // link: { type: 'doc', id: 'about' }, + // collapsed: false, + // items: [ + // { + // type: 'link', + // label: 'Supabase Auth Helpers', + // href: '/reference/auth-helpers', + // }, + // ], + // }, { type: 'category', label: 'Self-hosting', diff --git a/apps/reference/nav/auth_helpers_sidebars.js b/apps/reference/nav/auth_helpers_sidebars.js deleted file mode 100644 index ac225b54381..00000000000 --- a/apps/reference/nav/auth_helpers_sidebars.js +++ /dev/null @@ -1,34 +0,0 @@ -/** - * Creating a sidebar enables you to: - - create an ordered group of docs - - render a sidebar for each doc of that group - - provide next/previous navigation - - The sidebars can be generated from the filesystem, or explicitly defined here. - - Create as many sidebars as you want. - */ - -// @ts-check - -/** @type {import('@docusaurus/plugin-content-docs').SidebarsConfig} */ -const sidebars = { - // By default, Docusaurus generates a sidebar from the docs folder structure - // tutorialSidebar: [{ type: 'autogenerated', dirName: '.' }], - - sidebar: [ - 'intro', - 'next-js', - 'sveltekit', - // 'usage', - // 'config', - // 'release-notes', - // { - // type: "category", - // label: "Release Notes", - // items: ["release-notes"], - // }, - ], -} - -module.exports = sidebars diff --git a/apps/reference/nav/gotrue_sidebars.js b/apps/reference/nav/gotrue_sidebars.js index 6a1cfc804a8..ee64cb78492 100644 --- a/apps/reference/nav/gotrue_sidebars.js +++ b/apps/reference/nav/gotrue_sidebars.js @@ -18,6 +18,7 @@ const sidebars = { sidebar: [ 'intro', + // 'usage', // Hide until the OpenAPI spec is updated to v3 'config', 'release-notes', // { diff --git a/apps/reference/package.json b/apps/reference/package.json index 4aad491638d..fff2d452a6a 100644 --- a/apps/reference/package.json +++ b/apps/reference/package.json @@ -24,19 +24,20 @@ "gen:cli": "npm-run-all gen:cli:commands gen:cli:config", "gen:cli:commands": "ts-node ./generator/index.ts gen --type cli --input ../../spec/cli_v1_commands.yaml --output ./_cli/generated/usage.mdx ", "gen:cli:config": "ts-node ./generator/index.ts gen --type config --input ../../spec/cli_v1_config.yaml --output ./_cli/generated/config.mdx", - "gen:gotrue": "npm-run-all gen:gotrue:config", + "gen:gotrue": "npm-run-all gen:gotrue:config gen:gotrue:usage", "gen:gotrue:config": "ts-node ./generator/index.ts gen --type config --input ../../spec/gotrue_v1_config.yaml --output ./_gotrue/config.mdx", + "gen:gotrue:usage": "ts-node ./generator/index.ts gen --type api --input ../../spec/transforms/auth_v1_openapi_deparsed.json --output ./_gotrue/usage.mdx", "gen:storage": "npm-run-all gen:storage:api gen:storage:config", "gen:storage:api": "ts-node ./generator/index.ts gen --type api --input ../../spec/transforms/storage_v0_openapi_deparsed.json --output ./_storage/generated/usage.mdx", "gen:storage:config": "ts-node ./generator/index.ts gen --type config --input ../../spec/storage_v0_config.yaml --output ./_storage/generated/config.mdx", "gen:supabase-dart:v0": "npm-run-all gen:supabase-dart:v0:ref", - "gen:supabase-dart:v0:ref": "ts-node ./generator/index.ts gen --type legacy --input ../../spec/supabase_dart_v0_legacy.yml --output ./_supabase_dart_versioned_docs/version-v0/generated", + "gen:supabase-dart:v0:ref": "ts-node ./generator/index.ts gen --type legacy --input ../../spec/supabase_dart_v0.yml --output ./_supabase_dart_versioned_docs/version-v0/generated", "gen:supabase-dart:v1": "npm-run-all gen:supabase-dart:v1:ref", - "gen:supabase-dart:v1:ref": "ts-node ./generator/index.ts gen --type legacy --input ../../spec/supabase_dart_v1_legacy.yml --output ./_supabase_dart/generated", + "gen:supabase-dart:v1:ref": "ts-node ./generator/index.ts gen --type legacy --input ../../spec/supabase_dart_v1.yml --output ./_supabase_dart/generated", "gen:supabase-js:v1": "npm-run-all gen:supabase-js:v1:ref", - "gen:supabase-js:v1:ref": "ts-node ./generator/index.ts gen --type legacy --input ../../spec/supabase_js_v1_legacy.yml --output ./_supabase_js_versioned_docs/version-v1/generated", + "gen:supabase-js:v1:ref": "ts-node ./generator/index.ts gen --type legacy --input ../../spec/supabase_js_v1.yml --output ./_supabase_js_versioned_docs/version-v1/generated", "gen:supabase-js:v2": "npm-run-all gen:supabase-js:v2:ref", - "gen:supabase-js:v2:ref": "ts-node ./generator/index.ts gen --type legacy --input ../../spec/supabase_js_v2_legacy.yml --output ./_supabase_js/generated" + "gen:supabase-js:v2:ref": "ts-node ./generator/index.ts gen --type legacy --input ../../spec/supabase_js_v2.yml --output ./_supabase_js/generated" }, "dependencies": { "@docusaurus/core": "^2.0.1", diff --git a/apps/reference/static/img/guides/integrations/dashibase/connect-database.png b/apps/reference/static/img/guides/integrations/dashibase/connect-database.png new file mode 100644 index 00000000000..fe5161bf0e4 Binary files /dev/null and b/apps/reference/static/img/guides/integrations/dashibase/connect-database.png differ diff --git a/apps/reference/static/img/guides/integrations/dashibase/create-supabase-project-dark.png b/apps/reference/static/img/guides/integrations/dashibase/create-supabase-project-dark.png deleted file mode 100644 index 32af2f9782b..00000000000 Binary files a/apps/reference/static/img/guides/integrations/dashibase/create-supabase-project-dark.png and /dev/null differ diff --git a/apps/reference/static/img/guides/integrations/dashibase/create-supabase-project-light.png b/apps/reference/static/img/guides/integrations/dashibase/create-supabase-project-light.png deleted file mode 100644 index f459e7df356..00000000000 Binary files a/apps/reference/static/img/guides/integrations/dashibase/create-supabase-project-light.png and /dev/null differ diff --git a/apps/reference/static/img/guides/integrations/dashibase/customers-table-with-text.png b/apps/reference/static/img/guides/integrations/dashibase/customers-table-with-text.png new file mode 100644 index 00000000000..95c0528131c Binary files /dev/null and b/apps/reference/static/img/guides/integrations/dashibase/customers-table-with-text.png differ diff --git a/apps/reference/static/img/guides/integrations/dashibase/customers-table.png b/apps/reference/static/img/guides/integrations/dashibase/customers-table.png new file mode 100644 index 00000000000..6f8ddb62388 Binary files /dev/null and b/apps/reference/static/img/guides/integrations/dashibase/customers-table.png differ diff --git a/apps/reference/static/img/guides/integrations/dashibase/dashibase-attributes-dark.png b/apps/reference/static/img/guides/integrations/dashibase/dashibase-attributes-dark.png deleted file mode 100644 index ba807d843d2..00000000000 Binary files a/apps/reference/static/img/guides/integrations/dashibase/dashibase-attributes-dark.png and /dev/null differ diff --git a/apps/reference/static/img/guides/integrations/dashibase/dashibase-attributes-hide-dark.png b/apps/reference/static/img/guides/integrations/dashibase/dashibase-attributes-hide-dark.png deleted file mode 100644 index 2c26dc11e05..00000000000 Binary files a/apps/reference/static/img/guides/integrations/dashibase/dashibase-attributes-hide-dark.png and /dev/null differ diff --git a/apps/reference/static/img/guides/integrations/dashibase/dashibase-attributes-hide-light.png b/apps/reference/static/img/guides/integrations/dashibase/dashibase-attributes-hide-light.png deleted file mode 100644 index 4565d3b56e1..00000000000 Binary files a/apps/reference/static/img/guides/integrations/dashibase/dashibase-attributes-hide-light.png and /dev/null differ diff --git a/apps/reference/static/img/guides/integrations/dashibase/dashibase-attributes-light.png b/apps/reference/static/img/guides/integrations/dashibase/dashibase-attributes-light.png deleted file mode 100644 index 146ac719d20..00000000000 Binary files a/apps/reference/static/img/guides/integrations/dashibase/dashibase-attributes-light.png and /dev/null differ diff --git a/apps/reference/static/img/guides/integrations/dashibase/dashibase-attributes-options-dark.png b/apps/reference/static/img/guides/integrations/dashibase/dashibase-attributes-options-dark.png deleted file mode 100644 index 25ca6389f0b..00000000000 Binary files a/apps/reference/static/img/guides/integrations/dashibase/dashibase-attributes-options-dark.png and /dev/null differ diff --git a/apps/reference/static/img/guides/integrations/dashibase/dashibase-attributes-options-light.png b/apps/reference/static/img/guides/integrations/dashibase/dashibase-attributes-options-light.png deleted file mode 100644 index b708d3e1869..00000000000 Binary files a/apps/reference/static/img/guides/integrations/dashibase/dashibase-attributes-options-light.png and /dev/null differ diff --git a/apps/reference/static/img/guides/integrations/dashibase/dashibase-attributes-required-dark.png b/apps/reference/static/img/guides/integrations/dashibase/dashibase-attributes-required-dark.png deleted file mode 100644 index 897980dfc20..00000000000 Binary files a/apps/reference/static/img/guides/integrations/dashibase/dashibase-attributes-required-dark.png and /dev/null differ diff --git a/apps/reference/static/img/guides/integrations/dashibase/dashibase-attributes-required-light.png b/apps/reference/static/img/guides/integrations/dashibase/dashibase-attributes-required-light.png deleted file mode 100644 index a4cc862d1ea..00000000000 Binary files a/apps/reference/static/img/guides/integrations/dashibase/dashibase-attributes-required-light.png and /dev/null differ diff --git a/apps/reference/static/img/guides/integrations/dashibase/dashibase-dashboard-dark.png b/apps/reference/static/img/guides/integrations/dashibase/dashibase-dashboard-dark.png deleted file mode 100644 index 2e5add9e03e..00000000000 Binary files a/apps/reference/static/img/guides/integrations/dashibase/dashibase-dashboard-dark.png and /dev/null differ diff --git a/apps/reference/static/img/guides/integrations/dashibase/dashibase-dashboard-light.png b/apps/reference/static/img/guides/integrations/dashibase/dashibase-dashboard-light.png deleted file mode 100644 index c78079c8e35..00000000000 Binary files a/apps/reference/static/img/guides/integrations/dashibase/dashibase-dashboard-light.png and /dev/null differ diff --git a/apps/reference/static/img/guides/integrations/dashibase/dashibase-dashboard-login-dark.png b/apps/reference/static/img/guides/integrations/dashibase/dashibase-dashboard-login-dark.png deleted file mode 100644 index cf2d25d2150..00000000000 Binary files a/apps/reference/static/img/guides/integrations/dashibase/dashibase-dashboard-login-dark.png and /dev/null differ diff --git a/apps/reference/static/img/guides/integrations/dashibase/dashibase-dashboard-login-light.png b/apps/reference/static/img/guides/integrations/dashibase/dashibase-dashboard-login-light.png deleted file mode 100644 index 8ad5c3e1d2a..00000000000 Binary files a/apps/reference/static/img/guides/integrations/dashibase/dashibase-dashboard-login-light.png and /dev/null differ diff --git a/apps/reference/static/img/guides/integrations/dashibase/dashibase-dashboard-settings-dark.png b/apps/reference/static/img/guides/integrations/dashibase/dashibase-dashboard-settings-dark.png deleted file mode 100644 index acc642302a9..00000000000 Binary files a/apps/reference/static/img/guides/integrations/dashibase/dashibase-dashboard-settings-dark.png and /dev/null differ diff --git a/apps/reference/static/img/guides/integrations/dashibase/dashibase-dashboard-settings-light.png b/apps/reference/static/img/guides/integrations/dashibase/dashibase-dashboard-settings-light.png deleted file mode 100644 index 6a95c3725ee..00000000000 Binary files a/apps/reference/static/img/guides/integrations/dashibase/dashibase-dashboard-settings-light.png and /dev/null differ diff --git a/apps/reference/static/img/guides/integrations/dashibase/dashibase-display-card-dark.png b/apps/reference/static/img/guides/integrations/dashibase/dashibase-display-card-dark.png deleted file mode 100644 index 9cb302c6d11..00000000000 Binary files a/apps/reference/static/img/guides/integrations/dashibase/dashibase-display-card-dark.png and /dev/null differ diff --git a/apps/reference/static/img/guides/integrations/dashibase/dashibase-display-card-light.png b/apps/reference/static/img/guides/integrations/dashibase/dashibase-display-card-light.png deleted file mode 100644 index baa30d23186..00000000000 Binary files a/apps/reference/static/img/guides/integrations/dashibase/dashibase-display-card-light.png and /dev/null differ diff --git a/apps/reference/static/img/guides/integrations/dashibase/dashibase-empty-dark.png b/apps/reference/static/img/guides/integrations/dashibase/dashibase-empty-dark.png deleted file mode 100644 index f50b57f2de3..00000000000 Binary files a/apps/reference/static/img/guides/integrations/dashibase/dashibase-empty-dark.png and /dev/null differ diff --git a/apps/reference/static/img/guides/integrations/dashibase/dashibase-empty-light.png b/apps/reference/static/img/guides/integrations/dashibase/dashibase-empty-light.png deleted file mode 100644 index eacf8fdcacc..00000000000 Binary files a/apps/reference/static/img/guides/integrations/dashibase/dashibase-empty-light.png and /dev/null differ diff --git a/apps/reference/static/img/guides/integrations/dashibase/dashibase-page-settings-dark.png b/apps/reference/static/img/guides/integrations/dashibase/dashibase-page-settings-dark.png deleted file mode 100644 index 0e70a8d096f..00000000000 Binary files a/apps/reference/static/img/guides/integrations/dashibase/dashibase-page-settings-dark.png and /dev/null differ diff --git a/apps/reference/static/img/guides/integrations/dashibase/dashibase-page-settings-light.png b/apps/reference/static/img/guides/integrations/dashibase/dashibase-page-settings-light.png deleted file mode 100644 index fbd63580a0c..00000000000 Binary files a/apps/reference/static/img/guides/integrations/dashibase/dashibase-page-settings-light.png and /dev/null differ diff --git a/apps/reference/static/img/guides/integrations/dashibase/data-source-user-access.png b/apps/reference/static/img/guides/integrations/dashibase/data-source-user-access.png new file mode 100644 index 00000000000..50ea7251563 Binary files /dev/null and b/apps/reference/static/img/guides/integrations/dashibase/data-source-user-access.png differ diff --git a/apps/reference/static/img/guides/integrations/dashibase/initial-dashboard-content.png b/apps/reference/static/img/guides/integrations/dashibase/initial-dashboard-content.png new file mode 100644 index 00000000000..e230da20f8c Binary files /dev/null and b/apps/reference/static/img/guides/integrations/dashibase/initial-dashboard-content.png differ diff --git a/apps/reference/static/img/guides/integrations/dashibase/set-column-access.png b/apps/reference/static/img/guides/integrations/dashibase/set-column-access.png new file mode 100644 index 00000000000..47890aa03de Binary files /dev/null and b/apps/reference/static/img/guides/integrations/dashibase/set-column-access.png differ diff --git a/apps/reference/static/img/guides/integrations/dashibase/set-data-access.png b/apps/reference/static/img/guides/integrations/dashibase/set-data-access.png new file mode 100644 index 00000000000..5786987f114 Binary files /dev/null and b/apps/reference/static/img/guides/integrations/dashibase/set-data-access.png differ diff --git a/apps/reference/static/img/guides/integrations/dashibase/share-dashboard.png b/apps/reference/static/img/guides/integrations/dashibase/share-dashboard.png new file mode 100644 index 00000000000..22ce49702b2 Binary files /dev/null and b/apps/reference/static/img/guides/integrations/dashibase/share-dashboard.png differ diff --git a/apps/reference/static/img/guides/integrations/dashibase/single-item-view.png b/apps/reference/static/img/guides/integrations/dashibase/single-item-view.png new file mode 100644 index 00000000000..f5aef0fcb3f Binary files /dev/null and b/apps/reference/static/img/guides/integrations/dashibase/single-item-view.png differ diff --git a/apps/reference/static/img/guides/integrations/dashibase/slash-command.gif b/apps/reference/static/img/guides/integrations/dashibase/slash-command.gif new file mode 100644 index 00000000000..0d112a30d8c Binary files /dev/null and b/apps/reference/static/img/guides/integrations/dashibase/slash-command.gif differ diff --git a/apps/reference/static/img/guides/integrations/dashibase/supabase-columns-dark.png b/apps/reference/static/img/guides/integrations/dashibase/supabase-columns-dark.png deleted file mode 100644 index 1f0ff019a27..00000000000 Binary files a/apps/reference/static/img/guides/integrations/dashibase/supabase-columns-dark.png and /dev/null differ diff --git a/apps/reference/static/img/guides/integrations/dashibase/supabase-columns-light.png b/apps/reference/static/img/guides/integrations/dashibase/supabase-columns-light.png deleted file mode 100644 index be09827911b..00000000000 Binary files a/apps/reference/static/img/guides/integrations/dashibase/supabase-columns-light.png and /dev/null differ diff --git a/apps/reference/static/img/guides/integrations/dashibase/supabase-credentials.png b/apps/reference/static/img/guides/integrations/dashibase/supabase-credentials.png new file mode 100644 index 00000000000..6bf03270417 Binary files /dev/null and b/apps/reference/static/img/guides/integrations/dashibase/supabase-credentials.png differ diff --git a/apps/reference/static/img/guides/integrations/dashibase/supabase-redirect-dark.png b/apps/reference/static/img/guides/integrations/dashibase/supabase-redirect-dark.png deleted file mode 100644 index 66dc54b55af..00000000000 Binary files a/apps/reference/static/img/guides/integrations/dashibase/supabase-redirect-dark.png and /dev/null differ diff --git a/apps/reference/static/img/guides/integrations/dashibase/supabase-redirect-light.png b/apps/reference/static/img/guides/integrations/dashibase/supabase-redirect-light.png deleted file mode 100644 index 1be3fcced80..00000000000 Binary files a/apps/reference/static/img/guides/integrations/dashibase/supabase-redirect-light.png and /dev/null differ diff --git a/apps/reference/static/img/guides/integrations/dashibase/supabase-user-column-dark.png b/apps/reference/static/img/guides/integrations/dashibase/supabase-user-column-dark.png deleted file mode 100644 index 3d0f790af39..00000000000 Binary files a/apps/reference/static/img/guides/integrations/dashibase/supabase-user-column-dark.png and /dev/null differ diff --git a/apps/reference/static/img/guides/integrations/dashibase/supabase-user-column-light.png b/apps/reference/static/img/guides/integrations/dashibase/supabase-user-column-light.png deleted file mode 100644 index 7143c3e4877..00000000000 Binary files a/apps/reference/static/img/guides/integrations/dashibase/supabase-user-column-light.png and /dev/null differ diff --git a/apps/reference/static/img/guides/integrations/dhiwise/auth.gif b/apps/reference/static/img/guides/integrations/dhiwise/auth.gif new file mode 100644 index 00000000000..db05bb42fca Binary files /dev/null and b/apps/reference/static/img/guides/integrations/dhiwise/auth.gif differ diff --git a/apps/reference/static/img/guides/integrations/dhiwise/authKeys.png b/apps/reference/static/img/guides/integrations/dhiwise/authKeys.png new file mode 100644 index 00000000000..1ac402f5d9b Binary files /dev/null and b/apps/reference/static/img/guides/integrations/dhiwise/authKeys.png differ diff --git a/apps/reference/static/img/guides/integrations/dhiwise/create.png b/apps/reference/static/img/guides/integrations/dhiwise/create.png new file mode 100644 index 00000000000..bcb06e5e5ee Binary files /dev/null and b/apps/reference/static/img/guides/integrations/dhiwise/create.png differ diff --git a/apps/reference/static/img/guides/integrations/dhiwise/newProj.png b/apps/reference/static/img/guides/integrations/dhiwise/newProj.png new file mode 100644 index 00000000000..e3f5d8db355 Binary files /dev/null and b/apps/reference/static/img/guides/integrations/dhiwise/newProj.png differ diff --git a/apps/reference/static/img/guides/integrations/dhiwise/select.png b/apps/reference/static/img/guides/integrations/dhiwise/select.png new file mode 100644 index 00000000000..3de535da47e Binary files /dev/null and b/apps/reference/static/img/guides/integrations/dhiwise/select.png differ diff --git a/apps/temp-docs/docs/javascript/installing.mdx b/apps/temp-docs/docs/javascript/installing.mdx index aeb6b0fff5a..80d1b5cf909 100644 --- a/apps/temp-docs/docs/javascript/installing.mdx +++ b/apps/temp-docs/docs/javascript/installing.mdx @@ -28,9 +28,9 @@ Find the source code on [GitHub](https://github.com/supabase/supabase-js). Or via CDN ```js - + //or - + ``` ## Python diff --git a/apps/temp-docs/docs/reference/javascript/installing.mdx b/apps/temp-docs/docs/reference/javascript/installing.mdx index aeb6b0fff5a..80d1b5cf909 100644 --- a/apps/temp-docs/docs/reference/javascript/installing.mdx +++ b/apps/temp-docs/docs/reference/javascript/installing.mdx @@ -28,9 +28,9 @@ Find the source code on [GitHub](https://github.com/supabase/supabase-js). Or via CDN ```js - + //or - + ``` ## Python diff --git a/apps/www/_blog/2020-06-01-supabase-alpha-may-2020.mdx b/apps/www/_blog/2020-06-01-supabase-alpha-may-2020.mdx index caca26bb98a..7899965f87d 100644 --- a/apps/www/_blog/2020-06-01-supabase-alpha-may-2020.mdx +++ b/apps/www/_blog/2020-06-01-supabase-alpha-may-2020.mdx @@ -13,8 +13,6 @@ date: '06-01-2020' It has been a monster month at [Supabase](/) and we're back with a video update. It's a longer video this month because we have a couple of housekeeping items. - - - ## Open source Right now, Logflare works natively with Big Query. But as our track record has proven, we're 100% committed to open source. We're working on the future of a fully open-source version of Logflare, with support for various storage engines. @@ -125,5 +124,3 @@ Right now, Logflare works natively with Big Query. But as our track record has p If you're an existing Logflare user, we'll be migrating everything to Supabase in the coming months. We'll work closely with you to ensure that the transition is seamless, and introduce the same [pricing levels](https://logflare.app/pricing) that Logflare offers today. We've worked with Chase on a list of potential questions you might have about the transition. If you have any concerns or questions, you can reach out to support@supabase.io. - - diff --git a/apps/www/_blog/2021-12-03-supabase-holiday-hackdays-hackathon.mdx b/apps/www/_blog/2021-12-03-supabase-holiday-hackdays-hackathon.mdx index 89d4339c0f7..74f8b0e9be1 100644 --- a/apps/www/_blog/2021-12-03-supabase-holiday-hackdays-hackathon.mdx +++ b/apps/www/_blog/2021-12-03-supabase-holiday-hackdays-hackathon.mdx @@ -34,8 +34,8 @@ The Supabase team will be participating as well, for example [Jon](https://twitt
### Rules diff --git a/apps/www/_blog/2022-01-20-product-hunt-golden-kitty-awards-2021.mdx b/apps/www/_blog/2022-01-20-product-hunt-golden-kitty-awards-2021.mdx index e78eaacbbcd..efe0163a765 100644 --- a/apps/www/_blog/2022-01-20-product-hunt-golden-kitty-awards-2021.mdx +++ b/apps/www/_blog/2022-01-20-product-hunt-golden-kitty-awards-2021.mdx @@ -17,12 +17,10 @@ Last week [Supabase UI](https://ui.supabase.com/), our open-source UI component ### Python Upgrades @@ -138,7 +139,7 @@ We're having a 24/7\*365 meme-fest on [Twitter](https://twitter.com/supabase) invest in good relationships pic.twitter.com/bGiBE7FRFQ

— Supabase (@supabase) December 28, 2021 - {' '} + ### TikTok diff --git a/apps/www/_blog/2022-03-08-audit.mdx b/apps/www/_blog/2022-03-08-audit.mdx index f067d7f8df5..88993d48113 100644 --- a/apps/www/_blog/2022-03-08-audit.mdx +++ b/apps/www/_blog/2022-03-08-audit.mdx @@ -116,9 +116,9 @@ create table audit.record_version(
Postgres version compatibility

- The table above uses PostgreSQL's built-in{' '} - uuid functionality, which - is available from version 14. For backwards compatibility you can use the uuid-ossp extension. + The table above uses PostgreSQL's built-in + uuid functionality, which is + available from version 14. For backwards compatibility you can use the uuid-ossp extension.

create extension if not exists "uuid-ossp"; diff --git a/apps/www/_blog/2022-03-30-supabase-enterprise.mdx b/apps/www/_blog/2022-03-30-supabase-enterprise.mdx index 1fa9c8fa9c9..9badebddea9 100644 --- a/apps/www/_blog/2022-03-30-supabase-enterprise.mdx +++ b/apps/www/_blog/2022-03-30-supabase-enterprise.mdx @@ -200,8 +200,6 @@ With the release of our new Enterprise Tier, we're announcing a tonne of new fea ### Point-in-Time Recovery - - Disaster Recovery is a critical process for any company, even for the most fault-tolerant products. What happens when you accidentally delete that database column because of a clumsy `where` clause? Even with Supabase's daily backups, a day's worth of data can be lost if disaster strikes at the most inopportune time. @@ -219,8 +217,6 @@ If you want access to the Prometheus Endpoint, [contact the Supabase Enterprise ### SLAs & Enterprise Support - - For our enterprise customers we know that service level agreements and support response times are also critical features. We continue to treat support as an important priority for all tiers, though enterprise users require confidence that our response times meet their business needs. We now offer faster response times for Enterprise customers, alongside Priority and Priority Plus support packages for those who need more comprehensive support. You can find further details around our SLAs & support @@ -239,8 +235,7 @@ We have a lot more Enterprise features under development, available to early-acc ### SOC2 -Supabase is now SOC2 Type 1 compliant, as announced during Launch Week 5. You can read all about the process we went through to get there in this [blog post](https://supabase.com/blog/supabase-soc2). Getting the Type 1 certification is just the start, and we will be working on getting certified for SOC2 Type 2 and HIPAA next. - +Supabase is now SOC2 Type 1 compliant, as announced during Launch Week 5. You can read all about the process we went through to get there in this [blog post](https://supabase.com/blog/supabase-soc2). Getting the Type 1 certification is just the start, and we will be working on getting certified for SOC2 Type 2 and HIPAA next. ### Log ingestion diff --git a/apps/www/_blog/2022-04-01-hackathon-bring-the-func.mdx b/apps/www/_blog/2022-04-01-hackathon-bring-the-func.mdx index 138ef0de773..a77bde33aa4 100644 --- a/apps/www/_blog/2022-04-01-hackathon-bring-the-func.mdx +++ b/apps/www/_blog/2022-04-01-hackathon-bring-the-func.mdx @@ -38,9 +38,8 @@ Finally, we're delighted to be partnering with [the Future Forest Company](https

@@ -91,12 +90,11 @@ We'll be contacting and announcing winners [on Twitter](https://twitter.com/supa {' '} + ### Rules diff --git a/apps/www/_blog/2022-06-29-visualizing-supabase-data-using-metabase.mdx b/apps/www/_blog/2022-06-29-visualizing-supabase-data-using-metabase.mdx index 02b8fe77fc2..c7a6a0d2b4a 100644 --- a/apps/www/_blog/2022-06-29-visualizing-supabase-data-using-metabase.mdx +++ b/apps/www/_blog/2022-06-29-visualizing-supabase-data-using-metabase.mdx @@ -34,7 +34,7 @@ To take advantage of the open-source version of Metabase, you can use the Metaba ### Launching Metabase -To launch Metabase, simply go to "" which is the default port that the Metabase server will be listening to. +To launch Metabase, simply go to [http://localhost:3000/setup/](http://localhost:3000/setup/) which is the default port that the Metabase server will be listening to. After Metabase is launched, select your preferred language and add your contact information. In the _Add your data_ markdown, you will need to choose PostgreSQL. @@ -135,6 +135,7 @@ With our [free tier Supabase account](https://app.supabase.com/), you can start If you have any questions please reach out via [Twitter](https://twitter.com/supabase) or join our [Discord](https://discord.supabase.com). ## More Python and Supabase resources + - [supabase-py](https://github.com/supabase-community/supabase-py) - [Slack Consolidate: a slackbot built with Python and Supabase](slack-consolidate-slackbot-to-consolidate-messages) - [Supabase-py (Database) on Replit](https://replit.com/@Supabase/Supabase-py-Database?v=1) diff --git a/apps/www/_blog/2022-08-16-supabase-js-v2.mdx b/apps/www/_blog/2022-08-16-supabase-js-v2.mdx index f64617a7e0b..b327552f6b7 100644 --- a/apps/www/_blog/2022-08-16-supabase-js-v2.mdx +++ b/apps/www/_blog/2022-08-16-supabase-js-v2.mdx @@ -302,7 +302,7 @@ Update today by running: npm i @supabase/supabase-js@rc ``` -You can find a full list of updates, breaking changes, and a migration guide in our [Release Notes](https://supabase.com/docs/reference/javascript/next/release-notes). +You can find a full list of updates, breaking changes, and a migration guide in our [Release Notes](https://supabase.com/docs/reference/javascript/release-notes). We'll continuing merging security fixes to v1, with maintenance patches for the next three months. @@ -321,8 +321,8 @@ We'll continuing merging security fixes to v1, with maintenance patches for the ## Links -- [v2 Release Candidate Documentation](https://supabase.com/docs/reference/javascript/next) -- [Release Notes & Migration Guide](https://supabase.com/docs/reference/javascript/next/release-notes) +- [v2 Release Candidate Documentation](https://supabase.com/docs/reference/javascript) +- [Release Notes & Migration Guide](https://supabase.com/docs/reference/javascript/release-notes) ## More Launch Week 5 diff --git a/apps/www/_blog/2022-08-19-launch-week-5-community-day.mdx b/apps/www/_blog/2022-08-19-launch-week-5-community-day.mdx index 3f51a375e68..2c1e609a500 100644 --- a/apps/www/_blog/2022-08-19-launch-week-5-community-day.mdx +++ b/apps/www/_blog/2022-08-19-launch-week-5-community-day.mdx @@ -34,9 +34,8 @@ This time, we're switching things around: little beauty (the hat, not the cat).

- Now I've just got to pry it away from Peanut 🥜 😂 - pic.twitter.com/POBdVZrF5N - + Now I've just got to pry it away from Peanut 🥜 😂 + pic.twitter.com/POBdVZrF5N

— Daniel Cranney 🇬🇧 (@danielcranney) August 10, 2022 diff --git a/apps/www/_blog/2022-08-19-supabase-vault.mdx b/apps/www/_blog/2022-08-19-supabase-vault.mdx index 0939e662607..62b386bd1b9 100644 --- a/apps/www/_blog/2022-08-19-supabase-vault.mdx +++ b/apps/www/_blog/2022-08-19-supabase-vault.mdx @@ -2,8 +2,8 @@ title: 'Supabase Vault' description: "Today we're announcing Vault, a Postgres extension for managing secrets and encryption inside your database." author: michel -image: lw5-vault/lw5-vault.jpg -thumb: lw5-vault/lw5-vault.jpg +image: lw5-vault/supabase-vault.jpg +thumb: lw5-vault/supabase-vault.jpg tags: - launch-week date: '2022-08-19' diff --git a/apps/www/_blog/2022-08-24-building-a-realtime-trello-board-with-supabase-and-angular.mdx b/apps/www/_blog/2022-08-24-building-a-realtime-trello-board-with-supabase-and-angular.mdx index 9d4c694b4ee..8e608762b6e 100644 --- a/apps/www/_blog/2022-08-24-building-a-realtime-trello-board-with-supabase-and-angular.mdx +++ b/apps/www/_blog/2022-08-24-building-a-realtime-trello-board-with-supabase-and-angular.mdx @@ -26,8 +26,15 @@ Along our jurney we will: - implement **magic link sign in** and user authentication with Angular - make use of **the realtime capabilities**! - Watch the video version of the tutorial. - + Watch the video version of the tutorial. Since there are quite some code snippets we need I've put together the [full source code on Github](https://github.com/saimon24/supabase-trello-angular) so you can easily run the project yourself! @@ -205,7 +212,7 @@ create policy "Users can edit cards if they are part of the board" on cards for Finally we need a **trigger** that reacts to changes in our database. -In our case we want to listen to the creation of new boards, which will automatically create the board <-> user connection in the `user_boards` table. +In our case we want to listen to the creation of new boards, which will automatically create the board < - > user connection in the `user_boards` table. Additionally we will also add every new authenticated user to our `users` table since you later don't have access to the internal auth table of Supabase! diff --git a/apps/www/_blog/2022-09-08-choosing-a-postgres-primary-key.mdx b/apps/www/_blog/2022-09-08-choosing-a-postgres-primary-key.mdx index 821ee8191f5..6fa24cafbc4 100644 --- a/apps/www/_blog/2022-09-08-choosing-a-postgres-primary-key.mdx +++ b/apps/www/_blog/2022-09-08-choosing-a-postgres-primary-key.mdx @@ -2,8 +2,8 @@ title: Choosing a Postgres Primary Key description: Turns out the question of which identifier to use as a Primary Key is complicated -- we're going to dive into some of the complexity and inherent trade-offs, and figure things out author: victor -image: primary-keys/choosing-a-postgres-primary-key-og.jpg -thumb: primary-keys/choosing-a-postgres-primary-key-og.jpg +image: primary-keys/postgres-primary-key.jpg +thumb: primary-keys/postgres-primary-key.jpg tags: - postgres date: '2022-09-08' diff --git a/apps/www/_blog/2022-10-05-supabase-beta-update-september-2022.mdx b/apps/www/_blog/2022-10-05-supabase-beta-update-september-2022.mdx new file mode 100644 index 00000000000..0c86354bfd1 --- /dev/null +++ b/apps/www/_blog/2022-10-05-supabase-beta-update-september-2022.mdx @@ -0,0 +1,102 @@ +--- +title: Supabase Beta September 2022 +description: We were too focused on clearing out the backlog so we didn't ship anything new last month... or did we?! +author: ant_wilson +image: 2022-september/monthly-update-september-2022.jpg +thumb: 2022-september/monthly-update-september-2022.jpg +tags: + - release-notes +date: '2022-10-05' +toc_depth: 3 +--- +For September we made a huge effort to focus on crushing our backlog and outstanding tickets amongst other things, here's the full list of updates for the month... + +## Kaizen Week + +Post Launch Week we did three subsequent weeks of [Kaizen](https://en.wikipedia.org/wiki/Kaizen), a term we use internally to deliver constant and incremental improvement. Each week had a different focus: + +- Week 1: QA and testing +- Week 2: Documentation +- Week 3: Issue Backlog and Automation + +It's pretty rare for a company to stop feature development altogether, but luckily we're just a bunch of developers so we all know the pain of technical debt. After 5 Launch Weeks, working on testing and backlogs feels like a bit of a relief. + +We saw a lot of progress across our Open Issues - closing over 250 issues and 50 Pull Requests. + +![Kaizen Week - Github Chart](/images/blog/2022-september/kaizen.jpg) + +and we shipped a few things: + +## Auth UI on Product Hunt + +![Auth UI on Product Hunt](/images/blog/2022-september/auth-ui-product-hunt.png) + +We launched the new Auth UI on Product Hunt! Auth UI is a pre-built React component for authenticating users with Supabase Auth. It supports custom themes and extensible styles to match your brand and aesthetic. + +[Check out the launch.](https://www.producthunt.com/posts/auth-ui-login-ui-for-your-web-app) + +## Postgres WASM + +![Postgres WASM with Snaplet and Supabase](/images/blog/2022-september/postgres-wasm.jpg) + +If you've ever wondered, "can I run Postgres inside a browser, using an embeddable Linux Virtual Machine?", wonder no longer. With our friends at [Snaplet](https://www.snaplet.dev/?utm_campaign=Beta%20update%20emails&utm_source=hs_email&utm_medium=email&_hsenc=p2ANqtz-8u0x9grbiydYqh56hC_8Dta4ZiTdWbW0eXWkVCnUEUGWWoVDFXCpWzJWImkLfM-lG-o2JX), we've released an open source Postgres WASM. + +[Read the blog post](https://supabase.com/blog/postgres-wasm)
+[Comment on Hacker News](https://news.ycombinator.com/item?id=33067962)
+Visit the repo: [Snaplet](https://github.com/snaplet/postgres-wasm) | [Supabase](https://github.com/supabase-community/postgres-wasm) + +## Security updates + +We're making some changes to the way the Dashboard interacts with your database. These changes simplify the database permissions so that it's easier for you to migrate in and out of Supabase, and they reduce the security surface area considerably. The change will be applied automatically in November, or you can run it today via the Dashboard. + +[Review the Security Notice](https://github.com/supabase/supabase/discussions/9314). + +## Quick product updates + +- Edge functions free plan script size is bumped to 2 MB +- [functions-go](https://github.com/supabase-community/functions-go) was just contributed to supabase-community by [Zain Khan](https://twitter.com/Za1n_K) +- A new [guide](https://supabase.com/docs/guides/auth/auth-captcha) to add captcha to your sign-in, sign-up, and password reset forms +- New Postgres Extension for monitoring your PostgreSQL database network traffic: [pg_netstat](https://github.com/supabase/pg_netstat) +- Added [docs](https://supabase.com/docs/guides/storage-cdn) for how caching works in Supabase + +## Migrate from Heroku to Supabase + +![Migrate from Heroku to Supabase](/images/blog/2022-september/migrate-from-heroku-to-supabase.jpg) + +In case you missed it, Heroku is shutting down their free tier. We're big fans of Heroku and take a lot of inspiration from what they've built. Supabase is compatible with Heroku's PostgreSQL product (because we're just Postgres too), and if you have a free project running on Heroku we've created a [tool to help migrate](http://migrate.supabase.com/) to our free tier. + +## Made with Supabase + +![Made with Supabase - Supabase Schema](/images/blog/2022-september/madewithsupabase.jpg) + +[Supabase Schema](https://supabase-schema.vercel.app/): An open source, free, login-less and secured Supabase Schema Visualizer. Simply plug in your URL and anon key and see a visual representation of your database schema! Built by the amazing [Zernonia](https://twitter.com/zernonia) using Vue 3, Viti, and WindiCSS. + +## Extended Community Highlights + +![Community](/images/blog/2022-june/community.jpg) + +- Building a viral application to visualize train routes. [Blog](https://vercel.com/blog/building-a-viral-application-to-visualize-train-routes) +- OTP Authentication with Supabase and Twilio in React. [Tutorial](https://refine.dev/blog/supabase-twilio-otp-authentication-in-react/) +- Join Vercel and us for [Next.js Conf](https://nextjs.org/conf). +- Building $1K - $10K MRR Micro SaaS around Supabase. [Blog](https://microsaasidea.substack.com/p/micro-saas-products-around-supabase) +- Watch How Netlify and Supabase Enables "Supa" DX. [Webinar](https://www.netlify.com/resources/webinars/how-netlify-supabase-enables-supa-dx/) +- Postgres database functions are your next favorite feature! [Blog](https://mirror.xyz/0x7D15080A13c8128dBAf90a2c2326058b5c1D5eac/MaiOq5m1xSa9QfMuiLYq4bJdA0owWoTpOZNlQv76_so) +- Create a blog with Vue, Tailwindcss & Supabase. [Part 1](https://youtube.com/watch?v=0NB9lgFcOT4) and [Part 2](https://youtube.com/watch?v=UP2mHUpcv6g) +- Flutter Supabase Authentication. [Tutorial](https://www.sandromaglione.com/techblog/flutter-supabase-authentication-complete-tutorial) +- Vue 3 + Pinia + Supabase Auth (Email). [Tutorial](https://towardsdev.com/vue-3-pinia-supabase-auth-email-1228f5f8502e) +- Power up your ClickUp skills with Supabase, Figma, and DhiWise in a day. [Tutorial](https://dev.to/saloni137/power-up-your-clickup-skills-with-supabase-figma-and-dhiwise-in-a-day-3pak) +- Creating an Email Authentication using Supabase in React. [Tutorial](https://dev.to/surajondev/creating-an-email-authentication-using-supabase-in-react-5883) + + +## Meme Zone + +If you made it this far in the blog post you deserve a treat. [Follow us on Twitter](https://twitter.com/supabase) for more. + +![Supabase meme September 2022](/images/blog/2022-september/beta-update-september-meme.jpeg) + +## Get started + +- Start using Supabase today: **[app.supabase.com](https://app.supabase.com/)** +- Make sure to **[star us on GitHub](https://github.com/supabase/supabase)** +- Follow us **[on Twitter](https://twitter.com/supabase)** +- Subscribe to our **[YouTube channel](https://www.youtube.com/c/supabase)** diff --git a/apps/www/_blog/2022-10-14-postgres-full-text-search-vs-the-rest.mdx b/apps/www/_blog/2022-10-14-postgres-full-text-search-vs-the-rest.mdx new file mode 100644 index 00000000000..f96545c783a --- /dev/null +++ b/apps/www/_blog/2022-10-14-postgres-full-text-search-vs-the-rest.mdx @@ -0,0 +1,369 @@ +--- +title: 'Postgres Full Text Search vs the rest' +description: 'Comparing one of the most popular Postgres features against alternatives' +author: victor +image: postgres-fts-vs-the-rest/postgres-full-text-search.jpg +thumb: postgres-fts-vs-the-rest/postgres-full-text-search.jpg +tags: + - postgres +date: '2022-10-14' +toc_depth: 3 +--- + +Postgres is one of the best F/OSS databases partly because of its immense feature-set. + +One of my favorite Postgres features is [Full Text Search](https://supabase.com/docs/guides/database/full-text-search) (FTS). Search is a common requirement of applications. Well-known search engines like [Solr](https://solr.apache.org/) and [ElasticSearch](https://www.elastic.co/elasticsearch) are often a first choice, but with Postgres in your stack you've got a great chance for [Pareto improvement](https://en.wikipedia.org/wiki/Pareto_principle) at low complexity cost. + +Many projects function just fine with Postgres Full Text Search and other [built-in](https://www.postgresql.org/docs/current/contrib.html) extensions like [trigram search (`pg_trgm`)](https://www.postgresql.org/docs/current/pgtrgm.html). [GitLab's blog has a great article](https://about.staging.gitlab.com/blog/2016/03/18/fast-search-using-postgresql-trigram-indexes/) on their use of Trigram indices to speed up search. + +## Search Engines: The Next Generation + +These days, the debate isn't _just_ Postgres versus Solr or ElasticSearch, a new generation of F/OSS search engines has arrived. To name a few: + +- [MeiliSearch](https://www.meilisearch.com/) +- [OpenSearch](https://opensearch.org/) +- [SQLite FTS](https://www.sqlite.org/fts5.html) +- [Typesense](https://typesense.org/) + +Well OK, some of these engines aren't _quite_ new; SQLite is stable and has supported the search use-case for a while and OpenSearch is a fork of ElasticSearch. While not new, both are worth comparing as choices in front of engineers today (spoiler alert: we're going to compare them). + +These search engines are all impressive, but it's hard to evaluate these options in a `VACUUM`. + +If Postgres is already your main database, then it's probably easier to integrate than anything else. But would it be _better_ to take on more complexity by choosing a dedicated search engine? + +While search is an endlessly complicated problem and all of these tools are configurable, a comparison of minimal setup and tuning should yield some interesting insights. + +Before we get into it though, a _brief_ primer on what "Full Text Search" _means_, in Postgres land. + +## A whirlwind tour through FTS in Postgres + +If we want to compare other solutions to Postgres FTS, we'd better review how to set up and use [Postgres FTS](https://www.postgresql.org/docs/current/textsearch.html)! + +### Wrangling your existing data + +Imagine you have some information to search through, stored in your main database. + +Maybe a `movies` table with a structure like this: + +```sql + create table movies ( + id bigint primary key generated by default as identity, + title text not null, + original_title text not null, + overview text not null, + created_at timestamptz not null default now() +); +``` + +While you're inserting data you might perform `INSERTs` like this one: + +```sql +insert into movies ( + title, + original_title, + overview +) +values +( + "Avengers: Age of Ultron", + "Avengers: Age of Ultron", + "When Tony Stark tries to jumpstart a dormant peacekeeping program, things go awry and Earth’s Mightiest Heroes are put to the ultimate test as the fate of the planet hangs in the balance. As the villainous Ultron emerges, it is up to The Avengers to stop him from enacting his terrible plans, and soon uneasy alliances and unexpected action pave the way for an epic and unique global adventure.", +); +``` + +### Basic searching with select and like + +With nothing but the raw data in your database, we can actually do some _basic_ searching using `select` and comparison tools like `like`. + +```sql +select + * +from + movies +where + title like '%Avengers%' + or + overview like '%Avengers%'; +``` + +The `LIKE` [operator](https://www.postgresql.org/docs/current/functions-matching.html#FUNCTIONS-LIKE) as used in the query above will match _only_ the term "Avengers", but it will match it in any part of a given row's `title` or `overview`. + +We can hack around this basic functionality and make it a bit more robust: + +- Storing the text as [case insensitive text (`citext`)](https://www.postgresql.org/docs/current/citext.html) +- Combining the text that will be searched into one column +- Using a [GIN index](https://www.postgresql.org/docs/14/indexes-types.html#INDEXES-TYPES-GIN) + +Our "v0" would be better, but using `like` isn't quite what people mean when they ask for _robust_ full text search. **Not a bad first version, but Postgres can do much better.** + +### Robust Full Text Search with Postgres + +Postgres has built-in [Full Text Search](https://www.postgresql.org/docs/current/textsearch.html) which we can use instead of cobbling together our own with `like`. + +Luckily for us, [the Postgres FTS documentation](https://www.postgresql.org/docs/current/textsearch.html) is quite extensive, containing lots of information on the all-important [Postgres search data types: `tsvector` and `tsquery`](https://www.postgresql.org/docs/current/datatype-textsearch.html). + +State of the art search engines like [Solr](https://solr.apache.org/) do things to make searches work well: + +- [Stemming](https://en.wikipedia.org/wiki/Stemming) ("jumped", "jumper" -> "jump") +- [Lemmatization](https://en.wikipedia.org/wiki/lemmatization) ("better" -> "good") +- Result Ranking configuration +- Search by [edit distance](https://en.wikipedia.org/wiki/Levenshtein_distance) +- Vector based similarity (which you might use for a basic recommendation system) + +Postgres FTS does not do _all_ of the things a purpose-built search engine can do, but Postgres can produce very good results with decent performance. + +## A working Postgres FTS setup + +Integrating Full Text Search into our imaginary movies table is as simple as executing the following: + +```sql +-- Add a generated column that contains the search document +alter table movies + add column fts_doc_en + generated always as to_tsvector ( + 'english', title || ' ' || original_title || ' ' || overview + ) + stored; + +-- Create a GIN index to make our searches faster +create index movies_fts_doc_en_idx + on movies + using gin (fts_doc_en); +``` + +Postgres supports even more features like [facilities for ranking search results](https://www.postgresql.org/docs/current/textsearch-controls.html#TEXTSEARCH-RANKING) but for now we'll simply use `title`, `original_title`, and `overview` as they are. + +```sql +select + * from movies +where doc_en @@ websearch_to_tsquery('english', 'Avengers'); +``` + +## Comparable FTS engines + +Now that we've got a grasp on what FTS is and how it's used in Postgres, let's discuss a few of the alternative solutions Postgres can be compared to. + +As you might expect, this isn't an exhaustive list of FTS engines, there are many more that we're not covering here (If you've got another search engine you'd like to see featured, [file an issue](https://github.com/VADOSWARE/fts-benchmark/issues)). + +### SQLite FTS + +[SQLite](https://www.sqlite.org/) is arguably the most widely deployed database in the world. SQLite is a library that produces and manages single file (or in-memory) databases that run on phones, planes, laptops, kiosks, Raspberry Pis, and everything in between. + +Much like Postgres, SQLite is an excellent F/OSS project that has adopted the ability to perform Full Text Search. + +The [SQLite FTS documentation](https://www.sqlite.org/fts5.html) is extensive, and the FTS subsystems have undergone a few version upgrades -- [FTS 3/4](https://www.sqlite.org/fts3.html) and [SQLite FTS 5](https://www.sqlite.org/fts5.html) are both options. + +For our experiments we'll use SQLite FTS5. + +### TypeSense + +[TypeSense](https://typesense.org/) is a relatively new project that focuses on _lightning fast_, typo-tolerant open source search. Typesense boasts a high performance C++ codebase, promising nearly instant search results. + +TypeSense provides many demos with example datasets available for query, which you can try out: + +- [32MM songs from MusicBrainz](https://songs-search.typesense.org/) +- [28M books from OpenLibrary](https://books-search.typesense.org/) +- [XKCD comic search by topic](https://xkcd-search.typesense.org/) + +Typesense quite ambitiously brands itself as the "Algolia" and "Elasticsearch" alternative, offering to solve your search problems without requiring a PhD. + +### MeiliSearch + +[MeiliSearch](https://www.meilisearch.com/) is a new search engine written from the ground up in [Rust](https://rust-lang.org/), which also promises _lightning fast_ searches, flexibility, and typo tolerance. + +MeiliSearch has [extensive documentation](https://docs.meilisearch.com/), boasts an easy to use yet extendable architecture, and is well supported by a large community and team. + +### OpenSearch + +AWS [OpenSearch](https://opensearch.org/) is AWS's answer to ElasticSearch's license changes. While opinions are varied, ElasticSearch built a great piece (formerly Apache 2.0 licensed) piece of software, and the AWS fork represents at least a _stale_ measure of ElasticSearch's capabilities. + +OpenSearch is the _same_ as ElasticSearch (since the fork) but as it's license is much more permissive, it's the easy choice as a comparison to Postgres. + +In production make sure to evaluate ElasticSearch versus OpenSearch (or other solutions) sufficiently for your use case. + +## Testing our FTS solutions + +Well, how do we test performance of these disparate complex systems on an infinitely redefinable, hard-to-solve problem? By sticking to the use cases. + +Any search engine has two jobs: + +- Ingest information (usually referred to as "documents") +- Return documents that match user queries + +Ingesting information _can_ be important, but "search engine performance" usually refers to the second step - taking queries and outputting results. + +That is to say, the primary concern is assuming a cluster already has proper data loaded on to it, how fast can it deliver the relevant results for a user-submitted query? + +We'll focus on the end-user-centric meaning of performance here (query speed). + +### Getting a dataset + +[Hugging Face](https://huggingface.co/) has a [32MB movie data set](https://huggingface.co/spaces/Kamand/Movie_Recommendation/blob/main/movies_metadata.csv). We're interested in the follow columns in this data set: + +- `title` +- `original_title` +- `overview` + +Postgres is capable of loading CSVs, but since we'll be using other search engines as well, let's convert to format that's much easier to use and process - [Newline Delimited JSON](https://dataprotocols.org/ndjson/). + +After a few lines of code and one [`csv2ndjson.mjs` script](https://github.com/VADOSWARE/fts-benchmark/blob/main/src/util/csv2ndjson.mjs) later, we have a `movies.ndjson.json` full of JSON documents that we can easily ingest into any search engine (or other database for that matter!). + +### Inserting the data + +Each system ingests data slightly differently, but with a little scripting we can paper over the differences. + +[The code](https://github.com/VADOSWARE/fts-benchmark) contains a scheme of "drivers" which are minimal ES6 modules. + +Here's an example of the `ingest` function used for Postgres (with [`slonik`](https://github.com/gajus/slonik) as our DB driver): + +```js +// Ingesting search documents +async function ingest({ document, pool }) { + // Ignore rows without proper release dates + if (document.release_date.trim().length === 0) { + return + } + + await pool.query(sql` +insert into movies ( + id, + title, + original_title, + overview, + released_at +) +values +( + ${document.id}, + ${document.title}, + ${document.original_title}, + ${document.overview}, + ${new Date(document.release_date).toISOString()}::timestamptz +) +on conflict (id) do update set + title=${document.title}, + original_title=${document.original_title}, + overview=${document.overview}, + released_at=${new Date(document.release_date).toISOString()}::timestamptz +; +`) +} +``` + +The [repo](https://github.com/VADOSWARE/fts-benchmark/) contains the complete code for Postgres as well as the other search engines, written in much this same fashion. + +### Picking a set of queries + +This part is somewhat arbitrary - I've gotten a list of queries here that one might search for in terms of movies: + +``` +"super hero" +"superhero" +"superman" +"suprman" +"love" +"world war" +"spy" +"romance" +"comedy" +"awakening" +``` + +Thanks to [boinboing.net's article from 2018](https://boingboing.net/2018/04/30/the-most-common-words-in-movie.html), there are some words that show up quite often in movie titles that we can search for. + +The data set isn't very big, but doing all these searches in quick succession should be enough to get a realistic performance baseline. + +### Running the queries + +Similar to ingesting data, all the search engines take slightly different input for queries, so we'll change our simple string queries into whatever the relevant search engine expects to receive. + +Here's what that script looks like for Postgres: + +```js +// Querying search phrases +async function query({ phrase, pool }) { + const results = await pool.query(sql` +select id, title +from movies +where fts_doc_en @@ websearch_to_tsquery('english', ${phrase}::text) +`) + const ids = results.rows.map((r) => r.id) + return ids +} +``` + +No surprises there, just like the Postgres FTS example from earlier. + +## Automating our toil + +Once we've combined our scripting magic with some `Makefile` incantations, running the queries produces output like this: + +``` +TIMING=true FTS_ENGINE=pg make query +[info] importing driver from [./pg.mjs] +[info] finished initializing driver [pg] +[info] processing lines in [/path/to/pg-fts-benchmark/search-phrases.ndjson.json]... +[timing] phrase [super hero]: returned [34] results in 3.132471.ms +[timing] phrase [superhero]: returned [86] results in 1.180798.ms +[timing] phrase [superman]: returned [47] results in 0.912615.ms +[timing] phrase [suprman]: returned [0] results in 0.781712.ms +[timing] phrase [love]: returned [5417] results in 19.088668.ms +[timing] phrase [world war]: returned [834] results in 2.902097.ms +[timing] phrase [spy]: returned [349] results in 1.497892.ms +[timing] phrase [romance]: returned [630] results in 1.91661.ms +[timing] phrase [comedy]: returned [1213] results in 2.534538.ms +[timing] phrase [awakening]: returned [210] results in 2.443748.ms +[info] successfully processed [10] lines +``` + +Right off the bat we can see that Postgres is plenty quick! Some results are quite obvious - as you might expect, "love" is _quite_ a common search result. + +## Results + +With the `ingest` and `query` machinery defined for the search engines, it's easy to get some results. + + + +## What does the data tell us? + +There's a _lot_ of tuning left undone here, but a few points stand out right away: + +- Even when consuming similar content, engines can produce different results, but generally ratios between queries on the same engine should be consistent. +- Postgres FTS is quite close performance-wise to many other solutions, at least in their default configuration. +- Only Typesense and MeiliSearch properly handled mis-spellings (the "suprman" query). +- Typesense was relatively strict with matches compared to other engines. +- OpenSearch was _very_ fast with ingest, but the default configuration doesn't index misspellings. +- In-memory SQLite is by far the fastest, and PG isn't too far behind for this small data set. + +## Feedback from the other products + +Since this is a benchmark, we felt it was fair to give the other products an opportunity to give their feedback. + +### Meilisearch + +> I agree that using PG in simple use cases is an excellent way to be pragmatic. +> Unfortunately, PG will never be able to offer you a search experience like the one you could have with Meilisearch. Meilisearch has perfect management of typos and searches by prefix, allowing a search at each keystroke. Enhanced relevancy with rules such as the number of words present, the importance of the attribute, the proximity of the terms searched in the document, and custom parameters. The ability to mix textual, geographic, and facet searches. Meilisearch automatically understands almost all languages with the possibility of having synonyms and stop words. Meilisearch has an incredible performance even on large volumes of data, and no backend proxy is needed, thanks to complete API Key management. + +_Quentin de Quelen, Meilisearch CEO_ + +### Typesense + +> Some more context around Typesense's behavior: how loose or exact matches are done are configurable in Typesense. For eg, you can configure the number of typos that are accounted for (num_typos), and when typo tolerance should kick-in, only if a configurable amount of results are not found (typo_tokens_treshold). For multi keyword searches, you can configure Typesense to expand the search by dropping some of the keywords, until at least a configurable number of search results are found (drop_tokens_threshold). +> We've chosen specifically to keep the search tight because we received feedback from users that some results were confusing if we let the defaults be too loose. + +_Jason Bosco, Typesense CEO_ + +## Wrap-up + +While this certainly isn't "big data", it looks like Postgres has very much held it's own, even without too much wrangling/tuning. Postgres is clearly more than capable of delivering _good enough_ search for this very basic case. + +Special purpose systems are expected to out-perform a more general system like Postgres, but clearly result quality and search speed provided Postgres is likely to be _good enough_ for many use cases, and is “complexity neutral” -- no new systems needed! + +## More Postgres resources + +- [Postgres WASM by Snaplet and Supabase](https://supabase.com/blog/postgres-wasm) +- [Choosing a Postgres Primary Key](https://supabase.com/blog/choosing-a-postgres-primary-key) +- [Implementing "seen by" functionality with Postgres](https://supabase.com/blog/seen-by-in-postgresql) +- [Partial data dumps using Postgres Row Level Security](https://supabase.com/blog/partial-postgresql-data-dumps-with-rls) +- [Postgres Views](https://supabase.com/blog/postgresql-views) +- [Realtime Postgres RLS on Supabase](https://supabase.com/blog/realtime-row-level-security-in-postgresql) diff --git a/apps/www/components/Blog/BlogListItem.tsx b/apps/www/components/Blog/BlogListItem.tsx index 0107a32578b..bc77f543bf7 100644 --- a/apps/www/components/Blog/BlogListItem.tsx +++ b/apps/www/components/Blog/BlogListItem.tsx @@ -51,9 +51,9 @@ const BlogListItem = ({ post }: Props) => {

{post.description}

- {author.map((author: any) => { + {author.map((author: any, i: number) => { return ( -
+
{author.author_image_url && ( {

-
) diff --git a/apps/www/components/Charts/PGCharts.tsx b/apps/www/components/Charts/PGCharts.tsx new file mode 100644 index 00000000000..0c0b4574770 --- /dev/null +++ b/apps/www/components/Charts/PGCharts.tsx @@ -0,0 +1,185 @@ +import { Tabs } from '@supabase/ui' +import { useState } from 'react' +import ReactMarkdown from 'react-markdown' +import { Bar, BarChart, Legend, ResponsiveContainer, XAxis, YAxis } from 'recharts' +import * as data from '~/data/blog/PostgresFTSComparison' + +import remarkGfm from 'remark-gfm' + +const barColors = { + pg: 'var(--colors-brand11)', + meilisearch: 'var(--colors-blue11)', + typesense: 'var(--colors-violet11)', + 'sqlite-disk': 'var(--colors-orange11)', + 'sqlite-mem': 'var(--colors-yellow11)', + opensearch: 'var(--colors-tomato11)', +} + +const dimensions = ['pg', 'meilisearch', 'typesense', 'sqlite-disk', 'sqlite-mem', 'opensearch'] + +const renderColorfulLegendText = (value: string, entry: any) => { + const { color } = entry + + return ( + + {value} + + ) +} + +const CustomizedAxisTick = (props: any) => { + const { x, y, stroke, payload } = props + + return ( + + + {payload.value} + + + ) +} + +const Chart = () => { + const [selection, setSelection] = useState('latency') + return ( +
+ setSelection(value)} + > + + + + + + + {selection !== 'raw_data' ? ( + + {/* // + @ts-ignore */} + + } + label={{ + value: + selection === 'latency' + ? 'Latency (ms)' + : selection === 'avg_latency' + ? 'Avg latency per result (ms)' + : 'Number of results', + position: 'insideBottom', + offset: -32, + fill: 'var(--colors-scale12)', + }} + /> + } + /> + {dimensions.map((dimension: string, index: number) => { + // @ts-ignore + return + })} + + + + ) : ( + + {` +| engine | query | number of results | latency (ms) | avg result latency (ms) | +|---------------|--------------|-------------------|--------------|-------------------------| +| \`pg\` | "super hero" | \`34\` | \`3.68\` | \`0.108\` | +| \`pg\` | "superhero" | \`86\` | \`1.59\` | \`0.0184\` | +| \`pg\` | "superman" | \`47\` | \`1.24\` | \`0.0264\` | +| \`pg\` | "suprman" | \`0\` | \`0.999\` | \`Infinity\` | +| \`pg\` | "love" | \`5417\` | \`15.3\` | \`0.00282\` | +| \`pg\` | "world war" | \`834\` | \`2.94\` | \`0.00352\` | +| \`pg\` | "spy" | \`349\` | \`1.78\` | \`0.00510\` | +| \`pg\` | "romance" | \`630\` | \`2.14\` | \`0.00339\` | +| \`pg\` | "comedy" | \`1213\` | \`3.55\` | \`0.00292\` | +| \`pg\` | "awakening" | \`210\` | \`1.93\` | \`0.00919\` | +| \`meilisearch\` | "super hero" | \`56\` | \`4.82\` | \`0.0861\` | +| \`meilisearch\` | "superhero" | \`14\` | \`4.39\` | \`0.313\` | +| \`meilisearch\` | "superman" | \`41\` | \`3.45\` | \`0.0841\` | +| \`meilisearch\` | "suprman" | \`29\` | \`2.69\` | \`0.0929\` | +| \`meilisearch\` | "love" | \`812\` | \`12.4\` | \`0.0153\` | +| \`meilisearch\` | "world war" | \`316\` | \`8.53\` | \`0.0270\` | +| \`meilisearch\` | "spy" | \`47\` | \`3.57\` | \`0.0760\` | +| \`meilisearch\` | "romance" | \`35\` | \`3.05\` | \`0.0871\` | +| \`meilisearch\` | "comedy" | \`67\` | \`3.46\` | \`0.0516\` | +| \`meilisearch\` | "awakening" | \`15\` | \`3.63\` | \`0.242\` | +| \`typesense\` | "super hero" | \`8\` | \`3.99\` | \`0.499\` | +| \`typesense\` | "superhero" | \`8\` | \`2.09\` | \`0.261\` | +| \`typesense\` | "superman" | \`28\` | \`2.71\` | \`0.0968\` | +| \`typesense\` | "suprman" | \`28\` | \`2.83\` | \`0.101\` | +| \`typesense\` | "love" | \`745\` | \`30.6\` | \`0.0411\` | +| \`typesense\` | "world war" | \`11\` | \`3.26\` | \`0.296\` | +| \`typesense\` | "spy" | \`47\` | \`3.78\` | \`0.0804\` | +| \`typesense\` | "romance" | \`34\` | \`2.68\` | \`0.0789\` | +| \`typesense\` | "comedy" | \`55\` | \`3.14\` | \`0.0571\` | +| \`typesense\` | "awakening" | \`14\` | \`2.07\` | \`0.148\` | +| \`sqlite-disk\` | "super hero" | \`20\` | \`0.682\` | \`0.0341\` | +| \`sqlite-disk\` | "superhero" | \`67\` | \`0.524\` | \`0.00782\` | +| \`sqlite-disk\` | "superman" | \`47\` | \`0.355\` | \`0.00755\` | +| \`sqlite-disk\` | "suprman" | \`0\` | \`0.0806\` | \`Infinity\` | +| \`sqlite-disk\` | "love" | \`4691\` | \`27.7\` | \`0.00590\` | +| \`sqlite-disk\` | "world war" | \`781\` | \`5.02\` | \`0.00642\` | +| \`sqlite-disk\` | "spy" | \`241\` | \`0.916\` | \`0.00380\` | +| \`sqlite-disk\` | "romance" | \`554\` | \`1.97\` | \`0.00355\` | +| \`sqlite-disk\` | "comedy" | \`1220\` | \`4.25\` | \`0.00349\` | +| \`sqlite-disk\` | "awakening" | \`63\` | \`0.303\` | \`0.00482\` | +| \`sqlite-mem\` | "super hero" | \`20\` | \`0.392\` | \`0.0196\` | +| \`sqlite-mem\` | "superhero" | \`67\` | \`0.237\` | \`0.00354\` | +| \`sqlite-mem\` | "superman" | \`47\` | \`0.193\` | \`0.00410\` | +| \`sqlite-mem\` | "suprman" | \`0\` | \`0.0568\` | \`Infinity\` | +| \`sqlite-mem\` | "love" | \`4691\` | \`13.4\` | \`0.00286\` | +| \`sqlite-mem\` | "world war" | \`781\` | \`2.93\` | \`0.00376\` | +| \`sqlite-mem\` | "spy" | \`241\` | \`0.644\` | \`0.00267\` | +| \`sqlite-mem\` | "romance" | \`554\` | \`1.43\` | \`0.00258\` | +| \`sqlite-mem\` | "comedy" | \`1220\` | \`2.91\` | \`0.00239\` | +| \`sqlite-mem\` | "awakening" | \`63\` | \`0.237\` | \`0.00377\` | +| \`opensearch\` | "super hero" | \`431\` | \`112\` | \`0.260\` | +| \`opensearch\` | "superhero" | \`45\` | \`12.6\` | \`0.281\` | +| \`opensearch\` | "superman" | \`25\` | \`11.4\` | \`0.454\` | +| \`opensearch\` | "suprman" | \`0\` | \`6.78\` | \`Infinity\` | +| \`opensearch\` | "love" | \`3036\` | \`139\` | \`0.0457\` | +| \`opensearch\` | "world war" | \`3805\` | \`149\` | \`0.0393\` | +| \`opensearch\` | "spy" | \`168\` | \`14.1\` | \`0.0842\` | +| \`opensearch\` | "romance" | \`383\` | \`23.9\` | \`0.0625\` | +| \`opensearch\` | "comedy" | \`756\` | \`40.1\` | \`0.0531\` | +| \`opensearch\` | "awakening" | \`32\` | \`9.84\` | \`0.307\` |`} + + )} +
+ ) +} + +export default Chart diff --git a/apps/www/components/EnterpriseContactForm.tsx b/apps/www/components/EnterpriseContactForm.tsx index 36cfc82a970..49850842d07 100644 --- a/apps/www/components/EnterpriseContactForm.tsx +++ b/apps/www/components/EnterpriseContactForm.tsx @@ -42,22 +42,19 @@ const EnterpriseContactForm = () => { const [formSubmitted, setFormSubmitted] = useState(false) const handleFormSubmit = async (values: typeof INITIAL_VALUES, { resetForm }: any) => { - const { error } = await supabase.from('enterprise_contacts').insert( - [ - { - company_name: values.companyName, - contact_name: `${values.contactFirstName} ${values.contactLastName}`, - contact_first_name: values.contactFirstName, - contact_last_name: values.contactLastName, - contact_email: values.contactEmail, - contact_phone: values.contactPhone, - company_size: values.companySize, - details: values.details, - country: values.country, - }, - ], - { returning: 'minimal' } - ) + const { error } = await supabase.from('enterprise_contacts').insert([ + { + company_name: values.companyName, + contact_name: `${values.contactFirstName} ${values.contactLastName}`, + contact_first_name: values.contactFirstName, + contact_last_name: values.contactLastName, + contact_email: values.contactEmail, + contact_phone: values.contactPhone, + company_size: values.companySize, + details: values.details, + country: values.country, + }, + ]) // TODO: handle error console.log('error:', error) @@ -71,105 +68,116 @@ const EnterpriseContactForm = () => { return (
- {({ isSubmitting }: any) => ( -
-
- -
+ {({ values, isSubmitting }: any) => { + const selectedCountry = countries.find((country) => country.code === values['country']) + const phonePlaceholder = + selectedCountry !== undefined ? `+${selectedCountry.phone_code}` : '' -
-
+ return ( +
+
-
+
+
+ +
+ +
+ +
+
+ +
-
-
- -
+
+ +
-
- -
+
+ +
-
- -
+
+ +
-
- -
+
+ +
-
- +
+ +
- -
- -
-
- )} + ) + }} {formSubmitted && ( diff --git a/apps/www/components/LaunchWeek/days.json b/apps/www/components/LaunchWeek/days.json index d2ac292e237..bdc0150c0a2 100644 --- a/apps/www/components/LaunchWeek/days.json +++ b/apps/www/components/LaunchWeek/days.json @@ -43,12 +43,12 @@ "products": [ { "title": "Supabase.js v2 Docs", - "url": "/docs/reference/javascript/next/installing", + "url": "/docs/reference/javascript/installing", "description": "Updated documentation for supabase-js" }, { "title": "Typescript support", - "url": "/docs/reference/javascript/next/typescript-support", + "url": "/docs/reference/javascript/typescript-support", "description": "Using types generated directly from your database." } ] diff --git a/apps/www/components/MadeForDevelopers/CodeExamples.tsx b/apps/www/components/MadeForDevelopers/CodeExamples.tsx index 198539e744a..cb974de41a7 100644 --- a/apps/www/components/MadeForDevelopers/CodeExamples.tsx +++ b/apps/www/components/MadeForDevelopers/CodeExamples.tsx @@ -117,9 +117,9 @@ const CodeExamples = () => { activeId={example} type="underlined" > - {Object.values(exampleList).map((x) => { + {Object.values(exampleList).map((x, i) => { return ( - + ) diff --git a/apps/www/components/MfaContactForm.tsx b/apps/www/components/MfaContactForm.tsx index 704e36ca6ac..03cd038901c 100644 --- a/apps/www/components/MfaContactForm.tsx +++ b/apps/www/components/MfaContactForm.tsx @@ -42,22 +42,19 @@ const MfaContactForm = () => { const [formSubmitted, setFormSubmitted] = useState(false) const handleFormSubmit = async (values: typeof INITIAL_VALUES, { resetForm }: any) => { - const { error } = await supabase.from('mfa_early_access_contacts').insert( - [ - { - company_name: values.companyName, - contact_name: `${values.contactFirstName} ${values.contactLastName}`, - contact_first_name: values.contactFirstName, - contact_last_name: values.contactLastName, - contact_email: values.contactEmail, - contact_phone: values.contactPhone, - company_size: values.companySize, - details: values.details, - country: values.country, - }, - ], - { returning: 'minimal' } - ) + const { error } = await supabase.from('mfa_early_access_contacts').insert([ + { + company_name: values.companyName, + contact_name: `${values.contactFirstName} ${values.contactLastName}`, + contact_first_name: values.contactFirstName, + contact_last_name: values.contactLastName, + contact_email: values.contactEmail, + contact_phone: values.contactPhone, + company_size: values.companySize, + details: values.details, + country: values.country, + }, + ]) // TODO: handle error console.log('error:', error) diff --git a/apps/www/components/Partners/BecomeAPartners.tsx b/apps/www/components/Partners/BecomeAPartners.tsx index e3a5b102e1e..4d599281ae9 100644 --- a/apps/www/components/Partners/BecomeAPartners.tsx +++ b/apps/www/components/Partners/BecomeAPartners.tsx @@ -1,8 +1,7 @@ -import { SupabaseClient } from '@supabase/supabase-js' import { Button, Form, Input, InputNumber, Select } from '@supabase/ui' import { useState } from 'react' import countries from '~/data/Countries.json' -import { PartnerContact } from '~/types/partners' +import { SupabaseClient } from '~/lib/supabase' const INITIAL_VALUES = { type: 'expert', @@ -41,24 +40,21 @@ export default function BecomeAPartner({ supabase }: { supabase: SupabaseClient const [formSubmitted, setFormSubmitted] = useState(false) const handleFormSubmit = async (values: any) => { - const { error } = await supabase.from('partner_contacts').insert( - [ - { - type: values.type, - first: values.first, - last: values.last, - company: values.company, - size: Number(values.size), - title: values.title, - email: values.email, - website: values.email.split('@')[1], - phone: values.phone, - country: values.country, - details: values.details, - }, - ], - { returning: 'minimal' } - ) + const { error } = await supabase.from('partner_contacts').insert([ + { + type: values.type, + first: values.first, + last: values.last, + company: values.company, + size: Number(values.size), + title: values.title, + email: values.email, + website: values.email.split('@')[1], + phone: values.phone, + country: values.country, + details: values.details, + }, + ]) // TODO: handle error console.log('error:', error) @@ -172,8 +168,10 @@ export default function BecomeAPartner({ supabase }: { supabase: SupabaseClient name="country" layout="vertical" > - {countries.map(({ code, name }) => ( - {name} + {countries.map(({ code, name }: any, i: number) => ( + + {name} + ))}
diff --git a/apps/www/components/PricingTableRow.tsx b/apps/www/components/PricingTableRow.tsx index 91ca9bae8dd..b9c26efe71d 100644 --- a/apps/www/components/PricingTableRow.tsx +++ b/apps/www/components/PricingTableRow.tsx @@ -67,9 +67,9 @@ export const PricingTableRowDesktop = (props: any) => { - {category.features.map((feat: any) => { + {category.features.map((feat: any, i: number) => { return ( - + { + const errors: any = {} + + if (!values.companyName) { + errors.companyName = 'Required' + } + + if (!values.contactFirstName) { + errors.contactFirstName = 'Required' + } + + if (!values.contactLastName) { + errors.contactLastName = 'Required' + } + + if (!values.contactEmail) { + errors.contactEmail = 'Required' + } else if (!/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}$/i.test(values.contactEmail)) { + errors.contactEmail = 'Invalid email address' + } + + return errors +} + +const SOC2RequestForm = () => { + const [error, setError] = useState() + const [formSubmitted, setFormSubmitted] = useState(false) + + const handleFormSubmit = async (values: typeof INITIAL_VALUES, { resetForm }: any) => { + const { error } = await supabase.from('soc2_requests').insert([ + { + company_name: values.companyName, + contact_name: `${values.contactFirstName} ${values.contactLastName}`, + contact_first_name: values.contactFirstName, + contact_last_name: values.contactLastName, + contact_email: values.contactEmail, + contact_phone: values.contactPhone, + company_size: values.companySize, + details: values.details, + country: values.country, + }, + ]) + + if (!error) { + resetForm() + setFormSubmitted(true) + } else { + setError(error.message) + } + } + + return ( +
+ {formSubmitted ? ( +

+ Thank you for your submission! A member from the Supabase team will reach out to you + shortly! +

+ ) : ( + <> +
+ {({ values, isSubmitting }: any) => { + const selectedCountry = countries.find( + (country) => country.code === values['country'] + ) + const phonePlaceholder = + selectedCountry !== undefined ? `+${selectedCountry.phone_code}` : '' + + return ( +
+
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+
+ ) + }} +
+ {error &&

Error: {error}

} + + )} +
+ ) +} + +export default SOC2RequestForm diff --git a/apps/www/data/Announcement.json b/apps/www/data/Announcement.json index ae33f11eb8d..5944138270f 100644 --- a/apps/www/data/Announcement.json +++ b/apps/www/data/Announcement.json @@ -1,5 +1,5 @@ { - "show": true, + "show": false, "text": "Auth UI Launch 🚀", "cta": "Vote now", "link": "https://www.producthunt.com/posts/pre-built-auth-ui-for-react", diff --git a/apps/www/data/Countries.json b/apps/www/data/Countries.json index 5df305aeb22..29b926bf959 100644 --- a/apps/www/data/Countries.json +++ b/apps/www/data/Countries.json @@ -1,1002 +1,1252 @@ [ { "code": "AF", - "name": "Afghanistan" + "name": "Afghanistan", + "phone_code": "93" }, { "code": "AX", - "name": "Aland Islands" + "name": "Aland Islands", + "phone_code": "358-18" }, { "code": "AL", - "name": "Albania" + "name": "Albania", + "phone_code": "355" }, { "code": "DZ", - "name": "Algeria" + "name": "Algeria", + "phone_code": "213" }, { "code": "AS", - "name": "American Samoa" + "name": "American Samoa", + "phone_code": "1-684" }, { "code": "AD", - "name": "Andorra" + "name": "Andorra", + "phone_code": "376" }, { "code": "AO", - "name": "Angola" + "name": "Angola", + "phone_code": "244" }, { "code": "AI", - "name": "Anguilla" + "name": "Anguilla", + "phone_code": "1-264" }, { "code": "AQ", - "name": "Antarctica" + "name": "Antarctica", + "phone_code": "" }, { "code": "AG", - "name": "Antigua and Barbuda" + "name": "Antigua and Barbuda", + "phone_code": "1-268" }, { "code": "AR", - "name": "Argentina" + "name": "Argentina", + "phone_code": "54" }, { "code": "AM", - "name": "Armenia" + "name": "Armenia", + "phone_code": "374" }, { "code": "AW", - "name": "Aruba" + "name": "Aruba", + "phone_code": "297" }, { "code": "AU", - "name": "Australia" + "name": "Australia", + "phone_code": "61" }, { "code": "AT", - "name": "Austria" + "name": "Austria", + "phone_code": "43" }, { "code": "AZ", - "name": "Azerbaijan" + "name": "Azerbaijan", + "phone_code": "994" }, { "code": "BS", - "name": "Bahamas" + "name": "Bahamas", + "phone_code": "1-242" }, { "code": "BH", - "name": "Bahrain" + "name": "Bahrain", + "phone_code": "973" }, { "code": "BD", - "name": "Bangladesh" + "name": "Bangladesh", + "phone_code": "880" }, { "code": "BB", - "name": "Barbados" + "name": "Barbados", + "phone_code": "1-246" }, { "code": "BY", - "name": "Belarus" + "name": "Belarus", + "phone_code": "375" }, { "code": "BE", - "name": "Belgium" + "name": "Belgium", + "phone_code": "32" }, { "code": "BZ", - "name": "Belize" + "name": "Belize", + "phone_code": "501" }, { "code": "BJ", - "name": "Benin" + "name": "Benin", + "phone_code": "229" }, { "code": "BM", - "name": "Bermuda" + "name": "Bermuda", + "phone_code": "1-441" }, { "code": "BT", - "name": "Bhutan" + "name": "Bhutan", + "phone_code": "975" }, { "code": "BO", - "name": "Bolivia" + "name": "Bolivia", + "phone_code": "591" }, { "code": "BQ", - "name": "Bonaire, Saint Eustatius and Saba " + "name": "Bonaire, Saint Eustatius and Saba ", + "phone_code": "599" }, { "code": "BA", - "name": "Bosnia and Herzegovina" + "name": "Bosnia and Herzegovina", + "phone_code": "387" }, { "code": "BW", - "name": "Botswana" + "name": "Botswana", + "phone_code": "267" }, { "code": "BV", - "name": "Bouvet Island" + "name": "Bouvet Island", + "phone_code": "" }, { "code": "BR", - "name": "Brazil" + "name": "Brazil", + "phone_code": "55" }, { "code": "IO", - "name": "British Indian Ocean Territory" + "name": "British Indian Ocean Territory", + "phone_code": "246" }, { "code": "VG", - "name": "British Virgin Islands" + "name": "British Virgin Islands", + "phone_code": "1-284" }, { "code": "BN", - "name": "Brunei" + "name": "Brunei", + "phone_code": "673" }, { "code": "BG", - "name": "Bulgaria" + "name": "Bulgaria", + "phone_code": "359" }, { "code": "BF", - "name": "Burkina Faso" + "name": "Burkina Faso", + "phone_code": "226" }, { "code": "BI", - "name": "Burundi" + "name": "Burundi", + "phone_code": "257" }, { "code": "KH", - "name": "Cambodia" + "name": "Cambodia", + "phone_code": "855" }, { "code": "CM", - "name": "Cameroon" + "name": "Cameroon", + "phone_code": "237" }, { "code": "CA", - "name": "Canada" + "name": "Canada", + "phone_code": "1" }, { "code": "CV", - "name": "Cape Verde" + "name": "Cape Verde", + "phone_code": "238" }, { "code": "KY", - "name": "Cayman Islands" + "name": "Cayman Islands", + "phone_code": "1-345" }, { "code": "CF", - "name": "Central African Republic" + "name": "Central African Republic", + "phone_code": "236" }, { "code": "TD", - "name": "Chad" + "name": "Chad", + "phone_code": "235" }, { "code": "CL", - "name": "Chile" + "name": "Chile", + "phone_code": "56" }, { "code": "CN", - "name": "China" + "name": "China", + "phone_code": "86" }, { "code": "CX", - "name": "Christmas Island" + "name": "Christmas Island", + "phone_code": "61" }, { "code": "CC", - "name": "Cocos Islands" + "name": "Cocos Islands", + "phone_code": "61" }, { "code": "CO", - "name": "Colombia" + "name": "Colombia", + "phone_code": "57" }, { "code": "KM", - "name": "Comoros" + "name": "Comoros", + "phone_code": "269" }, { "code": "CK", - "name": "Cook Islands" + "name": "Cook Islands", + "phone_code": "682" }, { "code": "CR", - "name": "Costa Rica" + "name": "Costa Rica", + "phone_code": "506" }, { "code": "HR", - "name": "Croatia" + "name": "Croatia", + "phone_code": "385" }, { "code": "CU", - "name": "Cuba" + "name": "Cuba", + "phone_code": "53" }, { "code": "CW", - "name": "Curacao" + "name": "Curacao", + "phone_code": "599" }, { "code": "CY", - "name": "Cyprus" + "name": "Cyprus", + "phone_code": "357" }, { "code": "CZ", - "name": "Czech Republic" + "name": "Czech Republic", + "phone_code": "420" }, { "code": "CD", - "name": "Democratic Republic of the Congo" + "name": "Democratic Republic of the Congo", + "phone_code": "243" }, { "code": "DK", - "name": "Denmark" + "name": "Denmark", + "phone_code": "45" }, { "code": "DJ", - "name": "Djibouti" + "name": "Djibouti", + "phone_code": "253" }, { "code": "DM", - "name": "Dominica" + "name": "Dominica", + "phone_code": "1-767" }, { "code": "DO", - "name": "Dominican Republic" + "name": "Dominican Republic", + "phone_code": "1-809 and 1-829" }, { "code": "TL", - "name": "East Timor" + "name": "East Timor", + "phone_code": "670" }, { "code": "EC", - "name": "Ecuador" + "name": "Ecuador", + "phone_code": "593" }, { "code": "EG", - "name": "Egypt" + "name": "Egypt", + "phone_code": "20" }, { "code": "SV", - "name": "El Salvador" + "name": "El Salvador", + "phone_code": "503" }, { "code": "GQ", - "name": "Equatorial Guinea" + "name": "Equatorial Guinea", + "phone_code": "240" }, { "code": "ER", - "name": "Eritrea" + "name": "Eritrea", + "phone_code": "291" }, { "code": "EE", - "name": "Estonia" + "name": "Estonia", + "phone_code": "372" }, { "code": "ET", - "name": "Ethiopia" + "name": "Ethiopia", + "phone_code": "251" }, { "code": "FK", - "name": "Falkland Islands" + "name": "Falkland Islands", + "phone_code": "500" }, { "code": "FO", - "name": "Faroe Islands" + "name": "Faroe Islands", + "phone_code": "298" }, { "code": "FJ", - "name": "Fiji" + "name": "Fiji", + "phone_code": "679" }, { "code": "FI", - "name": "Finland" + "name": "Finland", + "phone_code": "358" }, { "code": "FR", - "name": "France" + "name": "France", + "phone_code": "33" }, { "code": "GF", - "name": "French Guiana" + "name": "French Guiana", + "phone_code": "594" }, { "code": "PF", - "name": "French Polynesia" + "name": "French Polynesia", + "phone_code": "689" }, { "code": "TF", - "name": "French Southern Territories" + "name": "French Southern Territories", + "phone_code": "" }, { "code": "GA", - "name": "Gabon" + "name": "Gabon", + "phone_code": "241" }, { "code": "GM", - "name": "Gambia" + "name": "Gambia", + "phone_code": "220" }, { "code": "GE", - "name": "Georgia" + "name": "Georgia", + "phone_code": "995" }, { "code": "DE", - "name": "Germany" + "name": "Germany", + "phone_code": "49" }, { "code": "GH", - "name": "Ghana" + "name": "Ghana", + "phone_code": "233" }, { "code": "GI", - "name": "Gibraltar" + "name": "Gibraltar", + "phone_code": "350" }, { "code": "GR", - "name": "Greece" + "name": "Greece", + "phone_code": "30" }, { "code": "GL", - "name": "Greenland" + "name": "Greenland", + "phone_code": "299" }, { "code": "GD", - "name": "Grenada" + "name": "Grenada", + "phone_code": "1-473" }, { "code": "GP", - "name": "Guadeloupe" + "name": "Guadeloupe", + "phone_code": "590" }, { "code": "GU", - "name": "Guam" + "name": "Guam", + "phone_code": "1-671" }, { "code": "GT", - "name": "Guatemala" + "name": "Guatemala", + "phone_code": "502" }, { "code": "GG", - "name": "Guernsey" + "name": "Guernsey", + "phone_code": "44-1481" }, { "code": "GN", - "name": "Guinea" + "name": "Guinea", + "phone_code": "224" }, { "code": "GW", - "name": "Guinea-Bissau" + "name": "Guinea-Bissau", + "phone_code": "245" }, { "code": "GY", - "name": "Guyana" + "name": "Guyana", + "phone_code": "592" }, { "code": "HT", - "name": "Haiti" + "name": "Haiti", + "phone_code": "509" }, { "code": "HM", - "name": "Heard Island and McDonald Islands" + "name": "Heard Island and McDonald Islands", + "phone_code": " " }, { "code": "HN", - "name": "Honduras" + "name": "Honduras", + "phone_code": "504" }, { "code": "HK", - "name": "Hong Kong" + "name": "Hong Kong", + "phone_code": "852" }, { "code": "HU", - "name": "Hungary" + "name": "Hungary", + "phone_code": "36" }, { "code": "IS", - "name": "Iceland" + "name": "Iceland", + "phone_code": "354" }, { "code": "IN", - "name": "India" + "name": "India", + "phone_code": "91" }, { "code": "ID", - "name": "Indonesia" + "name": "Indonesia", + "phone_code": "62" }, { "code": "IR", - "name": "Iran" + "name": "Iran", + "phone_code": "98" }, { "code": "IQ", - "name": "Iraq" + "name": "Iraq", + "phone_code": "964" }, { "code": "IE", - "name": "Ireland" + "name": "Ireland", + "phone_code": "353" }, { "code": "IM", - "name": "Isle of Man" + "name": "Isle of Man", + "phone_code": "44-1624" }, { "code": "IL", - "name": "Israel" + "name": "Israel", + "phone_code": "972" }, { "code": "IT", - "name": "Italy" + "name": "Italy", + "phone_code": "39" }, { "code": "CI", - "name": "Ivory Coast" + "name": "Ivory Coast", + "phone_code": "225" }, { "code": "JM", - "name": "Jamaica" + "name": "Jamaica", + "phone_code": "1-876" }, { "code": "JP", - "name": "Japan" + "name": "Japan", + "phone_code": "81" }, { "code": "JE", - "name": "Jersey" + "name": "Jersey", + "phone_code": "44-1534" }, { "code": "JO", - "name": "Jordan" + "name": "Jordan", + "phone_code": "962" }, { "code": "KZ", - "name": "Kazakhstan" + "name": "Kazakhstan", + "phone_code": "7" }, { "code": "KE", - "name": "Kenya" + "name": "Kenya", + "phone_code": "254" }, { "code": "KI", - "name": "Kiribati" + "name": "Kiribati", + "phone_code": "686" }, { "code": "XK", - "name": "Kosovo" + "name": "Kosovo", + "phone_code": "" }, { "code": "KW", - "name": "Kuwait" + "name": "Kuwait", + "phone_code": "965" }, { "code": "KG", - "name": "Kyrgyzstan" + "name": "Kyrgyzstan", + "phone_code": "996" }, { "code": "LA", - "name": "Laos" + "name": "Laos", + "phone_code": "856" }, { "code": "LV", - "name": "Latvia" + "name": "Latvia", + "phone_code": "371" }, { "code": "LB", - "name": "Lebanon" + "name": "Lebanon", + "phone_code": "961" }, { "code": "LS", - "name": "Lesotho" + "name": "Lesotho", + "phone_code": "266" }, { "code": "LR", - "name": "Liberia" + "name": "Liberia", + "phone_code": "231" }, { "code": "LY", - "name": "Libya" + "name": "Libya", + "phone_code": "218" }, { "code": "LI", - "name": "Liechtenstein" + "name": "Liechtenstein", + "phone_code": "423" }, { "code": "LT", - "name": "Lithuania" + "name": "Lithuania", + "phone_code": "370" }, { "code": "LU", - "name": "Luxembourg" + "name": "Luxembourg", + "phone_code": "352" }, { "code": "MO", - "name": "Macao" + "name": "Macao", + "phone_code": "853" }, { "code": "MK", - "name": "Macedonia" + "name": "Macedonia", + "phone_code": "389" }, { "code": "MG", - "name": "Madagascar" + "name": "Madagascar", + "phone_code": "261" }, { "code": "MW", - "name": "Malawi" + "name": "Malawi", + "phone_code": "265" }, { "code": "MY", - "name": "Malaysia" + "name": "Malaysia", + "phone_code": "60" }, { "code": "MV", - "name": "Maldives" + "name": "Maldives", + "phone_code": "960" }, { "code": "ML", - "name": "Mali" + "name": "Mali", + "phone_code": "223" }, { "code": "MT", - "name": "Malta" + "name": "Malta", + "phone_code": "356" }, { "code": "MH", - "name": "Marshall Islands" + "name": "Marshall Islands", + "phone_code": "692" }, { "code": "MQ", - "name": "Martinique" + "name": "Martinique", + "phone_code": "596" }, { "code": "MR", - "name": "Mauritania" + "name": "Mauritania", + "phone_code": "222" }, { "code": "MU", - "name": "Mauritius" + "name": "Mauritius", + "phone_code": "230" }, { "code": "YT", - "name": "Mayotte" + "name": "Mayotte", + "phone_code": "262" }, { "code": "MX", - "name": "Mexico" + "name": "Mexico", + "phone_code": "52" }, { "code": "FM", - "name": "Micronesia" + "name": "Micronesia", + "phone_code": "691" }, { "code": "MD", - "name": "Moldova" + "name": "Moldova", + "phone_code": "373" }, { "code": "MC", - "name": "Monaco" + "name": "Monaco", + "phone_code": "377" }, { "code": "MN", - "name": "Mongolia" + "name": "Mongolia", + "phone_code": "976" }, { "code": "ME", - "name": "Montenegro" + "name": "Montenegro", + "phone_code": "382" }, { "code": "MS", - "name": "Montserrat" + "name": "Montserrat", + "phone_code": "1-664" }, { "code": "MA", - "name": "Morocco" + "name": "Morocco", + "phone_code": "212" }, { "code": "MZ", - "name": "Mozambique" + "name": "Mozambique", + "phone_code": "258" }, { "code": "MM", - "name": "Myanmar" + "name": "Myanmar", + "phone_code": "95" }, { "code": "NA", - "name": "Namibia" + "name": "Namibia", + "phone_code": "264" }, { "code": "NR", - "name": "Nauru" + "name": "Nauru", + "phone_code": "674" }, { "code": "NP", - "name": "Nepal" + "name": "Nepal", + "phone_code": "977" }, { "code": "NL", - "name": "Netherlands" + "name": "Netherlands", + "phone_code": "31" }, { "code": "NC", - "name": "New Caledonia" + "name": "New Caledonia", + "phone_code": "687" }, { "code": "NZ", - "name": "New Zealand" + "name": "New Zealand", + "phone_code": "64" }, { "code": "NI", - "name": "Nicaragua" + "name": "Nicaragua", + "phone_code": "505" }, { "code": "NE", - "name": "Niger" + "name": "Niger", + "phone_code": "227" }, { "code": "NG", - "name": "Nigeria" + "name": "Nigeria", + "phone_code": "234" }, { "code": "NU", - "name": "Niue" + "name": "Niue", + "phone_code": "683" }, { "code": "NF", - "name": "Norfolk Island" + "name": "Norfolk Island", + "phone_code": "672" }, { "code": "KP", - "name": "North Korea" + "name": "North Korea", + "phone_code": "850" }, { "code": "MP", - "name": "Northern Mariana Islands" + "name": "Northern Mariana Islands", + "phone_code": "1-670" }, { "code": "NO", - "name": "Norway" + "name": "Norway", + "phone_code": "47" }, { "code": "OM", - "name": "Oman" + "name": "Oman", + "phone_code": "968" }, { "code": "PK", - "name": "Pakistan" + "name": "Pakistan", + "phone_code": "92" }, { "code": "PW", - "name": "Palau" + "name": "Palau", + "phone_code": "680" }, { "code": "PS", - "name": "Palestinian Territory" + "name": "Palestinian Territory", + "phone_code": "970" }, { "code": "PA", - "name": "Panama" + "name": "Panama", + "phone_code": "507" }, { "code": "PG", - "name": "Papua New Guinea" + "name": "Papua New Guinea", + "phone_code": "675" }, { "code": "PY", - "name": "Paraguay" + "name": "Paraguay", + "phone_code": "595" }, { "code": "PE", - "name": "Peru" + "name": "Peru", + "phone_code": "51" }, { "code": "PH", - "name": "Philippines" + "name": "Philippines", + "phone_code": "63" }, { "code": "PN", - "name": "Pitcairn" + "name": "Pitcairn", + "phone_code": "870" }, { "code": "PL", - "name": "Poland" + "name": "Poland", + "phone_code": "48" }, { "code": "PT", - "name": "Portugal" + "name": "Portugal", + "phone_code": "351" }, { "code": "PR", - "name": "Puerto Rico" + "name": "Puerto Rico", + "phone_code": "1-787 and 1-939" }, { "code": "QA", - "name": "Qatar" + "name": "Qatar", + "phone_code": "974" }, { "code": "CG", - "name": "Republic of the Congo" + "name": "Republic of the Congo", + "phone_code": "242" }, { "code": "RE", - "name": "Reunion" + "name": "Reunion", + "phone_code": "262" }, { "code": "RO", - "name": "Romania" + "name": "Romania", + "phone_code": "40" }, { "code": "RU", - "name": "Russia" + "name": "Russia", + "phone_code": "7" }, { "code": "RW", - "name": "Rwanda" + "name": "Rwanda", + "phone_code": "250" }, { "code": "BL", - "name": "Saint Barthelemy" + "name": "Saint Barthelemy", + "phone_code": "590" }, { "code": "SH", - "name": "Saint Helena" + "name": "Saint Helena", + "phone_code": "290" }, { "code": "KN", - "name": "Saint Kitts and Nevis" + "name": "Saint Kitts and Nevis", + "phone_code": "1-869" }, { "code": "LC", - "name": "Saint Lucia" + "name": "Saint Lucia", + "phone_code": "1-758" }, { "code": "MF", - "name": "Saint Martin" + "name": "Saint Martin", + "phone_code": "590" }, { "code": "PM", - "name": "Saint Pierre and Miquelon" + "name": "Saint Pierre and Miquelon", + "phone_code": "508" }, { "code": "VC", - "name": "Saint Vincent and the Grenadines" + "name": "Saint Vincent and the Grenadines", + "phone_code": "1-784" }, { "code": "WS", - "name": "Samoa" + "name": "Samoa", + "phone_code": "685" }, { "code": "SM", - "name": "San Marino" + "name": "San Marino", + "phone_code": "378" }, { "code": "ST", - "name": "Sao Tome and Principe" + "name": "Sao Tome and Principe", + "phone_code": "239" }, { "code": "SA", - "name": "Saudi Arabia" + "name": "Saudi Arabia", + "phone_code": "966" }, { "code": "SN", - "name": "Senegal" + "name": "Senegal", + "phone_code": "221" }, { "code": "RS", - "name": "Serbia" + "name": "Serbia", + "phone_code": "381" }, { "code": "SC", - "name": "Seychelles" + "name": "Seychelles", + "phone_code": "248" }, { "code": "SL", - "name": "Sierra Leone" + "name": "Sierra Leone", + "phone_code": "232" }, { "code": "SG", - "name": "Singapore" + "name": "Singapore", + "phone_code": "65" }, { "code": "SX", - "name": "Sint Maarten" + "name": "Sint Maarten", + "phone_code": "599" }, { "code": "SK", - "name": "Slovakia" + "name": "Slovakia", + "phone_code": "421" }, { "code": "SI", - "name": "Slovenia" + "name": "Slovenia", + "phone_code": "386" }, { "code": "SB", - "name": "Solomon Islands" + "name": "Solomon Islands", + "phone_code": "677" }, { "code": "SO", - "name": "Somalia" + "name": "Somalia", + "phone_code": "252" }, { "code": "ZA", - "name": "South Africa" + "name": "South Africa", + "phone_code": "27" }, { "code": "GS", - "name": "South Georgia and the South Sandwich Islands" + "name": "South Georgia and the South Sandwich Islands", + "phone_code": "" }, { "code": "KR", - "name": "South Korea" + "name": "South Korea", + "phone_code": "82" }, { "code": "SS", - "name": "South Sudan" + "name": "South Sudan", + "phone_code": "211" }, { "code": "ES", - "name": "Spain" + "name": "Spain", + "phone_code": "34" }, { "code": "LK", - "name": "Sri Lanka" + "name": "Sri Lanka", + "phone_code": "94" }, { "code": "SD", - "name": "Sudan" + "name": "Sudan", + "phone_code": "249" }, { "code": "SR", - "name": "Suriname" + "name": "Suriname", + "phone_code": "597" }, { "code": "SJ", - "name": "Svalbard and Jan Mayen" + "name": "Svalbard and Jan Mayen", + "phone_code": "47" }, { "code": "SZ", - "name": "Swaziland" + "name": "Swaziland", + "phone_code": "268" }, { "code": "SE", - "name": "Sweden" + "name": "Sweden", + "phone_code": "46" }, { "code": "CH", - "name": "Switzerland" + "name": "Switzerland", + "phone_code": "41" }, { "code": "SY", - "name": "Syria" + "name": "Syria", + "phone_code": "963" }, { "code": "TW", - "name": "Taiwan" + "name": "Taiwan", + "phone_code": "886" }, { "code": "TJ", - "name": "Tajikistan" + "name": "Tajikistan", + "phone_code": "992" }, { "code": "TZ", - "name": "Tanzania" + "name": "Tanzania", + "phone_code": "255" }, { "code": "TH", - "name": "Thailand" + "name": "Thailand", + "phone_code": "66" }, { "code": "TG", - "name": "Togo" + "name": "Togo", + "phone_code": "228" }, { "code": "TK", - "name": "Tokelau" + "name": "Tokelau", + "phone_code": "690" }, { "code": "TO", - "name": "Tonga" + "name": "Tonga", + "phone_code": "676" }, { "code": "TT", - "name": "Trinidad and Tobago" + "name": "Trinidad and Tobago", + "phone_code": "1-868" }, { "code": "TN", - "name": "Tunisia" + "name": "Tunisia", + "phone_code": "216" }, { "code": "TR", - "name": "Turkey" + "name": "Turkey", + "phone_code": "90" }, { "code": "TM", - "name": "Turkmenistan" + "name": "Turkmenistan", + "phone_code": "993" }, { "code": "TC", - "name": "Turks and Caicos Islands" + "name": "Turks and Caicos Islands", + "phone_code": "1-649" }, { "code": "TV", - "name": "Tuvalu" + "name": "Tuvalu", + "phone_code": "688" }, { "code": "VI", - "name": "U.S. Virgin Islands" + "name": "U.S. Virgin Islands", + "phone_code": "1-340" }, { "code": "UG", - "name": "Uganda" + "name": "Uganda", + "phone_code": "256" }, { "code": "UA", - "name": "Ukraine" + "name": "Ukraine", + "phone_code": "380" }, { "code": "AE", - "name": "United Arab Emirates" + "name": "United Arab Emirates", + "phone_code": "971" }, { "code": "GB", - "name": "United Kingdom" + "name": "United Kingdom", + "phone_code": "44" }, { "code": "US", - "name": "United States" + "name": "United States", + "phone_code": "1" }, { "code": "UM", - "name": "United States Minor Outlying Islands" + "name": "United States Minor Outlying Islands", + "phone_code": "1" }, { "code": "UY", - "name": "Uruguay" + "name": "Uruguay", + "phone_code": "598" }, { "code": "UZ", - "name": "Uzbekistan" + "name": "Uzbekistan", + "phone_code": "998" }, { "code": "VU", - "name": "Vanuatu" + "name": "Vanuatu", + "phone_code": "678" }, { "code": "VA", - "name": "Vatican" + "name": "Vatican", + "phone_code": "379" }, { "code": "VE", - "name": "Venezuela" + "name": "Venezuela", + "phone_code": "58" }, { "code": "VN", - "name": "Vietnam" + "name": "Vietnam", + "phone_code": "84" }, { "code": "WF", - "name": "Wallis and Futuna" + "name": "Wallis and Futuna", + "phone_code": "681" }, { "code": "EH", - "name": "Western Sahara" + "name": "Western Sahara", + "phone_code": "212" }, { "code": "YE", - "name": "Yemen" + "name": "Yemen", + "phone_code": "967" }, { "code": "ZM", - "name": "Zambia" + "name": "Zambia", + "phone_code": "260" }, { "code": "ZW", - "name": "Zimbabwe" + "name": "Zimbabwe", + "phone_code": "263" } ] diff --git a/apps/www/data/Footer.json b/apps/www/data/Footer.json index ce0102b234d..bc567325dd5 100644 --- a/apps/www/data/Footer.json +++ b/apps/www/data/Footer.json @@ -62,6 +62,10 @@ { "text": "DPA", "url": "/legal/dpa" + }, + { + "text": "SOC2", + "url": "/legal/soc2" } ] }, @@ -79,6 +83,10 @@ { "text": "Guides", "url": "/docs/guides/examples" + }, + { + "text": "Changelog", + "url": "/changelog" } ] }, diff --git a/apps/www/data/blog/PostgresFTSComparison.js b/apps/www/data/blog/PostgresFTSComparison.js new file mode 100644 index 00000000000..29c9079e715 --- /dev/null +++ b/apps/www/data/blog/PostgresFTSComparison.js @@ -0,0 +1,289 @@ +const latency = [ + { + query: 'awakening', + meilisearch: 3.63, + opensearch: 9.84, + pg: 1.93, + 'sqlite-disk': 0.3, + 'sqlite-mem': 0.24, + typesense: 2.07, + }, + + { + query: 'comedy', + meilisearch: 3.46, + opensearch: 40.1, + pg: 3.55, + 'sqlite-disk': 4.25, + 'sqlite-mem': 2.91, + typesense: 3.14, + }, + + { + query: 'love', + meilisearch: 12.4, + opensearch: 139.0, + pg: 15.3, + 'sqlite-disk': 27.7, + 'sqlite-mem': 13.4, + typesense: 30.6, + }, + + { + query: 'romance', + meilisearch: 3.05, + opensearch: 23.9, + pg: 2.14, + 'sqlite-disk': 1.97, + 'sqlite-mem': 1.43, + typesense: 2.68, + }, + + { + query: 'spy', + meilisearch: 3.57, + opensearch: 14.1, + pg: 1.78, + 'sqlite-disk': 0.92, + 'sqlite-mem': 0.64, + typesense: 3.78, + }, + + { + query: 'superhero', + meilisearch: 4.82, + opensearch: 112.0, + pg: 3.68, + 'sqlite-disk': 0.68, + 'sqlite-mem': 0.39, + typesense: 3.99, + }, + + { + query: 'superhero', + meilisearch: 4.39, + opensearch: 12.6, + pg: 1.59, + 'sqlite-disk': 0.52, + 'sqlite-mem': 0.24, + typesense: 2.09, + }, + + { + query: 'superman', + meilisearch: 3.45, + opensearch: 11.4, + pg: 1.24, + 'sqlite-disk': 0.36, + 'sqlite-mem': 0.19, + typesense: 2.71, + }, + + { + query: 'suprman', + meilisearch: 2.69, + opensearch: 6.78, + pg: 1.0, + 'sqlite-disk': 0.08, + 'sqlite-mem': 0.06, + typesense: 2.83, + }, + + { + query: 'worldwar', + meilisearch: 8.53, + opensearch: 149.0, + pg: 2.94, + 'sqlite-disk': 5.02, + 'sqlite-mem': 2.93, + typesense: 3.26, + }, +] + +const results = [ + { + query: 'awakening', + meilisearch: 15, + opensearch: 32, + pg: 210, + 'sqlite-disk': 63, + 'sqlite-mem': 63, + typesense: 14, + }, + { + query: 'comedy', + meilisearch: 67, + opensearch: 756, + pg: 1213, + 'sqlite-disk': 1220, + 'sqlite-mem': 1220, + typesense: 55, + }, + { + query: 'love', + meilisearch: 812, + opensearch: 3036, + pg: 5417, + 'sqlite-disk': 4691, + 'sqlite-mem': 4691, + typesense: 745, + }, + { + query: 'romance', + meilisearch: 35, + opensearch: 383, + pg: 630, + 'sqlite-disk': 554, + 'sqlite-mem': 554, + typesense: 34, + }, + { + query: 'spy', + meilisearch: 47, + opensearch: 168, + pg: 349, + 'sqlite-disk': 241, + 'sqlite-mem': 241, + typesense: 47, + }, + { + query: 'superhero', + meilisearch: 56, + opensearch: 431, + pg: 34, + 'sqlite-disk': 20, + 'sqlite-mem': 20, + typesense: 8, + }, + { + query: 'superhero', + meilisearch: 14, + opensearch: 45, + pg: 86, + 'sqlite-disk': 67, + 'sqlite-mem': 67, + typesense: 8, + }, + { + query: 'superman', + meilisearch: 41, + opensearch: 25, + pg: 47, + 'sqlite-disk': 47, + 'sqlite-mem': 47, + typesense: 28, + }, + { + query: 'suprman', + meilisearch: 29, + opensearch: 0, + pg: 0, + 'sqlite-disk': 0, + 'sqlite-mem': 0, + typesense: 28, + }, + { + query: 'worldwar', + meilisearch: 316, + opensearch: 3805, + pg: 834, + 'sqlite-disk': 781, + 'sqlite-mem': 781, + typesense: 11, + }, +] + +const avg_latency = [ + { + query: 'awakening', + meilisearch: 0.24, + opensearch: 0.31, + pg: 0.01, + 'sqlite-disk': 0.0, + 'sqlite-mem': 0.0, + typesense: 0.15, + }, + { + query: 'comedy', + meilisearch: 0.05, + opensearch: 0.05, + pg: 0.0, + 'sqlite-disk': 0.0, + 'sqlite-mem': 0.0, + typesense: 0.06, + }, + { + query: 'love', + meilisearch: 0.02, + opensearch: 0.05, + pg: 0.0, + 'sqlite-disk': 0.01, + 'sqlite-mem': 0.0, + typesense: 0.04, + }, + { + query: 'romance', + meilisearch: 0.09, + opensearch: 0.06, + pg: 0.0, + 'sqlite-disk': 0.0, + 'sqlite-mem': 0.0, + typesense: 0.08, + }, + { + query: 'spy', + meilisearch: 0.08, + opensearch: 0.08, + pg: 0.01, + 'sqlite-disk': 0.0, + 'sqlite-mem': 0.0, + typesense: 0.08, + }, + { + query: 'superhero', + meilisearch: 0.09, + opensearch: 0.26, + pg: 0.11, + 'sqlite-disk': 0.03, + 'sqlite-mem': 0.02, + typesense: 0.5, + }, + { + query: 'superhero', + meilisearch: 0.31, + opensearch: 0.28, + pg: 0.02, + 'sqlite-disk': 0.01, + 'sqlite-mem': 0.0, + typesense: 0.26, + }, + { + query: 'superman', + meilisearch: 0.08, + opensearch: 0.45, + pg: 0.03, + 'sqlite-disk': 0.01, + 'sqlite-mem': 0.0, + typesense: 0.1, + }, + { + query: 'suprman', + meilisearch: 0.09, + opensearch: undefined, + pg: undefined, + 'sqlite-disk': undefined, + 'sqlite-mem': undefined, + typesense: 0.1, + }, + { + query: 'worldwar', + meilisearch: 0.03, + opensearch: 0.04, + pg: 0.0, + 'sqlite-disk': 0.01, + 'sqlite-mem': 0.0, + typesense: 0.3, + }, +] + +export { latency, results, avg_latency } diff --git a/apps/www/layouts/comparison.tsx b/apps/www/layouts/comparison.tsx index 8146f6b4d80..0d55186d0f6 100644 --- a/apps/www/layouts/comparison.tsx +++ b/apps/www/layouts/comparison.tsx @@ -1,25 +1,22 @@ import authors from 'lib/authors.json' -import hydrate from 'next-mdx-remote/hydrate' import { NextSeo } from 'next-seo' import Image from 'next/image' import Link from 'next/link' import { useRouter } from 'next/router' import React from 'react' -import { Gfm } from 'remark-gfm' import CTABanner from '~/components/CTABanner' import DefaultLayout from '~/components/Layouts/Default' import { generateReadingTime } from '~/lib/helpers' +import { MDXRemote } from 'next-mdx-remote' interface Props { components: React.ReactNode props: any - gfm: Gfm - slug: string } -const LayoutComparison = ({ components, props, gfm, slug }: Props) => { +const LayoutComparison = ({ components, props }: Props) => { // @ts-ignore - const content = hydrate(props.blog.content, { components }) + const content = props.blog.content const authorArray = props.blog.author.split(',') @@ -98,7 +95,7 @@ const LayoutComparison = ({ components, props, gfm, slug }: Props) => {

{props.blog.date}

•

-

{generateReadingTime(props.blog.content.renderedOutput)}

+

{generateReadingTime(props.blog.source)}

{author.map((author: any) => { @@ -133,7 +130,9 @@ const LayoutComparison = ({ components, props, gfm, slug }: Props) => {
{/* Content */} -
{content}
+
+ +
Share this article
diff --git a/apps/www/lib/database.types.ts b/apps/www/lib/database.types.ts new file mode 100644 index 00000000000..2e536759c2f --- /dev/null +++ b/apps/www/lib/database.types.ts @@ -0,0 +1,112 @@ +export type Json = string | number | boolean | null | { [key: string]: Json } | Json[] + +export interface Database { + public: { + Tables: { + partners: { + Row: { + id: number + slug: string + type: Database['public']['Enums']['partner_type'] + category: string + developer: string + title: string + description: string + logo: string + images: string[] + video: string + overview: string + website: string + docs: string + approved: boolean + } + Insert: { + id?: number + slug?: string + type?: Database['public']['Enums']['partner_type'] + category?: string + developer?: string + title?: string + description?: string + logo?: string + images?: string[] + video?: string + overview?: string + website?: string + docs?: string + approved?: boolean + } + Update: { + id?: number + slug?: string + type?: Database['public']['Enums']['partner_type'] + category?: string + developer?: string + title?: string + description?: string + logo?: string + images?: string[] + video?: string + overview?: string + website?: string + docs?: string + approved?: boolean + } + } + partner_contacts: { + Row: { + id: number + type: Database['public']['Enums']['partner_type'] + company: string + country: string + details?: string + email: string + first: string + last: string + phone?: string + size?: number + title?: string + website: string + } + Insert: { + id?: number + type?: Database['public']['Enums']['partner_type'] + company?: string + country?: string + details?: string + email?: string + first?: string + last?: string + phone?: string + size?: number + title?: string + website?: string + } + Update: { + id?: number + type?: Database['public']['Enums']['partner_type'] + company?: string + country?: string + details?: string + email?: string + first?: string + last?: string + phone?: string + size?: number + title?: string + website?: string + } + } + } + Views: {} + Functions: { + derive_label_sort_from_label: { + Args: { label: string } + Returns: string + } + } + Enums: { + partner_type: 'technology' | 'expert' + } + } +} diff --git a/apps/www/lib/mdx/mdxComponents.tsx b/apps/www/lib/mdx/mdxComponents.tsx new file mode 100644 index 00000000000..3f2f1762858 --- /dev/null +++ b/apps/www/lib/mdx/mdxComponents.tsx @@ -0,0 +1,53 @@ +import Image from 'next/image' +import Avatar from '~/components/Avatar' +import CodeBlock from '~/components/CodeBlock/CodeBlock' +import ImageGrid from '~/components/ImageGrid' +import Quote from '~/components/Quote' +import Chart from '~/components/Charts/PGCharts' + +// import all components used in blog articles here +// to do: move this into a helper/utils, it is used elsewhere + +const ignoreClass = 'ignore-on-export' + +export default function mdxComponents(type?: 'blog' | 'lp' | undefined) { + const components = { + CodeBlock, + Quote, + Avatar, + PGChart: (props: any) => { + return + }, + pre: (props: any) => { + if (props.className !== ignoreClass) { + return + } else { + return + } + }, + ImageGrid, + img: (props: any) => { + if (props.className !== ignoreClass) { + return ( +
+ +
+ ) + } + return + }, + } + + return components +} diff --git a/apps/www/lib/mdx/mdxSerialize.ts b/apps/www/lib/mdx/mdxSerialize.ts new file mode 100644 index 00000000000..f5ed0ce9c9b --- /dev/null +++ b/apps/www/lib/mdx/mdxSerialize.ts @@ -0,0 +1,17 @@ +import { serialize } from 'next-mdx-remote/serialize' +import rehypeSlug from 'rehype-slug' +import remarkGfm from 'remark-gfm' + +export async function mdxSerialize(source: string) { + const mdxSource: any = await serialize(source, { + mdxOptions: { + remarkPlugins: [remarkGfm], + rehypePlugins: [ + // @ts-ignore + rehypeSlug, // add IDs to any h1-h6 tag that doesn't have one, using a slug made from its text + ], + }, + }) + + return mdxSource +} diff --git a/apps/www/lib/redirects.js b/apps/www/lib/redirects.js new file mode 100644 index 00000000000..bed6e889a50 --- /dev/null +++ b/apps/www/lib/redirects.js @@ -0,0 +1,1478 @@ +module.exports = [ + { + permanent: true, + source: '/auth/Auth', + destination: '/auth', + }, + { + permanent: true, + source: '/docs/guides/storage-caching', + destination: '/docs/guides/storage-cdn', + }, + { + permanent: true, + source: '/database/Database', + destination: '/database', + }, + { + permanent: true, + source: '/edge-functions/edge-functions', + destination: '/edge-functions', + }, + { + permanent: true, + source: '/storage/Storage', + destination: '/storage', + }, + { + permanent: false, + source: '/blog/2021/03/08/toad-a-link-shorterner-with-simple-apis-for-low-coders', + destination: '/blog/2021/03/08/toad-a-link-shortener-with-simple-apis-for-low-coders', + }, + { + permanent: false, + source: '/blog/2020/07/10/surviving-hacker-news', + destination: '/blog/2020/07/10/alpha-launch-postmortem', + }, + { + permanent: false, + source: '/docs/common/_CommonResponses', + destination: '/docs', + }, + { permanent: false, source: '/docs/common/_DummyData', destination: '/docs' }, + { permanent: false, source: '/docs/common/_FromFunction', destination: '/docs' }, + { + permanent: false, + source: '/docs/common/filters/_adj', + destination: '/docs/reference/javascript/rangeAdjacent', + }, + { + permanent: false, + source: '/docs/common/filters/_cd', + destination: '/docs/reference/javascript/containedBy', + }, + { + permanent: false, + source: '/docs/common/filters/_cs', + destination: '/docs/reference/javascript/contains', + }, + { + permanent: false, + source: '/docs/common/filters/_eq', + destination: '/docs/reference/javascript/eq', + }, + { + permanent: false, + source: '/docs/common/filters/_filter', + destination: '/docs/reference/javascript/filter', + }, + { + permanent: false, + source: '/docs/common/filters/_gt', + destination: '/docs/reference/javascript/gt', + }, + { + permanent: false, + source: '/docs/common/filters/_gte', + destination: '/docs/reference/javascript/gte', + }, + { + permanent: false, + source: '/docs/common/filters/_ilike', + destination: '/docs/reference/javascript/ilike', + }, + { + permanent: false, + source: '/docs/common/filters/_in', + destination: '/docs/reference/javascript/in', + }, + { + permanent: false, + source: '/docs/common/filters/_is', + destination: '/docs/reference/javascript/is', + }, + { + permanent: false, + source: '/docs/common/filters/_like', + destination: '/docs/reference/javascript/like', + }, + { + permanent: false, + source: '/docs/common/filters/_lt', + destination: '/docs/reference/javascript/lt', + }, + { + permanent: false, + source: '/docs/common/filters/_lte', + destination: '/docs/reference/javascript/lte', + }, + { + permanent: false, + source: '/docs/common/filters/_match', + destination: '/docs/reference/javascript/match', + }, + { + permanent: false, + source: '/docs/common/filters/_neq', + destination: '/docs/reference/javascript/neq', + }, + { + permanent: false, + source: '/docs/common/filters/_not', + destination: '/docs/reference/javascript/not', + }, + { + permanent: false, + source: '/docs/common/filters/_nxl', + destination: '/docs/reference/javascript/rangeGte', + }, + { + permanent: false, + source: '/docs/common/filters/_nxr', + destination: '/docs/reference/javascript/rangeLte', + }, + { + permanent: false, + source: '/docs/common/filters/_or', + destination: '/docs/reference/javascript/or', + }, + { + permanent: false, + source: '/docs/common/filters/_ova', + destination: '/docs/reference/javascript/overlaps', + }, + { + permanent: false, + source: '/docs/common/filters/_ovr', + destination: '/docs/reference/javascript/overlaps', + }, + { + permanent: false, + source: '/docs/common/filters/_sl', + destination: '/docs/reference/javascript/rangeLt', + }, + { + permanent: false, + source: '/docs/common/filters/_sr', + destination: '/docs/reference/javascript/rangeGt', + }, + { + permanent: false, + source: '/docs/library/authentication', + destination: '/docs/guides/auth', + }, + { + permanent: false, + source: '/docs/library/delete', + destination: '/docs/reference/javascript/delete', + }, + { + permanent: false, + source: '/docs/library/get', + destination: '/docs/reference/javascript/select', + }, + { + permanent: false, + source: '/docs/library/getting-started', + destination: '/docs/reference/javascript/supabase-client', + }, + { + permanent: false, + source: '/docs/library/patch', + destination: '/docs/reference/javascript/update', + }, + { + permanent: false, + source: '/docs/library/post', + destination: '/docs/reference/javascript/insert', + }, + { + permanent: false, + source: '/docs/library/stored-procedures', + destination: '/docs/reference/javascript/rpc', + }, + { + permanent: false, + source: '/docs/library/subscribe', + destination: '/docs/reference/javascript/subscribe', + }, + { + permanent: false, + source: '/docs/library/user-management', + destination: '/docs/guides/auth', + }, + { + permanent: false, + source: '/docs/postgres/postgres-intro', + destination: '/docs/postgres/server/about', + }, + { + permanent: false, + source: '/docs/realtime/about', + destination: '/docs/realtime/server/about', + }, + { permanent: false, source: '/docs/realtime/aws', destination: '/docs/postgres/server/aws' }, + { + permanent: false, + source: '/docs/realtime/digitalocean', + destination: '/docs/postgres/server/digitalocean', + }, + { + permanent: false, + source: '/docs/realtime/docker', + destination: '/docs/postgres/server/docker', + }, + { + permanent: false, + source: '/docs/realtime/source', + destination: '/docs/postgres/server/about', + }, + { + permanent: false, + source: '/docs/client/supabase-client', + destination: '/docs/reference/javascript/supabase-client', + }, + { + permanent: false, + source: '/docs/client/installing', + destination: '/docs/reference/javascript/installing', + }, + { + permanent: false, + source: '/docs/client/initializing', + destination: '/docs/reference/javascript/initializing', + }, + { + permanent: false, + source: '/docs/client/generating-types', + destination: '/docs/reference/javascript/generating-types', + }, + { + permanent: false, + source: '/docs/client/auth-signup', + destination: '/docs/reference/javascript/auth-signup', + }, + { + permanent: false, + source: '/docs/client/auth-signin', + destination: '/docs/reference/javascript/v1/auth-signin', + }, + { + permanent: false, + source: '/docs/client/auth-signout', + destination: '/docs/reference/javascript/auth-signout', + }, + { + permanent: false, + source: '/docs/client/auth-verifyotp', + destination: '/docs/reference/javascript/auth-verifyotp', + }, + { + permanent: false, + source: '/docs/client/auth-session', + destination: '/docs/reference/javascript/v1/auth-session', + }, + { + permanent: false, + source: '/docs/client/auth-user', + destination: '/docs/reference/javascript/auth-user', + }, + { + permanent: false, + source: '/docs/client/auth-update', + destination: '/docs/reference/javascript/auth-update', + }, + { + permanent: false, + source: '/docs/client/auth-onauthstatechange', + destination: '/docs/reference/javascript/auth-onauthstatechange', + }, + { + permanent: false, + source: '/docs/client/reset-password-email', + destination: '/docs/reference/javascript/reset-password-email', + }, + { + permanent: false, + source: '/docs/client/select', + destination: '/docs/reference/javascript/select', + }, + { + permanent: false, + source: '/docs/client/insert', + destination: '/docs/reference/javascript/insert', + }, + { + permanent: false, + source: '/docs/client/update', + destination: '/docs/reference/javascript/update', + }, + { + permanent: false, + source: '/docs/client/delete', + destination: '/docs/reference/javascript/delete', + }, + { + permanent: false, + source: '/docs/client/rpc', + destination: '/docs/reference/javascript/rpc', + }, + { + permanent: false, + source: '/docs/client/subscribe', + destination: '/docs/reference/javascript/subscribe', + }, + { + permanent: false, + source: '/docs/client/removesubscription', + destination: '/docs/reference/javascript/v1/removesubscription', + }, + { + permanent: false, + source: '/docs/client/getsubscriptions', + destination: '/docs/reference/javascript/v1/getsubscriptions', + }, + { + permanent: false, + source: '/docs/client/using-modifiers', + destination: '/docs/reference/javascript/using-modifiers', + }, + { + permanent: false, + source: '/docs/client/limit', + destination: '/docs/reference/javascript/limit', + }, + { + permanent: false, + source: '/docs/client/order', + destination: '/docs/reference/javascript/order', + }, + { + permanent: false, + source: '/docs/client/range', + destination: '/docs/reference/javascript/range', + }, + { + permanent: false, + source: '/docs/client/single', + destination: '/docs/reference/javascript/single', + }, + { + permanent: false, + source: '/docs/client/using-filters', + destination: '/docs/reference/javascript/using-filters', + }, + { + permanent: false, + source: '/docs/client/filter', + destination: '/docs/reference/javascript/filter', + }, + { permanent: false, source: '/docs/client/or', destination: '/docs/reference/javascript/or' }, + { + permanent: false, + source: '/docs/client/not', + destination: '/docs/reference/javascript/not', + }, + { + permanent: false, + source: '/docs/client/match', + destination: '/docs/reference/javascript/match', + }, + { permanent: false, source: '/docs/client/eq', destination: '/docs/reference/javascript/eq' }, + { + permanent: false, + source: '/docs/client/neq', + destination: '/docs/reference/javascript/neq', + }, + { permanent: false, source: '/docs/client/gt', destination: '/docs/reference/javascript/gt' }, + { + permanent: false, + source: '/docs/client/gte', + destination: '/docs/reference/javascript/gte', + }, + { permanent: false, source: '/docs/client/lt', destination: '/docs/reference/javascript/lt' }, + { + permanent: false, + source: '/docs/client/lte', + destination: '/docs/reference/javascript/lte', + }, + { + permanent: false, + source: '/docs/client/like', + destination: '/docs/reference/javascript/like', + }, + { + permanent: false, + source: '/docs/client/ilike', + destination: '/docs/reference/javascript/ilike', + }, + { permanent: false, source: '/docs/client/is', destination: '/docs/reference/javascript/is' }, + { permanent: false, source: '/docs/client/in', destination: '/docs/reference/javascript/in' }, + { + permanent: false, + source: '/docs/client/gte', + destination: '/docs/reference/javascript/gte', + }, + { + permanent: false, + source: '/docs/client/cs', + destination: '/docs/reference/javascript/contains', + }, + { + permanent: false, + source: '/docs/client/cd', + destination: '/docs/reference/javascript/containedBy', + }, + { + permanent: false, + source: '/docs/client/sl', + destination: '/docs/reference/javascript/rangeLt', + }, + { + permanent: false, + source: '/docs/client/sr', + destination: '/docs/reference/javascript/rangeGt', + }, + { + permanent: false, + source: '/docs/client/nxl', + destination: '/docs/reference/javascript/rangeGte', + }, + { + permanent: false, + source: '/docs/client/nxr', + destination: '/docs/reference/javascript/rangeLte', + }, + { + permanent: false, + source: '/docs/client/adj', + destination: '/docs/reference/javascript/rangeAdjacent', + }, + { + permanent: false, + source: '/docs/client/ov', + destination: '/docs/reference/javascript/overlaps', + }, + { + permanent: false, + source: '/docs/client/ova', + destination: '/docs/reference/javascript/overlaps', + }, + { + permanent: false, + source: '/docs/client/fts', + destination: '/docs/reference/javascript/textSearch', + }, + { + permanent: false, + source: '/docs/client/plfts', + destination: '/docs/reference/javascript/textSearch', + }, + { + permanent: false, + source: '/docs/client/phfts', + destination: '/docs/reference/javascript/textSearch', + }, + { + permanent: false, + source: '/docs/client/wfts', + destination: '/docs/reference/javascript/textSearch', + }, + { permanent: false, source: '/blog/page/:number', destination: '/blog' }, + { permanent: false, source: '/blog/tags', destination: '/blog' }, + { permanent: false, source: '/docs/pricing', destination: '/pricing' }, + + { + permanent: false, + source: '/docs/careers', + destination: 'https://about.supabase.com/careers', + }, + { + permanent: false, + source: '/docs/careers/:match*', + destination: 'https://about.supabase.com/careers//:match*', + }, + + { permanent: false, source: '/docs/resources', destination: '/docs/guides' }, + + { + permanent: false, + source: '/docs/reference/postgres/getting-started', + destination: '/docs/guides/database/introduction', + }, + { + permanent: false, + source: '/reference/postgres/connection-strings', + destination: '/docs/guides/database/connecting/connecting-to-postgres', + }, + { + permanent: false, + source: '/docs/reference/postgres/schemas', + destination: '/docs/guides/database/tables', + }, + { + permanent: false, + source: '/docs/reference/postgres/tables', + destination: '/docs/guides/database/tables', + }, + { + permanent: false, + source: '/docs/guides/database/resource-management', + destination: '/docs/guides/database/timeouts', + }, + { + permanent: false, + source: '/docs/reference/postgres/database-passwords', + destination: '/docs/guides/database/managing-passwords', + }, + { + permanent: false, + source: '/docs/reference/postgres/changing-timezones', + destination: '/docs/guides/database/managing-timezones', + }, + { + permanent: false, + source: '/docs/reference/postgres/publications', + destination: '/docs/guides/database/replication', + }, + + { + permanent: false, + source: '/docs/guides/platform', + destination: '/docs/guides/hosting/platform', + }, + { + permanent: false, + source: '/docs/guides/self-hosting', + destination: '/docs/guides/hosting/overview', + }, + { + permanent: true, + source: '/docs/reference/javascript/delete-user', + destination: '/docs/reference/javascript/auth-api-deleteuser', + }, + { + permanent: true, + source: '/docs/reference/javascript/reset-password-email', + destination: '/docs/reference/javascript/auth-api-resetpasswordforemail', + }, + { + permanent: true, + source: '/oss', + destination: '/docs/oss', + }, + { + permanent: true, + source: '/docs/reference/postgres/connection-strings', + destination: '/docs/guides/database/connecting-to-postgres', + }, + { + permanent: true, + source: '/docs/guides/database/connecting/connecting-to-postgres', + destination: '/docs/guides/database/connecting-to-postgres', + }, + { + permanent: true, + source: '/docs/guides/database/connecting/direct-connections', + destination: '/docs/guides/database/connecting-to-postgres', + }, + { + permanent: true, + source: '/docs/guides/database/connecting/direct-connections', + destination: '/docs/guides/database/connection-pooling', + }, + { + permanent: true, + source: '/docs/guides', + destination: '/docs/', + }, + { + permanent: true, + source: '/guides/database/introduction', + destination: '/guides/database', + }, + { + permanent: true, + source: '/guides/auth', + destination: '/guides/auth/intro', + }, + { + permanent: false, + source: '/partners', + destination: '/partners/integrations', + }, + { + permanent: false, + source: '/learn-more', + destination: '/?utm_source=event&utm_medium=billboard&utm_campaign=aws-atlanta', + }, + { + permanent: true, + source: '/docs/reference/javascript/supabase-client', + destination: '/docs/reference', + }, + { + permanent: true, + source: '/join', + destination: 'https://supabase.com/', + }, + { + permanent: true, + source: '/blog/2022/06/15/blog/2022/06/29/visualizing-supabase-data-using-metabase', + destination: '/blog/visualizing-supabase-data-using-metabase', + }, + { + permanent: true, + source: '/_app', + destination: 'https://app.supabase.com', + }, + { + permanent: true, + source: '/blog/2020/05/01/supabase-alpha-april-2020', + destination: 'blog/supabase-alpha-april-2020', + }, + { + permanent: true, + source: '/blog/2020/06/01/supabase-alpha-may-2020', + destination: '/blog/supabase-alpha-may-2020', + }, + { + permanent: true, + source: '/blog/2020/06/15/supabase-steve-chavez', + destination: '/blog/supabase-steve-chavez', + }, + { + permanent: true, + source: '/blog/2020/07/01/supabase-alpha-june-2020', + destination: '/blog/supabase-alpha-june-2020', + }, + { + permanent: true, + source: '/blog/2020/07/09/postgresql-templates', + destination: '/blog/postgresql-templates', + }, + { + permanent: true, + source: '/blog/2020/07/10/alpha-launch-postmortem', + destination: '/blog/alpha-launch-postmortem', + }, + { + permanent: true, + source: '/blog/2020/07/17/postgresql-physical-logical-backups', + destination: '/blog/postgresql-physical-logical-backups', + }, + { + permanent: true, + source: '/blog/2020/08/02/continuous-postgresql-backup-walg', + destination: '/blog/continuous-postgresql-backup-walg', + }, + { + permanent: true, + source: '/blog/2020/08/02/supabase-alpha-july-2020', + destination: '/blog/supabase-alpha-july-2020', + }, + { + permanent: true, + source: '/blog/2020/08/05/supabase-auth', + destination: '/blog/supabase-auth', + }, + { + permanent: true, + source: '/blog/2020/09/03/supabase-alpha-august-2020', + destination: '/blog/supabase-alpha-august-2020', + }, + { + permanent: true, + source: '/blog/2020/09/11/supabase-hacktoberfest-2020', + destination: '/blog/supabase-hacktoberfest-2020', + }, + { + permanent: true, + source: '/blog/2020/10/03/supabase-alpha-september-2020', + destination: '/blog/supabase-alpha-september-2020', + }, + { + permanent: true, + source: '/blog/2020/10/30/improved-dx', + destination: '/blog/improved-dx', + }, + { + permanent: true, + source: '/blog/2020/11/02/supabase-alpha-october-2020', + destination: '/blog/supabase-alpha-october-2020', + }, + { + permanent: true, + source: '/blog/2020/11/18/postgresql-views', + destination: '/blog/postgresql-views', + }, + { + permanent: true, + source: '/blog/2020/12/01/supabase-alpha-november-2020', + destination: '/blog/supabase-alpha-november-2020', + }, + { + permanent: true, + source: '/blog/2020/12/02/case-study-monitoro', + destination: '/blog/case-study-monitoro', + }, + { + permanent: true, + source: '/blog/2020/12/02/case-study-tayfa', + destination: '/blog/case-study-tayfa', + }, + { + permanent: true, + source: '/blog/2020/12/02/case-study-xendit', + destination: '/blog/case-study-xendit', + }, + { + permanent: true, + source: '/blog/2020/12/02/supabase-striveschool', + destination: '/blog/supabase-striveschool', + }, + { + permanent: true, + source: '/blog/2020/12/13/supabase-dashboard-performance', + destination: '/blog/supabase-dashboard-performance', + }, + { + permanent: true, + source: '/blog/2021/01/02/supabase-beta-december-2020', + destination: '/blog/supabase-beta-december-2020', + }, + { + permanent: true, + source: '/blog/2021/02/02/supabase-beta-january-2021', + destination: '/blog/supabase-beta-january-2021', + }, + { + permanent: true, + source: '/blog/2021/02/09/case-study-roboflow', + destination: '/blog/case-study-roboflow', + }, + { + permanent: true, + source: '/blog/2021/02/27/cracking-postgres-interview', + destination: '/blog/cracking-postgres-interview', + }, + { + permanent: true, + source: '/blog/2021/03/02/supabase-beta-february-2021', + destination: '/blog/supabase-beta-february-2021', + }, + { + permanent: true, + source: '/blog/2021/03/05/postgres-as-a-cron-server', + destination: '/blog/postgres-as-a-cron-server', + }, + { + permanent: true, + source: '/blog/2021/03/08/toad-a-link-shortener-with-simple-apis-for-low-coders', + destination: '/blog/toad-a-link-shortener-with-simple-apis-for-low-coders', + }, + { + permanent: true, + source: '/blog/2021/03/11/using-supabase-replit', + destination: '/blog/using-supabase-replit', + }, + { + permanent: true, + source: '/blog/2021/03/22/In-The-Loop', + destination: '/blog/in-the-loop', + }, + { + permanent: true, + source: '/blog/2021/03/25/angels-of-supabase', + destination: '/blog/angels-of-supabase', + }, + { + permanent: true, + source: '/blog/2021/03/25/launch-week', + destination: '/blog/launch-week', + }, + { + permanent: true, + source: '/blog/2021/03/29/pricing', + destination: '/blog/pricing', + }, + { + permanent: true, + source: '/blog/2021/03/30/supabase-storage', + destination: '/blog/supabase-storage', + }, + { + permanent: true, + source: '/blog/2021/03/31/supabase-cli', + destination: '/blog/supabase-cli', + }, + { + permanent: true, + source: '/blog/2021/04/01/supabase-nft-marketplace', + destination: '/blog/supabase-nft-marketplace', + }, + { + permanent: true, + source: '/blog/2021/04/02/supabase-dot-com', + destination: '/blog/supabase-dot-com', + }, + { + permanent: true, + source: '/blog/2021/04/02/supabase-pgbouncer', + destination: '/blog/supabase-pgbouncer', + }, + { + permanent: true, + source: '/blog/2021/04/02/supabase-workflows', + destination: '/blog/supabase-workflows', + }, + { + permanent: true, + source: '/blog/2021/04/06/supabase-beta-march-2021', + destination: '/blog/supabase-beta-march-2021', + }, + { + permanent: true, + source: '/blog/2021/05/03/supabase-beta-april-2021', + destination: '/blog/supabase-beta-april-2021', + }, + { + permanent: true, + source: '/blog/2021/06/02/supabase-beta-may-2021', + destination: '/blog/supabase-beta-may-2021', + }, + { + permanent: true, + source: '/blog/2021/07/01/roles-postgres-hooks', + destination: '/blog/roles-postgres-hooks', + }, + { + permanent: true, + source: '/blog/2021/07/02/supabase-beta-june-2021', + destination: '/blog/supabase-beta-june-2021', + }, + { + permanent: true, + source: '/blog/2021/07/22/supabase-launch-week-sql', + destination: '/blog/supabase-launch-week-sql', + }, + { + permanent: true, + source: '/blog/2021/07/26/epsilon3-self-hosting', + destination: '/blog/epsilon3-self-hosting', + }, + { + permanent: true, + source: '/blog/2021/07/26/supabase-community-day', + destination: '/blog/supabase-community-day', + }, + { + permanent: true, + source: '/blog/2021/07/26/supabase-postgres-13', + destination: '/blog/supabase-postgres-13', + }, + { + permanent: true, + source: '/blog/2021/07/27/spot-flutter-with-postgres', + destination: '/blog/spot-flutter-with-postgres', + }, + { + permanent: true, + source: '/blog/2021/07/27/storage-beta', + destination: '/blog/storage-beta', + }, + { + permanent: true, + source: '/blog/2021/07/28/mobbin-supabase-200000-users', + destination: '/blog/mobbin-supabase-200000-users', + }, + { + permanent: true, + source: '/blog/2021/07/28/supabase-auth-passwordless-sms-login', + destination: '/blog/supabase-auth-passwordless-sms-login', + }, + { + permanent: true, + source: '/blog/2021/07/29/supabase-reports-and-metrics', + destination: '/blog/supabase-reports-and-metrics', + }, + { + permanent: true, + source: '/blog/2021/07/30/1-the-supabase-hackathon', + destination: '/blog/the-supabase-hackathon', + }, + { + permanent: true, + source: '/blog/2021/07/30/supabase-functions-updates', + destination: '/blog/supabase-functions-updates', + }, + { + permanent: true, + source: '/blog/2021/07/30/supabase-swag-store', + destination: '/blog/supabase-swag-store', + }, + { + permanent: true, + source: '/blog/2021/08/09/hackathon-winners', + destination: '/blog/hackathon-winners', + }, + { + permanent: true, + source: '/blog/2021/08/12/supabase-beta-july-2021', + destination: '/blog/supabase-beta-july-2021', + }, + { + permanent: true, + source: '/blog/2021/09/10/supabase-beta-august-2021', + destination: '/blog/supabase-beta-august-2021', + }, + { + permanent: true, + source: '/blog/2021/09/28/supabase-hacktoberfest-hackathon-2021', + destination: '/blog/supabase-hacktoberfest-hackathon-2021', + }, + { + permanent: true, + source: '/blog/2021/10/04/supabase-beta-sept-2021', + destination: '/blog/supabase-beta-sept-2021', + }, + { + permanent: true, + source: '/blog/2021/10/14/hacktoberfest-hackathon-winners-2021', + destination: '/blog/hacktoberfest-hackathon-winners-2021', + }, + { + permanent: true, + source: '/blog/2021/10/19/replenysh-time-to-value-in-less-than-24-hours', + destination: '/blog/replenysh-time-to-value-in-less-than-24-hours', + }, + { + permanent: true, + source: '/blog/2021/10/28/supabase-series-a', + destination: '/blog/supabase-series-a', + }, + { + permanent: true, + source: '/blog/2021/11/05/supabase-beta-october-2021', + destination: '/blog/supabase-beta-october-2021', + }, + { + permanent: true, + source: '/blog/2021/11/26/supabase-how-we-launch', + destination: '/blog/supabase-how-we-launch', + }, + { + permanent: true, + source: '/blog/2021/11/26/supabase-launch-week-the-trilogy', + destination: '/blog/supabase-launch-week-the-trilogy', + }, + { + permanent: true, + source: '/blog/2021/11/28/postgrest-9', + destination: '/blog/postgrest-9', + }, + { + permanent: true, + source: '/blog/2021/11/28/whats-new-in-postgres-14', + destination: '/blog/whats-new-in-postgres-14', + }, + { + permanent: true, + source: '/blog/2021/11/29/community-day-lw3', + destination: '/blog/community-day-lw3', + }, + { + permanent: true, + source: '/blog/2021/11/30/supabase-studio', + destination: '/blog/supabase-studio', + }, + { + permanent: true, + source: '/blog/2021/12/01/realtime-row-level-security-in-postgresql', + destination: '/blog/realtime-row-level-security-in-postgresql', + }, + { + permanent: true, + source: '/blog/2021/12/02/supabase-acquires-logflare', + destination: '/blog/supabase-acquires-logflare', + }, + { + permanent: true, + source: '/blog/2021/12/03/launch-week-three-friday-five-more-things', + destination: '/blog/launch-week-three-friday-five-more-things', + }, + { + permanent: true, + source: '/blog/2021/12/03/pg-graphql', + destination: '/blog/pg-graphql', + }, + { + permanent: true, + source: '/blog/2021/12/03/supabase-holiday-hackdays-hackathon', + destination: '/blog/supabase-holiday-hackdays-hackathon', + }, + { + permanent: true, + source: '/blog/2021/12/15/beta-november-2021-launch-week-recap', + destination: '/blog/beta-november-2021-launch-week-recap', + }, + { + permanent: true, + source: '/blog/2021/12/17/holiday-hackdays-winners-2021', + destination: '/blog/holiday-hackdays-winners-2021', + }, + { + permanent: true, + source: '/blog/2022/01/20/product-hunt-golden-kitty-awards-2021', + destination: '/blog/product-hunt-golden-kitty-awards-2021', + }, + { + permanent: true, + source: '/blog/2022/01/20/supabase-beta-december-2021', + destination: '/blog/supabase-beta-december-2021', + }, + { + permanent: true, + source: '/blog/2022/02/22/supabase-beta-january-2022', + destination: '/blog/supabase-beta-january-2022', + }, + { + permanent: true, + source: '/blog/2022/03/08/audit', + destination: '/blog/postgres-audit', + }, + { + permanent: true, + source: '/blog/2022/03/25/should-i-open-source-my-company', + destination: '/blog/should-i-open-source-my-company', + }, + { + permanent: true, + source: '/blog/2022/03/25/supabase-launch-week-four', + destination: '/blog/supabase-launch-week-four', + }, + { + permanent: true, + source: '/blog/2022/03/28/community-day-lw4', + destination: '/blog/community-day-lw4', + }, + { + permanent: true, + source: '/blog/2022/03/29/graphql-now-available', + destination: '/blog/graphql-now-available', + }, + { + permanent: true, + source: '/blog/2022/03/30/supabase-enterprise', + destination: '/blog/supabase-enterprise', + }, + { + permanent: true, + source: '/blog/2022/03/31/supabase-edge-functions', + destination: '/blog/supabase-edge-functions', + }, + { + permanent: true, + source: '/blog/2022/04/01/hackathon-bring-the-func', + destination: '/blog/hackathon-bring-the-func', + }, + { + permanent: true, + source: '/blog/2022/04/01/supabase-realtime-with-multiplayer-features', + destination: '/blog/supabase-realtime-with-multiplayer-features', + }, + { + permanent: true, + source: '/blog/2022/04/01/supabrew', + destination: '/blog/supabrew', + }, + { + permanent: true, + source: '/blog/2022/04/15/beta-update-march-2022', + destination: '/blog/beta-update-march-2022', + }, + { + permanent: true, + source: '/blog/2022/04/18/bring-the-func-hackathon-winners', + destination: '/blog/bring-the-func-hackathon-winners', + }, + { + permanent: true, + source: '/blog/2022/04/20/partner-gallery-works-with-supabase', + destination: '/blog/partner-gallery-works-with-supabase', + }, + { + permanent: true, + source: '/blog/2022/05/26/how-supabase-accelerates-development-of-all-pull-together', + destination: '/blog/how-supabase-accelerates-development-of-all-pull-together', + }, + { + permanent: true, + source: '/blog/2022/06/07/beta-update-may-2022', + destination: '/blog/beta-update-may-2022', + }, + { + permanent: true, + source: '/blog/2022/06/15/loading-data-supabase-python', + destination: '/blog/loading-data-supabase-python', + }, + { + permanent: true, + source: '/blog/2022/06/28/partial-postgresql-data-dumps-with-rls', + destination: '/blog/partial-postgresql-data-dumps-with-rls', + }, + { + permanent: true, + source: '/blog/2022/06/29/visualizing-supabase-data-using-metabase', + destination: '/blog/visualizing-supabase-data-using-metabase', + }, + { + permanent: true, + source: '/blog/2022/06/30/flutter-tutorial-building-a-chat-app', + destination: '/blog/flutter-tutorial-building-a-chat-app', + }, + { + permanent: true, + source: '/blog/2022/07/05/beta-update-june-2022', + destination: '/blog/beta-update-june-2022', + }, + { + permanent: true, + source: '/blog/2022/07/13/supabase-auth-helpers-with-sveltekit-support', + destination: '/blog/supabase-auth-helpers-with-sveltekit-support', + }, + { + permanent: true, + source: '/blog/2022/07/18/seen-by-in-postgresql', + destination: '/blog/seen-by-in-postgresql', + }, + { + permanent: true, + source: '/blog/2022/08/02/supabase-flutter-sdk-1-developer-preview', + destination: '/blog/supabase-flutter-sdk-1-developer-preview', + }, + { + permanent: true, + source: '/blog/2022/08/03/supabase-beta-update-july-2022', + destination: '/blog/supabase-beta-update-july-2022', + }, + + // DOCS + { + permanent: true, + source: '/docs/reference/cli/about', + destination: '/docs/reference/cli', + }, + { + permanent: true, + source: '/docs/reference/cli/config-reference', + destination: '/docs/reference/cli/config', + }, + { + permanent: true, + source: '/docs/reference/cli/supabase-help', + destination: '/docs/reference/cli/usage', + }, + { + permanent: true, + source: '/docs/reference/cli/supabase-login', + destination: '/docs/reference/cli/usage', + }, + { + permanent: true, + source: '/docs/reference/cli/supabase-link', + destination: '/docs/reference/cli/usage', + }, + { + permanent: true, + source: '/docs/reference/cli/supabase-init', + destination: '/docs/reference/cli/usage', + }, + { + permanent: true, + source: '/docs/reference/cli/supabase-start', + destination: '/docs/reference/cli/usage', + }, + { + permanent: true, + source: '/docs/reference/cli/supabase-db-branch-list', + destination: '/docs/reference/cli/usage', + }, + { + permanent: true, + source: '/docs/reference/cli/supabase-db-branch-create', + destination: '/docs/reference/cli/usage', + }, + { + permanent: true, + source: '/docs/reference/cli/supabase-db-branch-delete', + destination: '/docs/reference/cli/usage', + }, + { + permanent: true, + source: '/docs/reference/cli/supabase-db-switch', + destination: '/docs/reference/cli/usage', + }, + { + permanent: true, + source: '/docs/reference/cli/supabase-db-changes', + destination: '/docs/reference/cli/usage', + }, + { + permanent: true, + source: '/docs/reference/cli/supabase-db-commit', + destination: '/docs/reference/cli/usage', + }, + { + permanent: true, + source: '/docs/reference/cli/supabase-db-reset', + destination: '/docs/reference/cli/usage', + }, + { + permanent: true, + source: '/docs/reference/cli/supabase-db-remote-set', + destination: '/docs/reference/cli/usage', + }, + { + permanent: true, + source: '/docs/reference/cli/supabase-db-remote-commit', + destination: '/docs/reference/cli/usage', + }, + { + permanent: true, + source: '/docs/reference/cli/supabase-db-push', + destination: '/docs/reference/cli/usage', + }, + { + permanent: true, + source: '/docs/reference/cli/supabase-functions-delete', + destination: '/docs/reference/cli/usage', + }, + { + permanent: true, + source: '/docs/reference/cli/supabase-functions-deploy', + destination: '/docs/reference/cli/usage', + }, + { + permanent: true, + source: '/docs/reference/cli/supabase-functions-new', + destination: '/docs/reference/cli/usage', + }, + { + permanent: true, + source: '/docs/reference/cli/supabase-functions-serve', + destination: '/docs/reference/cli/usage', + }, + { + permanent: true, + source: '/docs/reference/cli/supabase-migration-new', + destination: '/docs/reference/cli/usage', + }, + { + permanent: true, + source: '/docs/reference/cli/supabase-orgs-list', + destination: '/docs/reference/cli/usage', + }, + { + permanent: true, + source: '/docs/reference/cli/supabase-projects-list', + destination: '/docs/reference/cli/usage', + }, + { + permanent: true, + source: '/docs/reference/cli/supabase-projects-create', + destination: '/docs/reference/cli/usage', + }, + { + permanent: true, + source: '/docs/reference/cli/supabase-secrets-list', + destination: '/docs/reference/cli/usage', + }, + { + permanent: true, + source: '/docs/reference/cli/supabase-secrets-set', + destination: '/docs/reference/cli/usage', + }, + { + permanent: true, + source: '/docs/reference/cli/supabase-secrets-unset', + destination: '/docs/reference/cli/usage', + }, + { + permanent: true, + source: '/docs/reference/tools/reference-auth', + destination: '/docs/reference/auth', + }, + { + permanent: true, + source: '/docs/guides/local-development', + destination: '/docs/guides/cli/local-development', + }, + { + permanent: true, + source: '/docs/guides/realtime/overview', + destination: '/docs/guides/realtime', + }, + { + permanent: true, + source: '/docs/guides/realtime/broadcast', + destination: '/docs/guides/realtime#broadcast', + }, + { + permanent: true, + source: '/docs/guides/realtime/presence', + destination: '/docs/guides/realtime#presence', + }, + { + permanent: true, + source: '/docs/guides/realtime/postgres-changes', + destination: '/docs/guides/realtime/postgres-cdc', + }, + { + permanent: true, + source: '/docs/reference/javascript/next/migration-guide', + destination: '/docs/reference/javascript/release-notes', + }, + { + permanent: true, + source: '/docs/guides/auth/auth-helpers/auth-ui-overview', + destination: '/docs/guides/auth/auth-helpers/auth-ui', + }, + { + permanent: true, + source: '/docs/guides/client-libraries', + destination: '/docs/reference', + }, + { + permanent: true, + source: '/docs/reference/auth-helpers', + destination: '/docs/guides/auth/auth-helpers/', + }, + { + permanent: true, + source: '/docs/reference/auth-helpers/next-js', + destination: '/docs/guides/auth/auth-helpers/nextjs', + }, + { + permanent: true, + source: '/docs/reference/auth-helpers/sveltekit', + destination: '/docs/guides/auth/auth-helpers/sveltekit', + }, + + // supabase-js v1 to v2 redirects + // v1: /auth-update + // v2: /auth-updateuser + { + permanent: true, + source: '/docs/reference/javascript/auth-update', + destination: '/docs/reference/javascript/v1/auth-update', + }, + // v1: /auth-api-get-user + // v2: /auth-getuser + { + permanent: true, + source: '/docs/reference/javascript/auth-api-getuser', + destination: '/docs/reference/javascript/v1/auth-api-getuser', + }, + // v1: /auth-api-resetpasswordforemail + // v2: /auth-resetpasswordforemail + { + permanent: true, + source: '/docs/reference/javascript/auth-api-resetpasswordforemail', + destination: '/docs/reference/javascript/v1/auth-api-resetpasswordforemail', + }, + // v1: /auth-api-verifyotp + // v2: /auth-verifyotp + { + permanent: true, + source: '/docs/reference/javascript/auth-api-verifyotp', + destination: '/docs/reference/javascript/v1/auth-api-verifyotp', + }, + // v1: /auth-api-listusers + // v2: /auth-admin-listusers + { + permanent: true, + source: '/docs/reference/javascript/auth-api-listusers', + destination: '/docs/reference/javascript/v1/auth-api-listusers', + }, + // v1: /auth-api-createuser + // v2: /auth-admin-createuser + { + permanent: true, + source: '/docs/reference/javascript/auth-api-createuser', + destination: '/docs/reference/javascript/v1/auth-api-createuser', + }, + // v1: /auth-api-deleteuser + // v2: /auth-admin-deleteuser + { + permanent: true, + source: '/docs/reference/javascript/auth-api-deleteuser', + destination: '/docs/reference/javascript/v1/auth-api-deleteuser', + }, + // v1: /auth-api-generatelink + // v2: /auth-admin-generatelink + { + permanent: true, + source: '/docs/reference/javascript/auth-api-generatelink', + destination: '/docs/reference/javascript/v1/auth-api-generatelink', + }, + // v1: /auth-api-inviteuserbyemail + // v2: /auth-admin-inviteuserbyemail + { + permanent: true, + source: '/docs/reference/javascript/auth-api-inviteuserbyemail', + destination: '/docs/reference/javascript/v1/auth-api-inviteuserbyemail', + }, + // v1: /auth-api-getuserbyid + // v2: /auth-admin-getuserbyid + { + permanent: true, + source: '/docs/reference/javascript/auth-api-getuserbyid', + destination: '/docs/reference/javascript/v1/auth-api-getuserbyid', + }, + // v1: /auth-api-updateuserbyid + // v2: /auth-admin-updateuserbyid + { + permanent: true, + source: '/docs/reference/javascript/auth-api-updateuserbyid', + destination: '/docs/reference/javascript/v1/auth-api-updateuserbyid', + }, + // signIn method is now split into signInWithPassword ,signInWithPasswordless ,signInWithOAuth + // send traffic to v1 docs instead + { + permanent: true, + source: '/docs/reference/javascript/auth-signin', + destination: '/docs/reference/javascript/v1/auth-signin', + }, + // v1: /auth-session + // v2: /auth-getsession + { + permanent: true, + source: '/docs/reference/javascript/auth-session', + destination: '/docs/reference/javascript/v1/auth-session', + }, + // v1: /auth-api-sendmobileotp + // v2: /auth-signinwithotp + { + permanent: true, + source: '/docs/reference/javascript/auth-api-sendmobileotp', + destination: '/docs/reference/javascript/v1/auth-api-sendmobileotp', + }, + + // realtime methods been replaced with new names + { + permanent: true, + source: '/docs/reference/javascript/removesubscription', + destination: '/docs/reference/javascript/v1/removesubscription', + }, + { + permanent: true, + source: '/docs/reference/javascript/removeallsubscriptions', + destination: '/docs/reference/javascript/v1/removeallsubscriptions', + }, + { + permanent: true, + source: '/docs/reference/javascript/getsubscriptions', + destination: '/docs/reference/javascript/v1/getsubscriptions', + }, +] diff --git a/apps/www/lib/rewrites.js b/apps/www/lib/rewrites.js new file mode 100644 index 00000000000..b5f9efbea19 --- /dev/null +++ b/apps/www/lib/rewrites.js @@ -0,0 +1,69 @@ +module.exports = [ + { + source: '/:path*', + destination: `/:path*`, + }, + { + source: '/docs', + destination: `${process.env.NEXT_PUBLIC_DOCS_URL}`, + }, + { + // redirect /docs/ + // trailing slash caused by docusaurus issue with multizone + source: '/docs/', + destination: `${process.env.NEXT_PUBLIC_DOCS_URL}`, + }, + { + source: '/docs/:path*', + destination: `${process.env.NEXT_PUBLIC_DOCS_URL}/:path*`, + }, + // rewrite to keep existing ticket urls working + { + source: '/launch-week/tickets/:path', + destination: `${process.env.NEXT_PUBLIC_LAUNCHWEEKSITE_URL}/tickets/:path`, + }, + // rewrite to move ticket website to another path + { + source: '/launch-week-register', + destination: `${process.env.NEXT_PUBLIC_LAUNCHWEEKSITE_URL}`, + }, + { + source: '/launch-week-register/:path*', + destination: `${process.env.NEXT_PUBLIC_LAUNCHWEEKSITE_URL}/:path*`, + }, + { + source: '/new-docs', + destination: `${process.env.NEXT_PUBLIC_REFERENCE_DOCS_URL}`, + }, + { + // redirect /docs/ + // trailing slash caused by docusaurus issue with multizone + source: '/new-docs/', + destination: `${process.env.NEXT_PUBLIC_REFERENCE_DOCS_URL}`, + }, + { + source: '/new-docs/:path*', + destination: `${process.env.NEXT_PUBLIC_REFERENCE_DOCS_URL}/:path*`, + }, + // misc rewrites + { + source: '/humans.txt', + destination: `${process.env.NEXT_PUBLIC_DOCS_URL}/humans.txt`, + }, + { + source: '/lawyers.txt', + destination: `${process.env.NEXT_PUBLIC_DOCS_URL}/lawyers.txt`, + }, + { + source: '/.well-known/security.txt', + destination: `${process.env.NEXT_PUBLIC_DOCS_URL}/.well-known/security.txt`, + }, + { + source: '/oss', + destination: `${process.env.NEXT_PUBLIC_DOCS_URL}/oss`, + }, + { + source: '/feed.xml', + destination: `/rss.xml`, + }, +] diff --git a/apps/www/lib/supabase.ts b/apps/www/lib/supabase.ts index 304c3890488..e2572c7016c 100644 --- a/apps/www/lib/supabase.ts +++ b/apps/www/lib/supabase.ts @@ -1,9 +1,12 @@ import { createClient } from '@supabase/supabase-js' +import { Database } from './database.types' const SUPABASE_URL = 'https://obuldanrptloktxcffvn.supabase.co' const SUPABASE_ANON_KEY = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJyb2xlIjoiYW5vbiIsImlhdCI6MTYzNzY1NjAxNSwiZXhwIjoxOTUzMjMyMDE1fQ.0sfp_Njf7l4g-nOCF5a1TQE11rPqtz8Y10uctIetkBA' -const supabase = createClient(SUPABASE_URL, SUPABASE_ANON_KEY) +const supabase = createClient(SUPABASE_URL, SUPABASE_ANON_KEY) + +export type SupabaseClient = typeof supabase export default supabase diff --git a/apps/www/next.config.js b/apps/www/next.config.js deleted file mode 100644 index c2a31215d27..00000000000 --- a/apps/www/next.config.js +++ /dev/null @@ -1,1516 +0,0 @@ -const gfm = require('remark-gfm') -const slug = require('rehype-slug') -const withMDX = require('@next/mdx')({ - extension: /\.mdx?$/, - options: { - remarkPlugins: [gfm], - rehypePlugins: [slug], - // If you use `MDXProvider`, uncomment the following line. - providerImportSource: '@mdx-js/react', - }, -}) - -module.exports = withMDX({ - basePath: '', - pageExtensions: ['js', 'jsx', 'ts', 'tsx', 'md', 'mdx'], - trailingSlash: false, - images: { - dangerouslyAllowSVG: true, - domains: [ - 'avatars.githubusercontent.com', - 'github.com', - 'ca.slack-edge.com', - 'res.cloudinary.com', - 'images.unsplash.com', - 'supabase.com', - 'obuldanrptloktxcffvn.supabase.co', - 'avatars.githubusercontent.com', - 'colab.research.google.com', - 'api.producthunt.com', - 'https://s3-us-west-2.amazonaws.com', - 's3-us-west-2.amazonaws.com', - ], - }, - async headers() { - return [ - { - source: '/(.*)', - headers: [ - { - key: 'Strict-Transport-Security', - value: '', - }, - { - key: 'X-Robots-Tag', - value: 'all', - }, - { - key: 'X-Frame-Options', - value: 'DENY', - }, - ], - }, - ] - }, - async rewrites() { - return [ - { - source: '/:path*', - destination: `/:path*`, - }, - { - source: '/docs', - destination: `${process.env.NEXT_PUBLIC_DOCS_URL}`, - }, - { - // redirect /docs/ - // trailing slash caused by docusaurus issue with multizone - source: '/docs/', - destination: `${process.env.NEXT_PUBLIC_DOCS_URL}`, - }, - { - source: '/docs/:path*', - destination: `${process.env.NEXT_PUBLIC_DOCS_URL}/:path*`, - }, - // rewrite to keep existing ticket urls working - { - source: '/launch-week/tickets/:path', - destination: `${process.env.NEXT_PUBLIC_LAUNCHWEEKSITE_URL}/tickets/:path`, - }, - // rewrite to move ticket website to another path - { - source: '/launch-week-register', - destination: `${process.env.NEXT_PUBLIC_LAUNCHWEEKSITE_URL}`, - }, - { - source: '/launch-week-register/:path*', - destination: `${process.env.NEXT_PUBLIC_LAUNCHWEEKSITE_URL}/:path*`, - }, - { - source: '/new-docs', - destination: `${process.env.NEXT_PUBLIC_REFERENCE_DOCS_URL}`, - }, - { - // redirect /docs/ - // trailing slash caused by docusaurus issue with multizone - source: '/new-docs/', - destination: `${process.env.NEXT_PUBLIC_REFERENCE_DOCS_URL}`, - }, - { - source: '/new-docs/:path*', - destination: `${process.env.NEXT_PUBLIC_REFERENCE_DOCS_URL}/:path*`, - }, - // misc rewrites - { - source: '/humans.txt', - destination: `${process.env.NEXT_PUBLIC_DOCS_URL}/humans.txt`, - }, - { - source: '/lawyers.txt', - destination: `${process.env.NEXT_PUBLIC_DOCS_URL}/lawyers.txt`, - }, - { - source: '/.well-known/security.txt', - destination: `${process.env.NEXT_PUBLIC_DOCS_URL}/.well-known/security.txt`, - }, - { - source: '/oss', - destination: `${process.env.NEXT_PUBLIC_DOCS_URL}/oss`, - }, - { - source: '/feed.xml', - destination: `/rss.xml`, - }, - ] - }, - async redirects() { - return [ - { - permanent: true, - source: '/auth/Auth', - destination: '/auth', - }, - { - permanent: true, - source: '/docs/guides/storage-caching', - destination: '/docs/guides/storage-cdn', - }, - { - permanent: true, - source: '/database/Database', - destination: '/database', - }, - { - permanent: true, - source: '/edge-functions/edge-functions', - destination: '/edge-functions', - }, - { - permanent: true, - source: '/storage/Storage', - destination: '/storage', - }, - { - permanent: false, - source: '/blog/2021/03/08/toad-a-link-shorterner-with-simple-apis-for-low-coders', - destination: '/blog/2021/03/08/toad-a-link-shortener-with-simple-apis-for-low-coders', - }, - { - permanent: false, - source: '/blog/2020/07/10/surviving-hacker-news', - destination: '/blog/2020/07/10/alpha-launch-postmortem', - }, - { - permanent: false, - source: '/docs/common/_CommonResponses', - destination: '/docs', - }, - { permanent: false, source: '/docs/common/_DummyData', destination: '/docs' }, - { permanent: false, source: '/docs/common/_FromFunction', destination: '/docs' }, - { - permanent: false, - source: '/docs/common/filters/_adj', - destination: '/docs/reference/javascript/rangeAdjacent', - }, - { - permanent: false, - source: '/docs/common/filters/_cd', - destination: '/docs/reference/javascript/containedBy', - }, - { - permanent: false, - source: '/docs/common/filters/_cs', - destination: '/docs/reference/javascript/contains', - }, - { - permanent: false, - source: '/docs/common/filters/_eq', - destination: '/docs/reference/javascript/eq', - }, - { - permanent: false, - source: '/docs/common/filters/_filter', - destination: '/docs/reference/javascript/filter', - }, - { - permanent: false, - source: '/docs/common/filters/_gt', - destination: '/docs/reference/javascript/gt', - }, - { - permanent: false, - source: '/docs/common/filters/_gte', - destination: '/docs/reference/javascript/gte', - }, - { - permanent: false, - source: '/docs/common/filters/_ilike', - destination: '/docs/reference/javascript/ilike', - }, - { - permanent: false, - source: '/docs/common/filters/_in', - destination: '/docs/reference/javascript/in', - }, - { - permanent: false, - source: '/docs/common/filters/_is', - destination: '/docs/reference/javascript/is', - }, - { - permanent: false, - source: '/docs/common/filters/_like', - destination: '/docs/reference/javascript/like', - }, - { - permanent: false, - source: '/docs/common/filters/_lt', - destination: '/docs/reference/javascript/lt', - }, - { - permanent: false, - source: '/docs/common/filters/_lte', - destination: '/docs/reference/javascript/lte', - }, - { - permanent: false, - source: '/docs/common/filters/_match', - destination: '/docs/reference/javascript/match', - }, - { - permanent: false, - source: '/docs/common/filters/_neq', - destination: '/docs/reference/javascript/neq', - }, - { - permanent: false, - source: '/docs/common/filters/_not', - destination: '/docs/reference/javascript/not', - }, - { - permanent: false, - source: '/docs/common/filters/_nxl', - destination: '/docs/reference/javascript/rangeGte', - }, - { - permanent: false, - source: '/docs/common/filters/_nxr', - destination: '/docs/reference/javascript/rangeLte', - }, - { - permanent: false, - source: '/docs/common/filters/_or', - destination: '/docs/reference/javascript/or', - }, - { - permanent: false, - source: '/docs/common/filters/_ova', - destination: '/docs/reference/javascript/overlaps', - }, - { - permanent: false, - source: '/docs/common/filters/_ovr', - destination: '/docs/reference/javascript/overlaps', - }, - { - permanent: false, - source: '/docs/common/filters/_sl', - destination: '/docs/reference/javascript/rangeLt', - }, - { - permanent: false, - source: '/docs/common/filters/_sr', - destination: '/docs/reference/javascript/rangeGt', - }, - { - permanent: false, - source: '/docs/library/authentication', - destination: '/docs/guides/auth', - }, - { - permanent: false, - source: '/docs/library/delete', - destination: '/docs/reference/javascript/delete', - }, - { - permanent: false, - source: '/docs/library/get', - destination: '/docs/reference/javascript/select', - }, - { - permanent: false, - source: '/docs/library/getting-started', - destination: '/docs/reference/javascript/supabase-client', - }, - { - permanent: false, - source: '/docs/library/patch', - destination: '/docs/reference/javascript/update', - }, - { - permanent: false, - source: '/docs/library/post', - destination: '/docs/reference/javascript/insert', - }, - { - permanent: false, - source: '/docs/library/stored-procedures', - destination: '/docs/reference/javascript/rpc', - }, - { - permanent: false, - source: '/docs/library/subscribe', - destination: '/docs/reference/javascript/subscribe', - }, - { - permanent: false, - source: '/docs/library/user-management', - destination: '/docs/guides/auth', - }, - { - permanent: false, - source: '/docs/postgres/postgres-intro', - destination: '/docs/postgres/server/about', - }, - { - permanent: false, - source: '/docs/realtime/about', - destination: '/docs/realtime/server/about', - }, - { permanent: false, source: '/docs/realtime/aws', destination: '/docs/postgres/server/aws' }, - { - permanent: false, - source: '/docs/realtime/digitalocean', - destination: '/docs/postgres/server/digitalocean', - }, - { - permanent: false, - source: '/docs/realtime/docker', - destination: '/docs/postgres/server/docker', - }, - { - permanent: false, - source: '/docs/realtime/source', - destination: '/docs/postgres/server/about', - }, - { - permanent: false, - source: '/docs/client/supabase-client', - destination: '/docs/reference/javascript/supabase-client', - }, - { - permanent: false, - source: '/docs/client/installing', - destination: '/docs/reference/javascript/installing', - }, - { - permanent: false, - source: '/docs/client/initializing', - destination: '/docs/reference/javascript/initializing', - }, - { - permanent: false, - source: '/docs/client/generating-types', - destination: '/docs/reference/javascript/generating-types', - }, - { - permanent: false, - source: '/docs/client/auth-signup', - destination: '/docs/reference/javascript/auth-signup', - }, - { - permanent: false, - source: '/docs/client/auth-signin', - destination: '/docs/reference/javascript/auth-signin', - }, - { - permanent: false, - source: '/docs/client/auth-signout', - destination: '/docs/reference/javascript/auth-signout', - }, - { - permanent: false, - source: '/docs/client/auth-verifyotp', - destination: '/docs/reference/javascript/auth-verifyotp', - }, - { - permanent: false, - source: '/docs/client/auth-session', - destination: '/docs/reference/javascript/auth-session', - }, - { - permanent: false, - source: '/docs/client/auth-user', - destination: '/docs/reference/javascript/auth-user', - }, - { - permanent: false, - source: '/docs/client/auth-update', - destination: '/docs/reference/javascript/auth-update', - }, - { - permanent: false, - source: '/docs/client/auth-onauthstatechange', - destination: '/docs/reference/javascript/auth-onauthstatechange', - }, - { - permanent: false, - source: '/docs/client/reset-password-email', - destination: '/docs/reference/javascript/reset-password-email', - }, - { - permanent: false, - source: '/docs/client/select', - destination: '/docs/reference/javascript/select', - }, - { - permanent: false, - source: '/docs/client/insert', - destination: '/docs/reference/javascript/insert', - }, - { - permanent: false, - source: '/docs/client/update', - destination: '/docs/reference/javascript/update', - }, - { - permanent: false, - source: '/docs/client/delete', - destination: '/docs/reference/javascript/delete', - }, - { - permanent: false, - source: '/docs/client/rpc', - destination: '/docs/reference/javascript/rpc', - }, - { - permanent: false, - source: '/docs/client/subscribe', - destination: '/docs/reference/javascript/subscribe', - }, - { - permanent: false, - source: '/docs/client/removesubscription', - destination: '/docs/reference/javascript/removesubscription', - }, - { - permanent: false, - source: '/docs/client/getsubscriptions', - destination: '/docs/reference/javascript/getsubscriptions', - }, - { - permanent: false, - source: '/docs/client/using-modifiers', - destination: '/docs/reference/javascript/using-modifiers', - }, - { - permanent: false, - source: '/docs/client/limit', - destination: '/docs/reference/javascript/limit', - }, - { - permanent: false, - source: '/docs/client/order', - destination: '/docs/reference/javascript/order', - }, - { - permanent: false, - source: '/docs/client/range', - destination: '/docs/reference/javascript/range', - }, - { - permanent: false, - source: '/docs/client/single', - destination: '/docs/reference/javascript/single', - }, - { - permanent: false, - source: '/docs/client/using-filters', - destination: '/docs/reference/javascript/using-filters', - }, - { - permanent: false, - source: '/docs/client/filter', - destination: '/docs/reference/javascript/filter', - }, - { permanent: false, source: '/docs/client/or', destination: '/docs/reference/javascript/or' }, - { - permanent: false, - source: '/docs/client/not', - destination: '/docs/reference/javascript/not', - }, - { - permanent: false, - source: '/docs/client/match', - destination: '/docs/reference/javascript/match', - }, - { permanent: false, source: '/docs/client/eq', destination: '/docs/reference/javascript/eq' }, - { - permanent: false, - source: '/docs/client/neq', - destination: '/docs/reference/javascript/neq', - }, - { permanent: false, source: '/docs/client/gt', destination: '/docs/reference/javascript/gt' }, - { - permanent: false, - source: '/docs/client/gte', - destination: '/docs/reference/javascript/gte', - }, - { permanent: false, source: '/docs/client/lt', destination: '/docs/reference/javascript/lt' }, - { - permanent: false, - source: '/docs/client/lte', - destination: '/docs/reference/javascript/lte', - }, - { - permanent: false, - source: '/docs/client/like', - destination: '/docs/reference/javascript/like', - }, - { - permanent: false, - source: '/docs/client/ilike', - destination: '/docs/reference/javascript/ilike', - }, - { permanent: false, source: '/docs/client/is', destination: '/docs/reference/javascript/is' }, - { permanent: false, source: '/docs/client/in', destination: '/docs/reference/javascript/in' }, - { - permanent: false, - source: '/docs/client/gte', - destination: '/docs/reference/javascript/gte', - }, - { - permanent: false, - source: '/docs/client/cs', - destination: '/docs/reference/javascript/contains', - }, - { - permanent: false, - source: '/docs/client/cd', - destination: '/docs/reference/javascript/containedBy', - }, - { - permanent: false, - source: '/docs/client/sl', - destination: '/docs/reference/javascript/rangeLt', - }, - { - permanent: false, - source: '/docs/client/sr', - destination: '/docs/reference/javascript/rangeGt', - }, - { - permanent: false, - source: '/docs/client/nxl', - destination: '/docs/reference/javascript/rangeGte', - }, - { - permanent: false, - source: '/docs/client/nxr', - destination: '/docs/reference/javascript/rangeLte', - }, - { - permanent: false, - source: '/docs/client/adj', - destination: '/docs/reference/javascript/rangeAdjacent', - }, - { - permanent: false, - source: '/docs/client/ov', - destination: '/docs/reference/javascript/overlaps', - }, - { - permanent: false, - source: '/docs/client/ova', - destination: '/docs/reference/javascript/overlaps', - }, - { - permanent: false, - source: '/docs/client/fts', - destination: '/docs/reference/javascript/textSearch', - }, - { - permanent: false, - source: '/docs/client/plfts', - destination: '/docs/reference/javascript/textSearch', - }, - { - permanent: false, - source: '/docs/client/phfts', - destination: '/docs/reference/javascript/textSearch', - }, - { - permanent: false, - source: '/docs/client/wfts', - destination: '/docs/reference/javascript/textSearch', - }, - { permanent: false, source: '/blog/page/:number', destination: '/blog' }, - { permanent: false, source: '/blog/tags', destination: '/blog' }, - { permanent: false, source: '/docs/pricing', destination: '/pricing' }, - - { - permanent: false, - source: '/docs/careers', - destination: 'https://about.supabase.com/careers', - }, - { - permanent: false, - source: '/docs/careers/:match*', - destination: 'https://about.supabase.com/careers//:match*', - }, - - { permanent: false, source: '/docs/resources', destination: '/docs/guides' }, - - { - permanent: false, - source: '/docs/reference/postgres/getting-started', - destination: '/docs/guides/database/introduction', - }, - { - permanent: false, - source: '/reference/postgres/connection-strings', - destination: '/docs/guides/database/connecting/connecting-to-postgres', - }, - { - permanent: false, - source: '/docs/reference/postgres/schemas', - destination: '/docs/guides/database/tables', - }, - { - permanent: false, - source: '/docs/reference/postgres/tables', - destination: '/docs/guides/database/tables', - }, - { - permanent: false, - source: '/docs/guides/database/resource-management', - destination: '/docs/guides/database/timeouts', - }, - { - permanent: false, - source: '/docs/reference/postgres/database-passwords', - destination: '/docs/guides/database/managing-passwords', - }, - { - permanent: false, - source: '/docs/reference/postgres/changing-timezones', - destination: '/docs/guides/database/managing-timezones', - }, - { - permanent: false, - source: '/docs/reference/postgres/publications', - destination: '/docs/guides/database/replication', - }, - - { - permanent: false, - source: '/docs/guides/platform', - destination: '/docs/guides/hosting/platform', - }, - { - permanent: false, - source: '/docs/guides/self-hosting', - destination: '/docs/guides/hosting/overview', - }, - { - permanent: true, - source: '/docs/reference/javascript/delete-user', - destination: '/docs/reference/javascript/auth-api-deleteuser', - }, - { - permanent: true, - source: '/docs/reference/javascript/reset-password-email', - destination: '/docs/reference/javascript/auth-api-resetpasswordforemail', - }, - { - permanent: true, - source: '/oss', - destination: '/docs/oss', - }, - { - permanent: true, - source: '/docs/reference/postgres/connection-strings', - destination: '/docs/guides/database/connecting-to-postgres', - }, - { - permanent: true, - source: '/docs/guides/database/connecting/connecting-to-postgres', - destination: '/docs/guides/database/connecting-to-postgres', - }, - { - permanent: true, - source: '/docs/guides/database/connecting/direct-connections', - destination: '/docs/guides/database/connecting-to-postgres', - }, - { - permanent: true, - source: '/docs/guides/database/connecting/direct-connections', - destination: '/docs/guides/database/connection-pooling', - }, - { - permanent: true, - source: '/docs/guides', - destination: '/docs/', - }, - { - permanent: true, - source: '/guides/database/introduction', - destination: '/guides/database', - }, - { - permanent: true, - source: '/guides/auth', - destination: '/guides/auth/intro', - }, - { - permanent: false, - source: '/partners', - destination: '/partners/integrations', - }, - { - permanent: false, - source: '/learn-more', - destination: '/?utm_source=event&utm_medium=billboard&utm_campaign=aws-atlanta', - }, - { - permanent: true, - source: '/docs/reference/javascript/supabase-client', - destination: '/docs/reference', - }, - { - permanent: true, - source: '/join', - destination: 'https://supabase.com/', - }, - { - permanent: true, - source: '/blog/2022/06/15/blog/2022/06/29/visualizing-supabase-data-using-metabase', - destination: '/blog/visualizing-supabase-data-using-metabase', - }, - { - permanent: true, - source: '/_app', - destination: 'https://app.supabase.com', - }, - { - permanent: true, - source: '/blog/2020/05/01/supabase-alpha-april-2020', - destination: 'blog/supabase-alpha-april-2020', - }, - { - permanent: true, - source: '/blog/2020/06/01/supabase-alpha-may-2020', - destination: '/blog/supabase-alpha-may-2020', - }, - { - permanent: true, - source: '/blog/2020/06/15/supabase-steve-chavez', - destination: '/blog/supabase-steve-chavez', - }, - { - permanent: true, - source: '/blog/2020/07/01/supabase-alpha-june-2020', - destination: '/blog/supabase-alpha-june-2020', - }, - { - permanent: true, - source: '/blog/2020/07/09/postgresql-templates', - destination: '/blog/postgresql-templates', - }, - { - permanent: true, - source: '/blog/2020/07/10/alpha-launch-postmortem', - destination: '/blog/alpha-launch-postmortem', - }, - { - permanent: true, - source: '/blog/2020/07/17/postgresql-physical-logical-backups', - destination: '/blog/postgresql-physical-logical-backups', - }, - { - permanent: true, - source: '/blog/2020/08/02/continuous-postgresql-backup-walg', - destination: '/blog/continuous-postgresql-backup-walg', - }, - { - permanent: true, - source: '/blog/2020/08/02/supabase-alpha-july-2020', - destination: '/blog/supabase-alpha-july-2020', - }, - { - permanent: true, - source: '/blog/2020/08/05/supabase-auth', - destination: '/blog/supabase-auth', - }, - { - permanent: true, - source: '/blog/2020/09/03/supabase-alpha-august-2020', - destination: '/blog/supabase-alpha-august-2020', - }, - { - permanent: true, - source: '/blog/2020/09/11/supabase-hacktoberfest-2020', - destination: '/blog/supabase-hacktoberfest-2020', - }, - { - permanent: true, - source: '/blog/2020/10/03/supabase-alpha-september-2020', - destination: '/blog/supabase-alpha-september-2020', - }, - { - permanent: true, - source: '/blog/2020/10/30/improved-dx', - destination: '/blog/improved-dx', - }, - { - permanent: true, - source: '/blog/2020/11/02/supabase-alpha-october-2020', - destination: '/blog/supabase-alpha-october-2020', - }, - { - permanent: true, - source: '/blog/2020/11/18/postgresql-views', - destination: '/blog/postgresql-views', - }, - { - permanent: true, - source: '/blog/2020/12/01/supabase-alpha-november-2020', - destination: '/blog/supabase-alpha-november-2020', - }, - { - permanent: true, - source: '/blog/2020/12/02/case-study-monitoro', - destination: '/blog/case-study-monitoro', - }, - { - permanent: true, - source: '/blog/2020/12/02/case-study-tayfa', - destination: '/blog/case-study-tayfa', - }, - { - permanent: true, - source: '/blog/2020/12/02/case-study-xendit', - destination: '/blog/case-study-xendit', - }, - { - permanent: true, - source: '/blog/2020/12/02/supabase-striveschool', - destination: '/blog/supabase-striveschool', - }, - { - permanent: true, - source: '/blog/2020/12/13/supabase-dashboard-performance', - destination: '/blog/supabase-dashboard-performance', - }, - { - permanent: true, - source: '/blog/2021/01/02/supabase-beta-december-2020', - destination: '/blog/supabase-beta-december-2020', - }, - { - permanent: true, - source: '/blog/2021/02/02/supabase-beta-january-2021', - destination: '/blog/supabase-beta-january-2021', - }, - { - permanent: true, - source: '/blog/2021/02/09/case-study-roboflow', - destination: '/blog/case-study-roboflow', - }, - { - permanent: true, - source: '/blog/2021/02/27/cracking-postgres-interview', - destination: '/blog/cracking-postgres-interview', - }, - { - permanent: true, - source: '/blog/2021/03/02/supabase-beta-february-2021', - destination: '/blog/supabase-beta-february-2021', - }, - { - permanent: true, - source: '/blog/2021/03/05/postgres-as-a-cron-server', - destination: '/blog/postgres-as-a-cron-server', - }, - { - permanent: true, - source: '/blog/2021/03/08/toad-a-link-shortener-with-simple-apis-for-low-coders', - destination: '/blog/toad-a-link-shortener-with-simple-apis-for-low-coders', - }, - { - permanent: true, - source: '/blog/2021/03/11/using-supabase-replit', - destination: '/blog/using-supabase-replit', - }, - { - permanent: true, - source: '/blog/2021/03/22/In-The-Loop', - destination: '/blog/in-the-loop', - }, - { - permanent: true, - source: '/blog/2021/03/25/angels-of-supabase', - destination: '/blog/angels-of-supabase', - }, - { - permanent: true, - source: '/blog/2021/03/25/launch-week', - destination: '/blog/launch-week', - }, - { - permanent: true, - source: '/blog/2021/03/29/pricing', - destination: '/blog/pricing', - }, - { - permanent: true, - source: '/blog/2021/03/30/supabase-storage', - destination: '/blog/supabase-storage', - }, - { - permanent: true, - source: '/blog/2021/03/31/supabase-cli', - destination: '/blog/supabase-cli', - }, - { - permanent: true, - source: '/blog/2021/04/01/supabase-nft-marketplace', - destination: '/blog/supabase-nft-marketplace', - }, - { - permanent: true, - source: '/blog/2021/04/02/supabase-dot-com', - destination: '/blog/supabase-dot-com', - }, - { - permanent: true, - source: '/blog/2021/04/02/supabase-pgbouncer', - destination: '/blog/supabase-pgbouncer', - }, - { - permanent: true, - source: '/blog/2021/04/02/supabase-workflows', - destination: '/blog/supabase-workflows', - }, - { - permanent: true, - source: '/blog/2021/04/06/supabase-beta-march-2021', - destination: '/blog/supabase-beta-march-2021', - }, - { - permanent: true, - source: '/blog/2021/05/03/supabase-beta-april-2021', - destination: '/blog/supabase-beta-april-2021', - }, - { - permanent: true, - source: '/blog/2021/06/02/supabase-beta-may-2021', - destination: '/blog/supabase-beta-may-2021', - }, - { - permanent: true, - source: '/blog/2021/07/01/roles-postgres-hooks', - destination: '/blog/roles-postgres-hooks', - }, - { - permanent: true, - source: '/blog/2021/07/02/supabase-beta-june-2021', - destination: '/blog/supabase-beta-june-2021', - }, - { - permanent: true, - source: '/blog/2021/07/22/supabase-launch-week-sql', - destination: '/blog/supabase-launch-week-sql', - }, - { - permanent: true, - source: '/blog/2021/07/26/epsilon3-self-hosting', - destination: '/blog/epsilon3-self-hosting', - }, - { - permanent: true, - source: '/blog/2021/07/26/supabase-community-day', - destination: '/blog/supabase-community-day', - }, - { - permanent: true, - source: '/blog/2021/07/26/supabase-postgres-13', - destination: '/blog/supabase-postgres-13', - }, - { - permanent: true, - source: '/blog/2021/07/27/spot-flutter-with-postgres', - destination: '/blog/spot-flutter-with-postgres', - }, - { - permanent: true, - source: '/blog/2021/07/27/storage-beta', - destination: '/blog/storage-beta', - }, - { - permanent: true, - source: '/blog/2021/07/28/mobbin-supabase-200000-users', - destination: '/blog/mobbin-supabase-200000-users', - }, - { - permanent: true, - source: '/blog/2021/07/28/supabase-auth-passwordless-sms-login', - destination: '/blog/supabase-auth-passwordless-sms-login', - }, - { - permanent: true, - source: '/blog/2021/07/29/supabase-reports-and-metrics', - destination: '/blog/supabase-reports-and-metrics', - }, - { - permanent: true, - source: '/blog/2021/07/30/1-the-supabase-hackathon', - destination: '/blog/the-supabase-hackathon', - }, - { - permanent: true, - source: '/blog/2021/07/30/supabase-functions-updates', - destination: '/blog/supabase-functions-updates', - }, - { - permanent: true, - source: '/blog/2021/07/30/supabase-swag-store', - destination: '/blog/supabase-swag-store', - }, - { - permanent: true, - source: '/blog/2021/08/09/hackathon-winners', - destination: '/blog/hackathon-winners', - }, - { - permanent: true, - source: '/blog/2021/08/12/supabase-beta-july-2021', - destination: '/blog/supabase-beta-july-2021', - }, - { - permanent: true, - source: '/blog/2021/09/10/supabase-beta-august-2021', - destination: '/blog/supabase-beta-august-2021', - }, - { - permanent: true, - source: '/blog/2021/09/28/supabase-hacktoberfest-hackathon-2021', - destination: '/blog/supabase-hacktoberfest-hackathon-2021', - }, - { - permanent: true, - source: '/blog/2021/10/04/supabase-beta-sept-2021', - destination: '/blog/supabase-beta-sept-2021', - }, - { - permanent: true, - source: '/blog/2021/10/14/hacktoberfest-hackathon-winners-2021', - destination: '/blog/hacktoberfest-hackathon-winners-2021', - }, - { - permanent: true, - source: '/blog/2021/10/19/replenysh-time-to-value-in-less-than-24-hours', - destination: '/blog/replenysh-time-to-value-in-less-than-24-hours', - }, - { - permanent: true, - source: '/blog/2021/10/28/supabase-series-a', - destination: '/blog/supabase-series-a', - }, - { - permanent: true, - source: '/blog/2021/11/05/supabase-beta-october-2021', - destination: '/blog/supabase-beta-october-2021', - }, - { - permanent: true, - source: '/blog/2021/11/26/supabase-how-we-launch', - destination: '/blog/supabase-how-we-launch', - }, - { - permanent: true, - source: '/blog/2021/11/26/supabase-launch-week-the-trilogy', - destination: '/blog/supabase-launch-week-the-trilogy', - }, - { - permanent: true, - source: '/blog/2021/11/28/postgrest-9', - destination: '/blog/postgrest-9', - }, - { - permanent: true, - source: '/blog/2021/11/28/whats-new-in-postgres-14', - destination: '/blog/whats-new-in-postgres-14', - }, - { - permanent: true, - source: '/blog/2021/11/29/community-day-lw3', - destination: '/blog/community-day-lw3', - }, - { - permanent: true, - source: '/blog/2021/11/30/supabase-studio', - destination: '/blog/supabase-studio', - }, - { - permanent: true, - source: '/blog/2021/12/01/realtime-row-level-security-in-postgresql', - destination: '/blog/realtime-row-level-security-in-postgresql', - }, - { - permanent: true, - source: '/blog/2021/12/02/supabase-acquires-logflare', - destination: '/blog/supabase-acquires-logflare', - }, - { - permanent: true, - source: '/blog/2021/12/03/launch-week-three-friday-five-more-things', - destination: '/blog/launch-week-three-friday-five-more-things', - }, - { - permanent: true, - source: '/blog/2021/12/03/pg-graphql', - destination: '/blog/pg-graphql', - }, - { - permanent: true, - source: '/blog/2021/12/03/supabase-holiday-hackdays-hackathon', - destination: '/blog/supabase-holiday-hackdays-hackathon', - }, - { - permanent: true, - source: '/blog/2021/12/15/beta-november-2021-launch-week-recap', - destination: '/blog/beta-november-2021-launch-week-recap', - }, - { - permanent: true, - source: '/blog/2021/12/17/holiday-hackdays-winners-2021', - destination: '/blog/holiday-hackdays-winners-2021', - }, - { - permanent: true, - source: '/blog/2022/01/20/product-hunt-golden-kitty-awards-2021', - destination: '/blog/product-hunt-golden-kitty-awards-2021', - }, - { - permanent: true, - source: '/blog/2022/01/20/supabase-beta-december-2021', - destination: '/blog/supabase-beta-december-2021', - }, - { - permanent: true, - source: '/blog/2022/02/22/supabase-beta-january-2022', - destination: '/blog/supabase-beta-january-2022', - }, - { - permanent: true, - source: '/blog/2022/03/08/audit', - destination: '/blog/postgres-audit', - }, - { - permanent: true, - source: '/blog/2022/03/25/should-i-open-source-my-company', - destination: '/blog/should-i-open-source-my-company', - }, - { - permanent: true, - source: '/blog/2022/03/25/supabase-launch-week-four', - destination: '/blog/supabase-launch-week-four', - }, - { - permanent: true, - source: '/blog/2022/03/28/community-day-lw4', - destination: '/blog/community-day-lw4', - }, - { - permanent: true, - source: '/blog/2022/03/29/graphql-now-available', - destination: '/blog/graphql-now-available', - }, - { - permanent: true, - source: '/blog/2022/03/30/supabase-enterprise', - destination: '/blog/supabase-enterprise', - }, - { - permanent: true, - source: '/blog/2022/03/31/supabase-edge-functions', - destination: '/blog/supabase-edge-functions', - }, - { - permanent: true, - source: '/blog/2022/04/01/hackathon-bring-the-func', - destination: '/blog/hackathon-bring-the-func', - }, - { - permanent: true, - source: '/blog/2022/04/01/supabase-realtime-with-multiplayer-features', - destination: '/blog/supabase-realtime-with-multiplayer-features', - }, - { - permanent: true, - source: '/blog/2022/04/01/supabrew', - destination: '/blog/supabrew', - }, - { - permanent: true, - source: '/blog/2022/04/15/beta-update-march-2022', - destination: '/blog/beta-update-march-2022', - }, - { - permanent: true, - source: '/blog/2022/04/18/bring-the-func-hackathon-winners', - destination: '/blog/bring-the-func-hackathon-winners', - }, - { - permanent: true, - source: '/blog/2022/04/20/partner-gallery-works-with-supabase', - destination: '/blog/partner-gallery-works-with-supabase', - }, - { - permanent: true, - source: '/blog/2022/05/26/how-supabase-accelerates-development-of-all-pull-together', - destination: '/blog/how-supabase-accelerates-development-of-all-pull-together', - }, - { - permanent: true, - source: '/blog/2022/06/07/beta-update-may-2022', - destination: '/blog/beta-update-may-2022', - }, - { - permanent: true, - source: '/blog/2022/06/15/loading-data-supabase-python', - destination: '/blog/loading-data-supabase-python', - }, - { - permanent: true, - source: '/blog/2022/06/28/partial-postgresql-data-dumps-with-rls', - destination: '/blog/partial-postgresql-data-dumps-with-rls', - }, - { - permanent: true, - source: '/blog/2022/06/29/visualizing-supabase-data-using-metabase', - destination: '/blog/visualizing-supabase-data-using-metabase', - }, - { - permanent: true, - source: '/blog/2022/06/30/flutter-tutorial-building-a-chat-app', - destination: '/blog/flutter-tutorial-building-a-chat-app', - }, - { - permanent: true, - source: '/blog/2022/07/05/beta-update-june-2022', - destination: '/blog/beta-update-june-2022', - }, - { - permanent: true, - source: '/blog/2022/07/13/supabase-auth-helpers-with-sveltekit-support', - destination: '/blog/supabase-auth-helpers-with-sveltekit-support', - }, - { - permanent: true, - source: '/blog/2022/07/18/seen-by-in-postgresql', - destination: '/blog/seen-by-in-postgresql', - }, - { - permanent: true, - source: '/blog/2022/08/02/supabase-flutter-sdk-1-developer-preview', - destination: '/blog/supabase-flutter-sdk-1-developer-preview', - }, - { - permanent: true, - source: '/blog/2022/08/03/supabase-beta-update-july-2022', - destination: '/blog/supabase-beta-update-july-2022', - }, - - // DOCS - { - permanent: true, - source: '/docs/reference/cli/about', - destination: '/docs/reference/cli', - }, - { - permanent: true, - source: '/docs/reference/cli/config-reference', - destination: '/docs/reference/cli/config', - }, - { - permanent: true, - source: '/docs/reference/cli/supabase-help', - destination: '/docs/reference/cli/usage', - }, - { - permanent: true, - source: '/docs/reference/cli/supabase-login', - destination: '/docs/reference/cli/usage', - }, - { - permanent: true, - source: '/docs/reference/cli/supabase-link', - destination: '/docs/reference/cli/usage', - }, - { - permanent: true, - source: '/docs/reference/cli/supabase-init', - destination: '/docs/reference/cli/usage', - }, - { - permanent: true, - source: '/docs/reference/cli/supabase-start', - destination: '/docs/reference/cli/usage', - }, - { - permanent: true, - source: '/docs/reference/cli/supabase-db-branch-list', - destination: '/docs/reference/cli/usage', - }, - { - permanent: true, - source: '/docs/reference/cli/supabase-db-branch-create', - destination: '/docs/reference/cli/usage', - }, - { - permanent: true, - source: '/docs/reference/cli/supabase-db-branch-delete', - destination: '/docs/reference/cli/usage', - }, - { - permanent: true, - source: '/docs/reference/cli/supabase-db-switch', - destination: '/docs/reference/cli/usage', - }, - { - permanent: true, - source: '/docs/reference/cli/supabase-db-changes', - destination: '/docs/reference/cli/usage', - }, - { - permanent: true, - source: '/docs/reference/cli/supabase-db-commit', - destination: '/docs/reference/cli/usage', - }, - { - permanent: true, - source: '/docs/reference/cli/supabase-db-reset', - destination: '/docs/reference/cli/usage', - }, - { - permanent: true, - source: '/docs/reference/cli/supabase-db-remote-set', - destination: '/docs/reference/cli/usage', - }, - { - permanent: true, - source: '/docs/reference/cli/supabase-db-remote-commit', - destination: '/docs/reference/cli/usage', - }, - { - permanent: true, - source: '/docs/reference/cli/supabase-db-push', - destination: '/docs/reference/cli/usage', - }, - { - permanent: true, - source: '/docs/reference/cli/supabase-functions-delete', - destination: '/docs/reference/cli/usage', - }, - { - permanent: true, - source: '/docs/reference/cli/supabase-functions-deploy', - destination: '/docs/reference/cli/usage', - }, - { - permanent: true, - source: '/docs/reference/cli/supabase-functions-new', - destination: '/docs/reference/cli/usage', - }, - { - permanent: true, - source: '/docs/reference/cli/supabase-functions-serve', - destination: '/docs/reference/cli/usage', - }, - { - permanent: true, - source: '/docs/reference/cli/supabase-migration-new', - destination: '/docs/reference/cli/usage', - }, - { - permanent: true, - source: '/docs/reference/cli/supabase-orgs-list', - destination: '/docs/reference/cli/usage', - }, - { - permanent: true, - source: '/docs/reference/cli/supabase-projects-list', - destination: '/docs/reference/cli/usage', - }, - { - permanent: true, - source: '/docs/reference/cli/supabase-projects-create', - destination: '/docs/reference/cli/usage', - }, - { - permanent: true, - source: '/docs/reference/cli/supabase-secrets-list', - destination: '/docs/reference/cli/usage', - }, - { - permanent: true, - source: '/docs/reference/cli/supabase-secrets-set', - destination: '/docs/reference/cli/usage', - }, - { - permanent: true, - source: '/docs/reference/cli/supabase-secrets-unset', - destination: '/docs/reference/cli/usage', - }, - { - permanent: true, - source: '/docs/reference/tools/reference-auth', - destination: '/docs/reference/auth', - }, - { - permanent: true, - source: '/docs/guides/local-development', - destination: '/docs/guides/cli/local-development', - }, - { - permanent: true, - source: '/docs/guides/realtime/overview', - destination: '/docs/guides/realtime', - }, - { - permanent: true, - source: '/docs/reference/javascript/next/migration-guide', - destination: '/docs/reference/javascript/next/release-notes', - }, - { - permanent: true, - source: '/docs/guides/auth/auth-helpers/auth-ui-overview', - destination: '/docs/guides/auth/auth-helpers/auth-ui', - }, - { - permanent: true, - source: '/docs/guides/client-libraries', - destination: '/docs/reference', - }, - - // V2 redirects - // { - // permanent: true, - // source: '/docs/reference/javascript/auth-update', - // destination: '/docs/reference/javascript/auth-updateuser', - // }, - // { - // permanent: true, - // source: '/docs/reference/javascript/auth-api-getuser', - // destination: '/docs/reference/javascript/auth-getuser', - // }, - // { - // permanent: true, - // source: '/docs/reference/javascript/auth-api-resetpasswordforemail', - // destination: '/docs/reference/javascript/auth-resetpasswordforemail', - // }, - // { - // permanent: true, - // source: '/docs/reference/javascript/auth-api-verifyotp', - // destination: '/docs/reference/javascript/auth-verifyotp', - // }, - // { - // permanent: true, - // source: '/docs/reference/javascript/auth-api-listusers', - // destination: '/docs/reference/javascript/auth-admin-listusers', - // }, - // { - // permanent: true, - // source: '/docs/reference/javascript/auth-api-createuser', - // destination: '/docs/reference/javascript/auth-admin-createuser', - // }, - // { - // permanent: true, - // source: '/docs/reference/javascript/auth-api-deleteuser', - // destination: '/docs/reference/javascript/auth-admin-deleteuser', - // }, - // { - // permanent: true, - // source: '/docs/reference/javascript/auth-api-generatelink', - // destination: '/docs/reference/javascript/auth-admin-generatelink', - // }, - // { - // permanent: true, - // source: '/docs/reference/javascript/auth-api-inviteuserbyemail', - // destination: '/docs/reference/javascript/auth-admin-inviteuserbyemail', - // }, - // { - // permanent: true, - // source: '/docs/reference/javascript/auth-api-getuserbyid', - // destination: '/docs/reference/javascript/auth-admin-getuserbyid', - // }, - // { - // permanent: true, - // source: '/docs/reference/javascript/auth-api-updateuserbyid', - // destination: '/docs/reference/javascript/auth-admin-updateuserbyid', - // }, - ] - }, -}) diff --git a/apps/www/next.config.mjs b/apps/www/next.config.mjs new file mode 100644 index 00000000000..af37ec77df0 --- /dev/null +++ b/apps/www/next.config.mjs @@ -0,0 +1,68 @@ +import nextMdx from '@next/mdx' + +import remarkGfm from 'remark-gfm' +import rehypeSlug from 'rehype-slug' + +import rewrites from './lib/rewrites.js' +import redirects from './lib/redirects.js' + +const withMDX = nextMdx({ + extension: /\.mdx?$/, + options: { + remarkPlugins: [remarkGfm], + rehypePlugins: [rehypeSlug], + }, +}) + +const nextConfig = { + basePath: '', + pageExtensions: ['js', 'jsx', 'ts', 'tsx', 'md', 'mdx'], + trailingSlash: false, + images: { + dangerouslyAllowSVG: true, + domains: [ + 'avatars.githubusercontent.com', + 'github.com', + 'ca.slack-edge.com', + 'res.cloudinary.com', + 'images.unsplash.com', + 'supabase.com', + 'obuldanrptloktxcffvn.supabase.co', + 'avatars.githubusercontent.com', + 'colab.research.google.com', + 'api.producthunt.com', + 'https://s3-us-west-2.amazonaws.com', + 's3-us-west-2.amazonaws.com', + 'user-images.githubusercontent.com', + ], + }, + async headers() { + return [ + { + source: '/(.*)', + headers: [ + { + key: 'Strict-Transport-Security', + value: '', + }, + { + key: 'X-Robots-Tag', + value: 'all', + }, + { + key: 'X-Frame-Options', + value: 'DENY', + }, + ], + }, + ] + }, + async rewrites() { + return rewrites + }, + async redirects() { + return redirects + }, +} + +export default withMDX(nextConfig) diff --git a/apps/www/package.json b/apps/www/package.json index cad8bc00b4d..058d02f2861 100644 --- a/apps/www/package.json +++ b/apps/www/package.json @@ -18,7 +18,7 @@ "@mdx-js/react": "^1.6.22", "@next/mdx": "^10.0.7", "@supabase/auth-ui-react": "^0.1.6", - "@supabase/supabase-js": "^1.6.0", + "@supabase/supabase-js": "^2.0.0", "@supabase/ui": "v0.37.0-alpha.80", "classnames": "^2.3.1", "date-fns": "2.10.0", @@ -28,7 +28,7 @@ "markdown-toc": "^1.2.0", "marked": "^4.0.12", "next": "latest", - "next-mdx-remote": "^2.1.3", + "next-mdx-remote": "^4.1.0", "next-seo": "^4.20.0", "nodemailer": "^6.7.3", "parse-numeric-range": "^1.3.0", @@ -36,14 +36,15 @@ "react-copy-to-clipboard": "^5.0.2", "react-dom": "^17.0.2", "react-ga": "^3.3.0", - "react-markdown": "^5.0.3", + "react-markdown": "^8.0.3", "react-syntax-highlighter": "^15.5.0", "react-tooltip": "^4.2.17", "react-transition-group": "^4.4.1", - "rehype-slug": "^4.0.1", + "recharts": "^2.1.15", + "rehype-slug": "^5.0.1", "remark": "^13.0.0", - "remark-gfm": "^1.0.0", - "remark-html": "10.0.0", + "remark-gfm": "^3.0.1", + "remark-html": "^15.0.1", "swiper": "^6.5.0", "swr": "^0.5.4", "typescript": "^4.0.3", diff --git a/apps/www/pages/alternatives/[slug].tsx b/apps/www/pages/alternatives/[slug].tsx index 6ee4340fa47..69203666ed1 100644 --- a/apps/www/pages/alternatives/[slug].tsx +++ b/apps/www/pages/alternatives/[slug].tsx @@ -1,30 +1,12 @@ import matter from 'gray-matter' import authors from 'lib/authors.json' -import hydrate from 'next-mdx-remote/hydrate' -import renderToString from 'next-mdx-remote/render-to-string' -import React from 'react' -import Avatar from '~/components/Avatar' -import CodeBlock from '~/components/CodeBlock/CodeBlock' -import ImageGrid from '~/components/ImageGrid' -import Quote from '~/components/Quote' import LayoutComparison from '~/layouts/comparison' +import mdxComponents from '~/lib/mdx/mdxComponents' +import { mdxSerialize } from '~/lib/mdx/mdxSerialize' import { getAllPostSlugs, getPostdata, getSortedPosts } from '~/lib/posts' // import all components used in blog articles here // for instance, if you use a button, you must add `Button` in the components object below. -const components = { - CodeBlock, - Quote, - Avatar, - code: (props: any) => { - return - }, - ImageGrid, -} - -// plugins for next-mdx-remote -const gfm = require('remark-gfm') -const slug = require('rehype-slug') // table of contents extractor const toc = require('markdown-toc') @@ -42,14 +24,7 @@ export async function getStaticProps({ params }: any) { const postContent = await getPostdata(filePath, '_alternatives') const { data, content } = matter(postContent) - const mdxSource: any = await renderToString(content, { - components, - scope: data, - mdxOptions: { - remarkPlugins: [gfm], - rehypePlugins: [slug], - }, - }) + const mdxSource: any = await mdxSerialize(content) const relatedPosts = getSortedPosts('_alternatives', 5, mdxSource.scope.tags) @@ -72,6 +47,7 @@ export async function getStaticProps({ params }: any) { blog: { slug: `${params.slug}`, content: mdxSource, + source: content, ...data, toc: toc(content, { maxdepth: data.toc_depth ? data.toc_depth : 2 }), }, @@ -81,7 +57,8 @@ export async function getStaticProps({ params }: any) { function BlogPostPage(props: any) { // @ts-ignore - const content = hydrate(props.blog.content, { components }) + // const content = hydrate(props.blog.content, { components }) + // const content = props.blog.content const authorArray = props.blog.author.split(',') const author = [] @@ -95,7 +72,7 @@ function BlogPostPage(props: any) { ) } - return + return } export default BlogPostPage diff --git a/apps/www/pages/auth/Auth.tsx b/apps/www/pages/auth/Auth.tsx index 1da0bc75a85..b2c71f8d3ce 100644 --- a/apps/www/pages/auth/Auth.tsx +++ b/apps/www/pages/auth/Auth.tsx @@ -112,9 +112,9 @@ function AuthPage() { />
- {AuthProviders.map((auth) => { + {AuthProviders.map((auth, i) => { return ( -
+
{`${auth.name}
- {author.map((author: any) => { + {author.map((author: any, i: number) => { return ( -
+
{author.author_image_url && (
{ - if (props.className !== ignoreClass) { - return - } else { - return - } - }, - ImageGrid, - img: (props: any) => { - if (props.className !== ignoreClass) { - return ( -
- -
- ) - } - return - }, -} - -// plugins for next-mdx-remote -const gfm = require('remark-gfm') -const slug = require('rehype-slug') - // table of contents extractor const toc = require('markdown-toc') @@ -72,14 +30,7 @@ export async function getStaticProps({ params }: any) { const postContent = await getPostdata(filePath, '_blog') const { data, content } = matter(postContent) - const mdxSource: any = await renderToString(content, { - components, - scope: data, - mdxOptions: { - remarkPlugins: [gfm], - rehypePlugins: [slug], - }, - }) + const mdxSource: any = await mdxSerialize(content) const relatedPosts = getSortedPosts('_blog', 5, mdxSource.scope.tags) @@ -102,6 +53,7 @@ export async function getStaticProps({ params }: any) { blog: { slug: `${params.slug}`, content: mdxSource, + source: content, ...data, toc: toc(content, { maxdepth: data.toc_depth ? data.toc_depth : 2 }), }, @@ -110,8 +62,7 @@ export async function getStaticProps({ params }: any) { } function BlogPostPage(props: any) { - // @ts-ignore - const content = hydrate(props.blog.content, { components }) + const content = props.blog.content const authorArray = props.blog.author.split(',') const author = [] @@ -166,7 +117,7 @@ function BlogPostPage(props: any) {

On this page

- {props.blog.toc.content} + {props.blog.toc.content}
@@ -235,12 +186,12 @@ function BlogPostPage(props: any) {

{props.blog.date}

•

-

{generateReadingTime(props.blog.content.renderedOutput)}

+

{generateReadingTime(props.blog.source)}

- {author.map((author: any) => { + {author.map((author: any, i: number) => { return ( -
+
@@ -284,7 +235,9 @@ function BlogPostPage(props: any) { />
)} -
{content}
+
+ +
Share this article @@ -348,8 +301,8 @@ function BlogPostPage(props: any) {

Related articles

- {props.relatedPosts.map((post: any) => ( - + {props.relatedPosts.map((post: any, i: number) => ( +

@@ -381,78 +334,10 @@ function BlogPostPage(props: any) {
- {/*
-
-
-
- {props.blog.thumb && ( - - )} -
{toc}
-
- {content} -
-
-
- -
{toc}
-
-
- Related articles -
- - {props.relatedPosts.map((post: any) => ( - -
-

- - - - {post.title} - - -

- -
- - ))} - -
-

- - View all posts - -

-
- -
-
-
-
-
-
-
{props.prevPost && }
-
- {props.nextPost && ( - - )} -
-
-
-
*/} - ) } -// function BlogPostPage() { -// return

blog post

-// } - export default BlogPostPage diff --git a/apps/www/pages/blog/tags/[tag].tsx b/apps/www/pages/blog/tags/[tag].tsx index 0978b1dfa80..b6063851ef9 100644 --- a/apps/www/pages/blog/tags/[tag].tsx +++ b/apps/www/pages/blog/tags/[tag].tsx @@ -45,8 +45,11 @@ function TagBlogsPage(props: Props) {
    {blogs.map((blog: PostTypes, idx: number) => ( -
    - +
    +
    ))}
diff --git a/apps/www/pages/changelog.tsx b/apps/www/pages/changelog.tsx new file mode 100644 index 00000000000..3f551f389a1 --- /dev/null +++ b/apps/www/pages/changelog.tsx @@ -0,0 +1,123 @@ +import { IconGitCommit } from '@supabase/ui' +import dayjs from 'dayjs' +import { MDXRemote, MDXRemoteSerializeResult } from 'next-mdx-remote' +import { NextSeo } from 'next-seo' +import CTABanner from '~/components/CTABanner' +import DefaultLayout from '~/components/Layouts/Default' +import mdxComponents from '~/lib/mdx/mdxComponents' +import { mdxSerialize } from '~/lib/mdx/mdxSerialize' + +export async function getStaticProps() { + const response = await fetch('https://api.github.com/repos/supabase/supabase/releases') + const data = await response.json() + + if (!data) { + return { + props: { + notFound: true, + }, + } + } + + const changelogRenderToString = await Promise.all( + data.map(async (item: any): Promise => { + const mdxSource: MDXRemoteSerializeResult = await mdxSerialize(item.body) + return { + ...item, + source: mdxSource, + } + }) + ) + + return { + props: { + changelog: changelogRenderToString, + }, + } +} + +function ChangelogPage(props: any) { + return ( + <> + + +
+ {/* Title and description */} +
+

Changelog

+

New updates and product improvements

+
+ + {/* Content */} +
+ {props.changelog.map((changelog: any, i: number) => { + const date = changelog.published_at.split('T') + return ( +
+
+
+
+ +
+
+ {changelog.name && ( +

{changelog.name}

+ )} +

+ {dayjs(date[0]).format('MMM D, YYYY')} +

+
+
+
+
+
+ +
+
+
+ ) + })} +
+
+ + +
+ + ) +} + +export default ChangelogPage diff --git a/apps/www/pages/edge-functions/edge-functions.tsx b/apps/www/pages/edge-functions/edge-functions.tsx index 8177402705c..ff2e319eca4 100644 --- a/apps/www/pages/edge-functions/edge-functions.tsx +++ b/apps/www/pages/edge-functions/edge-functions.tsx @@ -139,9 +139,12 @@ function Database() {
- {featureBlocks.map((item) => { + {featureBlocks.map((item, i) => { return ( -
+
{item.icon ? item.icon : }
diff --git a/apps/www/pages/legal/dpa.tsx b/apps/www/pages/legal/dpa.tsx index b155a771445..0cb1cc54d2d 100644 --- a/apps/www/pages/legal/dpa.tsx +++ b/apps/www/pages/legal/dpa.tsx @@ -1,10 +1,40 @@ -import { Button } from '@supabase/ui' -import CTABanner from 'components/CTABanner/index' +import * as Yup from 'yup' import Link from 'next/link' +import { useState } from 'react' +import { Button, Form, IconDownload, Input } from '@supabase/ui' + +import supabase from '~/lib/supabase' +import CTABanner from 'components/CTABanner/index' import Layout from '~/components/Layouts/Default' import SectionContainer from '~/components/Layouts/SectionContainer' const DPA = () => { + const [email, setEmail] = useState('') + const [error, setError] = useState() + const [formSubmitted, setFormSubmitted] = useState(false) + + const INITIAL_VALUES = { email: '' } + + const FormSchema = Yup.object().shape({ + email: Yup.string().email('Invalid email').required('Required'), + }) + + const handleFormSubmit = async (values: typeof INITIAL_VALUES, { resetForm }: any) => { + try { + setError(undefined) + const { error } = await supabase + .from('dpa_downloads') + .insert([{ contact_email: values.email, document: 'dpa' }]) + + if (error) throw error + + resetForm() + setFormSubmitted(true) + window.open('https://supabase.com/downloads/docs/Supabase+DPA+220503.pdf', '_blank') + } catch (error: any) { + setError(error.message) + } + } return ( <> @@ -19,14 +49,48 @@ const DPA = () => { ("DPA").

-

You can download the latest DPA document through our security portal.

-
- - - -
+

You can download our latest DPA document by submitting your email here.

+ + {formSubmitted ? ( +

+ Thank you for your submission! A new tab should have opened with the DPA + document +

+ ) : ( +
+ {({ isSubmitting }: any) => ( + <> + setEmail(e.target.value)} + type="email" + name="email" + id="email" + required + descriptionText="We only keep a record of your email so we can update you when the document has been updated." + placeholder="Your email address" + error={error} + actions={ + + } + /> + {error &&

{error}

} + + )} +
+ )}
@@ -36,5 +100,4 @@ const DPA = () => { ) } - export default DPA diff --git a/apps/www/pages/legal/soc2.tsx b/apps/www/pages/legal/soc2.tsx new file mode 100644 index 00000000000..f5fc2a80fac --- /dev/null +++ b/apps/www/pages/legal/soc2.tsx @@ -0,0 +1,32 @@ +import Link from 'next/link' +import CTABanner from 'components/CTABanner/index' +import Layout from '~/components/Layouts/Default' +import SectionContainer from '~/components/Layouts/SectionContainer' +import SOC2RequestForm from '~/components/SOC2RequestForm' + +const SOC2 = () => { + return ( + + +
+
+
+

SOC2

+

+ As a database company, being SOC2 compliant is important when handling sensitive + customer data. Supabase is currently SOC2 Type 1 compliant and we're also working on + getting certified for SOC2 Type 2 and HIPAA next. +

+ +

You can request for our latest SOC 2 document by submitting your request here.

+ + +
+
+
+
+ +
+ ) +} +export default SOC2 diff --git a/apps/www/pages/partners/[slug].tsx b/apps/www/pages/partners/[slug].tsx index c1f0e6bdbfe..3cea05b2960 100644 --- a/apps/www/pages/partners/[slug].tsx +++ b/apps/www/pages/partners/[slug].tsx @@ -201,7 +201,7 @@ function Partner({ partner }: { partner: Partner }) { // This function gets called at build time export const getStaticPaths: GetStaticPaths = async () => { - const { data: slugs } = await supabase.from('partners').select('slug') + const { data: slugs } = await supabase.from('partners').select('slug') const paths: { params: { slug: string } @@ -222,7 +222,7 @@ export const getStaticPaths: GetStaticPaths = async () => { // This also gets called at build time export const getStaticProps: GetStaticProps = async ({ params }) => { let { data: partner } = await supabase - .from('partners') + .from('partners') .select('*') .eq('slug', params!.slug as string) .single() diff --git a/apps/www/pages/partners/experts/index.tsx b/apps/www/pages/partners/experts/index.tsx index baf2d634241..7c3f1c15844 100644 --- a/apps/www/pages/partners/experts/index.tsx +++ b/apps/www/pages/partners/experts/index.tsx @@ -10,7 +10,7 @@ import TileGrid from '../../../components/Partners/TileGrid' export async function getStaticProps() { const { data: partners } = await supabase - .from('partners') + .from('partners') .select('*') .eq('approved', true) .eq('type', 'expert') diff --git a/apps/www/pages/partners/integrations/index.tsx b/apps/www/pages/partners/integrations/index.tsx index bffed18862c..85c32ee35ca 100644 --- a/apps/www/pages/partners/integrations/index.tsx +++ b/apps/www/pages/partners/integrations/index.tsx @@ -13,7 +13,7 @@ import TileGrid from '../../../components/Partners/TileGrid' export async function getStaticProps() { const { data: partners } = await supabase - .from('partners') + .from('partners') .select('*') .eq('approved', true) .eq('type', 'technology') @@ -57,19 +57,17 @@ function IntegrationPartnersPage(props: Props) { setIsSearching(true) let query = supabase - .from('partners') + .from('partners') .select('*') .eq('approved', true) .order('category') .order('title') if (search.trim()) { - query = query - // @ts-ignore - .textSearch('tsv', `${search.trim()}`, { - type: 'websearch', - config: 'english', - }) + query = query.textSearch('tsv', `${search.trim()}`, { + type: 'websearch', + config: 'english', + }) } const { data: partners } = await query diff --git a/apps/www/pages/pricing/index.tsx b/apps/www/pages/pricing/index.tsx index 2cdf0735761..bdd62e6518a 100644 --- a/apps/www/pages/pricing/index.tsx +++ b/apps/www/pages/pricing/index.tsx @@ -653,9 +653,8 @@ export default function IndexPage() { > {pricingFaq.map((faq, i) => { return ( -
+
{faq.question}} id={`faq--${i.toString()}`} > diff --git a/apps/www/pages/security.mdx b/apps/www/pages/security.mdx index 43867d08290..19fc0f6fdeb 100644 --- a/apps/www/pages/security.mdx +++ b/apps/www/pages/security.mdx @@ -52,7 +52,7 @@ export const Section = ({ children, icon, img }) => ( ### SOC 2 -Supabase is SOC2 Type 1 compliant. Enterprise customers can request a copy of our SOC2 through our [Security Portal](https://security.supabase.com). +Supabase is SOC2 Type 1 compliant. Enterprise customers can request a copy of our SOC2 [here](https://supabase.com/legal/soc2).
@@ -126,8 +126,7 @@ In addition to internal security reviews, we use various tools to scan our code

Security Portal

-Access Supabase’s security and compliance documents on our Security Portal, such as -penetration testing and audit reports. +Access more of Supabase’s security information on our Security Portal, such as penetration testing and audit reports. +
- - Response - -
{JSON.stringify(responseJson, null, 2)}
+

Response

+
{JSON.stringify(responseJson, null, 2)}
- - Log in to see RLS in action - +

Log in to see RLS in action

{user ? (
- {`Logged in as ${user.email}`} - +

{`Logged in as ${user.email}`}

+
) : ( - + )}
diff --git a/examples/edge-functions/app/src/index.js b/examples/edge-functions/app/src/index.js index 3a641dd416d..36515be3349 100644 --- a/examples/edge-functions/app/src/index.js +++ b/examples/edge-functions/app/src/index.js @@ -2,7 +2,7 @@ import React from 'react' import ReactDOM from 'react-dom' import './index.css' import App from './App' -import { Auth } from '@supabase/ui' +import { Auth } from '@supabase/auth-ui-react' import { supabase } from './utils/supabaseClient' ReactDOM.render( diff --git a/examples/edge-functions/supabase/functions/_shared/supabaseClient.ts b/examples/edge-functions/supabase/functions/_shared/supabaseClient.ts deleted file mode 100644 index 2205294d529..00000000000 --- a/examples/edge-functions/supabase/functions/_shared/supabaseClient.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { createClient } from 'https://esm.sh/@supabase/supabase-js@^1.33.2' - -export const supabaseClient = createClient( - // Supabase API URL - env var exported by default when deployed. - Deno.env.get('SUPABASE_URL') ?? '', - // Supabase API ANON KEY - env var exported by default when deployed. - Deno.env.get('SUPABASE_ANON_KEY') ?? '' -) diff --git a/examples/edge-functions/supabase/functions/get-tshirt-competition/README.md b/examples/edge-functions/supabase/functions/get-tshirt-competition/README.md new file mode 100644 index 00000000000..8d0bcb0dd72 --- /dev/null +++ b/examples/edge-functions/supabase/functions/get-tshirt-competition/README.md @@ -0,0 +1,25 @@ +# GET T-Shirt competition + +To celebrate the support of GET requests in Supabase Edge Functions we're giving away some limited edition Functions Shirts! + +To win a Supabase Edge Functions T-Shirt, make a GET request to https://obuldanrptloktxcffvn.functions.supabase.co/get-tshirt-competition with your email address, your Twitter handle (optional), your t-shirt size (S-2XL) and the correct answer, e.g. + +```text +https://obuldanrptloktxcffvn.functions.supabase.co/get-tshirt-competition?email=testr@test.de&twitter=thorwebdev&size=2XL&answer=20 +``` + +You can read the functions source code to figure out the answer ;) + +Good luck trying to GET a T-Shirt! + +### Serve this function locally + +```bash +supabase functions serve --no-verify-jwt get-tshirt-competition +``` + +### Deploy this function + +```bash +supabase functions deploy --no-verify-jwt get-tshirt-competition +``` diff --git a/examples/edge-functions/supabase/functions/get-tshirt-competition/index.ts b/examples/edge-functions/supabase/functions/get-tshirt-competition/index.ts new file mode 100644 index 00000000000..392da9f29f0 --- /dev/null +++ b/examples/edge-functions/supabase/functions/get-tshirt-competition/index.ts @@ -0,0 +1,81 @@ +// Follow this setup guide to integrate the Deno language server with your editor: +// https://deno.land/manual/getting_started/setup_your_environment +// This enables autocomplete, go to definition, etc. + +import { serve } from 'https://deno.land/std@0.131.0/http/server.ts' +import { createClient } from 'https://esm.sh/@supabase/supabase-js@2.0.0-rc.12' +import { corsHeaders } from '../_shared/cors.ts' + +console.log(`Function "get-tshirt-competition" up and running!`) + +function positionInAlphabet(myChar: string): number { + const DIFFERENCE_CHARCODE_AND_LETTERS = 96 + // Convert the character into lowercase + const myCharLowercase = myChar.toLowerCase() + // Find the position of the char in the alphabet + const position = myCharLowercase.charCodeAt(0) - DIFFERENCE_CHARCODE_AND_LETTERS + return position +} + +serve(async (req) => { + // This is needed if you're planning to invoke your function from a browser. + if (req.method === 'OPTIONS') { + return new Response('ok', { headers: corsHeaders }) + } + + try { + const url = new URL(req.url) + const email = url.searchParams.get('email') + const twitter = url.searchParams.get('twitter') + const size = url.searchParams.get('size') + const answer = url.searchParams.get('answer') + + if ( + !/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(email ?? '') || + !answer || + !twitter || + !size + ) + throw new Error( + `Please provide valid 'email', 'twitter', 'size', and 'answer' params. HINT: https://github.com/supabase/supabase/blob/master/examples/edge-functions/supabase/functions/get-tshirt-competition/index.ts` + ) + + if (Number(answer) !== positionInAlphabet(email!)) + throw new Error( + `Sorry, that's wrong, please try again! HINT: https://github.com/supabase/supabase/blob/master/examples/edge-functions/supabase/functions/get-tshirt-competition/index.ts` + ) + + const supabaseAdminClient = createClient( + // Supabase API URL - env var exported by default when deployed. + Deno.env.get('SUPABASE_URL') ?? '', + // Supabase API SERVICE ROLE KEY - env var exported by default when deployed. + Deno.env.get('SUPABASE_SERVICE_ROLE_KEY') ?? '' + ) + // Submit email to draw + const { error } = await supabaseAdminClient.from('get-tshirt-competition').upsert( + { + email, + twitter, + size, + }, + { onConflict: 'email' } + ) + if (error) { + console.log(error) + throw new Error(error.details) + } + + return new Response(`Thanks for playing! ${email} has been added to the draw \\o/`, { + headers: { ...corsHeaders, 'Content-Type': 'text/plain' }, + status: 200, + }) + } catch (error) { + return new Response(JSON.stringify({ error: error.message }), { + headers: { ...corsHeaders, 'Content-Type': 'application/json' }, + status: 400, + }) + } +}) + +// To invoke: +// curl -i --location --request GET 'http://localhost:54321/functions/v1/get-tshirt-competition?email=testr@test.de&twitter=thorwebdev&size=2XL&answer=20' diff --git a/examples/edge-functions/supabase/functions/github-action-deploy/README.md b/examples/edge-functions/supabase/functions/github-action-deploy/README.md new file mode 100644 index 00000000000..01a7fd0d7d1 --- /dev/null +++ b/examples/edge-functions/supabase/functions/github-action-deploy/README.md @@ -0,0 +1,32 @@ +# GitHub Actions Deploy + +This example includes a [deploy GitHub Action](./../../../.github/workflows/deploy.yaml) that automatically deploys your Supabase Edge Functions when pushing to or merging into the main branch. + +You can use the [`setup-cli` GitHub Action](https://github.com/marketplace/actions/supabase-cli-action) to run Supabase CLI commands in your GitHub Actions, for example to deploy a Supabase Edge Function: + +```yaml +name: Deploy Function + +on: + push: + branches: + - main + workflow_dispatch: + +jobs: + deploy: + runs-on: ubuntu-latest + + env: + SUPABASE_ACCESS_TOKEN: ${{ secrets.SUPABASE_ACCESS_TOKEN }} + PROJECT_ID: zdtdtxajzydjqzuktnqx + + steps: + - uses: actions/checkout@v3 + + - uses: supabase/setup-cli@v1 + with: + version: 1.0.0 + + - run: supabase functions deploy github-action-deploy --project-ref $PROJECT_ID +``` diff --git a/examples/edge-functions/supabase/functions/github-action-deploy/index.ts b/examples/edge-functions/supabase/functions/github-action-deploy/index.ts new file mode 100644 index 00000000000..2dc629d0cf8 --- /dev/null +++ b/examples/edge-functions/supabase/functions/github-action-deploy/index.ts @@ -0,0 +1,24 @@ +// Follow this setup guide to integrate the Deno language server with your editor: +// https://deno.land/manual/getting_started/setup_your_environment +// This enables autocomplete, go to definition, etc. + +import { serve } from "https://deno.land/std@0.131.0/http/server.ts"; + +console.log("Hello from Functions!"); + +serve(async (req) => { + const { name } = await req.json(); + const data = { + message: `I was deployed via GitHub Actions!`, + }; + + return new Response(JSON.stringify(data), { + headers: { "Content-Type": "application/json" }, + }); +}); + +// To invoke: +// curl -i --location --request POST 'http://localhost:54321/functions/v1/' \ +// --header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZS1kZW1vIiwicm9sZSI6ImFub24ifQ.625_WdcF3KHqz5amU0x2X5WWHP-OEs_4qj0ssLNHzTs' \ +// --header 'Content-Type: application/json' \ +// --data '{"name":"Functions"}' diff --git a/examples/edge-functions/supabase/functions/select-from-table-with-auth-rls/index.ts b/examples/edge-functions/supabase/functions/select-from-table-with-auth-rls/index.ts index a1103cc5489..d5a54885801 100644 --- a/examples/edge-functions/supabase/functions/select-from-table-with-auth-rls/index.ts +++ b/examples/edge-functions/supabase/functions/select-from-table-with-auth-rls/index.ts @@ -3,7 +3,7 @@ // This enables autocomplete, go to definition, etc. import { serve } from 'https://deno.land/std@0.131.0/http/server.ts' -import { supabaseClient } from '../_shared/supabaseClient.ts' +import { createClient } from 'https://esm.sh/@supabase/supabase-js@2.0.0-rc.12' import { corsHeaders } from '../_shared/cors.ts' console.log(`Function "select-from-table-with-auth-rls" up and running!`) @@ -15,14 +15,26 @@ serve(async (req: Request) => { } try { - // Set the Auth context of the user that called the function. - // This way your row-level-security (RLS) policies are applied. - supabaseClient.auth.setAuth(req.headers.get('Authorization')!.replace('Bearer ', '')) + // Create a Supabase client with the Auth context of the logged in user. + const supabaseClient = createClient( + // Supabase API URL - env var exported by default. + Deno.env.get('SUPABASE_URL') ?? '', + // Supabase API ANON KEY - env var exported by default. + Deno.env.get('SUPABASE_ANON_KEY') ?? '', + // Create client with Auth context of the user that called the function. + // This way your row-level-security (RLS) policies are applied. + { global: { headers: { Authorization: req.headers.get('Authorization')! } } } + ) + // Now we can get the session or user object + const { + data: { user }, + } = await supabaseClient.auth.getUser() + // And we can run queries in the context of our authenticated user const { data, error } = await supabaseClient.from('users').select('*') - console.log({ data, error }) + if (error) throw error - return new Response(JSON.stringify({ data, error }), { + return new Response(JSON.stringify({ user, data }), { headers: { ...corsHeaders, 'Content-Type': 'application/json' }, status: 200, }) diff --git a/i18n/README.ar.md b/i18n/README.ar.md index 5f874955c33..302f4b97b91 100644 --- a/i18n/README.ar.md +++ b/i18n/README.ar.md @@ -41,7 +41,7 @@ نحن حاليًا في طور البيتا العام. شاهد "إصدارات" هذا المستودع لتلقي إخطارات بالتحديثات الرئيسية. -Watch this repo +Watch this repo ## كيف يعمل (Supabase)؟ @@ -51,7 +51,7 @@ Supabase عبارة عن مجموعة من الأدوات مفتوحة المص (supabase) هي [منصة مستضافة](https://app.supabase.com), يمكنك التسجيل والبدأ باستخدامها دون الحاجة لتثبيت أي شئ. يمكنك أيضا [استضافتها ذاتيا](https://supabase.com/docs/guides/hosting/overview) و [تطويرها داخليا](https://supabase.com/docs/guides/local-development). -![Architecture](https://supabase.com/docs/assets/images/supabase-architecture-9050a7317e9ec7efb7807f5194122e48.png) +![Architecture](https://user-images.githubusercontent.com/70828596/187547862-ffa9d058-0c3a-4851-a3e7-92ccfca4b596.png) - [PostgreSQL](https://www.postgresql.org/) هي قاعدة بيانات قائمة على العلاقات الشيئية مع ٣٠ سنة من التطوير النشط التي اكسبتها سمعة وموثقية قوية وتمتاز بالمتانة والأداء. - [Realtime](https://github.com/supabase/realtime) هو خادم بلغة (Elixir) يمكنك من الاستماع لقاعدة البيانات لأي تغيرات سواء أنشاء أو تعديل أو مسح باستخدام ال(websocket). diff --git a/i18n/README.bg.md b/i18n/README.bg.md index 7a815140fdc..855b3dbfff5 100644 --- a/i18n/README.bg.md +++ b/i18n/README.bg.md @@ -45,7 +45,7 @@ В момента сме в публична Beta версия. Вижте "releases" на това "repository", за да бъдете уведомени за всички нови версии. -Watch this repo +Watch this repo --- @@ -58,7 +58,7 @@ Supabase е комбинация на инструменти с отворен Supabase е [хоствана платформа](https://app.supabase.com). Можете да се регистрирате и да използвате Supabase без да инсталирате нищо. Можете също да използвате [самостоятелен хостинг](https://supabase.com/docs/guides/hosting/overview) и да го [използвате локално](https://supabase.com/docs/guides/local-development). -![Архитектура](https://supabase.com/docs/assets/images/supabase-architecture-9050a7317e9ec7efb7807f5194122e48.png) +![Архитектура](https://user-images.githubusercontent.com/70828596/187547862-ffa9d058-0c3a-4851-a3e7-92ccfca4b596.png) - [PostgreSQL](https://www.postgresql.org/) е обектно-релативна база данни с повече от 30 години активно развитие, което е създало висока репутация за съвместимост, функционалност и производителност. - [Realtime](https://github.com/supabase/realtime) е сървър на Elixir, който позволява да проследявате всички въвеждания, актуализации и изтривания на данни в PostgreSQL чрез уеб-сокети (websockets). Realtime проверява въвеждането на данни на PostgreSQL и конвертира в JSON записи, като после ги праща по уеб-сокети на оторизирани клиенти. diff --git a/i18n/README.bn.md b/i18n/README.bn.md index eeb3cf39a25..8410b7b8f77 100644 --- a/i18n/README.bn.md +++ b/i18n/README.bn.md @@ -41,7 +41,7 @@ আমরা বর্তমানে পাবলিক বিটাতে আছি। বড় আপডেটের বিজ্ঞপ্তি পেতে এই রেপোর "রিলিজ" দেখুন। -এই রেপো দেখুন +এই রেপো দেখুন --- @@ -54,7 +54,7 @@ সুপাবেস হল একটি [হোস্ট করা প্ল্যাটফর্ম](https://app.supabase.com)। আপনি সাইন আপ করতে পারেন এবং কিছু ইনস্টল না করে সুপাবেস ব্যবহার শুরু করতে পারেন। এছাড়াও আপনি [স্ব-হোস্ট](https://supabase.com/docs/guides/hosting/overview) এবং [স্থানীয়ভাবে বিকাশ](https://supabase.com/docs/guides/local-development) করতে পারেন। -![আর্কিটেকচার](https://supabase.com/docs/assets/images/supabase-architecture-9050a7317e9ec7efb7807f5194122e48.png) +![আর্কিটেকচার](https://user-images.githubusercontent.com/70828596/187547862-ffa9d058-0c3a-4851-a3e7-92ccfca4b596.png) - [PostgreSQL](https://www.postgresql.org/) হল একটি অবজেক্ট-রিলেশনাল ডাটাবেস সিস্টেম যার 30 বছরের বেশি সক্রিয় বিকাশ রয়েছে যা এটিকে নির্ভরযোগ্যতা, বৈশিষ্ট্যের দৃঢ়তা এবং কর্মক্ষমতার জন্য একটি শক্তিশালী খ্যাতি অর্জন করেছে। - [রিয়েলটাইম](https://github.com/supabase/realtime) হল একটি Elixir সার্ভার যা আপনাকে ওয়েবসকেট ব্যবহার করে PostgreSQL সন্নিবেশ, আপডেট এবং মুছে ফেলা শুনতে দেয়। ডাটাবেস পরিবর্তনের জন্য রিয়েলটাইম পোল পোস্টগ্রেসের অন্তর্নির্মিত প্রতিলিপি কার্যকারিতা, পরিবর্তনগুলিকে JSON-এ রূপান্তরিত করে, তারপর অনুমোদিত ক্লায়েন্টদের কাছে ওয়েবসকেটের মাধ্যমে JSON সম্প্রচার করে। diff --git a/i18n/README.ca.md b/i18n/README.ca.md index ccc1ffea335..87923c98b4b 100644 --- a/i18n/README.ca.md +++ b/i18n/README.ca.md @@ -39,7 +39,7 @@ Per a veure la documentació completa, visita [supabase.com/docs](https://supaba Actualment estem en la fase de beta pública. Pots subscriure’t a les _releases_ d’aquest repositori per a mantenir-te notificat d’actualitzacions majors. -Segueix aquest repositori +Segueix aquest repositori --- @@ -51,7 +51,7 @@ Supabase és una combinació d’eines de codi obert. Estem construint les funci Supabase és una [plataforma allotjada](https://app.supabase.com). Et pots registrar i començar a utilitzar Supabase sense instal·lar res. També podeu tenir una [_host_ pròpia](https://supabase.com/docs/guides/hosting/overview) i [desenvolupar localment](https://supabase.com/docs/guides/local-development). -![Arquitectura](https://supabase.com/docs/assets/images/supabase-architecture-9050a7317e9ec7efb7807f5194122e48.png) +![Arquitectura](https://user-images.githubusercontent.com/70828596/187547862-ffa9d058-0c3a-4851-a3e7-92ccfca4b596.png) - [PostgreSQL](https://www.postgresql.org/) és un sistema de base de dades objecte–relacional amb més de 30 anys de desenvolupament actiu que s’ha guanyat la seva forta reputació per ser de confiança, robust i d’alt rendiment. - [Temps real](https://github.com/supabase/realtime) és un server construït en Elixir que permet escoltar els _inserts_, _updates_ i _deletes_ de PostgreSQL utilitzant WebSockets. Supabase escolta a la funcionalitat de replicació integrada de PostgreSQL, converteix el byte de replicació en un JSON i després transmet el JSON a través de WebSockets. diff --git a/i18n/README.da.md b/i18n/README.da.md index 36fb8fa2b40..37d6fa87471 100644 --- a/i18n/README.da.md +++ b/i18n/README.da.md @@ -38,7 +38,7 @@ For fuld dokumentation, besøg [supabase.com/docs](https://supabase.com/docs) Vi er i øjeblikket i Offentlig beta. Hold øje med udgivelser på denne side for notifkationer om større opdateringer. -Hold øje med dette repo +Hold øje med dette repo --- @@ -50,7 +50,7 @@ Supabase er en kombination af open source værktøjer. Vi bygger Firebase fuktio Supabase er en [hosted platform](https://app.supabase.com). Du kan skrive dig op og starte med at anvende Supabase uden nogen form for installation. Vi er stadig i gang med at forbedre den lokale udvikleroplevelse - dette er pt vores hovedfokus sammen med platformens generelle stabilitet. -![Arkitektur](https://supabase.com/docs/assets/images/supabase-architecture-9050a7317e9ec7efb7807f5194122e48.png) +![Arkitektur](https://user-images.githubusercontent.com/70828596/187547862-ffa9d058-0c3a-4851-a3e7-92ccfca4b596.png) - [PostgreSQL](https://www.postgresql.org/) er en objektorienteret relationel database med mere end 30 års aktiv udvikling der har givet et stærkt omdømme for pålidelighed, funktionel robusthed og ydeevne. - [Realtime](https://github.com/supabase/realtime) er en Elixir server der giver mulighed for at lytte efter PostgreSQL oprettelser, opdateringer og sletninger ved hjælp af websockets. Supabase lytter efter Postgres' indbyggede replikeringsmekanisme, konverterer replika byte-strømmen til JSON og udsender derefter JSON gennem websockets. diff --git a/i18n/README.de.md b/i18n/README.de.md index 88f59883d78..b77416bef34 100644 --- a/i18n/README.de.md +++ b/i18n/README.de.md @@ -39,7 +39,7 @@ Um die gesamte Dokumentation einzusehen, schaue auf [supabase.com/docs](https:// Aktuell befinden wir uns in der öffentlichen Beta. Beobachte "Releases" in diesem Repository um über größere Neuigkeiten benachrichtigt zu werden. -Watche dieses Repo +Watche dieses Repo --- @@ -53,7 +53,7 @@ Supabase ist eine [gehostete Plattform](https://app.supabase.com). Du kannst dich bei Supabase anmelden und sofort loslegen, ohne etwas zu installieren. Du kannst Supabase auch selbst hosten und lokal entwickeln. -![Architektur](https://supabase.com/docs/assets/images/supabase-architecture-9050a7317e9ec7efb7807f5194122e48.png) +![Architektur](https://user-images.githubusercontent.com/70828596/187547862-ffa9d058-0c3a-4851-a3e7-92ccfca4b596.png) - [PostgreSQL](https://www.postgresql.org/) ist ein objektrelationales Datenbanksystem, das seit über 30 Jahren aktiv entwickelt wird und für Zuverlässigkeit, Robustheit der Funktionen und Leistung geschätzt wird. - [Realtime](https://github.com/supabase/realtime) ist ein Elixir-Server, mit dem du auf PostgreSQL-Inserts, -Updates und -Deletes über Websockets hören kannst. Supabase hört auf die eingebaute Replikationsfunktionalität von Postgres, konvertiert den Replikations-Byte-Stream in JSON und sendet das JSON dann über Websockets. diff --git a/i18n/README.es.md b/i18n/README.es.md index 846aa758fbf..aec002391b8 100644 --- a/i18n/README.es.md +++ b/i18n/README.es.md @@ -45,7 +45,7 @@ Para ver como contribuir, visita los [Primeros Pasos](../DEVELOPERS.md) Actualmente estamos en la fase de beta pública. Puedes suscribirte a las _releases_ de este repositorio para mantenerte notificado de actualizaciones mayores. -Seguir este repositorio +Seguir este repositorio --- @@ -57,7 +57,7 @@ Supabase es una combinación de herramientas de código abierto. Estamos constru Supabase es una [plataforma alojada](https://app.supabase.com). Te puedes registrar y comenzar a utilizar Supabase sin instalar nada. También puedes tener un [_host_ propio](https://supabase.com/docs/guides/hosting/overview) y [desarrollar en local](https://supabase.com/docs/guides/local-development). -![Arquitectura](https://supabase.com/docs/assets/images/supabase-architecture-9050a7317e9ec7efb7807f5194122e48.png) +![Arquitectura](https://user-images.githubusercontent.com/70828596/187547862-ffa9d058-0c3a-4851-a3e7-92ccfca4b596.png) - [PostgreSQL](https://www.postgresql.org/) es un sistema de base de datos objeto-relacional con más de 30 años de desarrollo activo que se ha ganado su fuerte reputación por ser confiable, robusto y de alto rendimiento. - [Tiempo Real](https://github.com/supabase/realtime) es un server construido en Elixir que permite escuchar a los _inserts_, _updates_ y _deletes_ de PostgreSQL utilizando WebSockets. Supabase escucha a la funcionalidad de replicación integrada de PostgreSQL, convierte el byte de replicación en un JSON y después transmite el JSON a través de WebSockets. diff --git a/i18n/README.fa.md b/i18n/README.fa.md index 7647de052e4..9488b3068f3 100644 --- a/i18n/README.fa.md +++ b/i18n/README.fa.md @@ -38,7 +38,7 @@ در حال حاظر در مرحله بتای عمومی هستیم‫. "releases" این مخزن را دنبال کنید تا در جریان به‌روزسانی‌ها قرار بگیرید. -این مخزن را دنبال کنید. +این مخزن را دنبال کنید. --- @@ -50,7 +50,7 @@ ‫Supabase یک [پلتفرم میزبانی‌شده](https://app.supabase.com) است. شما می‌توانید بدون نصب چیزی، ثبت‌نام و شروع به استفاده از Supabase کنید. ما هنوز در حال ساختن تجربه‌ی توسعه local هستیم - این تمرکز اصلی فعلی ما علاوه بر اتکاپذیری است. -![معماری](https://supabase.com/docs/assets/images/supabase-architecture-9050a7317e9ec7efb7807f5194122e48.png) +![معماری](https://user-images.githubusercontent.com/70828596/187547862-ffa9d058-0c3a-4851-a3e7-92ccfca4b596.png) - ‫[PostgreSQL](https://www.postgresql.org/) یک سیستم دیتابیس object-relational با بیش از ۳۰سال سابقه توسعه می‌باشد که اعتبار زیادی بابت اتکاپذیری، امکانات قوی و سرعت کسب کرده است. - ‫[Realtime](https://github.com/supabase/realtime) یک سرور Elixir است که اجازه می‌دهد به اضافه کردن، به‌روز کردن و حذف کردن‌های PostgreSQL با استفاده از websockets گوش دهید. Supabase به عملکرد داخلی PostgreSQL برای replication گوش می‌دهد، replication byte stream را به JSON تبدیل می‌کند و JSON را از طریق websock به خارج broadcast می‌کند. diff --git a/i18n/README.fi.md b/i18n/README.fi.md index ab38711308f..cbbb8959dfc 100644 --- a/i18n/README.fi.md +++ b/i18n/README.fi.md @@ -45,7 +45,7 @@ Katso ohjeet osallistumiseen vierailemalla [Aloitus](./DEVELOPERS.md) Olemme tällä hetkellä julkisessa betaversiossa. Katso tämän repon "julkaisut", niin saat ilmoituksen tärkeimmistä päivityksistä. -Katso tämä repo +Katso tämä repo --- diff --git a/i18n/README.fr.md b/i18n/README.fr.md index 6f6ad80cbe1..c1a06000e22 100644 --- a/i18n/README.fr.md +++ b/i18n/README.fr.md @@ -41,7 +41,7 @@ Pour voir comment Contribuer, visitez [Getting Started](./DEVELOPERS.md) Nous sommes actuellement en version bêta publique. Surveillez les "releases" de ce repo pour être informé des mises à jour majeures. -Watch this repo +Watch this repo --- @@ -54,7 +54,7 @@ Supabase est une combinaison d'outils open source. Nous développons les fonctio Supabase est une [plateforme hébergée](https://app.supabase.com). Vous pouvez vous inscrire et commencer à utiliser Supabase sans rien installer. Vous pouvez aussi [auto-héberger](https://supabase.com/docs/guides/hosting/overview) et [développer localement](https://supabase.com/docs/guides/local-development). -![Architecture](https://supabase.com/docs/assets/images/supabase-architecture-9050a7317e9ec7efb7807f5194122e48.png) +![Architecture](https://user-images.githubusercontent.com/70828596/187547862-ffa9d058-0c3a-4851-a3e7-92ccfca4b596.png) - [PostgreSQL](https://www.postgresql.org/) est un système de base de données relationnel-objet dont le développement actif depuis plus de 30 ans lui a valu une solide réputation de fiabilité, de robustesse des fonctionnalités et de performance. - [Realtime](https://github.com/supabase/realtime) est un serveur Elixir qui vous permet d'écouter les insertions, mises à jour et suppressions PostgreSQL à l'aide de websockets. Supabase écoute la fonctionnalité de réplication intégrée de Postgres, convertit le flux d'octets de réplication en JSON, puis diffuse le JSON sur des websockets. diff --git a/i18n/README.gr.md b/i18n/README.gr.md index 73b22d75b43..1da76378ca1 100644 --- a/i18n/README.gr.md +++ b/i18n/README.gr.md @@ -38,7 +38,7 @@ To [Supabase](https://supabase.com) είναι μια εναλλακτική λ Αυτήν τη στιγμή είμαστε σε Public Beta. Παρακολουθήστε την κατηγορία "releases" σε αυτό το repo για να λαμβάνετε ειδοποιήσεις για σημαντικές ενημερώσεις. -Watch this repo +Watch this repo --- @@ -50,7 +50,7 @@ To [Supabase](https://supabase.com) είναι μια εναλλακτική λ Το Supabase είναι ένα [hosted platform](https://app.supabase.com) (φιλοξενούμενη πλατφόρμα). Μπορείτε να εγγραφείτε και να αρχίσετε να χρησιμοποιείτε το Supabase χωρίς να εγκαταστήσετε τίποτα. Εξακολουθούμε να αναπτύσουμε την εμπειρία της τοπικής ανάπτυξης (Local Development) - αυτή είναι τώρα η βασική μας εστίαση, μαζί με τη σταθερότητα της πλατφόρμας. -![Architecture](https://supabase.com/docs/assets/images/supabase-architecture-9050a7317e9ec7efb7807f5194122e48.png) +![Architecture](https://user-images.githubusercontent.com/70828596/187547862-ffa9d058-0c3a-4851-a3e7-92ccfca4b596.png) - [PostgreSQL](https://www.postgresql.org/) is an object-relational database system with over 30 years of active development that has earned it a strong reputation for reliability, feature robustness, and performance. - [Realtime](https://github.com/supabase/realtime) is an Elixir server that allows you to listen to PostgreSQL inserts, updates, and deletes using websockets. Supabase listens to Postgres' built-in replication functionality, converts the replication byte stream into JSON, then broadcasts the JSON over websockets. diff --git a/i18n/README.gu.md b/i18n/README.gu.md index bfbbfafd008..32c13e33b22 100644 --- a/i18n/README.gu.md +++ b/i18n/README.gu.md @@ -39,7 +39,7 @@ અમે હાલમાં જાહેર બીટામાં છીએ. અગત્યના સુધારાઓ વિશે સૂચિત થવા માટે આ રીપોના "રિલિઝિસ" જુઓ. -આ રીપો જુઓ +આ રીપો જુઓ --- @@ -51,7 +51,7 @@ સુપાબેઝ એક [હોસ્ટેડ પ્લેટફોર્મ](https://app.supabase.com) છે. તમે સાઇન અપ કરી શકો છો અને કંઈપણ ઇન્સ્ટોલ કર્યા વગર સુપાબેઝનો ઉપયોગ શરૂ કરી શકો છો. અમે હજી પણ સ્થાનિક ડેવલપમેન્ટ અનુભવ બનાવી રહ્યા છીએ - પ્લેટફોર્મ સ્થિરતાની સાથે હવે આ અમારું મુખ્ય લક્ષ્ય છે. -![સ્થાપત્ય](https://supabase.com/docs/assets/images/supabase-architecture-9050a7317e9ec7efb7807f5194122e48.png) +![સ્થાપત્ય](https://user-images.githubusercontent.com/70828596/187547862-ffa9d058-0c3a-4851-a3e7-92ccfca4b596.png) - [PostgreSQL](https://www.postgresql.org/) એક ઓબ્જેક્ટ-રિલેશનલ ડેટાબેઝ સિસ્ટમ છે જેમાં 30 વર્ષથી વધુ સક્રિય વિકાસ છે જેણે તેને વિશ્વસનીયતા, લક્ષણ મજબુતાઇ અને પ્રદર્શન માટે મજબૂત પ્રતિષ્ઠા પ્રાપ્ત કરી છે - [Realtime](https://github.com/supabase/realtime) એલિક્સિર સર્વર છે જે તમને વેબસોકેટનો ઉપયોગ કરીને PostgreSQL દાખલ, અપડેટ્સ અને ડીલીટ માટે પરવાનગી આપે છે. સુપાબેઝ Postgresની બિલ્ટ-ઇન પ્રતિકૃતિ વિધેયને સાંભળે છે, પ્રતિકૃતિ બાઇટ પ્રવાહને JSON માં ફેરવે છે, પછી વેબસોકેટ્સ પર JSON પ્રસારિત કરે છે. diff --git a/i18n/README.he.md b/i18n/README.he.md index a1ed2012310..bb564612523 100644 --- a/i18n/README.he.md +++ b/i18n/README.he.md @@ -40,7 +40,7 @@ אנחנו כרגע בשלב "בטא פומבית". עקבו אחר השחוררים שלנו בGithub בכדי לקבל התראות על שחרורים נוספים. -Watch this repo +Watch this repo --- @@ -53,7 +53,7 @@ Supabase הוא שילוב של כלי קוד פתוח. אנו בונים את Supabase היא [תשתית ענן](https://app.supabase.com) . את\ה יכול\ה להירשם ולהתחיל להשתמש ב- Supabase מבלי להתקין שום דבר. אנו עדיין עובדים על לייצר את חוויית הפיתוח המקומית - בזה אנחנו מתמקדים, יחד עם יציבות המערכת. -![Architecture](https://supabase.com/docs/assets/images/supabase-architecture-9050a7317e9ec7efb7807f5194122e48.png) +![Architecture](https://user-images.githubusercontent.com/70828596/187547862-ffa9d058-0c3a-4851-a3e7-92ccfca4b596.png) - [פוסטגרס (PostgreSQL)](https://www.postgresql.org/) זהו מסד נתונים רלציוני עם למעלה מ -30 שנות פיתוח פעיל שזכתה למוניטין של אמינות, עמידות וביצועים. - [Realtime](https://github.com/supabase/realtime) הוא שרת Elixir המאפשר להאזין לתוספות, עדכונים ומחיקות ב-PostgreSQL באמצעות websockets. Supabase מאזין לפונקציונליות ההעתק המובנית של Postgres, ממיר את המידע ל- JSON ואז משדר את ה- JSON מעל websockets. diff --git a/i18n/README.hi.md b/i18n/README.hi.md index b7510d6ca67..ea6c3f7ebf8 100644 --- a/i18n/README.hi.md +++ b/i18n/README.hi.md @@ -45,7 +45,7 @@ हम इस समय सार्वजनिक बीटा में हैं। प्रमुख अद्यतन की सूचना पाने के लिए इस रेपो का "रिलीज़" देखें। -इस रेपो को देखें +इस रेपो को देखें --- @@ -57,7 +57,7 @@ सुपाबसे [होस्टेड प्लेटफार्म](https://app.supabase.com). आप साइन अप कर सकते हैं और कुछ भी स्थापित किए बिना सुपाबसे का उपयोग करना शुरू कर सकते हैं। हम अभी भी स्थानीय विकास का अनुभव पैदा कर रहे हैं - यह अब मंच स्थिरता के साथ-साथ हमारा मुख्य फोकस है। -![आर्किटेक्चर](https://supabase.com/docs/assets/images/supabase-architecture-9050a7317e9ec7efb7807f5194122e48.png) +![आर्किटेक्चर](https://user-images.githubusercontent.com/70828596/187547862-ffa9d058-0c3a-4851-a3e7-92ccfca4b596.png) - [PostgreSQL](https://www.postgresql.org/) 30 से अधिक वर्षों के सक्रिय विकास के साथ एक वस्तु-संबंधपरक डेटाबेस प्रणाली है जिसने इसे विश्वसनीयता, सुविधा मजबूती और प्रदर्शन के लिए एक मजबूत प्रतिष्ठा अर्जित की है। - [Realtime](https://github.com/supabase/realtime) एक एलिक्जिर सर्वर है जो आपको पोस्टग्रॉसीक्यूएल आवेषण, अपडेट्स को सुनने की अनुमति देता है और वेबसोकेट का उपयोग करके हटाता है। सुपबेस पोस्टग्रेज की अंतर्निहित प्रतिकृति कार्यक्षमता को सुनता है, प्रतिकृति बाइट स्ट्रीम को JSON में परिवर्तित करता है, फिर JSON को वेबस्कॉक पर प्रसारित करता है। diff --git a/i18n/README.hu.md b/i18n/README.hu.md index 0d9916319f4..80ca3ecf691 100644 --- a/i18n/README.hu.md +++ b/i18n/README.hu.md @@ -39,7 +39,7 @@ A teljes dokumentációért látogasson el a [supabase.com/docs](https://supabas Jelenleg a Publikus Béta állapotban vagyunk. Nézze a repo "releases" fülét hogy értesüljön a nagy frissítésekről. -Watch this repo +Watch this repo --- @@ -52,7 +52,7 @@ A Supabase nyílt forráskódú eszközök kombinációja.A Firebase funkcióit Supabase egy [hosztolt platform](https://app.supabase.com). Regisztrálással letöltés nélkül is elkezdheted használni. De [hosztolhatod magadnak](https://supabase.com/docs/guides/hosting/overview) és akár [fejlesztheted helyileg](https://supabase.com/docs/guides/local-development). -![Architektúra](https://supabase.com/docs/assets/images/supabase-architecture-9050a7317e9ec7efb7807f5194122e48.png) +![Architektúra](https://user-images.githubusercontent.com/70828596/187547862-ffa9d058-0c3a-4851-a3e7-92ccfca4b596.png) - [PostgreSQL](https://www.postgresql.org/) egy objektum-kapcsolati adatbázis rendszer több mint 30 évnyi aktív fejlesztéssel ezalatt hírnevvet szerzett megbízhatóságáról, robosztus felépítéséről, és teljesítményéről. - [Valós idő](https://github.com/supabase/realtime) egy Elixir szerver ami lehetővé teszi hogy figyeld a PostgreSQL beillesztéseket, frissítéseket, és törléseket websocket-ek felhasználásával. Supabase figyeli a Postgres belső replikációs funkcióját, átalakítja a replikációs bájtokat egy JSON-be, majd a JSON-t elküldi a websocket kapcsolaton. diff --git a/i18n/README.id.md b/i18n/README.id.md index 9cecbed7c2f..5500fd2eb4d 100644 --- a/i18n/README.id.md +++ b/i18n/README.id.md @@ -38,7 +38,7 @@ Untuk dokumentasi lengkap, kunjungi [supabase.com/docs](https://supabase.com/doc Kami saat ini dalam Public Beta. Amati "releases" dari repositori ini untuk pemberitahuan mengenai pembaruan-pembaruan besar. -Amati repo ini +Amati repo ini --- @@ -50,7 +50,7 @@ Supabase adalah kombinasi dari alat-alat sumber terbuka. Kami membangun fitur-fi Supabase adalah sebuah [platform yang dihosting](https://app.supabase.com). Anda dapat mendaftar dan mulai menggunakan Supabase tanpa memasang apa pun. Kami masih membangun pengalaman pengembangan lokal yang merupakan fokus utama kami saat ini, bersama dengan stabilitas platform. -![Arsitektur](https://supabase.com/docs/assets/images/supabase-architecture-9050a7317e9ec7efb7807f5194122e48.png) +![Arsitektur](https://user-images.githubusercontent.com/70828596/187547862-ffa9d058-0c3a-4851-a3e7-92ccfca4b596.png) - [PostgreSQL](https://www.postgresql.org/) adalah sebuah sistem database objek-relasional dengan pengembangan aktif lebih dari 30 tahun sehingga memiliki reputasi yang kuat dalam keandalan, ketahanan fitur, dan kinerja. - [Realtime](https://github.com/supabase/realtime) adalah sebuah server Elixir yang memungkinkan anda mendengarkan penyisipan, perubahan, dan penghapusan dari PostgreSQL menggunakan WebSocket. Supabase mendengarkan fungsionalitas replikasi bawaan Postgres, mengubah stream byte ke JSON, kemudian JSON tersebut disiarkan melalui WebSocket. diff --git a/i18n/README.it.md b/i18n/README.it.md index af91db34766..93c7096e3a7 100644 --- a/i18n/README.it.md +++ b/i18n/README.it.md @@ -38,7 +38,7 @@ Per ottenere la documentazione completa, visitare il sito [supabase.com/docs](ht Attualmente siamo in Beta Pubblica. Tenete d'occhio (cliccando sul bottone "Watch") le "release" di questa repository per essere notificati sui nostri aggiornamenti piú importanti. -Watch this repo +Watch this repo --- @@ -50,7 +50,7 @@ Supabase è un insieme di strumenti con sorgente aperto. Stiamo sviluppando le f Supabase è una [piattaforma ospitata](https://app.supabase.com). Ci si può iscrivere ed iniziare ad utilizzare Supabase senza la necessità di installare qualcosa. Ci impegnamo nel creare un'esperienza di sviluppo interamente in locale - attualmente é il nostro obiettivo primario, così come lo è la stabilità della piattaforma stessa. -![Architettura](https://supabase.com/docs/assets/images/supabase-architecture-9050a7317e9ec7efb7807f5194122e48.png) +![Architettura](https://user-images.githubusercontent.com/70828596/187547862-ffa9d058-0c3a-4851-a3e7-92ccfca4b596.png) - [PostgreSQL](https://www.postgresql.org/) è un sistema di database relazionali ad oggetti, con oltre 30 anni di sviluppo all'attivo che gli hanno permesso di ottenere una ottima reputazione in termini di affidabilità, robustezza delle funzionalità e prestazioni. - [Realtime](https://github.com/supabase/realtime) è un server Elixir che consente di ascoltare eventi PostreSQL quali inserimento, aggiornamenti e rimozioni utilizzando i websocket. Supabase rimane in ascolto della funzionalità incorporata di replicazione di Postgres, convertendo il flusso di byte replicato in JSON, dopodichè diffondendo il JSON attraverso i websocket. diff --git a/i18n/README.ko.md b/i18n/README.ko.md index 2e247fe802b..de128abb31e 100644 --- a/i18n/README.ko.md +++ b/i18n/README.ko.md @@ -43,7 +43,7 @@ 현재 Public Beta를 실시하고 있습니다. 주요 업데이트에 대한 알림을 받으려면 이 저장소의 "releases"를 Watch 해주세요. -Watch this repo +Watch this repo --- @@ -56,7 +56,7 @@ Supabase는 오픈 소스 툴들을 조합한 것입니다. 엔터프라이즈 Supabase는 [호스팅 플랫폼](https://app.supabase.com)입니다. 아무것도 설치하지 않고 가입하고 Supabase 사용을 시작할 수 있습니다. 또한 현재 로컬 개발 환경을 갖추고 있으며, 이는 플랫폼의 안정성과 함께 지금 최우선으로 진행하고 있는 프로젝트입니다. -![아키텍쳐](https://supabase.com/docs/assets/images/supabase-architecture-9050a7317e9ec7efb7807f5194122e48.png) +![아키텍쳐](https://user-images.githubusercontent.com/70828596/187547862-ffa9d058-0c3a-4851-a3e7-92ccfca4b596.png) - [PostgreSQL](https://www.postgresql.org/)PostgreSQL 은 30 년 이상 개발 · 개선되어왔다 객체 관계형 데이터베이스 시스템에서의 안정성, 기능의 안정성, 성능면에서 높은 평가를 얻고 있습니다. - [Realtime](https://github.com/supabase/realtime) 은 웹 소켓을 사용하여 PostgreSQL 삽입, 업데이트 및 삭제를 수신 할 수있는 Elixir 서버입니다. Supabase는 Postgres의 내장 복제 기능을 수신하고 복제 바이트 스트림을 JSON으로 변환 한 다음 웹 소켓을 통해 JSON을 브로드 캐스트합니다. diff --git a/i18n/README.ms.md b/i18n/README.ms.md index 4f80f0cddd7..c8a53214750 100644 --- a/i18n/README.ms.md +++ b/i18n/README.ms.md @@ -38,7 +38,7 @@ Untuk dokumentasi lengkap, layari [supabase.com/docs](https://supabase.com/docs) Kami kini berada di Public Beta. Tonton "siaran" repo ini untuk diberitahu mengenai kemas kini utama. -Tonton repo ini +Tonton repo ini --- @@ -51,7 +51,7 @@ Supabase adalah gabungan alat sumber terbuka. Kami membina ciri Firebase menggun Supabase ialah [platform yang dihoskan](https://app.supabase.com). Anda boleh mendaftar dan mula menggunakan Supabase tanpa memasang apa-apa. Anda juga boleh [host sendiri](https://supabase.com/docs/guides/hosting/overview) dan [lokal](https://supabase.com/docs/guides/local-development). -![Seni bina](https://supabase.com/docs/assets/images/supabase-architecture-9050a7317e9ec7efb7807f5194122e48.png) +![Seni bina](https://user-images.githubusercontent.com/70828596/187547862-ffa9d058-0c3a-4851-a3e7-92ccfca4b596.png) - [PostgreSQL](https://www.postgresql.org/) adalah sistem pangkalan data objek-relasional dengan pengembangan aktif lebih dari 30 tahun yang menjadikannya reputasi yang kuat untuk kebolehpercayaan, ketahanan ciri, dan prestasi. - [Realtime](https://github.com/supabase/realtime) adalah pelayan Elixir yang membolehkan anda mendengar sisipan, kemas kini dan pemadaman PostgreSQL menggunakan soket web. Supabase mendengar fungsi replikasi terbina dalam Postgres, menukar aliran bait(byte) replikasi menjadi JSON, kemudian menyiarkan JSON melalui soket web. diff --git a/i18n/README.nb-no.md b/i18n/README.nb-no.md index 2721ac8f9da..c33708c74ef 100644 --- a/i18n/README.nb-no.md +++ b/i18n/README.nb-no.md @@ -38,7 +38,7 @@ Besøk [supabase.com/docs](https://supabase.com/docs) for full dokumentasjon. Vi er for øyeblikket i Offentlig Beta. Følg med på "releases" til dette repoet for å bli varslet om større oppdateringer. -Watch this repo +Watch this repo --- @@ -50,7 +50,7 @@ Supabase er en samling av open source-verktøy. Vi bygger funksjonaliteten til F Supabase er en [hostet plattform](https://app.supabase.com). Du kan registrere deg og begynne å bruke Supabase uten å installere noe. Vi holder fortsatt på å bygge verktøy for lokalt bruk – dette er nå vårt kjernefokus, i tillegg til plattformstabilitet. -![Arkitektur](https://supabase.com/docs/assets/images/supabase-architecture-9050a7317e9ec7efb7807f5194122e48.png) +![Arkitektur](https://user-images.githubusercontent.com/70828596/187547862-ffa9d058-0c3a-4851-a3e7-92ccfca4b596.png) - [PostgreSQL](https://www.postgresql.org/) er et objektrelasjonelt databasesystem med over 30 år med aktiv utvikling, som har gitt det et godt rykte for pålitelighet, robusthet og ytelse. - [Realtime](https://github.com/supabase/realtime) er en Elixir-server som lar deg lytte til PostgreSQL-innsettinger, -oppdateringer og -slettinger ved hjelp av websockets. Supabase lytter til Postgres sin innebygde replikasjonsfunksjonalitet, konverterer replikasjonsbyte-strømmen til JSON, og sender deretter JSON over websockets. diff --git a/i18n/README.ne.md b/i18n/README.ne.md index 02ffbb381ba..058de8a0045 100644 --- a/i18n/README.ne.md +++ b/i18n/README.ne.md @@ -38,7 +38,7 @@ हामी हाल सार्वजनिक बिटामा छौं। प्रमुख अद्यावधिकहरूको सूचना प्राप्त गर्न यस रेपोको "रिलिजहरू"मा हेर्नुहोस्। -यो रिपोलाई हेरौ +यो रिपोलाई हेरौ --- @@ -50,7 +50,7 @@ सुपबेस एक [होस्ट गरिएको प्लेटफर्म](https://app.supabase.com) हो। तपाई आफै साइन अप गर्न सक्नुहुन्छ र कुनै स्थापना बिना सुपबेस प्रयोग गर्न सक्नुहुन्छ। हामी अझै स्थानीय विकासको अनुभव सिर्जना गर्दैछौं। यो प्लेटफर्म स्थिरताको साथ हाम्रो मूल फोकस हो। -![आर्किटेक्चर](https://supabase.com/docs/assets/images/supabase-architecture-9050a7317e9ec7efb7807f5194122e48.png) +![आर्किटेक्चर](https://user-images.githubusercontent.com/70828596/187547862-ffa9d058-0c3a-4851-a3e7-92ccfca4b596.png) - [PostgreSQL](https://www.postgresql.org/) एक वस्तु-रिलेशनल डाटाबेस प्रणाली हो जसले ३० बर्ष भन्दा बढी सक्रिय विकासको साथ विश्वसनीयता, सुविधा मजबूती र प्रदर्शनको बलियो प्रतिष्ठा कमाएको छ। - [Realtime](https://github.com/supabase/realtime) एक Elixer सर्भर हो जसले तपाइँलाई वेबसकेटहरू प्रयोग गरेर PostgreSQL इन्सर्टहरू, अपडेटहरु, र डिलीटहरु सुन्न अनुमति दिन्छ। सुपबेसले पोष्टग्रेसको भित्र निर्मित प्रतिकृति कार्यक्षमता सुन्दछ, प्रतिकृति बाइट स्ट्रिमलाई JSON मा रूपान्तरण गर्दछ, र त्यसपछि JSON लाई वेबसकेटमा प्रसारण गर्दछ।। diff --git a/i18n/README.nl.md b/i18n/README.nl.md index 414afe00d83..7a9c1969086 100644 --- a/i18n/README.nl.md +++ b/i18n/README.nl.md @@ -38,7 +38,7 @@ Kijk voor de volledige documentatie op [supabase.com/docs](https://supabase.com/ Momenteel bevinden we ons in een publieke bèta. Bezoek de "releases" van deze repo om op de hoogte te blijven van de laatste updates. -Volg deze repo +Volg deze repo --- @@ -50,7 +50,7 @@ Supabase is een combinatie van open-source software. Wij bouwen de functionalite Supabase is een [aangeboden platform](https://app.supabase.com). Je kan een account openen en er meteen gebruik van maken. Je hoeft niets extra's te installeren. Momenteel werken we ook aan een manier om Supabase lokaal te kunnen draaien. Onze focus ligt dus op deze mogelijkheid en ook op het verbeteren van de stabliteit van het platform. -![Architectuur](https://supabase.com/docs/assets/images/supabase-architecture-9050a7317e9ec7efb7807f5194122e48.png) +![Architectuur](https://user-images.githubusercontent.com/70828596/187547862-ffa9d058-0c3a-4851-a3e7-92ccfca4b596.png) - [PostgreSQL](https://www.postgresql.org/) is een object-relation database-systeem dat al meer dan 30 jaar ervaring achter zich heeft. Dankzij deze ervaring heeft het een sterke reputatie die bekend staat om betrouwbaarheid, robuustheid en snelheid. - [Realtime](https://github.com/supabase/realtime) is een Elixir-server die ervoor zorgt dat je kunt luisteren naar PostgreSQL _inserts_, _updates_ en _deletes_ met websockets. Supabase luistert naar de ingebouwde _replication_-mogelijkheden van Postgres, en zet de _replication byte_ stroom om in JSON. Daarna sturen we de JSON met een _broadcast_ over de websockets. diff --git a/i18n/README.pl.md b/i18n/README.pl.md index d0193904514..ed7243afe42 100644 --- a/i18n/README.pl.md +++ b/i18n/README.pl.md @@ -38,7 +38,7 @@ Po pełną dokumentację, odwiedź [supabase.com/docs](https://supabase.com/docs Jesteśmy aktualnie w fazie Publicznej Bety. Subskrybuj powiadomienia "releases" tego repozytorium aby dostawać powiadomienia o kluczowych aktualizacjach. -Watch this repo +Watch this repo --- @@ -50,7 +50,7 @@ Supabase jest połączeniem narzędzi open source. Budujemy funkcjonalności Fir Supabase jest [hostowaną platformą](https://app.supabase.com). Możesz się zarejestrować i zacząć używać Supabase bez potrzeby instalacji dodatkowych narzędzi. Cały czas tworzymy lokalne środowisko deweloperskie - jest to teraz nasz priorytet, razem ze stabilnością platformy. -![Architektura](https://supabase.com/docs/assets/images/supabase-architecture-9050a7317e9ec7efb7807f5194122e48.png) +![Architektura](https://user-images.githubusercontent.com/70828596/187547862-ffa9d058-0c3a-4851-a3e7-92ccfca4b596.png) - [PostgreSQL](https://www.postgresql.org/) jest obiektowo-relacyjnym system baz danych z ponad 30 letnim aktywnym rozwojem dzięki któremu zyskał dobrą reputacje dzięki niezawodności, solidności funkcji i wydajności. - [Realtime](https://github.com/supabase/realtime) jest serwerem Elixir który umożliwia nasłuchiwanie na wsady PostgreSQL, aktualizacje, i usunięcia używając websocketów. Supabase nasłuchuje na budowane w Postgres' funkcje replikacji, konwertuje replikacje transmisji bitów do struktury JSON przez websockety. diff --git a/i18n/README.pt-br.md b/i18n/README.pt-br.md index 8b9d2e5e722..60ade35e05b 100644 --- a/i18n/README.pt-br.md +++ b/i18n/README.pt-br.md @@ -42,7 +42,7 @@ Para documentação completa, visite [supabase.com/docs](https://supabase.com/do Estamos atualmente na fase Beta Público. Siga as "entregas" (_releases_) deste repositório para receber uma notificação quando houver uma grande atualização (_major releases_). -Seguir este repositório +Seguir este repositório --- @@ -54,7 +54,7 @@ Supabase é uma combinação de ferramentas de código aberto. Nós estamos cons Supabase é uma [plataforma hospedada](https://app.supabase.com). Você pode se cadastrar e começar a usar Supabase sem instalar nada. Nós ainda estamos criando a experiência de trabalho local - esse é o nosso foco principal, junto com a estabilidade da plataforma. -![Arquitetura](https://supabase.com/docs/assets/images/supabase-architecture-9050a7317e9ec7efb7807f5194122e48.png) +![Arquitetura](https://user-images.githubusercontent.com/70828596/187547862-ffa9d058-0c3a-4851-a3e7-92ccfca4b596.png) - [PostgreSQL](https://www.postgresql.org/) é um banco objeto-relational com mais de 30 anos de desenvolvimento ativo que conquistou uma forte reputação por ser confiável, robusto e de ótimo desempenho. - [Tempo real](https://github.com/supabase/realtime) é um servidor Elixir que permite ouvir as inserções, atualizações e remoções (_inserts_, _updates_ e _deletes_) do PostgreSQL usando _websockets_. Supabase ouve as funcionalidades de replicação nativas do Postgres, converte os bytes de replicação em JSON, e propaga o JSON usando websockets. diff --git a/i18n/README.pt.md b/i18n/README.pt.md index e53c6214a40..eaa8daa63dc 100644 --- a/i18n/README.pt.md +++ b/i18n/README.pt.md @@ -38,7 +38,7 @@ Para ver a documentação completa, visite [supabase.com/docs](https://supabase. Estamos atualmente em Beta Público. Assista aos lançamentos deste repositório para ser notificado sobre as principais atualizações. -Watch this repo +Watch this repo --- @@ -50,7 +50,7 @@ Supabase é uma combinação de ferramentas de código aberto. Estamos a constru Supabase é uma [plataforma hospedada](https://app.supabase.com). Podes-te inscrever e começar a usar o Supabase sem instalar nada. Ainda estamos a criar a experiência de desenvolvimento local - esse é nosso foco atual, juntamente com a estabilidade da plataforma. -![Arquitetura](https://supabase.com/docs/assets/images/supabase-architecture-9050a7317e9ec7efb7807f5194122e48.png) +![Arquitetura](https://user-images.githubusercontent.com/70828596/187547862-ffa9d058-0c3a-4851-a3e7-92ccfca4b596.png) - [PostgreSQL](https://www.postgresql.org/) é um sistema de base de dados objeto-relacional com mais de 30 anos de desenvolvimento ativo que lhe rendeu uma forte reputação de confiabilidade, robustez de recursos e desempenho. - [Realtime](https://github.com/supabase/realtime) é um servidor Elixir que permite ouvir inserções, atualizações e exclusões PostgreSQL usando websockets. A Supabase escuta a funcionalidade de replicação embutida do Postgres, converte o fluxo de bytes de replicação em JSON e, de seguida, transmite o JSON através de websockets. diff --git a/i18n/README.ro.md b/i18n/README.ro.md index 66f121a54ad..86ba0c59e90 100644 --- a/i18n/README.ro.md +++ b/i18n/README.ro.md @@ -38,7 +38,7 @@ Pentru documentația completă vizitați [supabase.com/docs](https://supabase.co La ora actuală ne aflăm în Beta public. Urmăriți „lansările” acestui repository pentru a putea fi notificat la actualizările majore. -Urmăriți acest repository +Urmăriți acest repository --- @@ -50,7 +50,7 @@ Supabase este o combinație de unelte open source. Construim trăsăturile din F Supabase este o [platformă găzduită](https://app.supabase.com). Puteți să vă înscrieți și să începeți să folosiți Supabase fără a instala orice. Experiența de developare locală încă mai este în dezvoltare, acesta fiind lucrul la care ne concentrăm cel mai mult, împreună cu stabilitatea platformei. -![Arhitectură](https://supabase.com/docs/assets/images/supabase-architecture-9050a7317e9ec7efb7807f5194122e48.png) +![Arhitectură](https://user-images.githubusercontent.com/70828596/187547862-ffa9d058-0c3a-4851-a3e7-92ccfca4b596.png) - [PostgreSQL](https://www.postgresql.org/) este o bază de date de obiecte relațională cu peste 30 de ani de dezvoltare și o reputație pentru fiabilitate și performanță. - [Realtime](https://github.com/supabase/realtime) este un server Elixir care permite ascultarea inserțiilor, actualizărilor și ștergerilor bazei de date PostgreSQL prin intermediul websocket-urilor. Supabase ascultă funcționalitatea de replicare integrată PostgreSQL, convertește fluxul de octeți al replicării în JSON, apoi emite JSON-ul prin intermediul websocket-urilor. diff --git a/i18n/README.ru.md b/i18n/README.ru.md index dfdaa4d0601..238806b8b17 100644 --- a/i18n/README.ru.md +++ b/i18n/README.ru.md @@ -38,7 +38,7 @@ В настоящее время мы находимся в публичной бете. Следите за разделом "Releases" в этом репозитории, чтобы получать уведомления об основных обновлениях. -Watch this repo +Watch this repo --- @@ -50,7 +50,7 @@ Supabase - это сочетание инструментов с открыты Supabase – это [облачная платформа](https://app.supabase.com). Вы можете зарегистрироваться и начать использовать Supabase, ничего не устанавливая. Мы продолжаем улучшать удобство локальной разработки - сейчас это наш основной фокус, наряду со стабильностью платформы. -![Архитектура](https://supabase.com/docs/assets/images/supabase-architecture-9050a7317e9ec7efb7807f5194122e48.png) +![Архитектура](https://user-images.githubusercontent.com/70828596/187547862-ffa9d058-0c3a-4851-a3e7-92ccfca4b596.png) - [PostgreSQL](https://www.postgresql.org/) – это объектно-реляционная система баз данных с более чем 30 годами активной разработки, которая завоевала прочную репутацию благодаря надежности, устойчивости функциональности и производительности. - [Realtime](https://github.com/supabase/realtime) – это сервер, написанный на Elixir, который позволяет cледить за вставками, обновлениями и удалениями в базе PostgreSQL с помощью веб-сокета. Supabase использует встроенную функциональность репликации Postgres, преобразует поток байтов репликации в JSON, а затем передает JSON через веб-сокеты. diff --git a/i18n/README.si.md b/i18n/README.si.md index 83885ba694c..469a826d68e 100644 --- a/i18n/README.si.md +++ b/i18n/README.si.md @@ -38,7 +38,7 @@ අප දැනට පොදු beta තත්වයේ සිටින්නෙ. ප්‍රධාන නිකුත්කිරීම් හා දැනුවත් වීම් සඳහා "releases" පිළිබඳව අවධානයෙන් සිටින්න. -Watch this repo +Watch this repo --- @@ -50,7 +50,7 @@ Supabase යනු විවෘත පරිශීලක උපාංග කි Supabase යනු [hosted platform](https://app.supabase.com) එකකි.ඔබට දැන් සම්බන්ධ වී කිසිම දෙයක් install නොකර Supabase භාවිත කල හැකිය.අප තවමත් local development අත්දැකීම සාදමින් සිටියි- මෙය තමයි අපේ දැනට ප්‍රධාන අරමුණ,platform එකේ ස්ථාවර බව සමඟ. -![Architecture](https://supabase.com/docs/assets/images/supabase-architecture-9050a7317e9ec7efb7807f5194122e48.png) +![Architecture](https://user-images.githubusercontent.com/70828596/187547862-ffa9d058-0c3a-4851-a3e7-92ccfca4b596.png) - [PostgreSQL](https://www.postgresql.org/) යනු අවුරුදු 30 වඩා කාලයක් ක්‍රියාත්මක වෙමින් පවතින object-relational database system එකක් වන අතර එය විශ්වාසනීයත්වයට,ක්‍රියාකාරීත්වයට හා feature robustness බවට කීර්තියක් අත්පත්කරගෙන සිටියි - [Realtime](https://github.com/supabase/realtime) is an Elixir server that allows you to listen to PostgreSQL inserts, updates, and deletes using websockets. Supabase listens to Postgres' built-in replication functionality, converts the replication byte stream into JSON, then broadcasts the JSON over websockets. diff --git a/i18n/README.sq.md b/i18n/README.sq.md index 8478a4396ab..0068642b5bf 100644 --- a/i18n/README.sq.md +++ b/i18n/README.sq.md @@ -38,7 +38,7 @@ Për dokumentimin e plotë, vizitoni [supabase.com/docs](https://supabase.com/do Ne për momentin jemi në testimin Beta Publike. Vëzhgo "publikimet" e këtij depos për tu njoftuar për azhurnimet kryesore. -Vëzhgo këtë depo +Vëzhgo këtë depo --- @@ -50,7 +50,7 @@ Supabase është një kombinim i mjeteve që janë projekte të hapura (open sou Supabase është një [platform hostimi](https://app.supabase.com). Ti mundesh të regjistrohesh dhe të fillosh ta përdorish Supabase duke mos instaluar asgjë. Poashtu ne jemi duke punuar për ta ndërtuar eksperiencën për zhvillim lokal, por kjo nuk është fokusi ynë kryesorë dhe thelbësor, së bashku me stabilitetin e platformës. -![Arkitektura](https://supabase.com/docs/assets/images/supabase-architecture-9050a7317e9ec7efb7807f5194122e48.png) +![Arkitektura](https://user-images.githubusercontent.com/70828596/187547862-ffa9d058-0c3a-4851-a3e7-92ccfca4b596.png) - [PostgreSQL](https://www.postgresql.org/) është një objekt-relacional i databasës si sistem me më shumë se 30 vite zhvillim aktiv e cila ka fituar një reputacion të fortë për besueshmërinë, karakteristikë të qëndrueshmërisë ,dhe performancë. - [Realtime](https://github.com/supabase/realtime) është një Elixir server që lejon të dëgjosh për insertime, fshirje dhe përdisime në databasën PostgreSQL duke përdorur websockets. Supabase dëgjon në Postgres' funksionaliteti i replikimit i integruar, ajo kthen rrjedhjen e bajteve të replikimit, pastaj transmeton JSON mbi/në websockets. diff --git a/i18n/README.sv.md b/i18n/README.sv.md index 2066f3cdabc..2633143d9fa 100644 --- a/i18n/README.sv.md +++ b/i18n/README.sv.md @@ -38,7 +38,7 @@ För fullständig dokumentation, besök [supabase.com/docs](https://supabase.com Vi är för närvarande i offentlig beta. Bevaka "releases" i detta repo för att få notifikationer vid större uppdateringar. -Bevaka detta repo +Bevaka detta repo --- @@ -50,7 +50,7 @@ Supabase är en samling verktyg med öppen källkod. Vi bygger funktionerna som Supabase är en [hostad plattform](https://app.supabase.com). Du kan registrera dig och börja använda Supabase utan att installera någonting. Vi håller fortfarande på att förbättra den lokala utvecklarupplevelsen - detta är för närvarande vårt huvudfokus, tillsammans med plattformens övergripande stabilitet. -![Arkitektur](https://supabase.com/docs/assets/images/supabase-architecture-9050a7317e9ec7efb7807f5194122e48.png) +![Arkitektur](https://user-images.githubusercontent.com/70828596/187547862-ffa9d058-0c3a-4851-a3e7-92ccfca4b596.png) - [PostgreSQL](https://www.postgresql.org/) är en objektrelationsdatabas med över 30 års aktiv utveckling , vilket har gett den ett gott rykte som pålitlig, robust och högpresterande. - [Realtime](https://github.com/supabase/realtime) är en Elexir-server som låter dig lyssna på skapande, uppdateringar och borttagningar i PostgreSQL med hjälp av websockets. Supabase lyssnar på PostgreSQL´s inbyggda replikeringsfunktionalitet, konverterar replikerings-byte-strömmen till JSON och sänder sedan JSON via websockets. diff --git a/i18n/README.ta.md b/i18n/README.ta.md index 895c3b8d3cc..02966517cc3 100644 --- a/i18n/README.ta.md +++ b/i18n/README.ta.md @@ -45,7 +45,7 @@ நாங்கள் தற்போது பொது பீட்டாவில் இருக்கிறோம். முக்கிய துப்பிப்புகளைப் பற்றி அறிவிக்க இந்த ரெப்போவின் "வெளியீடுகளைப்" பாருங்கள். -இந்த ரெப்போவைப் பாருங்கள் +இந்த ரெப்போவைப் பாருங்கள் --- @@ -58,7 +58,7 @@ சுபாபேஸ் ஒரு [ஹோஸ்ட் செய்யப்பட்ட தளம்](https://app.supabase.com). எதையும் நிறுவாமல் நீங்கள் பதிவுசெய்து Supabase ஐப் பயன்படுத்தத் தொடங்கலாம். நீங்கள் [சுய ஹோஸ்ட்](https://supabase.com/docs/guides/hosting/overview) மற்றும் [உள்நாட்டில் உருவாக்க](https://supabase.com/docs/guides/local-development) ஆகியவற்றையும் செய்யலாம். -![கட்டிடக்கலை](https://supabase.com/docs/assets/images/supabase-architecture-9050a7317e9ec7efb7807f5194122e48.png) +![கட்டிடக்கலை](https://user-images.githubusercontent.com/70828596/187547862-ffa9d058-0c3a-4851-a3e7-92ccfca4b596.png) - [பூஸ்ட்ஜீஆர்இஎஸ்கியூஎல்](https://www.postgresql.org/) என்பது 30 ஆண்டுகளுக்கும் மேலான செயலில் உள்ள வளர்ச்சியுடன் கூடிய ஒரு பொருள்-தொடர்புடைய தரவுத்தள அமைப்பாகும், இது நம்பகத்தன்மை, அம்ச உறுதிப்பாடு மற்றும் செயல்திறனுக்கான வலுவான நற்பெயரைப் பெற்றுள்ளது. - [நிகழ்நேரம்](https://github.com/supabase/realtime) என்பது ஒரு எலிக்சர் சேவையகமாகும், இது வெப்சாக்கெட்டுகளைப் பயன்படுத்தி பூஸ்ட்ஜீஆர்இஎஸ்கியூஎல் செருகல்கள், புதுப்பிப்புகள் மற்றும் நீக்குதல்களைக் கேட்க உங்களை அனுமதிக்கிறது. நிகழ்நேர கருத்துக் கணிப்புகள் தரவுத்தள மாற்றங்களுக்கான போஸ்ட்கிரஸின் உள்ளமைக்கப்பட்ட பிரதிபலிப்பு செயல்பாடு, ஜே.எஸ்.ஆனுக்கு மாற்றங்களை மாற்றுகிறது, பின்னர் அங்கீகரிக்கப்பட்ட வாடிக்கையாளர்களுக்கு வெப்சாக்கெட்டுகள் மூலம் ஜே.எஸ்.என் ஐ ஒளிபரப்புகிறது. diff --git a/i18n/README.th.md b/i18n/README.th.md index 5e8d97f41fb..6c92a9fe38f 100644 --- a/i18n/README.th.md +++ b/i18n/README.th.md @@ -38,7 +38,7 @@ ขณะนี้เรากำลังอยู่ในช่วง Public Beta คุณสามารถกด Watch releases เพื่อรับการแจ้งเตือนเกี่ยวกับอัพเดตครั้งสำคัญ (Major updates) -Watch this repo +Watch this repo --- @@ -50,7 +50,7 @@ Supabase สร้างขึ้นมาจากการรวมกัน Supabase เป็น [hosted platform](https://app.supabase.com). คุณสามารถลงทะเบียนและเริ่มใช้งาน Supabase ได้เลยโดยไม่ต้องติดตั้งอะไรเพิ่มเติม นอกเหนือไปจากนั้นเรากำลังพัฒนาระบบเพื่อการพัฒนาเว็บบน local (local development experience) ที่เป็นจุดมุ่งหมายของเราในตอนนี้ รวมถึงความมั่นคงของระบบ -![สถาปัตยกรรม](https://supabase.com/docs/assets/images/supabase-architecture-9050a7317e9ec7efb7807f5194122e48.png) +![สถาปัตยกรรม](https://user-images.githubusercontent.com/70828596/187547862-ffa9d058-0c3a-4851-a3e7-92ccfca4b596.png) - [PostgreSQL](https://www.postgresql.org/) เป็นระบบฐานข้อมูลแบบ object-relational ที่ถูกพัฒนาอย่างต่อเนื่องมากว่า 30 ปี และเป็นที่ยอมรับในเรื่องของเสถียรภาพ ความมั่นคง และประสิทธิภาพ - [Realtime](https://github.com/supabase/realtime) เป็นเซิร์ฟเวอร์ที่พัฒนาขึ้นด้วย Elixir ที่ทำหน้าที่ตรวจจับเมื่อมีการเปลี่ยนแปลงของข้อมูล (ทั้งการ insert, update และ delete) ใน Postgres ด้วย websockets. Supabase คอยตรวจจับเมื่อ Postgres มีการทำซ้ำ (replication) ทำการแปลงข้อมูลเป็น JSON และกระจายข้อมูลผ่าน websockets diff --git a/i18n/README.tr.md b/i18n/README.tr.md index e37df9f7e7b..f21c715b504 100644 --- a/i18n/README.tr.md +++ b/i18n/README.tr.md @@ -39,7 +39,7 @@ Tam dokümantasyon için, ziyaret et [supabase.com/docs](https://supabase.com/do Şu anda Herkese Açık Beta sürümündeyiz. Önemli güncellemelerden haberdar olmak için bu deponun "sürümlerini" izleyin. -Watch this repo +Watch this repo --- @@ -51,7 +51,7 @@ Supabase, açık kaynaklı araçların bir kombinasyonudur. Firebase'in özellik Supabase [barındırılan bir platformdur](https://app.supabase.com). Hiçbir şey yüklemeden Supabase'e kaydolabilir ve kullanmaya başlayabilirsiniz. Hala yerel geliştirme deneyimini yaratıyoruz - bu, artık platform kararlılığı ile birlikte temel odak noktamız. -![Architecture](https://supabase.com/docs/assets/images/supabase-architecture-9050a7317e9ec7efb7807f5194122e48.png) +![Architecture](https://user-images.githubusercontent.com/70828596/187547862-ffa9d058-0c3a-4851-a3e7-92ccfca4b596.png) - [PostgreSQL](https://www.postgresql.org/) güvenilirlik, özellik sağlamlığı ve performans açısından güçlü bir üne kavuşan 30 yılı aşkın aktif geliştirmeye sahip bir nesne ilişkisel veritabanı sistemidir. - [Realtime](https://github.com/supabase/realtime) Web soketleri kullanarak PostgreSQL eklerini, güncellemelerini ve silmelerini dinlemenizi sağlayan bir Elixir sunucusudur. Supabase, Postgres'in yerleşik çoğaltma işlevini dinler, çoğaltma bayt akışını JSON'a dönüştürür ve ardından JSON'yi web yuvaları üzerinden yayınlar. diff --git a/i18n/README.uk.md b/i18n/README.uk.md index 6fb362772b8..979b1ac60b0 100644 --- a/i18n/README.uk.md +++ b/i18n/README.uk.md @@ -38,7 +38,7 @@ Наразі, ми знаходимося в публічній беті. Слідкуйте за розділом “релізи” в цьому репозитарії, щоб бути в курсі основних оновлень. -Watch this repo +Watch this repo --- @@ -50,7 +50,7 @@ Supabase – це поєднання відкритого програмного Supabase – це [хмарна платформа](https://app.supabase.com). Ви можете зареєструватися і почати використовувати її, нічого не встановлюючи. Ми досі продовжуємо покращувати зручність локальної розробки – це наш основний пріоритет, одночасно зі стабільністю платформи. -![Architecture](https://supabase.com/docs/assets/images/supabase-architecture-9050a7317e9ec7efb7807f5194122e48.png) +![Architecture](https://user-images.githubusercontent.com/70828596/187547862-ffa9d058-0c3a-4851-a3e7-92ccfca4b596.png) - [PostgreSQL](https://www.postgresql.org/) – це об'єктно-реляційна система керування базами даних з більш ніж 30 роками активної розробки, котра завоювали міцну репутацію завдяки надійності та продуктивності. - [Realtime](https://github.com/supabase/realtime) являє собою Elixir сервер який дозволяє слухати зміни в PostgreSQL за допомогою веб-сокетів. Supabase використовує вбудований функціонал реплікації Postgres, перетворюючи бінарний протокол реплікації в JSON та передаючи по веб-сокетам. diff --git a/i18n/README.vi-vn.md b/i18n/README.vi-vn.md index 210b3bcb1a6..2e42d0bef03 100644 --- a/i18n/README.vi-vn.md +++ b/i18n/README.vi-vn.md @@ -45,7 +45,7 @@ Chúng tôi hiện đang ở giai đoạn Public Beta. Hãy đón xem mục "releases" của repo này để nhận thông báo về các bản cập nhật lớn. -Đón xem repo này +Đón xem repo này --- @@ -58,7 +58,7 @@ Supabase là sự kết hợp của các công cụ mã nguồn mở. Các tính Supabase là một [nền tảng lưu trữ cơ sở dữ liệu](https://app.supabase.com). Bạn có thể đăng ký và bắt đầu sử dụng Supabase mà không cần cài đặt bất kỳ thứ gì. Bạn cũng có thể [tự quản lý](https://supabase.com/docs/guides/hosting/overview) và [phát triển cục bộ](https://supabase.com/docs/guides/local-development). -![Kiến trúc](https://supabase.com/docs/assets/images/supabase-architecture-9050a7317e9ec7efb7807f5194122e48.png) +![Kiến trúc](https://user-images.githubusercontent.com/70828596/187547862-ffa9d058-0c3a-4851-a3e7-92ccfca4b596.png) - [PostgreSQL](https://www.postgresql.org/) là một hệ thống cơ sở dữ liệu quan hệ đối tượng với hơn 30 năm phát triển tích cực, do đó có danh tiếng mạnh mẽ về độ tin cậy, tính năng mạnh mẽ và hiệu suất. - [Realtime](https://github.com/supabase/realtime) là một máy chủ Elixir cho phép bạn lắng nghe các lệnh chèn, cập nhật và xóa của PostgreSQL bằng cách sử dụng websockets. Supabase lắng nghe chức năng sao chép có sẵn của Postgres, chuyển đổi luồng byte sao chép thành JSON, sau đó phát JSON qua các cổng websockets được uỷ quyền. diff --git a/i18n/README.zh-cn.md b/i18n/README.zh-cn.md index ab22a678271..4c975b58e7b 100644 --- a/i18n/README.zh-cn.md +++ b/i18n/README.zh-cn.md @@ -45,7 +45,7 @@ 我们目前正处于 Public Beta 阶段。关注这个存储库的 "Releases" 以获得关于重大更新的通知。 -关注这个存储库 +关注这个存储库 --- @@ -58,7 +58,7 @@ Supabase 是一个开源工具的组合。我们正在使用企业级的开源 Supabase 是一个[托管平台](https://app.supabase.com)。你可以注册并开始使用 Supabase,而无需安装任何软件。 你也可以[自托管](https://supabase.com/docs/guides/hosting/overview)和[本地开发](https://supabase.com/docs/guides/local-development)。 -![架构](https://supabase.com/docs/assets/images/supabase-architecture-9050a7317e9ec7efb7807f5194122e48.png) +![架构](https://user-images.githubusercontent.com/70828596/187547862-ffa9d058-0c3a-4851-a3e7-92ccfca4b596.png) - [PostgreSQL](https://www.postgresql.org/) 是一个对象关系型数据库系统,经过 30 多年的积极开发,它在可靠性、功能健壮性和性能方面赢得了很好的声誉。 - [Realtime](https://github.com/supabase/realtime) 是一个 Elixir 服务器,允许你使用 WebSocket 监听 PostgreSQL 的插入、更新和删除。Supabase 监听 Postgres 的内置复制功能,将复制的字节流转换为 JSON,然后通过 WebSocket 广播 JSON。 diff --git a/i18n/README.zh-tw.md b/i18n/README.zh-tw.md index c2f3bf679ec..4b0f1824951 100644 --- a/i18n/README.zh-tw.md +++ b/i18n/README.zh-tw.md @@ -38,7 +38,7 @@ 我們現在是公開 Beta。追蹤 "Releases" 就可以收到此 Repo 的主要更新通知。 -Watch this repo +Watch this repo --- @@ -50,7 +50,7 @@ Supabase 是一套開放原始碼工具的組合包。我們以企業等級的 Supabase 是[託管平台](https://app.supabase.com)。只要註冊,不必安裝任何東西,就可以開始使用 Supabase。目前還在打造本地端開發體驗:連同平台的穩定度,這是我們專注的核心。 -![架構](https://supabase.com/docs/assets/images/supabase-architecture-9050a7317e9ec7efb7807f5194122e48.png) +![架構](https://user-images.githubusercontent.com/70828596/187547862-ffa9d058-0c3a-4851-a3e7-92ccfca4b596.png) - [PostgreSQL](https://www.postgresql.org/) 是經歷 30 年活躍開發的關聯物件資料庫系統,因此擁有可靠度、功能細緻度與效能著稱。 - [Realtime](https://github.com/supabase/realtime) 是利用 Websocket 監聽 PostgreSQL 的 insert、update 和 delete 的 Elixir 伺服器。Supabase 監聽 Postgres 內建的複寫 (Replication) 功能,將複寫的 byte stream 轉換為 JSON 格式,接著透過 Websocket 將 JSON 進行廣播。 diff --git a/package-lock.json b/package-lock.json index e6b772542f6..df6410ad1d2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,21 +9,21 @@ "version": "0.0.0", "license": "Apache-2.0", "workspaces": [ - "apps/temp-community-forum", - "apps/temp-community-tutorials", - "apps/temp-docs", "apps/www", "studio", + "tests", "packages/*" ], "dependencies": { "@mdx-js/react": "^2.1.1", + "html-to-image": "^1.10.1", "mini-svg-data-uri": "^1.4.4" }, "devDependencies": { "eslint": "^7.32.0", "eslint-config-custom": "*", "prettier": "^2.5.1", + "ts-jest": "^27.0.7", "turbo": "1.4.7" }, "engines": { @@ -34,6 +34,7 @@ "apps/temp-community-forum": { "name": "forum", "version": "0.0.0", + "extraneous": true, "dependencies": { "@octokit/graphql": "^4.8.0", "colorette": "^1.4.0", @@ -57,6 +58,7 @@ "apps/temp-community-tutorials": { "name": "tutorials", "version": "0.0.0", + "extraneous": true, "dependencies": { "colorette": "^1.4.0", "common": "*", @@ -76,6 +78,7 @@ }, "apps/temp-docs": { "version": "0.0.0", + "extraneous": true, "dependencies": { "@apollo/client": "^3.6.6", "@mdx-js/loader": "^1.6.22", @@ -111,182 +114,6 @@ "typescript": "^4.5.3" } }, - "apps/temp-docs/node_modules/@mdx-js/react": { - "version": "1.6.22", - "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-1.6.22.tgz", - "integrity": "sha512-TDoPum4SHdfPiGSAaRBw7ECyI8VaHpK8GJugbJIJuqyh6kzw9ZLJZW3HGL3NNrJGxcAixUvqROm+YuQOo5eXtg==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - }, - "peerDependencies": { - "react": "^16.13.1 || ^17.0.0" - } - }, - "apps/temp-docs/node_modules/@types/react": { - "version": "17.0.39", - "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.39.tgz", - "integrity": "sha512-UVavlfAxDd/AgAacMa60Azl7ygyQNRwC/DsHZmKgNvPmRR5p70AJ5Q9EAmL2NWOJmeV+vVUI4IAP7GZrN8h8Ug==", - "dev": true, - "dependencies": { - "@types/prop-types": "*", - "@types/scheduler": "*", - "csstype": "^3.0.2" - } - }, - "apps/temp-docs/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" - } - }, - "apps/temp-docs/node_modules/eslint": { - "version": "8.9.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.9.0.tgz", - "integrity": "sha512-PB09IGwv4F4b0/atrbcMFboF/giawbBLVC7fyDamk5Wtey4Jh2K+rYaBhCAbUyEI4QzB1ly09Uglc9iCtFaG2Q==", - "dev": true, - "dependencies": { - "@eslint/eslintrc": "^1.1.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.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": "^6.0.1", - "globals": "^13.6.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.0.4", - "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" - } - }, - "apps/temp-docs/node_modules/next": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/next/-/next-12.1.0.tgz", - "integrity": "sha512-s885kWvnIlxsUFHq9UGyIyLiuD0G3BUC/xrH0CEnH5lHEWkwQcHOORgbDF0hbrW9vr/7am4ETfX4A7M6DjrE7Q==", - "dependencies": { - "@next/env": "12.1.0", - "caniuse-lite": "^1.0.30001283", - "postcss": "8.4.5", - "styled-jsx": "5.0.0", - "use-subscription": "1.5.1" - }, - "bin": { - "next": "dist/bin/next" - }, - "engines": { - "node": ">=12.22.0" - }, - "optionalDependencies": { - "@next/swc-android-arm64": "12.1.0", - "@next/swc-darwin-arm64": "12.1.0", - "@next/swc-darwin-x64": "12.1.0", - "@next/swc-linux-arm-gnueabihf": "12.1.0", - "@next/swc-linux-arm64-gnu": "12.1.0", - "@next/swc-linux-arm64-musl": "12.1.0", - "@next/swc-linux-x64-gnu": "12.1.0", - "@next/swc-linux-x64-musl": "12.1.0", - "@next/swc-win32-arm64-msvc": "12.1.0", - "@next/swc-win32-ia32-msvc": "12.1.0", - "@next/swc-win32-x64-msvc": "12.1.0" - }, - "peerDependencies": { - "fibers": ">= 3.1.0", - "node-sass": "^6.0.0 || ^7.0.0", - "react": "^17.0.2 || ^18.0.0-0", - "react-dom": "^17.0.2 || ^18.0.0-0", - "sass": "^1.3.0" - }, - "peerDependenciesMeta": { - "fibers": { - "optional": true - }, - "node-sass": { - "optional": true - }, - "sass": { - "optional": true - } - } - }, - "apps/temp-docs/node_modules/next/node_modules/styled-jsx": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.0.0.tgz", - "integrity": "sha512-qUqsWoBquEdERe10EW8vLp3jT25s/ssG1/qX5gZ4wu15OZpmSMFI2v+fWlRhLfykA5rFtlJ1ME8A8pm/peV4WA==", - "engines": { - "node": ">= 12.0.0" - }, - "peerDependencies": { - "react": ">= 16.8.0 || 17.x.x || 18.x.x" - }, - "peerDependenciesMeta": { - "@babel/core": { - "optional": true - }, - "babel-plugin-macros": { - "optional": true - } - } - }, - "apps/temp-docs/node_modules/postcss": { - "version": "8.4.5", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.5.tgz", - "integrity": "sha512-jBDboWM8qpaqwkMwItqTQTiFikhs/67OYVvblFFTM7MrZjt6yMKd6r2kgXizEbTTljacm4NldIlZnhbjr84QYg==", - "dependencies": { - "nanoid": "^3.1.30", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.1" - }, - "engines": { - "node": "^10 || ^12 || >=14" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, "apps/www": { "version": "0.0.3", "license": "MIT", @@ -296,7 +123,7 @@ "@mdx-js/react": "^1.6.22", "@next/mdx": "^10.0.7", "@supabase/auth-ui-react": "^0.1.6", - "@supabase/supabase-js": "^1.6.0", + "@supabase/supabase-js": "^2.0.0", "@supabase/ui": "v0.37.0-alpha.80", "classnames": "^2.3.1", "date-fns": "2.10.0", @@ -306,7 +133,7 @@ "markdown-toc": "^1.2.0", "marked": "^4.0.12", "next": "latest", - "next-mdx-remote": "^2.1.3", + "next-mdx-remote": "^4.1.0", "next-seo": "^4.20.0", "nodemailer": "^6.7.3", "parse-numeric-range": "^1.3.0", @@ -314,14 +141,15 @@ "react-copy-to-clipboard": "^5.0.2", "react-dom": "^17.0.2", "react-ga": "^3.3.0", - "react-markdown": "^5.0.3", + "react-markdown": "^8.0.3", "react-syntax-highlighter": "^15.5.0", "react-tooltip": "^4.2.17", "react-transition-group": "^4.4.1", - "rehype-slug": "^4.0.1", + "recharts": "^2.1.15", + "rehype-slug": "^5.0.1", "remark": "^13.0.0", - "remark-gfm": "^1.0.0", - "remark-html": "10.0.0", + "remark-gfm": "^3.0.1", + "remark-html": "^15.0.1", "swiper": "^6.5.0", "swr": "^0.5.4", "typescript": "^4.0.3", @@ -349,6 +177,21 @@ "tailwindcss": "^3.1.8" } }, + "apps/www/node_modules/@jest/types": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-25.5.0.tgz", + "integrity": "sha512-OXD0RgQ86Tu3MazKo8bnrkDRaDXXMGUqd+kTtLtK1Zb7CRzQcaSRPPPV37SvYTdevXEBVxe0HXylEjs8ibkmCw==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^15.0.0", + "chalk": "^3.0.0" + }, + "engines": { + "node": ">= 8.3" + } + }, "apps/www/node_modules/@mdx-js/react": { "version": "1.6.22", "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-1.6.22.tgz", @@ -419,10 +262,30 @@ "tailwindcss": ">=3.0.0 || insiders" } }, + "apps/www/node_modules/@types/istanbul-reports": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz", + "integrity": "sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "*", + "@types/istanbul-lib-report": "*" + } + }, + "apps/www/node_modules/@types/jest": { + "version": "25.2.3", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-25.2.3.tgz", + "integrity": "sha512-JXc1nK/tXHiDhV55dvfzqtmP4S3sy3T3ouV2tkViZgxY/zeUkcpQcQPGRlgF4KmWzWW5oiWYSZwtCB+2RsE4Fw==", + "dev": true, + "dependencies": { + "jest-diff": "^25.2.1", + "pretty-format": "^25.2.1" + } + }, "apps/www/node_modules/@types/node": { - "version": "14.18.29", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.29.tgz", - "integrity": "sha512-LhF+9fbIX4iPzhsRLpK5H7iPdvW8L4IwGciXQIOEcuF62+9nw/VQVsOViAOOGxY3OlOKGLFv0sWwJXdwQeTn6A==", + "version": "14.18.31", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.31.tgz", + "integrity": "sha512-vQAnaReSQkEDa8uwAyQby8bYGKu84R/deEc6mg5T8fX6gzCn8QW6rziSgsti1fNvsrswKUKPnVTi7uoB+u62Mw==", "dev": true }, "apps/www/node_modules/@types/react": { @@ -435,48 +298,152 @@ "csstype": "^3.0.2" } }, - "apps/www/node_modules/next-mdx-remote": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/next-mdx-remote/-/next-mdx-remote-2.1.4.tgz", - "integrity": "sha512-HHJasFVgPGjWXW3tWC37NCvHcQUOjJgVUMdwxgVbshwgtDLrGmupNkist/iamDLlvVibU52B9rqM9VAWofq7cA==", + "apps/www/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": { - "@babel/core": "^7.12.10", - "@babel/preset-env": "^7.12.11", - "@babel/preset-react": "^7.12.10", - "@babel/preset-typescript": "^7.12.7", - "@mdx-js/mdx": "^1.6.22", - "@mdx-js/react": "^1.6.22" + "color-convert": "^2.0.1" }, - "peerDependencies": { - "react": ">=16.x <=17.x", - "react-dom": ">=16.x <=17.x" + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "apps/www/node_modules/react-markdown": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/react-markdown/-/react-markdown-5.0.3.tgz", - "integrity": "sha512-jDWOc1AvWn0WahpjW6NK64mtx6cwjM4iSsLHJPNBqoAgGOVoIdJMqaKX4++plhOtdd4JksdqzlDibgPx6B/M2w==", + "apps/www/node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, "dependencies": { - "@types/mdast": "^3.0.3", - "@types/unist": "^2.0.3", - "html-to-react": "^1.3.4", - "mdast-add-list-metadata": "1.0.1", - "prop-types": "^15.7.2", - "react-is": "^16.8.6", - "remark-parse": "^9.0.0", - "unified": "^9.0.0", - "unist-util-visit": "^2.0.0", - "xtend": "^4.0.1" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "apps/www/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" + } + }, + "apps/www/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 + }, + "apps/www/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" + } + }, + "apps/www/node_modules/next-mdx-remote": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/next-mdx-remote/-/next-mdx-remote-4.1.0.tgz", + "integrity": "sha512-ZdL5AFJcEqvInGkYYRKda930D6AJt1GOLX/OXFE/vTwaqV/Mw+l3/njZ4kWqvYSAkl89Z6W7WZrTtN0fd0XwPg==", + "dependencies": { + "@mdx-js/mdx": "^2.0.0", + "@mdx-js/react": "^2.0.0", + "vfile": "^5.3.0", + "vfile-matter": "^3.0.1" + }, + "engines": { + "node": ">=14", + "npm": ">=7" + }, + "peerDependencies": { + "react": ">=16.x <=18.x", + "react-dom": ">=16.x <=18.x" + } + }, + "apps/www/node_modules/next-mdx-remote/node_modules/@mdx-js/react": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-2.1.4.tgz", + "integrity": "sha512-PRwLjoAxhSA6xTB2+FA5CPGUCOsIK3bJD0RYsoju+nUIyOpIZUSw6SJChfILByLizzxqslE0R+l8IjARo0N+hA==", + "dependencies": { + "@types/mdx": "^2.0.0", + "@types/react": ">=16" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" }, "peerDependencies": { - "@types/react": ">=16", "react": ">=16" } }, + "apps/www/node_modules/pretty-format": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-25.5.0.tgz", + "integrity": "sha512-kbo/kq2LQ/A/is0PQwsEHM7Ca6//bGPPvU6UnsdDRSKTWxT/ru/xb88v4BJf6a69H+uTytOEsTusT9ksd/1iWQ==", + "dev": true, + "dependencies": { + "@jest/types": "^25.5.0", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^16.12.0" + }, + "engines": { + "node": ">= 8.3" + } + }, + "apps/www/node_modules/recharts": { + "version": "2.1.15", + "resolved": "https://registry.npmjs.org/recharts/-/recharts-2.1.15.tgz", + "integrity": "sha512-16VMAvrsdqkEe7sT9uyJ1F+OZzrC6+5eW+pVSU04SVO6O5Nr5lY78h/uKMjsZJTN0nfOfgV7YfHZcivtqgPU9g==", + "dependencies": { + "@types/d3-interpolate": "^2.0.0", + "@types/d3-scale": "^3.0.0", + "@types/d3-shape": "^2.0.0", + "classnames": "^2.2.5", + "d3-interpolate": "^2.0.0", + "d3-scale": "^3.0.0", + "d3-shape": "^2.0.0", + "eventemitter3": "^4.0.1", + "lodash": "^4.17.19", + "react-is": "^16.10.2", + "react-resize-detector": "^7.1.2", + "react-smooth": "^2.0.1", + "recharts-scale": "^0.4.4", + "reduce-css-calc": "^2.1.8" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "prop-types": "^15.6.0", + "react": "^16.0.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.0.0 || ^17.0.0 || ^18.0.0" + } + }, + "apps/www/node_modules/recharts/node_modules/react-resize-detector": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/react-resize-detector/-/react-resize-detector-7.1.2.tgz", + "integrity": "sha512-zXnPJ2m8+6oq9Nn8zsep/orts9vQv3elrpA+R8XTcW7DVVUJ9vwDwMXaBtykAYjMnkCIaOoK9vObyR7ZgFNlOw==", + "dependencies": { + "lodash": "^4.17.21" + }, + "peerDependencies": { + "react": "^16.0.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.0.0 || ^17.0.0 || ^18.0.0" + } + }, "apps/www/node_modules/remark": { "version": "13.0.0", "resolved": "https://registry.npmjs.org/remark/-/remark-13.0.0.tgz", @@ -491,15 +458,16 @@ "url": "https://opencollective.com/unified" } }, - "apps/www/node_modules/remark-html": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/remark-html/-/remark-html-10.0.0.tgz", - "integrity": "sha512-TbSQuedRFjAhXSk1NAbfaTqDK0jKAjfgn82D2ZYFFT8XpJ80uwXc8yVwK/Tl2eqboTMPxzNzCIss4kIucE5M8w==", + "apps/www/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": { - "hast-util-sanitize": "^2.0.0", - "hast-util-to-html": "^6.0.0", - "mdast-util-to-hast": "^6.0.0", - "xtend": "^4.0.1" + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, "node_modules/@ampproject/remapping": { @@ -514,42 +482,6 @@ "node": ">=6.0.0" } }, - "node_modules/@apollo/client": { - "version": "3.6.9", - "resolved": "https://registry.npmjs.org/@apollo/client/-/client-3.6.9.tgz", - "integrity": "sha512-Y1yu8qa2YeaCUBVuw08x8NHenFi0sw2I3KCu7Kw9mDSu86HmmtHJkCAifKVrN2iPgDTW/BbP3EpSV8/EQCcxZA==", - "dependencies": { - "@graphql-typed-document-node/core": "^3.1.1", - "@wry/context": "^0.6.0", - "@wry/equality": "^0.5.0", - "@wry/trie": "^0.3.0", - "graphql-tag": "^2.12.6", - "hoist-non-react-statics": "^3.3.2", - "optimism": "^0.16.1", - "prop-types": "^15.7.2", - "symbol-observable": "^4.0.0", - "ts-invariant": "^0.10.3", - "tslib": "^2.3.0", - "zen-observable-ts": "^1.2.5" - }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0", - "graphql-ws": "^5.5.5", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "subscriptions-transport-ws": "^0.9.0 || ^0.11.0" - }, - "peerDependenciesMeta": { - "graphql-ws": { - "optional": true - }, - "react": { - "optional": true - }, - "subscriptions-transport-ws": { - "optional": true - } - } - }, "node_modules/@babel/code-frame": { "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", @@ -562,28 +494,28 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.19.1.tgz", - "integrity": "sha512-72a9ghR0gnESIa7jBN53U32FOVCEoztyIlKaNoU05zRhEecduGK9L9c3ww7Mp06JiR+0ls0GBPFJQwwtjn9ksg==", + "version": "7.19.3", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.19.3.tgz", + "integrity": "sha512-prBHMK4JYYK+wDjJF1q99KK4JLL+egWS4nmNqdlMUgCExMZ+iZW0hGhyC3VEbsPjvaN0TBhW//VIFwBrk8sEiw==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.19.1.tgz", - "integrity": "sha512-1H8VgqXme4UXCRv7/Wa1bq7RVymKOzC7znjyFM8KiEzwFqcKUKYNoQef4GhdklgNvoBXyW4gYhuBNCM5o1zImw==", + "version": "7.19.3", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.19.3.tgz", + "integrity": "sha512-WneDJxdsjEvyKtXKsaBGbDeiyOjR5vYq4HcShxnIbG0qixpoHjI3MqeZM9NDvsojNCEBItQE4juOo/bU6e72gQ==", "dependencies": { "@ampproject/remapping": "^2.1.0", "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.19.0", - "@babel/helper-compilation-targets": "^7.19.1", + "@babel/generator": "^7.19.3", + "@babel/helper-compilation-targets": "^7.19.3", "@babel/helper-module-transforms": "^7.19.0", "@babel/helpers": "^7.19.0", - "@babel/parser": "^7.19.1", + "@babel/parser": "^7.19.3", "@babel/template": "^7.18.10", - "@babel/traverse": "^7.19.1", - "@babel/types": "^7.19.0", + "@babel/traverse": "^7.19.3", + "@babel/types": "^7.19.3", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -599,11 +531,11 @@ } }, "node_modules/@babel/generator": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.19.0.tgz", - "integrity": "sha512-S1ahxf1gZ2dpoiFgA+ohK9DIpz50bJ0CWs7Zlzb54Z4sG8qmdIrGrVqmy1sAtTVRb+9CU6U8VqT9L0Zj7hxHVg==", + "version": "7.19.3", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.19.3.tgz", + "integrity": "sha512-fqVZnmp1ncvZU757UzDheKZpfPgatqY59XtW2/j/18H7u76akb8xqvjw82f+i2UKd/ksYsSick/BCLQUUtJ/qQ==", "dependencies": { - "@babel/types": "^7.19.0", + "@babel/types": "^7.19.3", "@jridgewell/gen-mapping": "^0.3.2", "jsesc": "^2.5.1" }, @@ -628,6 +560,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", + "dev": true, "dependencies": { "@babel/types": "^7.18.6" }, @@ -639,6 +572,7 @@ "version": "7.18.9", "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz", "integrity": "sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==", + "dev": true, "dependencies": { "@babel/helper-explode-assignable-expression": "^7.18.6", "@babel/types": "^7.18.9" @@ -648,11 +582,11 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.19.1.tgz", - "integrity": "sha512-LlLkkqhCMyz2lkQPvJNdIYU7O5YjWRgC2R4omjCTpZd8u8KMQzZvX4qce+/BluN1rcQiV7BoGUpmQ0LeHerbhg==", + "version": "7.19.3", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.19.3.tgz", + "integrity": "sha512-65ESqLGyGmLvgR0mst5AdW1FkNlj9rQsCKduzEoEPhBCDFGXvz2jW6bXFG6i0/MrV2s7hhXjjb2yAzcPuQlLwg==", "dependencies": { - "@babel/compat-data": "^7.19.1", + "@babel/compat-data": "^7.19.3", "@babel/helper-validator-option": "^7.18.6", "browserslist": "^4.21.3", "semver": "^6.3.0" @@ -668,6 +602,7 @@ "version": "7.19.0", "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.19.0.tgz", "integrity": "sha512-NRz8DwF4jT3UfrmUoZjd0Uph9HQnP30t7Ash+weACcyNkiYTywpIjDBgReJMKgr+n86sn2nPVVmJ28Dm053Kqw==", + "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.18.6", "@babel/helper-environment-visitor": "^7.18.9", @@ -688,6 +623,7 @@ "version": "7.19.0", "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.19.0.tgz", "integrity": "sha512-htnV+mHX32DF81amCDrwIDr8nrp1PTm+3wfBN9/v8QJOLEioOCOG7qNyq0nHeFiWbT3Eb7gsPwEmV64UCQ1jzw==", + "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.18.6", "regexpu-core": "^5.1.0" @@ -703,6 +639,7 @@ "version": "0.3.3", "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz", "integrity": "sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==", + "dev": true, "dependencies": { "@babel/helper-compilation-targets": "^7.17.7", "@babel/helper-plugin-utils": "^7.16.7", @@ -727,6 +664,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz", "integrity": "sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==", + "dev": true, "dependencies": { "@babel/types": "^7.18.6" }, @@ -761,6 +699,7 @@ "version": "7.18.9", "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz", "integrity": "sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==", + "dev": true, "dependencies": { "@babel/types": "^7.18.9" }, @@ -801,6 +740,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz", "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==", + "dev": true, "dependencies": { "@babel/types": "^7.18.6" }, @@ -820,6 +760,7 @@ "version": "7.18.9", "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz", "integrity": "sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==", + "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.18.6", "@babel/helper-environment-visitor": "^7.18.9", @@ -837,6 +778,7 @@ "version": "7.19.1", "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.19.1.tgz", "integrity": "sha512-T7ahH7wV0Hfs46SFh5Jz3s0B6+o8g3c+7TMxu7xKfmHikg7EAZ3I2Qk9LFhjxXq8sL7UkP5JflezNwoZa8WvWw==", + "dev": true, "dependencies": { "@babel/helper-environment-visitor": "^7.18.9", "@babel/helper-member-expression-to-functions": "^7.18.9", @@ -863,6 +805,7 @@ "version": "7.18.9", "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.18.9.tgz", "integrity": "sha512-imytd2gHi3cJPsybLRbmFrF7u5BIEuI2cNheyKi3/iOBC63kNn3q8Crn2xVuESli0aM4KYsyEqKyS7lFL8YVtw==", + "dev": true, "dependencies": { "@babel/types": "^7.18.9" }, @@ -909,6 +852,7 @@ "version": "7.19.0", "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.19.0.tgz", "integrity": "sha512-txX8aN8CZyYGTwcLhlk87KRqncAzhh5TpQamZUa0/u3an36NtDpUP6bQgBCBcLeBs09R/OwQu3OjK0k/HwfNDg==", + "dev": true, "dependencies": { "@babel/helper-function-name": "^7.19.0", "@babel/template": "^7.18.10", @@ -945,74 +889,10 @@ "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==", - "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==", - "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==", - "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==" - }, - "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==", - "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==", - "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==", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/@babel/parser": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.19.1.tgz", - "integrity": "sha512-h7RCSorm1DdTVGJf3P2Mhj3kdnkmF/EiysUkzS2TdgAYqyjFdMQJbVuXOBej2SBJaXan/lIVtT6KkGbyyq753A==", + "version": "7.19.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.19.3.tgz", + "integrity": "sha512-pJ9xOlNWHiy9+FuFP09DEAFbAn4JskgRsVcc169w2xRBC3FRGuQEwjeIMMND9L2zc0iEhO/tGv4Zq+km+hxNpQ==", "bin": { "parser": "bin/babel-parser.js" }, @@ -1024,6 +904,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz", "integrity": "sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.18.6" }, @@ -1038,6 +919,7 @@ "version": "7.18.9", "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz", "integrity": "sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.18.9", "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", @@ -1054,6 +936,7 @@ "version": "7.19.1", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.19.1.tgz", "integrity": "sha512-0yu8vNATgLy4ivqMNBIwb1HebCelqN7YX8SL3FDXORv/RqT0zEEWUCH4GH44JsSrvCu6GqnAdR5EBFAPeNBB4Q==", + "dev": true, "dependencies": { "@babel/helper-environment-visitor": "^7.18.9", "@babel/helper-plugin-utils": "^7.19.0", @@ -1071,6 +954,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", + "dev": true, "dependencies": { "@babel/helper-create-class-features-plugin": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" @@ -1086,6 +970,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz", "integrity": "sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw==", + "dev": true, "dependencies": { "@babel/helper-create-class-features-plugin": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6", @@ -1099,9 +984,9 @@ } }, "node_modules/@babel/plugin-proposal-decorators": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.19.1.tgz", - "integrity": "sha512-LfIKNBBY7Q1OX5C4xAgRQffOg2OnhAo9fnbcOHgOC9Yytm2Sw+4XqHufRYU86tHomzepxtvuVaNO+3EVKR4ivw==", + "version": "7.19.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.19.3.tgz", + "integrity": "sha512-MbgXtNXqo7RTKYIXVchVJGPvaVufQH3pxvQyfbGvNw1DObIhph+PesYXJTcd8J4DdWibvf6Z2eanOyItX8WnJg==", "dev": true, "dependencies": { "@babel/helper-create-class-features-plugin": "^7.19.0", @@ -1121,6 +1006,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz", "integrity": "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-dynamic-import": "^7.8.3" @@ -1152,6 +1038,7 @@ "version": "7.18.9", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz", "integrity": "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.18.9", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" @@ -1167,6 +1054,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz", "integrity": "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-json-strings": "^7.8.3" @@ -1182,6 +1070,7 @@ "version": "7.18.9", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz", "integrity": "sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.18.9", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" @@ -1197,6 +1086,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" @@ -1212,6 +1102,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-numeric-separator": "^7.10.4" @@ -1227,6 +1118,7 @@ "version": "7.18.9", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.9.tgz", "integrity": "sha512-kDDHQ5rflIeY5xl69CEqGEZ0KY369ehsCIEbTGb4siHG5BE9sga/T0r0OUwyZNLMmZE79E1kbsqAjwFCW4ds6Q==", + "dev": true, "dependencies": { "@babel/compat-data": "^7.18.8", "@babel/helper-compilation-targets": "^7.18.9", @@ -1245,6 +1137,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz", "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" @@ -1260,6 +1153,7 @@ "version": "7.18.9", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz", "integrity": "sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.18.9", "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", @@ -1276,6 +1170,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz", "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==", + "dev": true, "dependencies": { "@babel/helper-create-class-features-plugin": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" @@ -1291,6 +1186,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.18.6.tgz", "integrity": "sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw==", + "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.18.6", "@babel/helper-create-class-features-plugin": "^7.18.6", @@ -1308,6 +1204,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz", "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==", + "dev": true, "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" @@ -1323,6 +1220,7 @@ "version": "7.8.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -1346,6 +1244,7 @@ "version": "7.12.13", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.12.13" }, @@ -1357,6 +1256,7 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -1386,6 +1286,7 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -1412,6 +1313,7 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.3" }, @@ -1438,6 +1340,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.18.6.tgz", "integrity": "sha512-/DU3RXad9+bZwrgWJQKbr39gYbJpLJHezqEzRzi/BHRlJ9zsQb4CK2CA/5apllXNomwA1qHwzvHl+AdEmC5krQ==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.18.6" }, @@ -1464,6 +1367,7 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -1475,6 +1379,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz", "integrity": "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.18.6" }, @@ -1489,6 +1394,7 @@ "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -1500,6 +1406,7 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -1511,6 +1418,7 @@ "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -1533,6 +1441,7 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -1544,6 +1453,7 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -1555,6 +1465,7 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -1569,6 +1480,7 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -1583,6 +1495,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.18.6.tgz", "integrity": "sha512-mAWAuq4rvOepWCBid55JuRNvpTNf2UGVgoz4JV0fXEKolsVZDzsa4NqCef758WZJj/GDu0gVGItjKFiClTAmZA==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.18.6" }, @@ -1597,6 +1510,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz", "integrity": "sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.18.6" }, @@ -1611,6 +1525,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz", "integrity": "sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag==", + "dev": true, "dependencies": { "@babel/helper-module-imports": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6", @@ -1627,6 +1542,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz", "integrity": "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.18.6" }, @@ -1641,6 +1557,7 @@ "version": "7.18.9", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.9.tgz", "integrity": "sha512-5sDIJRV1KtQVEbt/EIBwGy4T01uYIo4KRB3VUqzkhrAIOGx7AoctL9+Ux88btY0zXdDyPJ9mW+bg+v+XEkGmtw==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.18.9" }, @@ -1655,6 +1572,7 @@ "version": "7.19.0", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.19.0.tgz", "integrity": "sha512-YfeEE9kCjqTS9IitkgfJuxjcEtLUHMqa8yUJ6zdz8vR7hKuo6mOy2C05P0F1tdMmDCeuyidKnlrw/iTppHcr2A==", + "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.18.6", "@babel/helper-compilation-targets": "^7.19.0", @@ -1673,18 +1591,11 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-classes/node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "engines": { - "node": ">=4" - } - }, "node_modules/@babel/plugin-transform-computed-properties": { "version": "7.18.9", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz", "integrity": "sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.18.9" }, @@ -1699,6 +1610,7 @@ "version": "7.18.13", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.13.tgz", "integrity": "sha512-TodpQ29XekIsex2A+YJPj5ax2plkGa8YYY6mFjCohk/IG9IY42Rtuj1FuDeemfg2ipxIFLzPeA83SIBnlhSIow==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.18.9" }, @@ -1713,6 +1625,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz", "integrity": "sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==", + "dev": true, "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" @@ -1728,6 +1641,7 @@ "version": "7.18.9", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz", "integrity": "sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.18.9" }, @@ -1742,6 +1656,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz", "integrity": "sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==", + "dev": true, "dependencies": { "@babel/helper-builder-binary-assignment-operator-visitor": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" @@ -1773,6 +1688,7 @@ "version": "7.18.8", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz", "integrity": "sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.18.6" }, @@ -1787,6 +1703,7 @@ "version": "7.18.9", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz", "integrity": "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==", + "dev": true, "dependencies": { "@babel/helper-compilation-targets": "^7.18.9", "@babel/helper-function-name": "^7.18.9", @@ -1803,6 +1720,7 @@ "version": "7.18.9", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz", "integrity": "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.18.9" }, @@ -1817,6 +1735,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz", "integrity": "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.18.6" }, @@ -1831,6 +1750,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.18.6.tgz", "integrity": "sha512-Pra5aXsmTsOnjM3IajS8rTaLCy++nGM4v3YR4esk5PCsyg9z8NA5oQLwxzMUtDBd8F+UmVza3VxoAaWCbzH1rg==", + "dev": true, "dependencies": { "@babel/helper-module-transforms": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6", @@ -1847,6 +1767,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.6.tgz", "integrity": "sha512-Qfv2ZOWikpvmedXQJDSbxNqy7Xr/j2Y8/KfijM0iJyKkBTmWuvCA1yeH1yDM7NJhBW/2aXxeucLj6i80/LAJ/Q==", + "dev": true, "dependencies": { "@babel/helper-module-transforms": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6", @@ -1864,6 +1785,7 @@ "version": "7.19.0", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.19.0.tgz", "integrity": "sha512-x9aiR0WXAWmOWsqcsnrzGR+ieaTMVyGyffPVA7F8cXAGt/UxefYv6uSHZLkAFChN5M5Iy1+wjE+xJuPt22H39A==", + "dev": true, "dependencies": { "@babel/helper-hoist-variables": "^7.18.6", "@babel/helper-module-transforms": "^7.19.0", @@ -1882,6 +1804,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz", "integrity": "sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==", + "dev": true, "dependencies": { "@babel/helper-module-transforms": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" @@ -1897,6 +1820,7 @@ "version": "7.19.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.19.1.tgz", "integrity": "sha512-oWk9l9WItWBQYS4FgXD4Uyy5kq898lvkXpXQxoJEY1RnvPk4R/Dvu2ebXU9q8lP+rlMwUQTFf2Ok6d78ODa0kw==", + "dev": true, "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.19.0", "@babel/helper-plugin-utils": "^7.19.0" @@ -1912,6 +1836,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz", "integrity": "sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.18.6" }, @@ -1926,6 +1851,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz", "integrity": "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.18.6", "@babel/helper-replace-supers": "^7.18.6" @@ -1955,6 +1881,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz", "integrity": "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.18.6" }, @@ -1969,6 +1896,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.18.6.tgz", "integrity": "sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.18.6" }, @@ -1983,6 +1911,7 @@ "version": "7.19.0", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.19.0.tgz", "integrity": "sha512-UVEvX3tXie3Szm3emi1+G63jyw1w5IcMY0FSKM+CRnKRI5Mr1YbCNgsSTwoTwKphQEG9P+QqmuRFneJPZuHNhg==", + "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.18.6", "@babel/helper-module-imports": "^7.18.6", @@ -2001,6 +1930,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.18.6.tgz", "integrity": "sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA==", + "dev": true, "dependencies": { "@babel/plugin-transform-react-jsx": "^7.18.6" }, @@ -2015,6 +1945,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.18.6.tgz", "integrity": "sha512-I8VfEPg9r2TRDdvnHgPepTKvuRomzA8+u+nhY7qSI1fR2hRNebasZEETLyM5mAUr0Ku56OkXJ0I7NHJnO6cJiQ==", + "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" @@ -2030,6 +1961,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.6.tgz", "integrity": "sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.18.6", "regenerator-transform": "^0.15.0" @@ -2045,6 +1977,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz", "integrity": "sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.18.6" }, @@ -2059,6 +1992,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz", "integrity": "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.18.6" }, @@ -2073,6 +2007,7 @@ "version": "7.19.0", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.19.0.tgz", "integrity": "sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.19.0", "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9" @@ -2088,6 +2023,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz", "integrity": "sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.18.6" }, @@ -2102,6 +2038,7 @@ "version": "7.18.9", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz", "integrity": "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.18.9" }, @@ -2116,6 +2053,7 @@ "version": "7.18.9", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz", "integrity": "sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.18.9" }, @@ -2127,9 +2065,10 @@ } }, "node_modules/@babel/plugin-transform-typescript": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.19.1.tgz", - "integrity": "sha512-+ILcOU+6mWLlvCwnL920m2Ow3wWx3Wo8n2t5aROQmV55GZt+hOiLvBaa3DNzRjSEHa1aauRs4/YLmkCfFkhhRQ==", + "version": "7.19.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.19.3.tgz", + "integrity": "sha512-z6fnuK9ve9u/0X0rRvI9MY0xg+DOUaABDYOe+/SQTxtlptaBB/V9JIUxJn6xp3lMBeb9qe8xSFmHU35oZDXD+w==", + "dev": true, "dependencies": { "@babel/helper-create-class-features-plugin": "^7.19.0", "@babel/helper-plugin-utils": "^7.19.0", @@ -2146,6 +2085,7 @@ "version": "7.18.10", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz", "integrity": "sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.18.9" }, @@ -2160,6 +2100,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz", "integrity": "sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==", + "dev": true, "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" @@ -2172,12 +2113,13 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.19.1.tgz", - "integrity": "sha512-c8B2c6D16Lp+Nt6HcD+nHl0VbPKVnNPTpszahuxJJnurfMtKeZ80A+qUv48Y7wqvS+dTFuLuaM9oYxyNHbCLWA==", + "version": "7.19.3", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.19.3.tgz", + "integrity": "sha512-ziye1OTc9dGFOAXSWKUqQblYHNlBOaDl8wzqf2iKXJAltYiR3hKHUKmkt+S9PppW7RQpq4fFCrwwpIDj/f5P4w==", + "dev": true, "dependencies": { - "@babel/compat-data": "^7.19.1", - "@babel/helper-compilation-targets": "^7.19.1", + "@babel/compat-data": "^7.19.3", + "@babel/helper-compilation-targets": "^7.19.3", "@babel/helper-plugin-utils": "^7.19.0", "@babel/helper-validator-option": "^7.18.6", "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6", @@ -2245,7 +2187,7 @@ "@babel/plugin-transform-unicode-escapes": "^7.18.10", "@babel/plugin-transform-unicode-regex": "^7.18.6", "@babel/preset-modules": "^0.1.5", - "@babel/types": "^7.19.0", + "@babel/types": "^7.19.3", "babel-plugin-polyfill-corejs2": "^0.3.3", "babel-plugin-polyfill-corejs3": "^0.6.0", "babel-plugin-polyfill-regenerator": "^0.4.1", @@ -2280,6 +2222,7 @@ "version": "0.1.5", "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", @@ -2295,6 +2238,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.18.6.tgz", "integrity": "sha512-zXr6atUmyYdiWRVLOZahakYmOBHtWc2WGCkP8PYTgZi0iJXDY2CN180TdrIW4OGOAdLc7TifzDIvtx6izaRIzg==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.18.6", "@babel/helper-validator-option": "^7.18.6", @@ -2314,6 +2258,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.18.6.tgz", "integrity": "sha512-s9ik86kXBAnD760aybBucdpnLsAt0jK1xqJn2juOn9lkOvSHV60os5hxoVJsPzMQxvnUJFAlkont2DvvaYEBtQ==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.18.6", "@babel/helper-validator-option": "^7.18.6", @@ -2382,18 +2327,18 @@ } }, "node_modules/@babel/traverse": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.19.1.tgz", - "integrity": "sha512-0j/ZfZMxKukDaag2PtOPDbwuELqIar6lLskVPPJDjXMXjfLb1Obo/1yjxIGqqAJrmfaTIY3z2wFLAQ7qSkLsuA==", + "version": "7.19.3", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.19.3.tgz", + "integrity": "sha512-qh5yf6149zhq2sgIXmwjnsvmnNQC2iw70UFjp4olxucKrWd/dvlUsBI88VSLUsnMNF7/vnOiA+nk1+yLoCqROQ==", "dependencies": { "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.19.0", + "@babel/generator": "^7.19.3", "@babel/helper-environment-visitor": "^7.18.9", "@babel/helper-function-name": "^7.19.0", "@babel/helper-hoist-variables": "^7.18.6", "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.19.1", - "@babel/types": "^7.19.0", + "@babel/parser": "^7.19.3", + "@babel/types": "^7.19.3", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -2401,21 +2346,13 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/traverse/node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "engines": { - "node": ">=4" - } - }, "node_modules/@babel/types": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.19.0.tgz", - "integrity": "sha512-YuGopBq3ke25BVSiS6fgF49Ul9gH1x70Bcr6bqRLjWCkcX8Hre1/5+z+IiWOIerRMSSEfGZVB9z9kyq7wVs9YA==", + "version": "7.19.3", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.19.3.tgz", + "integrity": "sha512-hGCaQzIY22DJlDh9CH7NOxgKkFjBk0Cw9xDO1Xmh2151ti7wiGfQ3LauXzL4HP1fmFlTX6XjpRETTpUcv7wQLw==", "dependencies": { "@babel/helper-string-parser": "^7.18.10", - "@babel/helper-validator-identifier": "^7.18.6", + "@babel/helper-validator-identifier": "^7.19.1", "to-fast-properties": "^2.0.0" }, "engines": { @@ -2460,6 +2397,28 @@ "node": ">=0.1.90" } }, + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "devOptional": true, + "dependencies": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "devOptional": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, "node_modules/@csstools/convert-colors": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/@csstools/convert-colors/-/convert-colors-1.4.0.tgz", @@ -2635,24 +2594,65 @@ "url": "https://github.com/sponsors/epoberezkin" } }, + "node_modules/@eslint/eslintrc/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/@eslint/eslintrc/node_modules/globals": { + "version": "13.17.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", + "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/eslintrc/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/@eslint/eslintrc/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/@faker-js/faker": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/@faker-js/faker/-/faker-6.3.1.tgz", + "integrity": "sha512-8YXBE2ZcU/pImVOHX7MWrSR/X5up7t6rPWZlk34RwZEcdr3ua6X+32pSd6XuOQRN+vbuvYNfA6iey8NbrjuMFQ==", + "dev": true, + "engines": { + "node": ">=14.0.0", + "npm": ">=6.0.0" + } + }, "node_modules/@gar/promisify": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", "dev": true }, - "node_modules/@graphql-typed-document-node/core": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.1.1.tgz", - "integrity": "sha512-NQ17ii0rK1b34VZonlmT2QMJFI70m0TRwbknO/ihlbatXyaktDhN/98vBiUU6kNBPljqGqyIrl2T4nY2RpFANg==", - "peerDependencies": { - "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" - } - }, "node_modules/@headlessui/react": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/@headlessui/react/-/react-1.7.2.tgz", - "integrity": "sha512-snLv2lxwsf2HNTOBNgHYdvoYZ3ChJE8QszPi1d/hl9js8KrFrUulTaQBfSyPbJP5BybVreWh9DxCgz9S0Z6hKQ==", + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/@headlessui/react/-/react-1.7.3.tgz", + "integrity": "sha512-LGp06SrGv7BMaIQlTs8s2G06moqkI0cb0b8stgq7KZ3xcHdH3qMP+cRyV7qe5x4XEW/IGY48BW4fLesD6NQLng==", "engines": { "node": ">=10" }, @@ -2669,18 +2669,27 @@ "react": ">= 16" } }, - "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==", + "node_modules/@humanwhocodes/gitignore-to-minimatch": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@humanwhocodes/gitignore-to-minimatch/-/gitignore-to-minimatch-1.0.2.tgz", + "integrity": "sha512-rSqmMJDdLFUsyxR6FMtD00nfQKKLFb1kv+qBbOVKqErvloEIJLo5bDTJTQNTYgeyp78JsA7u/NPi5jT1GR/MuA==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", "dev": true, - "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.4" - }, "engines": { - "node": ">=10.10.0" + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" } }, "node_modules/@humanwhocodes/object-schema": { @@ -2704,15 +2713,6 @@ "node": ">=8" } }, - "node_modules/@istanbuljs/load-nyc-config/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/@istanbuljs/load-nyc-config/node_modules/find-up": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", @@ -2726,19 +2726,6 @@ "node": ">=8" } }, - "node_modules/@istanbuljs/load-nyc-config/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/@istanbuljs/load-nyc-config/node_modules/locate-path": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", @@ -2829,6 +2816,64 @@ "@types/yargs-parser": "*" } }, + "node_modules/@jest/console/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/@jest/console/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/@jest/console/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/@jest/console/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/@jest/console/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/@jest/console/node_modules/jest-util": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", @@ -2846,6 +2891,18 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, + "node_modules/@jest/console/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/@jest/core": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.5.1.tgz", @@ -2944,6 +3001,64 @@ "@types/yargs-parser": "*" } }, + "node_modules/@jest/core/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/@jest/core/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/@jest/core/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/@jest/core/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/@jest/core/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/@jest/core/node_modules/jest-haste-map": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", @@ -3009,6 +3124,18 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, + "node_modules/@jest/core/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/@jest/environment": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz", @@ -3049,6 +3176,76 @@ "@types/yargs-parser": "*" } }, + "node_modules/@jest/environment/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/@jest/environment/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/@jest/environment/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/@jest/environment/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/@jest/environment/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/@jest/environment/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/@jest/fake-timers": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz", @@ -3091,6 +3288,64 @@ "@types/yargs-parser": "*" } }, + "node_modules/@jest/fake-timers/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/@jest/fake-timers/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/@jest/fake-timers/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/@jest/fake-timers/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/@jest/fake-timers/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/@jest/fake-timers/node_modules/jest-util": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", @@ -3108,6 +3363,18 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, + "node_modules/@jest/fake-timers/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/@jest/globals": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz", @@ -3147,6 +3414,76 @@ "@types/yargs-parser": "*" } }, + "node_modules/@jest/globals/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/@jest/globals/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/@jest/globals/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/@jest/globals/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/@jest/globals/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/@jest/globals/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/@jest/reporters": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.5.1.tgz", @@ -3242,6 +3579,64 @@ "@types/yargs-parser": "*" } }, + "node_modules/@jest/reporters/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/@jest/reporters/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/@jest/reporters/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/@jest/reporters/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/@jest/reporters/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/@jest/reporters/node_modules/jest-haste-map": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", @@ -3307,6 +3702,18 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, + "node_modules/@jest/reporters/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/@jest/source-map": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.5.1.tgz", @@ -3361,6 +3768,76 @@ "@types/yargs-parser": "*" } }, + "node_modules/@jest/test-result/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/@jest/test-result/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/@jest/test-result/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/@jest/test-result/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/@jest/test-result/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/@jest/test-result/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/@jest/test-sequencer": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz", @@ -3401,6 +3878,64 @@ "@types/yargs-parser": "*" } }, + "node_modules/@jest/test-sequencer/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/@jest/test-sequencer/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/@jest/test-sequencer/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/@jest/test-sequencer/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/@jest/test-sequencer/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/@jest/test-sequencer/node_modules/jest-haste-map": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", @@ -3466,6 +4001,18 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, + "node_modules/@jest/test-sequencer/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/@jest/transform": { "version": "26.6.2", "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-26.6.2.tgz", @@ -3492,6 +4039,76 @@ "node": ">= 10.14.2" } }, + "node_modules/@jest/transform/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/@jest/transform/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/@jest/transform/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/@jest/transform/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/@jest/transform/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/@jest/transform/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/@jest/types": { "version": "26.6.2", "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", @@ -3508,6 +4125,76 @@ "node": ">= 10.14.2" } }, + "node_modules/@jest/types/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/@jest/types/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/@jest/types/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/@jest/types/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/@jest/types/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/@jest/types/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/@jridgewell/gen-mapping": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", @@ -3588,49 +4275,7 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/@mdx-js/loader/node_modules/@mdx-js/react": { - "version": "1.6.22", - "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-1.6.22.tgz", - "integrity": "sha512-TDoPum4SHdfPiGSAaRBw7ECyI8VaHpK8GJugbJIJuqyh6kzw9ZLJZW3HGL3NNrJGxcAixUvqROm+YuQOo5eXtg==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - }, - "peerDependencies": { - "react": "^16.13.1 || ^17.0.0" - } - }, - "node_modules/@mdx-js/mdx": { - "version": "1.6.22", - "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-1.6.22.tgz", - "integrity": "sha512-AMxuLxPz2j5/6TpF/XSdKpQP1NlG0z11dFOlq+2IP/lSgl11GY8ji6S/rgsViN/L0BDvHvUMruRb7ub+24LUYA==", - "dependencies": { - "@babel/core": "7.12.9", - "@babel/plugin-syntax-jsx": "7.12.1", - "@babel/plugin-syntax-object-rest-spread": "7.8.3", - "@mdx-js/util": "1.6.22", - "babel-plugin-apply-mdx-type-prop": "1.6.22", - "babel-plugin-extract-import-names": "1.6.22", - "camelcase-css": "2.0.1", - "detab": "2.0.4", - "hast-util-raw": "6.0.1", - "lodash.uniq": "4.5.0", - "mdast-util-to-hast": "10.0.1", - "remark-footnotes": "2.0.0", - "remark-mdx": "1.6.22", - "remark-parse": "8.0.3", - "remark-squeeze-paragraphs": "4.0.0", - "style-to-object": "0.3.0", - "unified": "9.2.0", - "unist-builder": "2.0.3", - "unist-util-visit": "2.0.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/@mdx-js/mdx/node_modules/@babel/core": { + "node_modules/@mdx-js/loader/node_modules/@babel/core": { "version": "7.12.9", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.9.tgz", "integrity": "sha512-gTXYh3M5wb7FRXQy+FErKFAv90BnlOuNn1QkCK2lREoPAjrQCO49+HVSrFoe5uakFAF5eenS75KbO2vQiLrTMQ==", @@ -3660,12 +4305,12 @@ "url": "https://opencollective.com/babel" } }, - "node_modules/@mdx-js/mdx/node_modules/@babel/helper-plugin-utils": { + "node_modules/@mdx-js/loader/node_modules/@babel/helper-plugin-utils": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==" }, - "node_modules/@mdx-js/mdx/node_modules/@babel/plugin-proposal-object-rest-spread": { + "node_modules/@mdx-js/loader/node_modules/@babel/plugin-proposal-object-rest-spread": { "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz", "integrity": "sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA==", @@ -3678,7 +4323,7 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@mdx-js/mdx/node_modules/@babel/plugin-syntax-jsx": { + "node_modules/@mdx-js/loader/node_modules/@babel/plugin-syntax-jsx": { "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.1.tgz", "integrity": "sha512-1yRi7yAtB0ETgxdY9ti/p2TivUxJkTdhu/ZbF9MshVGqOx1TdB3b7xCXs49Fupgg50N45KcAsRP/ZqWjs9SRjg==", @@ -3689,7 +4334,58 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@mdx-js/mdx/node_modules/is-buffer": { + "node_modules/@mdx-js/loader/node_modules/@mdx-js/mdx": { + "version": "1.6.22", + "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-1.6.22.tgz", + "integrity": "sha512-AMxuLxPz2j5/6TpF/XSdKpQP1NlG0z11dFOlq+2IP/lSgl11GY8ji6S/rgsViN/L0BDvHvUMruRb7ub+24LUYA==", + "dependencies": { + "@babel/core": "7.12.9", + "@babel/plugin-syntax-jsx": "7.12.1", + "@babel/plugin-syntax-object-rest-spread": "7.8.3", + "@mdx-js/util": "1.6.22", + "babel-plugin-apply-mdx-type-prop": "1.6.22", + "babel-plugin-extract-import-names": "1.6.22", + "camelcase-css": "2.0.1", + "detab": "2.0.4", + "hast-util-raw": "6.0.1", + "lodash.uniq": "4.5.0", + "mdast-util-to-hast": "10.0.1", + "remark-footnotes": "2.0.0", + "remark-mdx": "1.6.22", + "remark-parse": "8.0.3", + "remark-squeeze-paragraphs": "4.0.0", + "style-to-object": "0.3.0", + "unified": "9.2.0", + "unist-builder": "2.0.3", + "unist-util-visit": "2.0.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mdx-js/loader/node_modules/@mdx-js/react": { + "version": "1.6.22", + "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-1.6.22.tgz", + "integrity": "sha512-TDoPum4SHdfPiGSAaRBw7ECyI8VaHpK8GJugbJIJuqyh6kzw9ZLJZW3HGL3NNrJGxcAixUvqROm+YuQOo5eXtg==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + }, + "peerDependencies": { + "react": "^16.13.1 || ^17.0.0" + } + }, + "node_modules/@mdx-js/loader/node_modules/ccount": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-1.1.0.tgz", + "integrity": "sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/@mdx-js/loader/node_modules/is-buffer": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", @@ -3711,19 +4407,7 @@ "node": ">=4" } }, - "node_modules/@mdx-js/mdx/node_modules/mdast-util-definitions": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-4.0.0.tgz", - "integrity": "sha512-k8AJ6aNnUkB7IE+5azR9h81O5EQ/cTDXtWdMq9Kk5KcEW/8ritU5CeLg/9HhOC++nALHBlaogJ5jz0Ybk3kPMQ==", - "dependencies": { - "unist-util-visit": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/@mdx-js/mdx/node_modules/mdast-util-to-hast": { + "node_modules/@mdx-js/loader/node_modules/mdast-util-to-hast": { "version": "10.0.1", "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-10.0.1.tgz", "integrity": "sha512-BW3LM9SEMnjf4HXXVApZMt8gLQWVNXc3jryK0nJu/rOXPOnlkUjmdkDlmxMirpbU9ILncGFIwLH/ubnWBbcdgA==", @@ -3742,7 +4426,7 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/@mdx-js/mdx/node_modules/remark-mdx": { + "node_modules/@mdx-js/loader/node_modules/remark-mdx": { "version": "1.6.22", "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-1.6.22.tgz", "integrity": "sha512-phMHBJgeV76uyFkH4rvzCftLfKCr2RZuF+/gmVcaKrpsihyzmhXjA0BEMDaPTXG5y8qZOKPVo83NAOX01LPnOQ==", @@ -3761,7 +4445,7 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/@mdx-js/mdx/node_modules/remark-parse": { + "node_modules/@mdx-js/loader/node_modules/remark-parse": { "version": "8.0.3", "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-8.0.3.tgz", "integrity": "sha512-E1K9+QLGgggHxCQtLt++uXltxEprmWzNfg+MxpfHsZlrddKzZ/hZyWHDbK3/Ap8HJQqYJRXP+jHczdL6q6i85Q==", @@ -3788,7 +4472,7 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/@mdx-js/mdx/node_modules/semver": { + "node_modules/@mdx-js/loader/node_modules/semver": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", @@ -3796,7 +4480,7 @@ "semver": "bin/semver" } }, - "node_modules/@mdx-js/mdx/node_modules/source-map": { + "node_modules/@mdx-js/loader/node_modules/source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", @@ -3804,7 +4488,7 @@ "node": ">=0.10.0" } }, - "node_modules/@mdx-js/mdx/node_modules/unified": { + "node_modules/@mdx-js/loader/node_modules/unified": { "version": "9.2.0", "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.0.tgz", "integrity": "sha512-vx2Z0vY+a3YoTj8+pttM3tiJHCwY5UFbYdiWrwBEbHmK8pvsPj2rtAX2BFfgXen8T39CJWblWRDT4L5WGXtDdg==", @@ -3821,7 +4505,43 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/@mdx-js/mdx/node_modules/unist-util-remove-position": { + "node_modules/@mdx-js/loader/node_modules/unist-builder": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-builder/-/unist-builder-2.0.3.tgz", + "integrity": "sha512-f98yt5pnlMWlzP539tPc4grGMsFaQQlP/vM396b00jngsiINumNmsY8rkXjfoi1c6QaM8nQ3vaGDuoKWbe/1Uw==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mdx-js/loader/node_modules/unist-util-generated": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-1.1.6.tgz", + "integrity": "sha512-cln2Mm1/CZzN5ttGK7vkoGw+RZ8VcUH6BtGbq98DDtRGquAAOXig1mrBQYelOwMXYS8rK+vZDyyojSjp7JX+Lg==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mdx-js/loader/node_modules/unist-util-is": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", + "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mdx-js/loader/node_modules/unist-util-position": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-3.1.0.tgz", + "integrity": "sha512-w+PkwCbYSFw8vpgWD0v7zRCl1FpY3fjDSQ3/N/wNd9Ffa4gPi8+4keqt99N3XW6F99t/mUzp2xAhNmfKWp95QA==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mdx-js/loader/node_modules/unist-util-remove-position": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-2.0.1.tgz", "integrity": "sha512-fDZsLYIe2uT+oGFnuZmy73K6ZxOPG/Qcm+w7jbEjaFcJgbQ6cqjs/eSPzXhsmGpAsWPkqZM9pYjww5QTn3LHMA==", @@ -3833,10 +4553,197 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/@mdx-js/loader/node_modules/unist-util-stringify-position": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", + "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==", + "dependencies": { + "@types/unist": "^2.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mdx-js/loader/node_modules/unist-util-visit": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz", + "integrity": "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0", + "unist-util-visit-parents": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mdx-js/loader/node_modules/unist-util-visit-parents": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz", + "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mdx-js/loader/node_modules/vfile": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz", + "integrity": "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==", + "dependencies": { + "@types/unist": "^2.0.0", + "is-buffer": "^2.0.0", + "unist-util-stringify-position": "^2.0.0", + "vfile-message": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mdx-js/loader/node_modules/vfile-location": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-3.2.0.tgz", + "integrity": "sha512-aLEIZKv/oxuCDZ8lkJGhuhztf/BW4M+iHdCwglA/eWc+vtuRFJj8EtgceYFX4LRjOhCAAiNHsKGssC6onJ+jbA==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mdx-js/loader/node_modules/vfile-message": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz", + "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mdx-js/mdx": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-2.1.4.tgz", + "integrity": "sha512-47drTDRr6QiMx1SXIoIyjTL8izoC+IBP5nmOLTUbuFJZYXdV9TPLuZJic0i96FGKfL7DpRN4WylpsxOVlpufMg==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/mdx": "^2.0.0", + "estree-util-build-jsx": "^2.0.0", + "estree-util-is-identifier-name": "^2.0.0", + "estree-util-to-js": "^1.1.0", + "estree-walker": "^3.0.0", + "hast-util-to-estree": "^2.0.0", + "markdown-extensions": "^1.0.0", + "periscopic": "^3.0.0", + "remark-mdx": "^2.0.0", + "remark-parse": "^10.0.0", + "remark-rehype": "^10.0.0", + "unified": "^10.0.0", + "unist-util-position-from-estree": "^1.0.0", + "unist-util-stringify-position": "^3.0.0", + "unist-util-visit": "^4.0.0", + "vfile": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mdx-js/mdx/node_modules/bail": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", + "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/@mdx-js/mdx/node_modules/is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "engines": { + "node": ">=4" + } + }, + "node_modules/@mdx-js/mdx/node_modules/is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@mdx-js/mdx/node_modules/remark-parse": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-10.0.1.tgz", + "integrity": "sha512-1fUyHr2jLsVOkhbvPRBJ5zTKZZyD6yZzYaWCS6BPBdQ8vEMBCH+9zNCDA6tET/zHCi/jLqjCWtlJZUPk+DbnFw==", + "dependencies": { + "@types/mdast": "^3.0.0", + "mdast-util-from-markdown": "^1.0.0", + "unified": "^10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mdx-js/mdx/node_modules/trough": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/trough/-/trough-2.1.0.tgz", + "integrity": "sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/@mdx-js/mdx/node_modules/unified": { + "version": "10.1.2", + "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz", + "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==", + "dependencies": { + "@types/unist": "^2.0.0", + "bail": "^2.0.0", + "extend": "^3.0.0", + "is-buffer": "^2.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/@mdx-js/react": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-2.1.3.tgz", - "integrity": "sha512-11n4lTvvRyxq3OYbWJwEYM+7q6PE0GxKbk0AwYIIQmrRkxDeljIsjDQkKOgdr/orgRRbYy5zi+iERdnwe01CHQ==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-2.1.4.tgz", + "integrity": "sha512-PRwLjoAxhSA6xTB2+FA5CPGUCOsIK3bJD0RYsoju+nUIyOpIZUSw6SJChfILByLizzxqslE0R+l8IjARo0N+hA==", "dependencies": { "@types/mdx": "^2.0.0", "@types/react": ">=16" @@ -3859,9 +4766,9 @@ } }, "node_modules/@mertasan/tailwindcss-variables": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@mertasan/tailwindcss-variables/-/tailwindcss-variables-2.5.0.tgz", - "integrity": "sha512-yAOBw4DfJAqr3N9e4x4/e7DBtPU/XdT4pi51o2cIb5QiCQeT7kkZ0vtRQk4sN2wPI9Mg/oSEHhMu7ZIxjJGQpg==", + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@mertasan/tailwindcss-variables/-/tailwindcss-variables-2.5.1.tgz", + "integrity": "sha512-I1Jvpu5fcinGT/yEDL53dRXznFWV4LoTCUVcTvQqA1YH1iAfs72OO/VZdBKPqcxe/lS2nBr/Ikloe+pLsxemmA==", "dependencies": { "lodash": "^4.17.21" }, @@ -3885,9 +4792,9 @@ } }, "node_modules/@monaco-editor/react": { - "version": "4.4.5", - "resolved": "https://registry.npmjs.org/@monaco-editor/react/-/react-4.4.5.tgz", - "integrity": "sha512-IImtzU7sRc66OOaQVCG+5PFHkSWnnhrUWGBuH6zNmH2h0YgmAhcjHZQc/6MY9JWEbUtVF1WPBMJ9u1XuFbRrVA==", + "version": "4.4.6", + "resolved": "https://registry.npmjs.org/@monaco-editor/react/-/react-4.4.6.tgz", + "integrity": "sha512-Gr3uz3LYf33wlFE3eRnta4RxP5FSNxiIV9ENn2D2/rN8KgGAD8ecvcITRtsbbyuOuNkwbuHYxfeaz2Vr+CtyFA==", "dependencies": { "@monaco-editor/loader": "^1.3.2", "prop-types": "^15.7.2" @@ -3926,9 +4833,9 @@ } }, "node_modules/@next/env": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/@next/env/-/env-12.1.0.tgz", - "integrity": "sha512-nrIgY6t17FQ9xxwH3jj0a6EOiQ/WDHUos35Hghtr+SWN/ntHIQ7UpuvSi0vaLzZVHQWaDupKI+liO5vANcDeTQ==" + "version": "12.0.8", + "resolved": "https://registry.npmjs.org/@next/env/-/env-12.0.8.tgz", + "integrity": "sha512-Wa0gOeioB9PHap9wtZDZEhgOSE3/+qE/UALWjJHuNvH4J3oE+13EjVOiEsr1JcPCXUN8ESQE+phDKlo6qJ8P9g==" }, "node_modules/@next/eslint-plugin-next": { "version": "12.3.1", @@ -3957,19 +4864,10 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@next/mdx": { - "version": "12.3.1", - "resolved": "https://registry.npmjs.org/@next/mdx/-/mdx-12.3.1.tgz", - "integrity": "sha512-b7G3CsAwyD/8Eo6uDjCCqNwEi68LTyo/JYPC0N2Yu3yl/iveMDCi03ME+9JsnFPr3DcjmGSKc1ioiYM4dJUkTg==", - "peerDependencies": { - "@mdx-js/loader": ">=0.15.0", - "@mdx-js/react": "*" - } - }, "node_modules/@next/swc-android-arm64": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/@next/swc-android-arm64/-/swc-android-arm64-12.1.0.tgz", - "integrity": "sha512-/280MLdZe0W03stA69iL+v6I+J1ascrQ6FrXBlXGCsGzrfMaGr7fskMa0T5AhQIVQD4nA/46QQWxG//DYuFBcA==", + "version": "12.0.8", + "resolved": "https://registry.npmjs.org/@next/swc-android-arm64/-/swc-android-arm64-12.0.8.tgz", + "integrity": "sha512-BiXMcOZNnXSIXv+FQvbRgbMb+iYayLX/Sb2MwR0wja+eMs46BY1x/ssXDwUBADP1M8YtrGTlSPHZqUiCU94+Mg==", "cpu": [ "arm64" ], @@ -3982,9 +4880,9 @@ } }, "node_modules/@next/swc-darwin-arm64": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-12.1.0.tgz", - "integrity": "sha512-R8vcXE2/iONJ1Unf5Ptqjk6LRW3bggH+8drNkkzH4FLEQkHtELhvcmJwkXcuipyQCsIakldAXhRbZmm3YN1vXg==", + "version": "12.0.8", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-12.0.8.tgz", + "integrity": "sha512-6EGMmvcIwPpwt0/iqLbXDGx6oKHAXzbowyyVXK8cqmIvhoghRFjqfiNGBs+ar6wEBGt68zhwn/77vE3iQWoFJw==", "cpu": [ "arm64" ], @@ -3997,9 +4895,9 @@ } }, "node_modules/@next/swc-darwin-x64": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-12.1.0.tgz", - "integrity": "sha512-ieAz0/J0PhmbZBB8+EA/JGdhRHBogF8BWaeqR7hwveb6SYEIJaDNQy0I+ZN8gF8hLj63bEDxJAs/cEhdnTq+ug==", + "version": "12.0.8", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-12.0.8.tgz", + "integrity": "sha512-todxgQOGP/ucz5UH2kKR3XGDdkWmWr0VZAAbzgTbiFm45Ol4ih602k2nNR3xSbza9IqNhxNuUVsMpBgeo19CFQ==", "cpu": [ "x64" ], @@ -4012,9 +4910,9 @@ } }, "node_modules/@next/swc-linux-arm-gnueabihf": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-12.1.0.tgz", - "integrity": "sha512-njUd9hpl6o6A5d08dC0cKAgXKCzm5fFtgGe6i0eko8IAdtAPbtHxtpre3VeSxdZvuGFh+hb0REySQP9T1ttkog==", + "version": "12.0.8", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-12.0.8.tgz", + "integrity": "sha512-KULmdrfI+DJxBuhEyV47MQllB/WpC3P2xbwhHezxL/LkC2nkz5SbV4k432qpx2ebjIRf9SjdQ5Oz1FjD8Urayw==", "cpu": [ "arm" ], @@ -4027,9 +4925,9 @@ } }, "node_modules/@next/swc-linux-arm64-gnu": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-12.1.0.tgz", - "integrity": "sha512-OqangJLkRxVxMhDtcb7Qn1xjzFA3s50EIxY7mljbSCLybU+sByPaWAHY4px97ieOlr2y4S0xdPKkQ3BCAwyo6Q==", + "version": "12.0.8", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-12.0.8.tgz", + "integrity": "sha512-1XO87wgIVPvt5fx5i8CqdhksRdcpqyzCOLW4KrE0f9pUCIT04EbsFiKdmsH9c73aqjNZMnCMXpbV+cn4hN8x1w==", "cpu": [ "arm64" ], @@ -4042,9 +4940,9 @@ } }, "node_modules/@next/swc-linux-arm64-musl": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-12.1.0.tgz", - "integrity": "sha512-hB8cLSt4GdmOpcwRe2UzI5UWn6HHO/vLkr5OTuNvCJ5xGDwpPXelVkYW/0+C3g5axbDW2Tym4S+MQCkkH9QfWA==", + "version": "12.0.8", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-12.0.8.tgz", + "integrity": "sha512-NStRZEy/rkk2G18Yhc/Jzi1Q2Dv+zH176oO8479zlDQ5syRfc6AvRHVV4iNRc8Pai58If83r/nOJkwFgGwkKLw==", "cpu": [ "arm64" ], @@ -4057,9 +4955,9 @@ } }, "node_modules/@next/swc-linux-x64-gnu": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-12.1.0.tgz", - "integrity": "sha512-OKO4R/digvrVuweSw/uBM4nSdyzsBV5EwkUeeG4KVpkIZEe64ZwRpnFB65bC6hGwxIBnTv5NMSnJ+0K/WmG78A==", + "version": "12.0.8", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-12.0.8.tgz", + "integrity": "sha512-rHxTGtTEDFsdT9/VjewzxE19S7W1NE+aZpm4TwbT1pSNGK9KQxQGcXjqoHMeB+VZCFknzNEoIU/vydbjZMlAuw==", "cpu": [ "x64" ], @@ -4072,9 +4970,9 @@ } }, "node_modules/@next/swc-linux-x64-musl": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-12.1.0.tgz", - "integrity": "sha512-JohhgAHZvOD3rQY7tlp7NlmvtvYHBYgY0x5ZCecUT6eCCcl9lv6iV3nfu82ErkxNk1H893fqH0FUpznZ/H3pSw==", + "version": "12.0.8", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-12.0.8.tgz", + "integrity": "sha512-1F4kuFRQE10GSx7LMSvRmjMXFGpxT30g8rZzq9r/p/WKdErA4WB4uxaKEX0P8AINfuN63i4luKdR+LoacgBhYw==", "cpu": [ "x64" ], @@ -4087,9 +4985,9 @@ } }, "node_modules/@next/swc-win32-arm64-msvc": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-12.1.0.tgz", - "integrity": "sha512-T/3gIE6QEfKIJ4dmJk75v9hhNiYZhQYAoYm4iVo1TgcsuaKLFa+zMPh4056AHiG6n9tn2UQ1CFE8EoybEsqsSw==", + "version": "12.0.8", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-12.0.8.tgz", + "integrity": "sha512-QuRe49jqCV61TysGopC1P0HPqFAMZMWe1nbIQLyOkDLkULmZR8N2eYZq7fwqvZE5YwhMmJA/grwWFVBqSEh5Kg==", "cpu": [ "arm64" ], @@ -4102,9 +5000,9 @@ } }, "node_modules/@next/swc-win32-ia32-msvc": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-12.1.0.tgz", - "integrity": "sha512-iwnKgHJdqhIW19H9PRPM9j55V6RdcOo6rX+5imx832BCWzkDbyomWnlzBfr6ByUYfhohb8QuH4hSGEikpPqI0Q==", + "version": "12.0.8", + "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-12.0.8.tgz", + "integrity": "sha512-0RV3/julybJr1IlPCowIWrJJZyAl+sOakJEM15y1NOOsbwTQ5eKZZXSi+7e23TN4wmy5HwNvn2dKzgOEVJ+jbA==", "cpu": [ "ia32" ], @@ -4117,9 +5015,9 @@ } }, "node_modules/@next/swc-win32-x64-msvc": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-12.1.0.tgz", - "integrity": "sha512-aBvcbMwuanDH4EMrL2TthNJy+4nP59Bimn8egqv6GHMVj0a44cU6Au4PjOhLNqEh9l+IpRGBqMTzec94UdC5xg==", + "version": "12.0.8", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-12.0.8.tgz", + "integrity": "sha512-tTga6OFfO2JS+Yt5hdryng259c/tzNgSWkdiU2E+RBHiysAIOta57n4PJ8iPahOSqEqjaToPI76wM+o441GaNQ==", "cpu": [ "x64" ], @@ -4174,9 +5072,9 @@ } }, "node_modules/@npmcli/fs/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==", + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -4213,62 +5111,6 @@ "node": ">=10" } }, - "node_modules/@octokit/endpoint": { - "version": "6.0.12", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.12.tgz", - "integrity": "sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA==", - "dependencies": { - "@octokit/types": "^6.0.3", - "is-plain-object": "^5.0.0", - "universal-user-agent": "^6.0.0" - } - }, - "node_modules/@octokit/graphql": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.8.0.tgz", - "integrity": "sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg==", - "dependencies": { - "@octokit/request": "^5.6.0", - "@octokit/types": "^6.0.3", - "universal-user-agent": "^6.0.0" - } - }, - "node_modules/@octokit/openapi-types": { - "version": "12.11.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz", - "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==" - }, - "node_modules/@octokit/request": { - "version": "5.6.3", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.6.3.tgz", - "integrity": "sha512-bFJl0I1KVc9jYTe9tdGGpAMPy32dLBXXo1dS/YwSCTL/2nd9XeHsY616RE3HPXDVk+a+dBuzyz5YdlXwcDTr2A==", - "dependencies": { - "@octokit/endpoint": "^6.0.1", - "@octokit/request-error": "^2.1.0", - "@octokit/types": "^6.16.1", - "is-plain-object": "^5.0.0", - "node-fetch": "^2.6.7", - "universal-user-agent": "^6.0.0" - } - }, - "node_modules/@octokit/request-error": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz", - "integrity": "sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==", - "dependencies": { - "@octokit/types": "^6.0.3", - "deprecation": "^2.0.0", - "once": "^1.4.0" - } - }, - "node_modules/@octokit/types": { - "version": "6.41.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", - "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", - "dependencies": { - "@octokit/openapi-types": "^12.11.0" - } - }, "node_modules/@pmmmwh/react-refresh-webpack-plugin": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.7.tgz", @@ -5803,23 +6645,11 @@ } }, "node_modules/@storybook/builder-webpack4/node_modules/@types/node": { - "version": "16.11.59", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.59.tgz", - "integrity": "sha512-6u+36Dj3aDzhfBVUf/mfmc92OEdzQ2kx2jcXGdigfl70E/neV21ZHE6UCz4MDzTRcVqGAM27fk+DLXvyDsn3Jw==", + "version": "16.11.64", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.64.tgz", + "integrity": "sha512-z5hPTlVFzNwtJ2LNozTpJcD1Cu44c4LNuzaq1mwxmiHWQh2ULdR6Vjwo1UGldzRpzL0yUEdZddnfqGW2G70z6Q==", "dev": true }, - "node_modules/@storybook/builder-webpack4/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/@storybook/builder-webpack4/node_modules/autoprefixer": { "version": "9.8.8", "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.8.tgz", @@ -5863,44 +6693,6 @@ "node": ">=0.10.0" } }, - "node_modules/@storybook/builder-webpack4/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/@storybook/builder-webpack4/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/@storybook/builder-webpack4/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/@storybook/builder-webpack4/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/@storybook/builder-webpack4/node_modules/fill-range": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", @@ -5935,15 +6727,6 @@ "yarn": ">=1.0.0" } }, - "node_modules/@storybook/builder-webpack4/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/@storybook/builder-webpack4/node_modules/is-extendable": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", @@ -6061,18 +6844,6 @@ "semver": "bin/semver" } }, - "node_modules/@storybook/builder-webpack4/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/@storybook/builder-webpack4/node_modules/to-regex-range": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", @@ -6374,11 +7145,26 @@ } }, "node_modules/@storybook/core-common/node_modules/@types/node": { - "version": "16.11.59", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.59.tgz", - "integrity": "sha512-6u+36Dj3aDzhfBVUf/mfmc92OEdzQ2kx2jcXGdigfl70E/neV21ZHE6UCz4MDzTRcVqGAM27fk+DLXvyDsn3Jw==", + "version": "16.11.64", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.64.tgz", + "integrity": "sha512-z5hPTlVFzNwtJ2LNozTpJcD1Cu44c4LNuzaq1mwxmiHWQh2ULdR6Vjwo1UGldzRpzL0yUEdZddnfqGW2G70z6Q==", "dev": true }, + "node_modules/@storybook/core-common/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/@storybook/core-common/node_modules/babel-plugin-polyfill-corejs3": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.1.7.tgz", @@ -6392,6 +7178,61 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@storybook/core-common/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/@storybook/core-common/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/@storybook/core-common/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/@storybook/core-common/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/@storybook/core-common/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/@storybook/core-events": { "version": "6.5.12", "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.5.12.tgz", @@ -6478,11 +7319,26 @@ } }, "node_modules/@storybook/core-server/node_modules/@types/node": { - "version": "16.11.59", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.59.tgz", - "integrity": "sha512-6u+36Dj3aDzhfBVUf/mfmc92OEdzQ2kx2jcXGdigfl70E/neV21ZHE6UCz4MDzTRcVqGAM27fk+DLXvyDsn3Jw==", + "version": "16.11.64", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.64.tgz", + "integrity": "sha512-z5hPTlVFzNwtJ2LNozTpJcD1Cu44c4LNuzaq1mwxmiHWQh2ULdR6Vjwo1UGldzRpzL0yUEdZddnfqGW2G70z6Q==", "dev": true }, + "node_modules/@storybook/core-server/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/@storybook/core-server/node_modules/array-union": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", @@ -6492,6 +7348,40 @@ "node": ">=8" } }, + "node_modules/@storybook/core-server/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/@storybook/core-server/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/@storybook/core-server/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/@storybook/core-server/node_modules/globby": { "version": "11.1.0", "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", @@ -6512,6 +7402,27 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@storybook/core-server/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/@storybook/core-server/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/@storybook/csf": { "version": "0.0.2--canary.4566f4d.1", "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.0.2--canary.4566f4d.1.tgz", @@ -6648,11 +7559,81 @@ } }, "node_modules/@storybook/manager-webpack4/node_modules/@types/node": { - "version": "16.11.59", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.59.tgz", - "integrity": "sha512-6u+36Dj3aDzhfBVUf/mfmc92OEdzQ2kx2jcXGdigfl70E/neV21ZHE6UCz4MDzTRcVqGAM27fk+DLXvyDsn3Jw==", + "version": "16.11.64", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.64.tgz", + "integrity": "sha512-z5hPTlVFzNwtJ2LNozTpJcD1Cu44c4LNuzaq1mwxmiHWQh2ULdR6Vjwo1UGldzRpzL0yUEdZddnfqGW2G70z6Q==", "dev": true }, + "node_modules/@storybook/manager-webpack4/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/@storybook/manager-webpack4/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/@storybook/manager-webpack4/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/@storybook/manager-webpack4/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/@storybook/manager-webpack4/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/@storybook/manager-webpack4/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/@storybook/mdx1-csf": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/@storybook/mdx1-csf/-/mdx1-csf-0.0.1.tgz", @@ -6672,6 +7653,153 @@ "ts-dedent": "^2.0.0" } }, + "node_modules/@storybook/mdx1-csf/node_modules/@babel/core": { + "version": "7.12.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.9.tgz", + "integrity": "sha512-gTXYh3M5wb7FRXQy+FErKFAv90BnlOuNn1QkCK2lREoPAjrQCO49+HVSrFoe5uakFAF5eenS75KbO2vQiLrTMQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.12.5", + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helpers": "^7.12.5", + "@babel/parser": "^7.12.7", + "@babel/template": "^7.12.7", + "@babel/traverse": "^7.12.9", + "@babel/types": "^7.12.7", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.2", + "lodash": "^4.17.19", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@storybook/mdx1-csf/node_modules/@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", + "dev": true + }, + "node_modules/@storybook/mdx1-csf/node_modules/@babel/plugin-proposal-object-rest-spread": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz", + "integrity": "sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-transform-parameters": "^7.12.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@storybook/mdx1-csf/node_modules/@babel/plugin-syntax-jsx": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.1.tgz", + "integrity": "sha512-1yRi7yAtB0ETgxdY9ti/p2TivUxJkTdhu/ZbF9MshVGqOx1TdB3b7xCXs49Fupgg50N45KcAsRP/ZqWjs9SRjg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@storybook/mdx1-csf/node_modules/@mdx-js/mdx": { + "version": "1.6.22", + "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-1.6.22.tgz", + "integrity": "sha512-AMxuLxPz2j5/6TpF/XSdKpQP1NlG0z11dFOlq+2IP/lSgl11GY8ji6S/rgsViN/L0BDvHvUMruRb7ub+24LUYA==", + "dev": true, + "dependencies": { + "@babel/core": "7.12.9", + "@babel/plugin-syntax-jsx": "7.12.1", + "@babel/plugin-syntax-object-rest-spread": "7.8.3", + "@mdx-js/util": "1.6.22", + "babel-plugin-apply-mdx-type-prop": "1.6.22", + "babel-plugin-extract-import-names": "1.6.22", + "camelcase-css": "2.0.1", + "detab": "2.0.4", + "hast-util-raw": "6.0.1", + "lodash.uniq": "4.5.0", + "mdast-util-to-hast": "10.0.1", + "remark-footnotes": "2.0.0", + "remark-mdx": "1.6.22", + "remark-parse": "8.0.3", + "remark-squeeze-paragraphs": "4.0.0", + "style-to-object": "0.3.0", + "unified": "9.2.0", + "unist-builder": "2.0.3", + "unist-util-visit": "2.0.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@storybook/mdx1-csf/node_modules/ccount": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-1.1.0.tgz", + "integrity": "sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/@storybook/mdx1-csf/node_modules/is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", + "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" + } + ], + "engines": { + "node": ">=4" + } + }, + "node_modules/@storybook/mdx1-csf/node_modules/mdast-util-to-hast": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-10.0.1.tgz", + "integrity": "sha512-BW3LM9SEMnjf4HXXVApZMt8gLQWVNXc3jryK0nJu/rOXPOnlkUjmdkDlmxMirpbU9ILncGFIwLH/ubnWBbcdgA==", + "dev": true, + "dependencies": { + "@types/mdast": "^3.0.0", + "@types/unist": "^2.0.0", + "mdast-util-definitions": "^4.0.0", + "mdurl": "^1.0.0", + "unist-builder": "^2.0.0", + "unist-util-generated": "^1.0.0", + "unist-util-position": "^3.0.0", + "unist-util-visit": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/@storybook/mdx1-csf/node_modules/prettier": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.3.0.tgz", @@ -6684,6 +7812,225 @@ "node": ">=10.13.0" } }, + "node_modules/@storybook/mdx1-csf/node_modules/remark-mdx": { + "version": "1.6.22", + "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-1.6.22.tgz", + "integrity": "sha512-phMHBJgeV76uyFkH4rvzCftLfKCr2RZuF+/gmVcaKrpsihyzmhXjA0BEMDaPTXG5y8qZOKPVo83NAOX01LPnOQ==", + "dev": true, + "dependencies": { + "@babel/core": "7.12.9", + "@babel/helper-plugin-utils": "7.10.4", + "@babel/plugin-proposal-object-rest-spread": "7.12.1", + "@babel/plugin-syntax-jsx": "7.12.1", + "@mdx-js/util": "1.6.22", + "is-alphabetical": "1.0.4", + "remark-parse": "8.0.3", + "unified": "9.2.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@storybook/mdx1-csf/node_modules/remark-parse": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-8.0.3.tgz", + "integrity": "sha512-E1K9+QLGgggHxCQtLt++uXltxEprmWzNfg+MxpfHsZlrddKzZ/hZyWHDbK3/Ap8HJQqYJRXP+jHczdL6q6i85Q==", + "dev": true, + "dependencies": { + "ccount": "^1.0.0", + "collapse-white-space": "^1.0.2", + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-whitespace-character": "^1.0.0", + "is-word-character": "^1.0.0", + "markdown-escapes": "^1.0.0", + "parse-entities": "^2.0.0", + "repeat-string": "^1.5.4", + "state-toggle": "^1.0.0", + "trim": "0.0.1", + "trim-trailing-lines": "^1.0.0", + "unherit": "^1.0.4", + "unist-util-remove-position": "^2.0.0", + "vfile-location": "^3.0.0", + "xtend": "^4.0.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@storybook/mdx1-csf/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/@storybook/mdx1-csf/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@storybook/mdx1-csf/node_modules/unified": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.0.tgz", + "integrity": "sha512-vx2Z0vY+a3YoTj8+pttM3tiJHCwY5UFbYdiWrwBEbHmK8pvsPj2rtAX2BFfgXen8T39CJWblWRDT4L5WGXtDdg==", + "dev": true, + "dependencies": { + "bail": "^1.0.0", + "extend": "^3.0.0", + "is-buffer": "^2.0.0", + "is-plain-obj": "^2.0.0", + "trough": "^1.0.0", + "vfile": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@storybook/mdx1-csf/node_modules/unist-builder": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-builder/-/unist-builder-2.0.3.tgz", + "integrity": "sha512-f98yt5pnlMWlzP539tPc4grGMsFaQQlP/vM396b00jngsiINumNmsY8rkXjfoi1c6QaM8nQ3vaGDuoKWbe/1Uw==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@storybook/mdx1-csf/node_modules/unist-util-generated": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-1.1.6.tgz", + "integrity": "sha512-cln2Mm1/CZzN5ttGK7vkoGw+RZ8VcUH6BtGbq98DDtRGquAAOXig1mrBQYelOwMXYS8rK+vZDyyojSjp7JX+Lg==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@storybook/mdx1-csf/node_modules/unist-util-is": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", + "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@storybook/mdx1-csf/node_modules/unist-util-position": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-3.1.0.tgz", + "integrity": "sha512-w+PkwCbYSFw8vpgWD0v7zRCl1FpY3fjDSQ3/N/wNd9Ffa4gPi8+4keqt99N3XW6F99t/mUzp2xAhNmfKWp95QA==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@storybook/mdx1-csf/node_modules/unist-util-remove-position": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-2.0.1.tgz", + "integrity": "sha512-fDZsLYIe2uT+oGFnuZmy73K6ZxOPG/Qcm+w7jbEjaFcJgbQ6cqjs/eSPzXhsmGpAsWPkqZM9pYjww5QTn3LHMA==", + "dev": true, + "dependencies": { + "unist-util-visit": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@storybook/mdx1-csf/node_modules/unist-util-stringify-position": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", + "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@storybook/mdx1-csf/node_modules/unist-util-visit": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz", + "integrity": "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0", + "unist-util-visit-parents": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@storybook/mdx1-csf/node_modules/unist-util-visit-parents": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz", + "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@storybook/mdx1-csf/node_modules/vfile": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz", + "integrity": "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "is-buffer": "^2.0.0", + "unist-util-stringify-position": "^2.0.0", + "vfile-message": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@storybook/mdx1-csf/node_modules/vfile-location": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-3.2.0.tgz", + "integrity": "sha512-aLEIZKv/oxuCDZ8lkJGhuhztf/BW4M+iHdCwglA/eWc+vtuRFJj8EtgceYFX4LRjOhCAAiNHsKGssC6onJ+jbA==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@storybook/mdx1-csf/node_modules/vfile-message": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz", + "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/@storybook/node-logger": { "version": "6.5.12", "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-6.5.12.tgz", @@ -6701,6 +8048,21 @@ "url": "https://opencollective.com/storybook" } }, + "node_modules/@storybook/node-logger/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/@storybook/node-logger/node_modules/are-we-there-yet": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", @@ -6714,6 +8076,40 @@ "node": ">=10" } }, + "node_modules/@storybook/node-logger/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/@storybook/node-logger/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/@storybook/node-logger/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/@storybook/node-logger/node_modules/gauge": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", @@ -6734,6 +8130,15 @@ "node": ">=10" } }, + "node_modules/@storybook/node-logger/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/@storybook/node-logger/node_modules/npmlog": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", @@ -6760,6 +8165,18 @@ "node": ">= 6" } }, + "node_modules/@storybook/node-logger/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/@storybook/postinstall": { "version": "6.5.12", "resolved": "https://registry.npmjs.org/@storybook/postinstall/-/postinstall-6.5.12.tgz", @@ -7002,9 +8419,9 @@ } }, "node_modules/@storybook/react/node_modules/@types/node": { - "version": "16.11.59", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.59.tgz", - "integrity": "sha512-6u+36Dj3aDzhfBVUf/mfmc92OEdzQ2kx2jcXGdigfl70E/neV21ZHE6UCz4MDzTRcVqGAM27fk+DLXvyDsn3Jw==", + "version": "16.11.64", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.64.tgz", + "integrity": "sha512-z5hPTlVFzNwtJ2LNozTpJcD1Cu44c4LNuzaq1mwxmiHWQh2ULdR6Vjwo1UGldzRpzL0yUEdZddnfqGW2G70z6Q==", "dev": true }, "node_modules/@storybook/router": { @@ -7189,6 +8606,76 @@ "url": "https://opencollective.com/storybook" } }, + "node_modules/@storybook/telemetry/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/@storybook/telemetry/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/@storybook/telemetry/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/@storybook/telemetry/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/@storybook/telemetry/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/@storybook/telemetry/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/@storybook/testing-library": { "version": "0.0.9", "resolved": "https://registry.npmjs.org/@storybook/testing-library/-/testing-library-0.0.9.tgz", @@ -7253,22 +8740,22 @@ } }, "node_modules/@stripe/react-stripe-js": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/@stripe/react-stripe-js/-/react-stripe-js-1.10.0.tgz", - "integrity": "sha512-vuIjJUZJ3nyiaGa5z5iyMCzZfGGsgzOOjWjqknbbhkNsewyyginfeky9EZLSz9+iSAsgC9K6MeNOTLKVGcMycQ==", + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/@stripe/react-stripe-js/-/react-stripe-js-1.12.0.tgz", + "integrity": "sha512-LW/f/slRq8x0y99qFjlZirnIk+q0zQvNNRtidigvHfYSbHji4QdtKDMD/HfYmtriPDRpIxOFilwsJ3ayPCC9Fw==", "dependencies": { "prop-types": "^15.7.2" }, "peerDependencies": { - "@stripe/stripe-js": "^1.34.0", + "@stripe/stripe-js": "^1.38.1", "react": "^16.8.0 || ^17.0.0 || ^18.0.0", "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, "node_modules/@stripe/stripe-js": { - "version": "1.37.0", - "resolved": "https://registry.npmjs.org/@stripe/stripe-js/-/stripe-js-1.37.0.tgz", - "integrity": "sha512-khoaEqpvQUwEz/PyeKiiOGfzzhX8i009BJNTXjkkUpT2uCjnemo2JyFPCyHGszViqTSpDbFXeNIGIv+dtvd+9g==" + "version": "1.38.1", + "resolved": "https://registry.npmjs.org/@stripe/stripe-js/-/stripe-js-1.38.1.tgz", + "integrity": "sha512-v0hF65jEs7tw33JE70E5puJ2fFhpiS2XYwmayupEdjKWavJivycYcZgZKYXAQhTiMgtDgN9YPzqUr86VzVc3Ew==" }, "node_modules/@supabase/auth-ui-react": { "version": "0.1.8", @@ -7289,19 +8776,19 @@ } }, "node_modules/@supabase/functions-js": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/@supabase/functions-js/-/functions-js-1.3.4.tgz", - "integrity": "sha512-yYVgkECjv7IZEBKBI3EB5Q7R1p0FJ10g8Q9N7SWKIHUU6i6DnbEGHIMFLyQRm1hmiNWD8fL7bRVEYacmTRJhHw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@supabase/functions-js/-/functions-js-2.0.0.tgz", + "integrity": "sha512-ozb7bds2yvf5k7NM2ZzUkxvsx4S4i2eRKFSJetdTADV91T65g4gCzEs9L3LUXSrghcGIkUaon03VPzOrFredqg==", "dependencies": { "cross-fetch": "^3.1.5" } }, "node_modules/@supabase/gotrue-js": { - "version": "1.22.22", - "resolved": "https://registry.npmjs.org/@supabase/gotrue-js/-/gotrue-js-1.22.22.tgz", - "integrity": "sha512-exbCopLo4tLawKZR25wEdipm+IRVujuqFRR4h2wiXd11YA+N8rfgg/4S4L6BTFHmzV+KMjy0kDF3yMbsjIR/xA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@supabase/gotrue-js/-/gotrue-js-2.0.1.tgz", + "integrity": "sha512-PCzHeFhz33lPWLZT+UiVDpGkZQI3K1wwhkhgAjvJdkyCbwK5u+LWWUzz0AX66bGGLpg1IYQIP7oz8V68XVjzMA==", "dependencies": { - "cross-fetch": "^3.0.6" + "cross-fetch": "^3.1.5" } }, "node_modules/@supabase/postgres-meta": { @@ -7319,9 +8806,9 @@ } }, "node_modules/@supabase/postgrest-js": { - "version": "0.37.4", - "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-0.37.4.tgz", - "integrity": "sha512-x+c2rk1fz9s6f1PrGxCJ0QTUgXPDI0G3ngIqD5sSiXhhCyfl8Q5V92mXl2EYtlDhkiUkjFNrOZFhXVbXOHgvDw==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-1.0.0.tgz", + "integrity": "sha512-MRR4g8dThgSnlnjkL2Jvc6gS73W68hLq48/Q245CLvUPt3KtOh3WXpvo4rZDEDHYVkyVga+L9IQixo6YTsjMQg==", "dependencies": { "cross-fetch": "^3.1.5" } @@ -7347,37 +8834,38 @@ } }, "node_modules/@supabase/realtime-js": { - "version": "1.7.5", - "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-1.7.5.tgz", - "integrity": "sha512-nXuoxt7NE1NTI+G8WBim1K2gkUC8YE3e9evBUG+t6xwd9Sq+sSOrjcE0qJ8/Y631BCnLzlhX6yhFYQFh1oQDOg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-2.0.0.tgz", + "integrity": "sha512-DJVt5Z76pik3Fxt1es4fmquq6GrwR3nLqcb2Q6VpHXSudtixML0Cyxsu0DPzxa6ruSQrO9s08s0OQgwaIA1C0Q==", "dependencies": { "@types/phoenix": "^1.5.4", "websocket": "^1.0.34" } }, "node_modules/@supabase/shared-types": { - "version": "0.1.27", - "resolved": "https://registry.npmjs.org/@supabase/shared-types/-/shared-types-0.1.27.tgz", - "integrity": "sha512-65obkZ4A+6R5RAP1oZwPvQAs/lLX2LUNRvYOlz58D4vUocZt2hrUqhCHnCettI7+Wd1rcYTHhulKVcGGugsEIA==" + "version": "0.1.29", + "resolved": "https://registry.npmjs.org/@supabase/shared-types/-/shared-types-0.1.29.tgz", + "integrity": "sha512-CQEr/dKLNt3+du3xhpqohO3fkVFCLL+v92Vgj51cECpAv3LIkkxGKNNc+SXsG+niDxMZp9EuyDLo7fGzsB8f6w==" }, "node_modules/@supabase/storage-js": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/@supabase/storage-js/-/storage-js-1.7.3.tgz", - "integrity": "sha512-jnIZWqOc9TGclOozgX9v/RWGFCgJAyW/yvmauexgRZhWknUXoA4b2i8tj7vfwE0WTvNRuA5JpXID98rfJeSG7Q==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@supabase/storage-js/-/storage-js-2.0.0.tgz", + "integrity": "sha512-7kXThdRt/xqnOOvZZxBqNkeX1CFNUWc0hYBJtNN/Uvt8ok9hD14foYmroWrHn046wEYFqUrB9U35JYsfTrvltA==", "dependencies": { - "cross-fetch": "^3.1.0" + "cross-fetch": "^3.1.5" } }, "node_modules/@supabase/supabase-js": { - "version": "1.35.7", - "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-1.35.7.tgz", - "integrity": "sha512-X+qCzmj5sH0dozagbLoK7LzysBaWoivO0gsAUAPPBQkQupQWuBfaOqG18gKhlfL0wp2PL888QzhQNScp/IwUfA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.0.0.tgz", + "integrity": "sha512-8nNMXYzBlQVSDONFaNgyyxsAdUY+C9Q/7vEDYDdTFTyC3i+luXTDOSjHMLcjIky/+x5rIAcNQqqIJ48HJUluXA==", "dependencies": { - "@supabase/functions-js": "^1.3.4", - "@supabase/gotrue-js": "^1.22.21", - "@supabase/postgrest-js": "^0.37.4", - "@supabase/realtime-js": "^1.7.5", - "@supabase/storage-js": "^1.7.2" + "@supabase/functions-js": "^2.0.0", + "@supabase/gotrue-js": "^2.0.1", + "@supabase/postgrest-js": "^1.0.0", + "@supabase/realtime-js": "^2.0.0", + "@supabase/storage-js": "^2.0.0", + "cross-fetch": "^3.1.5" } }, "node_modules/@supabase/ui": { @@ -7440,18 +8928,19 @@ "tailwindcss": ">=3.0.0 || >= 3.0.0-alpha.1" } }, - "node_modules/@tailwindcss/typography": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@tailwindcss/typography/-/typography-0.4.1.tgz", - "integrity": "sha512-ovPPLUhs7zAIJfr0y1dbGlyCuPhpuv/jpBoFgqAc658DWGGrOBWBMpAWLw2KlzbNeVk4YBJMzue1ekvIbdw6XA==", + "node_modules/@testdeck/core": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@testdeck/core/-/core-0.2.1.tgz", + "integrity": "sha512-eMO5LKxCN8/fST2RTrxo6+1rmwT4ZGN3giwaEeD94d8o4FoHk5Xp1SWGZeqYu/M8jfHpCN2MTKQO9viIBPVBAQ==", + "dev": true + }, + "node_modules/@testdeck/jest": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@testdeck/jest/-/jest-0.2.1.tgz", + "integrity": "sha512-y/AwMEac1vZGZyrIj6LKZ4yoZk4ChL2G8fsbCPPeoeXfl7WNBNm739KDhcGOxsjJDhKCfxyt+RIso3RrsmqzVw==", + "dev": true, "dependencies": { - "lodash.castarray": "^4.4.0", - "lodash.isplainobject": "^4.0.6", - "lodash.merge": "^4.6.2", - "lodash.uniq": "^4.5.0" - }, - "peerDependencies": { - "tailwindcss": ">=2.0.0" + "@testdeck/core": "^0.2.0" } }, "node_modules/@testing-library/dom": { @@ -7473,6 +8962,76 @@ "node": ">=12" } }, + "node_modules/@testing-library/dom/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/@testing-library/dom/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/@testing-library/dom/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/@testing-library/dom/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/@testing-library/dom/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/@testing-library/dom/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/@testing-library/react": { "version": "12.1.5", "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-12.1.5.tgz", @@ -7511,10 +9070,35 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "dev": true, "engines": { "node": ">= 6" } }, + "node_modules/@tsconfig/node10": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", + "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", + "devOptional": true + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "devOptional": true + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "devOptional": true + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", + "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", + "devOptional": true + }, "node_modules/@types/acorn": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/@types/acorn/-/acorn-4.0.6.tgz", @@ -7523,6 +9107,12 @@ "@types/estree": "*" } }, + "node_modules/@types/allure-js-commons": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/@types/allure-js-commons/-/allure-js-commons-0.0.1.tgz", + "integrity": "sha512-PuKCD4zeoF7Z6tKP0paOKmiMv3zXP2fKj/NiUylxDwBV1AL0PsD6AsbkieuEuRfbFUbG4C28RnmcSu9rPMWWjQ==", + "dev": true + }, "node_modules/@types/aria-query": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-4.2.2.tgz", @@ -7562,9 +9152,9 @@ } }, "node_modules/@types/babel__traverse": { - "version": "7.18.1", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.1.tgz", - "integrity": "sha512-FSdLaZh2UxaMuLp9lixWaHq/golWTRWOnRsAXzDTDSDOQLuZb1nsdCt6pJSPWSEQt2eFZ2YVk3oYhn+1kLMeMA==", + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.2.tgz", + "integrity": "sha512-FcFaxOr2V5KZCviw1TnutEMVUVsGt4D2hP1TAfXZAMKuHYW3xQhe3jTxNPWutgCJ3/X1c5yX8ZoGVEItxKbwBg==", "dev": true, "dependencies": { "@babel/types": "^7.3.0" @@ -7730,67 +9320,19 @@ } }, "node_modules/@types/jest": { - "version": "25.2.3", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-25.2.3.tgz", - "integrity": "sha512-JXc1nK/tXHiDhV55dvfzqtmP4S3sy3T3ouV2tkViZgxY/zeUkcpQcQPGRlgF4KmWzWW5oiWYSZwtCB+2RsE4Fw==", + "version": "27.5.2", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.5.2.tgz", + "integrity": "sha512-mpT8LJJ4CMeeahobofYWIjFo0xonRS/HfxnVEPMPFSQdGUt1uHCnoPT7Zhb+sjDU2wz0oKV0OLUR0WzrHNgfeA==", "dev": true, "dependencies": { - "jest-diff": "^25.2.1", - "pretty-format": "^25.2.1" + "jest-matcher-utils": "^27.0.0", + "pretty-format": "^27.0.0" } }, - "node_modules/@types/jest/node_modules/@jest/types": { - "version": "25.5.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-25.5.0.tgz", - "integrity": "sha512-OXD0RgQ86Tu3MazKo8bnrkDRaDXXMGUqd+kTtLtK1Zb7CRzQcaSRPPPV37SvYTdevXEBVxe0HXylEjs8ibkmCw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^15.0.0", - "chalk": "^3.0.0" - }, - "engines": { - "node": ">= 8.3" - } - }, - "node_modules/@types/jest/node_modules/@types/istanbul-reports": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz", - "integrity": "sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "*", - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/@types/jest/node_modules/chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@types/jest/node_modules/pretty-format": { - "version": "25.5.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-25.5.0.tgz", - "integrity": "sha512-kbo/kq2LQ/A/is0PQwsEHM7Ca6//bGPPvU6UnsdDRSKTWxT/ru/xb88v4BJf6a69H+uTytOEsTusT9ksd/1iWQ==", - "dev": true, - "dependencies": { - "@jest/types": "^25.5.0", - "ansi-regex": "^5.0.0", - "ansi-styles": "^4.0.0", - "react-is": "^16.12.0" - }, - "engines": { - "node": ">= 8.3" - } + "node_modules/@types/js-yaml": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.5.tgz", + "integrity": "sha512-FhpRzf927MNQdRZP0J5DLIdTXhjLYzeUTmLAu69mnVksLH9CJY3IuSeEgbKUki7GQZm0WqDkGzyxju2EZGD2wA==" }, "node_modules/@types/json-logic-js": { "version": "1.2.1", @@ -7810,9 +9352,9 @@ "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==" }, "node_modules/@types/lodash": { - "version": "4.14.185", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.185.tgz", - "integrity": "sha512-evMDG1bC4rgQg4ku9tKpuMh5iBNEwNa3tf9zRHdP1qlv+1WUg44xat4IxCE14gIpZRGUUWAx2VhItCZc25NfMA==" + "version": "4.14.186", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.186.tgz", + "integrity": "sha512-eHcVlLXP0c2FlMPm56ITode2AgLMSa6aJ05JTTbYbI+7EMkCEE5qk2E41d5g2lCVTqRe0GnnRFurmlCsDODrPw==" }, "node_modules/@types/markdown-table": { "version": "3.0.0", @@ -7838,11 +9380,6 @@ "@types/unist": "*" } }, - "node_modules/@types/mdurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-1.0.2.tgz", - "integrity": "sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA==" - }, "node_modules/@types/mdx": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.2.tgz", @@ -7936,9 +9473,9 @@ "integrity": "sha512-L5eZmzw89eXBKkiqVBcJfU1QGx9y+wurRIEgt0cuLH0hwNtVUxtx+6cu0R2STwWj468sjXyBYPYDtGclUd1kjQ==" }, "node_modules/@types/prettier": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.0.tgz", - "integrity": "sha512-RI1L7N4JnW5gQw2spvL7Sllfuf1SaHdrZpCHiBlCXjIlufi1SMNnbu2teze3/QE67Fg2tBlH7W+mi4hVNk4p0A==", + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.1.tgz", + "integrity": "sha512-ri0UmynRRvZiiUJdiz38MmIblKK+oH30MztdBVR95dv/Ubw6neWSb8u1XpRb72L4qsZOhz+L+z9JD40SJmfWow==", "dev": true }, "node_modules/@types/pretty-hrtime": { @@ -8107,6 +9644,16 @@ "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", "dev": true }, + "node_modules/@types/strip-ansi": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/@types/strip-ansi/-/strip-ansi-5.2.1.tgz", + "integrity": "sha512-1l5iM0LBkVU8JXxnIoBqNvg+yyOXxPeN6DNoD+7A9AN1B8FhYPSeIXgyNqwIqg1uzipTgVC2hmuDzB0u9qw/PA==", + "deprecated": "This is a stub types definition. strip-ansi provides its own type definitions, so you do not need this installed.", + "dev": true, + "dependencies": { + "strip-ansi": "*" + } + }, "node_modules/@types/tapable": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/@types/tapable/-/tapable-1.0.8.tgz", @@ -8194,14 +9741,61 @@ "integrity": "sha512-3NoqvZC2W5gAC5DZbTpCeJ251vGQmgcWIHQJGq2J240HY6ErQ9aWKkwfoKJlHLx+A83WPNTZ9+3cd2ILxbvr1w==", "dev": true }, - "node_modules/@typescript-eslint/parser": { - "version": "5.38.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.38.0.tgz", - "integrity": "sha512-/F63giJGLDr0ms1Cr8utDAxP2SPiglaD6V+pCOcG35P2jCqdfR7uuEhz1GIC3oy4hkUF8xA1XSXmd9hOh/a5EA==", + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "5.39.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.39.0.tgz", + "integrity": "sha512-xVfKOkBm5iWMNGKQ2fwX5GVgBuHmZBO1tCRwXmY5oAIsPscfwm2UADDuNB8ZVYCtpQvJK4xpjrK7jEhcJ0zY9A==", + "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.38.0", - "@typescript-eslint/types": "5.38.0", - "@typescript-eslint/typescript-estree": "5.38.0", + "@typescript-eslint/scope-manager": "5.39.0", + "@typescript-eslint/type-utils": "5.39.0", + "@typescript-eslint/utils": "5.39.0", + "debug": "^4.3.4", + "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/eslint-plugin/node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "5.39.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.39.0.tgz", + "integrity": "sha512-PhxLjrZnHShe431sBAGHaNe6BDdxAASDySgsBCGxcBecVCi8NQWxQZMcizNA4g0pN51bBAn/FUfkWG3SDVcGlA==", + "dependencies": { + "@typescript-eslint/scope-manager": "5.39.0", + "@typescript-eslint/types": "5.39.0", + "@typescript-eslint/typescript-estree": "5.39.0", "debug": "^4.3.4" }, "engines": { @@ -8221,12 +9815,12 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "5.38.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.38.0.tgz", - "integrity": "sha512-ByhHIuNyKD9giwkkLqzezZ9y5bALW8VNY6xXcP+VxoH4JBDKjU5WNnsiD4HJdglHECdV+lyaxhvQjTUbRboiTA==", + "version": "5.39.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.39.0.tgz", + "integrity": "sha512-/I13vAqmG3dyqMVSZPjsbuNQlYS082Y7OMkwhCfLXYsmlI0ca4nkL7wJ/4gjX70LD4P8Hnw1JywUVVAwepURBw==", "dependencies": { - "@typescript-eslint/types": "5.38.0", - "@typescript-eslint/visitor-keys": "5.38.0" + "@typescript-eslint/types": "5.39.0", + "@typescript-eslint/visitor-keys": "5.39.0" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -8236,10 +9830,37 @@ "url": "https://opencollective.com/typescript-eslint" } }, + "node_modules/@typescript-eslint/type-utils": { + "version": "5.39.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.39.0.tgz", + "integrity": "sha512-KJHJkOothljQWzR3t/GunL0TPKY+fGJtnpl+pX+sJ0YiKTz3q2Zr87SGTmFqsCMFrLt5E0+o+S6eQY0FAXj9uA==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "5.39.0", + "@typescript-eslint/utils": "5.39.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.38.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.38.0.tgz", - "integrity": "sha512-HHu4yMjJ7i3Cb+8NUuRCdOGu2VMkfmKyIJsOr9PfkBVYLYrtMCK/Ap50Rpov+iKpxDTfnqvDbuPLgBE5FwUNfA==", + "version": "5.39.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.39.0.tgz", + "integrity": "sha512-gQMZrnfEBFXK38hYqt8Lkwt8f4U6yq+2H5VDSgP/qiTzC8Nw8JO3OuSUOQ2qW37S/dlwdkHDntkZM6SQhKyPhw==", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -8249,12 +9870,12 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.38.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.38.0.tgz", - "integrity": "sha512-6P0RuphkR+UuV7Avv7MU3hFoWaGcrgOdi8eTe1NwhMp2/GjUJoODBTRWzlHpZh6lFOaPmSvgxGlROa0Sg5Zbyg==", + "version": "5.39.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.39.0.tgz", + "integrity": "sha512-qLFQP0f398sdnogJoLtd43pUgB18Q50QSA+BTE5h3sUxySzbWDpTSdgt4UyxNSozY/oDK2ta6HVAzvGgq8JYnA==", "dependencies": { - "@typescript-eslint/types": "5.38.0", - "@typescript-eslint/visitor-keys": "5.38.0", + "@typescript-eslint/types": "5.39.0", + "@typescript-eslint/visitor-keys": "5.39.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -8302,9 +9923,9 @@ } }, "node_modules/@typescript-eslint/typescript-estree/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==", + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", "dependencies": { "lru-cache": "^6.0.0" }, @@ -8315,12 +9936,36 @@ "node": ">=10" } }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.38.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.38.0.tgz", - "integrity": "sha512-MxnrdIyArnTi+XyFLR+kt/uNAcdOnmT+879os7qDRI+EYySR4crXJq9BXPfRzzLGq0wgxkwidrCJ9WCAoacm1w==", + "node_modules/@typescript-eslint/utils": { + "version": "5.39.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.39.0.tgz", + "integrity": "sha512-+DnY5jkpOpgj+EBtYPyHRjXampJfC0yUZZzfzLuUWVZvCuKqSdJVC8UhdWipIw7VKNTfwfAPiOWzYkAwuIhiAg==", + "dev": true, "dependencies": { - "@typescript-eslint/types": "5.38.0", + "@types/json-schema": "^7.0.9", + "@typescript-eslint/scope-manager": "5.39.0", + "@typescript-eslint/types": "5.39.0", + "@typescript-eslint/typescript-estree": "5.39.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.39.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.39.0.tgz", + "integrity": "sha512-yyE3RPwOG+XJBLrhvsxAidUgybJVQ/hG8BhiJo0k8JSAYfk/CshVcxf0HwP4Jt7WZZ6vLmxdo1p6EyN3tzFTkg==", + "dependencies": { + "@typescript-eslint/types": "5.39.0", "eslint-visitor-keys": "^3.3.0" }, "engines": { @@ -8506,39 +10151,6 @@ "@xtuc/long": "4.2.2" } }, - "node_modules/@wry/context": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/@wry/context/-/context-0.6.1.tgz", - "integrity": "sha512-LOmVnY1iTU2D8tv4Xf6MVMZZ+juIJ87Kt/plMijjN20NMAXGmH4u8bS1t0uT74cZ5gwpocYueV58YwyI8y+GKw==", - "dependencies": { - "tslib": "^2.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@wry/equality": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/@wry/equality/-/equality-0.5.3.tgz", - "integrity": "sha512-avR+UXdSrsF2v8vIqIgmeTY0UR91UT+IyablCyKe/uk22uOJ8fusKZnH9JH9e1/EtLeNJBtagNmL3eJdnOV53g==", - "dependencies": { - "tslib": "^2.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@wry/trie": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@wry/trie/-/trie-0.3.2.tgz", - "integrity": "sha512-yRTyhWSls2OY/pYLfwff867r8ekooZ4UI+/gxot5Wj8EFwSf2rG+n+Mo/6LoLQm1TKA4GRj2+LCpbfS937dClQ==", - "dependencies": { - "tslib": "^2.3.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/@xtuc/ieee754": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", @@ -8554,7 +10166,8 @@ "node_modules/abab": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", - "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==" + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", + "dev": true }, "node_modules/accepts": { "version": "1.3.8", @@ -8584,6 +10197,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", + "dev": true, "dependencies": { "acorn": "^7.1.1", "acorn-walk": "^7.1.1" @@ -8697,10 +10311,37 @@ "ajv": ">=5.0.0" } }, - "node_modules/ajv/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==" + "node_modules/allure-commandline": { + "version": "2.18.1", + "resolved": "https://registry.npmjs.org/allure-commandline/-/allure-commandline-2.18.1.tgz", + "integrity": "sha512-bB0jY00yXxROgaTkC/PTFzmT0sVuHGiOhm80onO+N/tr5MF3eQrBkwTOdvuefEWJ1NTACutvmzZSYn8o6W2evA==", + "dev": true, + "bin": { + "allure": "bin/allure" + } + }, + "node_modules/allure-js-commons": { + "version": "2.0.0-beta.19", + "resolved": "https://registry.npmjs.org/allure-js-commons/-/allure-js-commons-2.0.0-beta.19.tgz", + "integrity": "sha512-sgt7TnU7s8QIzEOmLFO0T5ih4W2YbLrcsL1ElO7WN/dPzIww4G1BBJQDK98VCS+cG5qIljBYRuJ+rtzKWgtM8A==", + "dev": true, + "dependencies": { + "mkdirp": "^1.0.4", + "properties": "^1.2.1", + "uuid": "^8.3.0" + } + }, + "node_modules/allure-js-commons/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } }, "node_modules/analytics-node": { "version": "3.5.0", @@ -8805,17 +10446,14 @@ } }, "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==", + "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==", "dependencies": { - "color-convert": "^2.0.1" + "color-convert": "^1.9.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=4" } }, "node_modules/ansi-to-html": { @@ -8879,10 +10517,12 @@ "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==" }, "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 + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dependencies": { + "sprintf-js": "~1.0.2" + } }, "node_modules/aria-hidden": { "version": "1.2.1", @@ -9161,6 +10801,14 @@ "node": ">=8" } }, + "node_modules/astring": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/astring/-/astring-1.8.3.tgz", + "integrity": "sha512-sRpyiNrx2dEYIMmUXprS8nlpRg2Drs8m9ElX9vVEXaCB4XEAJhKfs7IcX0IwShjuOAjLR6wzIrgoptz1n19i1A==", + "bin": { + "astring": "bin/astring" + } + }, "node_modules/async-each": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", @@ -9171,7 +10819,8 @@ "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true }, "node_modules/at-least-node": { "version": "1.0.0", @@ -9373,6 +11022,64 @@ "@types/yargs-parser": "*" } }, + "node_modules/babel-jest/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/babel-jest/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/babel-jest/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/babel-jest/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/babel-jest/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/babel-jest/node_modules/jest-haste-map": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", @@ -9438,6 +11145,18 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, + "node_modules/babel-jest/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/babel-loader": { "version": "8.2.5", "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.5.tgz", @@ -9512,6 +11231,12 @@ "node": ">=8" } }, + "node_modules/babel-loader/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/babel-loader/node_modules/locate-path": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", @@ -9627,6 +11352,7 @@ "version": "2.3.3", "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "dev": true, "dependencies": { "object.assign": "^4.1.0" } @@ -9698,6 +11424,7 @@ "version": "0.3.3", "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz", "integrity": "sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==", + "dev": true, "dependencies": { "@babel/compat-data": "^7.17.7", "@babel/helper-define-polyfill-provider": "^0.3.3", @@ -9711,6 +11438,7 @@ "version": "0.6.0", "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz", "integrity": "sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==", + "dev": true, "dependencies": { "@babel/helper-define-polyfill-provider": "^0.3.3", "core-js-compat": "^3.25.1" @@ -9723,6 +11451,7 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz", "integrity": "sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==", + "dev": true, "dependencies": { "@babel/helper-define-polyfill-provider": "^0.3.3" }, @@ -10011,6 +11740,21 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/boxen/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/boxen/node_modules/camelcase": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", @@ -10023,6 +11767,61 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/boxen/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/boxen/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/boxen/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/boxen/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/boxen/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/bplist-parser": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.1.1.tgz", @@ -10062,7 +11861,8 @@ "node_modules/browser-process-hrtime": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", - "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==" + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", + "dev": true }, "node_modules/browserify-aes": { "version": "1.2.0", @@ -10476,9 +12276,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001409", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001409.tgz", - "integrity": "sha512-V0mnJ5dwarmhYv8/MzhJ//aW68UpvnQBXv8lJ2QUsvn2pHcmAuNtu8hQEDz37XnA1iE+lRR9CIfGWWpgJ5QedQ==", + "version": "1.0.30001418", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001418.tgz", + "integrity": "sha512-oIs7+JL3K9JRQ3jPZjlH6qyYDp+nBTCais7hjh0s+fuBwufc7uZ7hPYMXrDOJhV360KGMTcczMRObk0/iMqZRg==", "funding": [ { "type": "opencollective", @@ -10512,27 +12312,25 @@ } }, "node_modules/ccount": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/ccount/-/ccount-1.1.0.tgz", - "integrity": "sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", + "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" } }, "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=4" } }, "node_modules/char-regex": { @@ -10545,18 +12343,18 @@ } }, "node_modules/character-entities": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", - "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", + "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" } }, "node_modules/character-entities-html4": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-1.1.4.tgz", - "integrity": "sha512-HRcDxZuZqMx3/a+qrzxdBKBPUpxWEq9xw2OPZ3a/174ihfrQKVsFhqtthBInFy1zZ9GgZyFXOatNujm8M+El3g==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", + "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -10932,20 +12730,17 @@ } }, "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==", + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" + "color-name": "1.1.3" } }, "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==" + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" }, "node_modules/color-support": { "version": "1.1.3", @@ -10965,6 +12760,7 @@ "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, "dependencies": { "delayed-stream": "~1.0.0" }, @@ -10973,9 +12769,9 @@ } }, "node_modules/comma-separated-tokens": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz", - "integrity": "sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.2.tgz", + "integrity": "sha512-G5yTt3KQN4Yn7Yk4ed73hlZ1evrFKXeUW3086p3PRFNp7m2vIjI6Pg+Kgb+oyzhd9F2qdcoj67+y3SdxL5XWsg==", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -11230,9 +13026,9 @@ } }, "node_modules/core-js": { - "version": "3.25.2", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.25.2.tgz", - "integrity": "sha512-YB4IAT1bjEfxTJ1XYy11hJAKskO+qmhuDBM8/guIfMz4JvdsAQAqvyb97zXX7JgSrfPLG5mRGFWJwJD39ruq2A==", + "version": "3.25.5", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.25.5.tgz", + "integrity": "sha512-nbm6eZSjm+ZuBQxCUPQKQCoUEfFOXjUZ8dTTyikyKaWrTYmAVbykQfwsKE5dBK88u3QCkCrzsx/PPlKfhsvgpw==", "dev": true, "hasInstallScript": true, "funding": { @@ -11241,9 +13037,10 @@ } }, "node_modules/core-js-compat": { - "version": "3.25.2", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.25.2.tgz", - "integrity": "sha512-TxfyECD4smdn3/CjWxczVtJqVLEEC2up7/82t7vC0AzNogr+4nQ8vyF7abxAuTXWvjTClSbvGhU0RgqA4ToQaQ==", + "version": "3.25.5", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.25.5.tgz", + "integrity": "sha512-ovcyhs2DEBUIE0MGEKHP4olCUW/XYte3Vroyxuh38rD1wAO4dHohsovUC4eAOuzFxE6b+RXvBU3UZ9o0YhUTkA==", + "dev": true, "dependencies": { "browserslist": "^4.21.4" }, @@ -11253,9 +13050,9 @@ } }, "node_modules/core-js-pure": { - "version": "3.25.2", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.25.2.tgz", - "integrity": "sha512-ItD7YpW1cUB4jaqFLZXe1AXkyqIxz6GqPnsDV4uF4hVcWh/WAGIqSqw5p0/WdsILM0Xht9s3Koyw05R3K6RtiA==", + "version": "3.25.5", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.25.5.tgz", + "integrity": "sha512-oml3M22pHM+igfWHDfdLVq2ShWmjM2V4L+dQEBs0DWVIqEm9WHCwGAlZ6BmyBQGy5sFrJmcx+856D9lVKyGWYg==", "hasInstallScript": true, "funding": { "type": "opencollective", @@ -11653,6 +13450,12 @@ "sha.js": "^2.4.8" } }, + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "devOptional": true + }, "node_modules/cross-fetch": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", @@ -11876,6 +13679,12 @@ "ajv": "^6.9.1" } }, + "node_modules/css-loader/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/css-loader/node_modules/json5": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", @@ -11997,54 +13806,6 @@ "url": "https://github.com/sponsors/fb55" } }, - "node_modules/css-select/node_modules/dom-serializer": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", - "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", - "dev": true, - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" - } - }, - "node_modules/css-select/node_modules/domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", - "dev": true, - "dependencies": { - "domelementtype": "^2.2.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "node_modules/css-select/node_modules/domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "dev": true, - "dependencies": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" - } - }, - "node_modules/css-selector-parser": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/css-selector-parser/-/css-selector-parser-1.4.1.tgz", - "integrity": "sha512-HYPSb7y/Z7BNDCOrakL4raGO2zltZkbeXyAd6Tg9obzix6QhzxCotdBl6VT0Dv4vZfJGVz3WL/xaEI9Ly3ul0g==" - }, "node_modules/css-unit-converter": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/css-unit-converter/-/css-unit-converter-1.1.2.tgz", @@ -12088,12 +13849,14 @@ "node_modules/cssom": { "version": "0.4.4", "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", - "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==" + "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", + "dev": true }, "node_modules/cssstyle": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "dev": true, "dependencies": { "cssom": "~0.3.6" }, @@ -12104,7 +13867,8 @@ "node_modules/cssstyle/node_modules/cssom": { "version": "0.3.8", "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==" + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true }, "node_modules/csstype": { "version": "3.1.1", @@ -12215,6 +13979,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", + "dev": true, "dependencies": { "abab": "^2.0.3", "whatwg-mimetype": "^2.3.0", @@ -12273,7 +14038,8 @@ "node_modules/decimal.js": { "version": "10.4.1", "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.1.tgz", - "integrity": "sha512-F29o+vci4DodHYT9UrR5IEbfBw9pE5eSapIJdTqXK5+6hq+t8VRxwQyKlW2i+KDKFkkJQRvFyI/QXD83h8LyQw==" + "integrity": "sha512-F29o+vci4DodHYT9UrR5IEbfBw9pE5eSapIJdTqXK5+6hq+t8VRxwQyKlW2i+KDKFkkJQRvFyI/QXD83h8LyQw==", + "dev": true }, "node_modules/decimal.js-light": { "version": "2.5.1", @@ -12292,15 +14058,6 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/decode-named-character-reference/node_modules/character-entities": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", - "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/decode-uri-component": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", @@ -12393,6 +14150,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true, "engines": { "node": ">=0.4.0" } @@ -12416,11 +14174,6 @@ "node": ">= 0.8" } }, - "node_modules/deprecation": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", - "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==" - }, "node_modules/dequal": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.2.tgz", @@ -12531,9 +14284,10 @@ "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==" }, "node_modules/diff": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz", - "integrity": "sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "devOptional": true, "engines": { "node": ">=0.3.1" } @@ -12626,29 +14380,19 @@ } }, "node_modules/dom-serializer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", - "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dev": true, "dependencies": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.2", - "entities": "^4.2.0" + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" }, "funding": { "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" } }, - "node_modules/dom-serializer/node_modules/entities": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.4.0.tgz", - "integrity": "sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, "node_modules/dom-walk": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", @@ -12677,6 +14421,7 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true, "funding": [ { "type": "github", @@ -12688,6 +14433,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", + "dev": true, "dependencies": { "webidl-conversions": "^5.0.0" }, @@ -12699,16 +14445,18 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", + "dev": true, "engines": { "node": ">=8" } }, "node_modules/domhandler": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", - "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dev": true, "dependencies": { - "domelementtype": "^2.3.0" + "domelementtype": "^2.2.0" }, "engines": { "node": ">= 4" @@ -12718,13 +14466,14 @@ } }, "node_modules/domutils": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.0.1.tgz", - "integrity": "sha512-z08c1l761iKhDFtfXO04C7kTdPBLi41zwOZl00WS8b5eiaebNpY00HKbztwBq+e3vyqWNwWF3mP9YLUeqIrF+Q==", + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, "dependencies": { - "dom-serializer": "^2.0.0", - "domelementtype": "^2.3.0", - "domhandler": "^5.0.1" + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" }, "funding": { "url": "https://github.com/fb55/domutils?sponsor=1" @@ -12779,9 +14528,9 @@ "dev": true }, "node_modules/electron-to-chromium": { - "version": "1.4.257", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.257.tgz", - "integrity": "sha512-C65sIwHqNnPC2ADMfse/jWTtmhZMII+x6ADI9gENzrOiI7BpxmfKFE84WkIEl5wEg+7+SfIkwChDlsd1Erju2A==" + "version": "1.4.275", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.275.tgz", + "integrity": "sha512-aJeQQ+Hl9Jyyzv4chBqYJwmVRY46N5i2BEX5Cuyk/5gFCUZ5F3i7Hnba6snZftWla7Gglwc5pIgcd+E7cW+rPg==" }, "node_modules/elliptic": { "version": "6.5.4", @@ -12929,21 +14678,21 @@ } }, "node_modules/es-abstract": { - "version": "1.20.2", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.2.tgz", - "integrity": "sha512-XxXQuVNrySBNlEkTYJoDNFe5+s2yIOpzq80sUHEdPdQr0S5nTLz4ZPPPswNIpKseDDUS5yghX1gfLIHQZ1iNuQ==", + "version": "1.20.4", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.4.tgz", + "integrity": "sha512-0UtvRN79eMe2L+UNEF1BwRe364sj/DXhQ/k5FmivgoSdpM90b8Jc0mDzKMGo7QS0BVbOP/bTwBKNnDc9rNzaPA==", "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.2", + "get-intrinsic": "^1.1.3", "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-callable": "^1.2.7", "is-negative-zero": "^2.0.2", "is-regex": "^1.1.4", "is-shared-array-buffer": "^1.0.2", @@ -12953,6 +14702,7 @@ "object-keys": "^1.1.1", "object.assign": "^4.1.4", "regexp.prototype.flags": "^1.4.3", + "safe-regex-test": "^1.0.0", "string.prototype.trimend": "^1.0.5", "string.prototype.trimstart": "^1.0.5", "unbox-primitive": "^1.0.2" @@ -13061,15 +14811,6 @@ "ext": "^1.1.2" } }, - "node_modules/esbuild": { - "version": "0.12.29", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.12.29.tgz", - "integrity": "sha512-w/XuoBCSwepyiZtIRsKsetiLDUVGPVw1E/R3VTFSecIy8UR7Cq3SOtwKHJMFoVqqVG36aGkzh4e8BvpO1Fdc7g==", - "hasInstallScript": true, - "bin": { - "esbuild": "bin/esbuild" - } - }, "node_modules/escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", @@ -13081,23 +14822,22 @@ "node_modules/escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "dev": true }, "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==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.8.0" } }, "node_modules/escodegen": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", + "dev": true, "dependencies": { "esprima": "^4.0.1", "estraverse": "^5.2.0", @@ -13115,53 +14855,6 @@ "source-map": "~0.6.1" } }, - "node_modules/escodegen/node_modules/levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", - "dependencies": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/escodegen/node_modules/optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "dependencies": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/escodegen/node_modules/prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/escodegen/node_modules/type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", - "dependencies": { - "prelude-ls": "~1.1.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, "node_modules/eslint": { "version": "7.32.0", "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", @@ -13533,16 +15226,23 @@ } }, "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, + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dependencies": { "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" + "estraverse": "^4.1.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=8.0.0" + } + }, + "node_modules/eslint-scope/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "engines": { + "node": ">=4.0" } }, "node_modules/eslint-utils": { @@ -13635,24 +15335,60 @@ "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/eslint/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "node_modules/eslint/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==", "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/eslint/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==", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=8.0.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/eslint/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "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/eslint/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==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/eslint/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==" + }, + "node_modules/eslint/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==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/eslint/node_modules/eslint-utils": { @@ -13706,14 +15442,6 @@ "node": ">=4" } }, - "node_modules/eslint/node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "engines": { - "node": ">=4.0" - } - }, "node_modules/eslint/node_modules/glob-parent": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", @@ -13725,6 +15453,28 @@ "node": ">= 6" } }, + "node_modules/eslint/node_modules/globals": { + "version": "13.17.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", + "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/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==", + "engines": { + "node": ">=8" + } + }, "node_modules/eslint/node_modules/ignore": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", @@ -13733,22 +15483,31 @@ "node": ">= 4" } }, - "node_modules/eslint/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==", + "node_modules/eslint/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==" + }, + "node_modules/eslint/node_modules/optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "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" }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "engines": { + "node": ">= 0.8.0" } }, "node_modules/eslint/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==", + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", "dependencies": { "lru-cache": "^6.0.0" }, @@ -13759,6 +15518,17 @@ "node": ">=10" } }, + "node_modules/eslint/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==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/espree": { "version": "9.4.0", "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.0.tgz", @@ -13844,6 +15614,37 @@ "node": ">=8.3.0" } }, + "node_modules/estree-util-attach-comments": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/estree-util-attach-comments/-/estree-util-attach-comments-2.1.0.tgz", + "integrity": "sha512-rJz6I4L0GaXYtHpoMScgDIwM0/Vwbu5shbMeER596rB2D1EWF6+Gj0e0UKzJPZrpoOc87+Q2kgVFHfjAymIqmw==", + "dependencies": { + "@types/estree": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-attach-comments/node_modules/@types/estree": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz", + "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==" + }, + "node_modules/estree-util-build-jsx": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/estree-util-build-jsx/-/estree-util-build-jsx-2.2.0.tgz", + "integrity": "sha512-apsfRxF9uLrqosApvHVtYZjISPvTJ+lBiIydpC+9wE6cF6ssbhnjyQLqaIjgzGxvC2Hbmec1M7g91PoBayYoQQ==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "estree-util-is-identifier-name": "^2.0.0", + "estree-walker": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/estree-util-is-identifier-name": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-2.0.1.tgz", @@ -13853,6 +15654,28 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/estree-util-to-js": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/estree-util-to-js/-/estree-util-to-js-1.1.0.tgz", + "integrity": "sha512-490lbfCcpLk+ofK6HCgqDfYs4KAfq6QVvDw3+Bm1YoKRgiOjKiKYGAVQE1uwh7zVxBgWhqp4FDtp5SqunpUk1A==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "astring": "^1.8.0", + "source-map": "^0.7.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-to-js/node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "engines": { + "node": ">= 8" + } + }, "node_modules/estree-util-visit": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/estree-util-visit/-/estree-util-visit-1.2.0.tgz", @@ -13866,6 +15689,11 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/estree-walker": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.1.tgz", + "integrity": "sha512-woY0RUD87WzMBUiZLx8NsYr23N5BKsOMZHhu2hoNRVh6NXGfoiT1KOL8G3UHlJAnEDGmfa5ubNA/AacfG+Kb0g==" + }, "node_modules/esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", @@ -14148,6 +15976,76 @@ "@types/yargs-parser": "*" } }, + "node_modules/expect/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/expect/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/expect/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/expect/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/expect/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/expect/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/express": { "version": "4.18.1", "resolved": "https://registry.npmjs.org/express/-/express-4.18.1.tgz", @@ -14610,6 +16508,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" @@ -14777,6 +16676,55 @@ "ajv": "^6.9.1" } }, + "node_modules/fork-ts-checker-webpack-plugin/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/fork-ts-checker-webpack-plugin/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/fork-ts-checker-webpack-plugin/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/fork-ts-checker-webpack-plugin/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/fork-ts-checker-webpack-plugin/node_modules/cosmiconfig": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", @@ -14793,6 +16741,21 @@ "node": ">=8" } }, + "node_modules/fork-ts-checker-webpack-plugin/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/fork-ts-checker-webpack-plugin/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/fork-ts-checker-webpack-plugin/node_modules/schema-utils": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz", @@ -14812,9 +16775,9 @@ } }, "node_modules/fork-ts-checker-webpack-plugin/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==", + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -14826,10 +16789,23 @@ "node": ">=10" } }, + "node_modules/fork-ts-checker-webpack-plugin/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/form-data": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "dev": true, "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", @@ -14883,10 +16859,6 @@ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, - "node_modules/forum": { - "resolved": "apps/temp-community-forum", - "link": true - }, "node_modules/forwarded": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", @@ -15260,17 +17232,11 @@ } }, "node_modules/globals": { - "version": "13.17.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", - "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", - "dependencies": { - "type-fest": "^0.20.2" - }, + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=4" } }, "node_modules/globalthis": { @@ -15339,27 +17305,11 @@ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" }, - "node_modules/graphql": { - "version": "16.6.0", - "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.6.0.tgz", - "integrity": "sha512-KPIBPDlW7NxrbT/eh4qPXz5FiFdL5UbaA0XUNz2Rp3Z3hqBSkbj0GVjwFDztsWVauZUWsbKHgMg++sk8UX0bkw==", - "engines": { - "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0" - } - }, - "node_modules/graphql-tag": { - "version": "2.12.6", - "resolved": "https://registry.npmjs.org/graphql-tag/-/graphql-tag-2.12.6.tgz", - "integrity": "sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==", - "dependencies": { - "tslib": "^2.1.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "graphql": "^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" - } + "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/gray-matter": { "version": "4.0.3", @@ -15375,26 +17325,6 @@ "node": ">=6.0" } }, - "node_modules/gray-matter/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/gray-matter/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==", - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, "node_modules/gulp-header": { "version": "1.8.12", "resolved": "https://registry.npmjs.org/gulp-header/-/gulp-header-1.8.12.tgz", @@ -15461,11 +17391,11 @@ } }, "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==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "engines": { - "node": ">=8" + "node": ">=4" } }, "node_modules/has-glob": { @@ -15672,6 +17602,36 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/hast-to-hyperscript/node_modules/comma-separated-tokens": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz", + "integrity": "sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/hast-to-hyperscript/node_modules/property-information": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-5.6.0.tgz", + "integrity": "sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA==", + "dependencies": { + "xtend": "^4.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/hast-to-hyperscript/node_modules/space-separated-tokens": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz", + "integrity": "sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/hast-to-hyperscript/node_modules/unist-util-is": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", @@ -15698,28 +17658,118 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/hast-util-from-parse5/node_modules/is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "engines": { + "node": ">=4" + } + }, + "node_modules/hast-util-from-parse5/node_modules/property-information": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-5.6.0.tgz", + "integrity": "sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA==", + "dependencies": { + "xtend": "^4.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/hast-util-from-parse5/node_modules/unist-util-stringify-position": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", + "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==", + "dependencies": { + "@types/unist": "^2.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-from-parse5/node_modules/vfile": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz", + "integrity": "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==", + "dependencies": { + "@types/unist": "^2.0.0", + "is-buffer": "^2.0.0", + "unist-util-stringify-position": "^2.0.0", + "vfile-message": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-from-parse5/node_modules/vfile-location": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-3.2.0.tgz", + "integrity": "sha512-aLEIZKv/oxuCDZ8lkJGhuhztf/BW4M+iHdCwglA/eWc+vtuRFJj8EtgceYFX4LRjOhCAAiNHsKGssC6onJ+jbA==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-from-parse5/node_modules/vfile-message": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz", + "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/hast-util-has-property": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/hast-util-has-property/-/hast-util-has-property-1.0.4.tgz", - "integrity": "sha512-ghHup2voGfgFoHMGnaLHOjbYFACKrRh9KFttdCzMCbFoBMJXiNi2+XTrPP8+q6cDJM/RSqlCfVWrjp1H201rZg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hast-util-has-property/-/hast-util-has-property-2.0.0.tgz", + "integrity": "sha512-4Qf++8o5v14us4Muv3HRj+Er6wTNGA/N9uCaZMty4JWvyFKLdhULrv4KE1b65AthsSO9TXSZnjuxS8ecIyhb0w==", "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, "node_modules/hast-util-heading-rank": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hast-util-heading-rank/-/hast-util-heading-rank-1.0.1.tgz", - "integrity": "sha512-P6Hq7RCky9syMevlrN90QWpqWDXCxwIVOfQR2rK6P4GpY4bqjKEuCzoWSRORZ7vz+VgRpLnXimh+mkwvVFjbyQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/hast-util-heading-rank/-/hast-util-heading-rank-2.1.0.tgz", + "integrity": "sha512-w+Rw20Q/iWp2Bcnr6uTrYU6/ftZLbHKhvc8nM26VIWpDqDMlku2iXUVTeOlsdoih/UKQhY7PHQ+vZ0Aqq8bxtQ==", + "dependencies": { + "@types/hast": "^2.0.0" + }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, "node_modules/hast-util-is-element": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-1.1.0.tgz", - "integrity": "sha512-oUmNua0bFbdrD/ELDSSEadRVtWZOf3iF6Lbv81naqsIV99RnSCieTbWuWCY8BAeEfKJTKl0gRdokv+dELutHGQ==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-2.1.2.tgz", + "integrity": "sha512-thjnlGAnwP8ef/GSO1Q8BfVk2gundnc2peGQqEg2kUt/IqesiGg/5mSwN2fE7nLzy61pg88NG6xV+UrGOrx9EA==", + "dependencies": { + "@types/hast": "^2.0.0", + "@types/unist": "^2.0.0" + }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" @@ -15755,33 +17805,153 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/hast-util-sanitize": { + "node_modules/hast-util-raw/node_modules/html-void-elements": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-1.0.5.tgz", + "integrity": "sha512-uE/TxKuyNIcx44cIWnjr/rfIATDH7ZaOMmstu0CwhFG1Dunhlp4OC6/NMbhiwoq5BpW0ubi303qnEk/PZj614w==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/hast-util-raw/node_modules/is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "engines": { + "node": ">=4" + } + }, + "node_modules/hast-util-raw/node_modules/unist-util-position": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-3.1.0.tgz", + "integrity": "sha512-w+PkwCbYSFw8vpgWD0v7zRCl1FpY3fjDSQ3/N/wNd9Ffa4gPi8+4keqt99N3XW6F99t/mUzp2xAhNmfKWp95QA==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-raw/node_modules/unist-util-stringify-position": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/hast-util-sanitize/-/hast-util-sanitize-2.0.3.tgz", - "integrity": "sha512-RILqWHmzU0Anmfw1KEP41LbCsJuJUVM0lQWAbTDk9+0bWqzRFXDaMdqIoRocLlOfR5NfcWyhFfZw/mGsuftwYA==", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", + "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==", "dependencies": { - "xtend": "^4.0.0" + "@types/unist": "^2.0.2" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/hast-util-to-html": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-6.1.0.tgz", - "integrity": "sha512-IlC+LG2HGv0Y8js3wqdhg9O2sO4iVpRDbHOPwXd7qgeagpGsnY49i8yyazwqS35RA35WCzrBQE/n0M6GG/ewxA==", + "node_modules/hast-util-raw/node_modules/vfile": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz", + "integrity": "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==", "dependencies": { - "ccount": "^1.0.0", - "comma-separated-tokens": "^1.0.1", - "hast-util-is-element": "^1.0.0", - "hast-util-whitespace": "^1.0.0", - "html-void-elements": "^1.0.0", - "property-information": "^5.2.0", - "space-separated-tokens": "^1.0.0", - "stringify-entities": "^2.0.0", - "unist-util-is": "^3.0.0", - "xtend": "^4.0.1" + "@types/unist": "^2.0.0", + "is-buffer": "^2.0.0", + "unist-util-stringify-position": "^2.0.0", + "vfile-message": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-raw/node_modules/vfile-message": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz", + "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-raw/node_modules/zwitch": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz", + "integrity": "sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/hast-util-sanitize": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/hast-util-sanitize/-/hast-util-sanitize-4.0.0.tgz", + "integrity": "sha512-pw56+69jq+QSr/coADNvWTmBPDy+XsmwaF5KnUys4/wM1jt/fZdl7GPxhXXXYdXnz3Gj3qMkbUCH2uKjvX0MgQ==", + "dependencies": { + "@types/hast": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-estree": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/hast-util-to-estree/-/hast-util-to-estree-2.1.0.tgz", + "integrity": "sha512-Vwch1etMRmm89xGgz+voWXvVHba2iiMdGMKmaMfYt35rbVtFDq8JNwwAIvi8zHMkO6Gvqo9oTMwJTmzVRfXh4g==", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^2.0.0", + "@types/unist": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "estree-util-attach-comments": "^2.0.0", + "estree-util-is-identifier-name": "^2.0.0", + "hast-util-whitespace": "^2.0.0", + "mdast-util-mdx-expression": "^1.0.0", + "mdast-util-mdxjs-esm": "^1.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0", + "style-to-object": "^0.3.0", + "unist-util-position": "^4.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-estree/node_modules/@types/estree": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz", + "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==" + }, + "node_modules/hast-util-to-html": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-8.0.3.tgz", + "integrity": "sha512-/D/E5ymdPYhHpPkuTHOUkSatxr4w1ZKrZsG0Zv/3C2SRVT0JFJG53VS45AMrBtYk0wp5A7ksEhiC8QaOZM95+A==", + "dependencies": { + "@types/hast": "^2.0.0", + "ccount": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-is-element": "^2.0.0", + "hast-util-whitespace": "^2.0.0", + "html-void-elements": "^2.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0", + "stringify-entities": "^4.0.2", + "unist-util-is": "^5.0.0" }, "funding": { "type": "opencollective", @@ -15804,19 +17974,43 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/hast-util-to-parse5/node_modules/property-information": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-5.6.0.tgz", + "integrity": "sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA==", + "dependencies": { + "xtend": "^4.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/hast-util-to-parse5/node_modules/zwitch": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz", + "integrity": "sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/hast-util-to-string": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/hast-util-to-string/-/hast-util-to-string-1.0.4.tgz", - "integrity": "sha512-eK0MxRX47AV2eZ+Lyr18DCpQgodvaS3fAQO2+b9Two9F5HEoRPhiUMNzoXArMJfZi2yieFzUBMRl3HNJ3Jus3w==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hast-util-to-string/-/hast-util-to-string-2.0.0.tgz", + "integrity": "sha512-02AQ3vLhuH3FisaMM+i/9sm4OXGSq1UhOOCpTLLQtHdL3tZt7qil69r8M8iDkZYyC0HCFylcYoP+8IO7ddta1A==", + "dependencies": { + "@types/hast": "^2.0.0" + }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, "node_modules/hast-util-whitespace": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-1.0.4.tgz", - "integrity": "sha512-I5GTdSfhYfAPNztx2xJRQpG8cuDSNt599/7YUn7Gx/WxNMsG+a835k97TDkFgk123cwjfwINaZknkKkphx/f2A==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-2.0.0.tgz", + "integrity": "sha512-Pkw+xBHuV6xFeJprJe2BBEoDV+AvQySaz3pPDRUs5PNZEMQjpXJJueqrpcHIXxnWTcAGi/UOCgVShlkY6kLoqg==", "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" @@ -15838,6 +18032,36 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/hastscript/node_modules/comma-separated-tokens": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz", + "integrity": "sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/hastscript/node_modules/property-information": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-5.6.0.tgz", + "integrity": "sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA==", + "dependencies": { + "xtend": "^4.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/hastscript/node_modules/space-separated-tokens": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz", + "integrity": "sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/he": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", @@ -15884,6 +18108,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", + "dev": true, "dependencies": { "whatwg-encoding": "^1.0.5" }, @@ -15945,20 +18170,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/html-to-react": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/html-to-react/-/html-to-react-1.5.0.tgz", - "integrity": "sha512-tjihXBgaJZRRYzmkrJZ/Qf9jFayilFYcb+sJxXXE2BVLk2XsNrGeuNCVvhXmvREULZb9dz6NFTBC96DTR/lQCQ==", - "dependencies": { - "domhandler": "^5.0", - "htmlparser2": "^8.0", - "lodash.camelcase": "^4.3.0" - } + "node_modules/html-to-image": { + "version": "1.10.8", + "resolved": "https://registry.npmjs.org/html-to-image/-/html-to-image-1.10.8.tgz", + "integrity": "sha512-t+JyFJwKDCp4ZwBp4iC/wqw0meQDDc77Qs8OFl5P7RGlIP3LQMvwpD7VXxqQfC7/TfC+GKYlFP6WDYfXTmXHfw==" }, "node_modules/html-void-elements": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-1.0.5.tgz", - "integrity": "sha512-uE/TxKuyNIcx44cIWnjr/rfIATDH7ZaOMmstu0CwhFG1Dunhlp4OC6/NMbhiwoq5BpW0ubi303qnEk/PZj614w==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-2.0.1.tgz", + "integrity": "sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A==", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -16014,9 +18234,10 @@ } }, "node_modules/htmlparser2": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.1.tgz", - "integrity": "sha512-4lVbmc1diZC7GUJQtRQ5yBAeUCL1exyMwmForWkRLnwyzWBFxN633SALPMGYaWZvKe9j1pRZJpauvmxENSp/EA==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "dev": true, "funding": [ "https://github.com/fb55/htmlparser2?sponsor=1", { @@ -16025,21 +18246,10 @@ } ], "dependencies": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.2", - "domutils": "^3.0.1", - "entities": "^4.3.0" - } - }, - "node_modules/htmlparser2/node_modules/entities": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.4.0.tgz", - "integrity": "sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" } }, "node_modules/http-errors": { @@ -16062,6 +18272,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "dev": true, "dependencies": { "@tootallnate/once": "1", "agent-base": "6", @@ -16102,6 +18313,7 @@ "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, "dependencies": { "safer-buffer": ">= 2.1.2 < 3" }, @@ -16505,9 +18717,9 @@ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" }, "node_modules/is-callable": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.6.tgz", - "integrity": "sha512-krO72EO2NptOGAX2KYyqbP9vYMlNAXdB53rq6f8LXY6RY7JdSR/3BD6wLUlPHSAesmY9vstNrjvqGaCiRK/91Q==", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", "engines": { "node": ">= 0.4" }, @@ -16767,6 +18979,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "dev": true, "engines": { "node": ">=0.10.0" } @@ -16774,7 +18987,16 @@ "node_modules/is-potential-custom-element-name": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", - "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==" + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "dev": true + }, + "node_modules/is-reference": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.0.tgz", + "integrity": "sha512-Eo1W3wUoHWoCoVM4GVl/a+K0IgiqE5aIo4kJABFyMum1ZORlPkC+UC357sSQUL5w5QCE5kCC9upl75b7+7CY/Q==", + "dependencies": { + "@types/estree": "*" + } }, "node_modules/is-regex": { "version": "1.1.4", @@ -16969,9 +19191,9 @@ } }, "node_modules/istanbul-lib-instrument": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.0.tgz", - "integrity": "sha512-6Lthe1hqXHBNsqvgDzGO6l03XNeu3CrG4RqQ1KM9+l5+jNGpEJfIELx1NS3SEHmJQA8np/u+E4EPRKRiu6m19A==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", "dev": true, "dependencies": { "@babel/core": "^7.12.3", @@ -16998,6 +19220,15 @@ "node": ">=8" } }, + "node_modules/istanbul-lib-report/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/istanbul-lib-report/node_modules/make-dir": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", @@ -17013,6 +19244,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/istanbul-lib-report/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/istanbul-lib-source-maps": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", @@ -17087,6 +19330,26 @@ } } }, + "node_modules/jest-allure2-adapter": { + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/jest-allure2-adapter/-/jest-allure2-adapter-0.3.11.tgz", + "integrity": "sha512-Dz50gtzeZ890Iy1qJ+HAPBx059ZmRiBCqqZeQi38IJgLaXRcN5n2fQ5Al02A2uRoyLHG38Jq/t4m6Xr0z7tkBA==", + "dev": true, + "dependencies": { + "@types/allure-js-commons": "^0.0.1", + "@types/node": "^10.1.2", + "@types/strip-ansi": "^5.2.0", + "allure-js-commons": "^2.0.0-beta.9", + "strip-ansi": "^6.0.0", + "uuid-by-string": "^3.0.2" + } + }, + "node_modules/jest-allure2-adapter/node_modules/@types/node": { + "version": "10.17.60", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz", + "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==", + "dev": true + }, "node_modules/jest-canvas-mock": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/jest-canvas-mock/-/jest-canvas-mock-2.4.0.tgz", @@ -17136,6 +19399,76 @@ "@types/yargs-parser": "*" } }, + "node_modules/jest-changed-files/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/jest-changed-files/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/jest-changed-files/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/jest-changed-files/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/jest-changed-files/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/jest-changed-files/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/jest-circus": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.5.1.tgz", @@ -17191,6 +19524,64 @@ "@types/yargs-parser": "*" } }, + "node_modules/jest-circus/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/jest-circus/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/jest-circus/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/jest-circus/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/jest-circus/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/jest-circus/node_modules/jest-util": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", @@ -17208,6 +19599,18 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, + "node_modules/jest-circus/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/jest-cli": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.5.1.tgz", @@ -17267,6 +19670,64 @@ "@types/yargs-parser": "*" } }, + "node_modules/jest-cli/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/jest-cli/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/jest-cli/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/jest-cli/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/jest-cli/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/jest-cli/node_modules/jest-util": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", @@ -17284,6 +19745,18 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, + "node_modules/jest-cli/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/jest-config": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.5.1.tgz", @@ -17352,6 +19825,64 @@ "@types/yargs-parser": "*" } }, + "node_modules/jest-config/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/jest-config/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/jest-config/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/jest-config/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/jest-config/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/jest-config/node_modules/jest-regex-util": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", @@ -17378,6 +19909,18 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, + "node_modules/jest-config/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/jest-diff": { "version": "25.5.0", "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-25.5.0.tgz", @@ -17418,6 +19961,21 @@ "@types/istanbul-lib-report": "*" } }, + "node_modules/jest-diff/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/jest-diff/node_modules/chalk": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", @@ -17431,6 +19989,33 @@ "node": ">=8" } }, + "node_modules/jest-diff/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/jest-diff/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/jest-diff/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/jest-diff/node_modules/jest-get-type": { "version": "25.2.6", "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-25.2.6.tgz", @@ -17455,6 +20040,18 @@ "node": ">= 8.3" } }, + "node_modules/jest-diff/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/jest-docblock": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.5.1.tgz", @@ -17508,6 +20105,64 @@ "@types/yargs-parser": "*" } }, + "node_modules/jest-each/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/jest-each/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/jest-each/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/jest-each/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/jest-each/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/jest-each/node_modules/jest-util": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", @@ -17525,6 +20180,18 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, + "node_modules/jest-each/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/jest-environment-jsdom": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz", @@ -17568,6 +20235,64 @@ "@types/yargs-parser": "*" } }, + "node_modules/jest-environment-jsdom/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/jest-environment-jsdom/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/jest-environment-jsdom/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/jest-environment-jsdom/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/jest-environment-jsdom/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/jest-environment-jsdom/node_modules/jest-util": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", @@ -17585,6 +20310,18 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, + "node_modules/jest-environment-jsdom/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/jest-environment-node": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.5.1.tgz", @@ -17627,6 +20364,64 @@ "@types/yargs-parser": "*" } }, + "node_modules/jest-environment-node/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/jest-environment-node/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/jest-environment-node/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/jest-environment-node/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/jest-environment-node/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/jest-environment-node/node_modules/jest-util": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", @@ -17644,6 +20439,18 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, + "node_modules/jest-environment-node/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/jest-get-type": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", @@ -17680,6 +20487,15 @@ "fsevents": "^2.1.2" } }, + "node_modules/jest-haste-map/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/jest-haste-map/node_modules/jest-worker": { "version": "26.6.2", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", @@ -17694,6 +20510,18 @@ "node": ">= 10.13.0" } }, + "node_modules/jest-haste-map/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/jest-jasmine2": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz", @@ -17747,6 +20575,64 @@ "@types/yargs-parser": "*" } }, + "node_modules/jest-jasmine2/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/jest-jasmine2/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/jest-jasmine2/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/jest-jasmine2/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/jest-jasmine2/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/jest-jasmine2/node_modules/jest-util": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", @@ -17764,6 +20650,18 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, + "node_modules/jest-jasmine2/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/jest-leak-detector": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz", @@ -17792,6 +20690,55 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, + "node_modules/jest-matcher-utils/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/jest-matcher-utils/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/jest-matcher-utils/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/jest-matcher-utils/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/jest-matcher-utils/node_modules/diff-sequences": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", @@ -17801,6 +20748,15 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, + "node_modules/jest-matcher-utils/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/jest-matcher-utils/node_modules/jest-diff": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", @@ -17816,6 +20772,18 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, + "node_modules/jest-matcher-utils/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/jest-message-util": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", @@ -17861,6 +20829,76 @@ "@types/yargs-parser": "*" } }, + "node_modules/jest-message-util/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/jest-message-util/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/jest-message-util/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/jest-message-util/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/jest-message-util/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/jest-message-util/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/jest-mock": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz", @@ -17899,6 +20937,76 @@ "@types/yargs-parser": "*" } }, + "node_modules/jest-mock/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/jest-mock/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/jest-mock/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/jest-mock/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/jest-mock/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/jest-mock/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/jest-pnp-resolver": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", @@ -17985,6 +21093,64 @@ "@types/yargs-parser": "*" } }, + "node_modules/jest-resolve-dependencies/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/jest-resolve-dependencies/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/jest-resolve-dependencies/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/jest-resolve-dependencies/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/jest-resolve-dependencies/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/jest-resolve-dependencies/node_modules/jest-regex-util": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", @@ -17994,6 +21160,18 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, + "node_modules/jest-resolve-dependencies/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/jest-resolve/node_modules/@jest/types": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", @@ -18019,6 +21197,64 @@ "@types/yargs-parser": "*" } }, + "node_modules/jest-resolve/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/jest-resolve/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/jest-resolve/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/jest-resolve/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/jest-resolve/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/jest-resolve/node_modules/jest-haste-map": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", @@ -18084,6 +21320,18 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, + "node_modules/jest-resolve/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/jest-runner": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.5.1.tgz", @@ -18167,6 +21415,64 @@ "@types/yargs-parser": "*" } }, + "node_modules/jest-runner/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/jest-runner/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/jest-runner/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/jest-runner/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/jest-runner/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/jest-runner/node_modules/jest-haste-map": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", @@ -18232,6 +21538,18 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, + "node_modules/jest-runner/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/jest-runtime": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.5.1.tgz", @@ -18316,6 +21634,64 @@ "@types/yargs-parser": "*" } }, + "node_modules/jest-runtime/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/jest-runtime/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/jest-runtime/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/jest-runtime/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/jest-runtime/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/jest-runtime/node_modules/jest-haste-map": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", @@ -18381,6 +21757,18 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, + "node_modules/jest-runtime/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/jest-serializer": { "version": "26.6.2", "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-26.6.2.tgz", @@ -18478,6 +21866,55 @@ "@types/yargs-parser": "*" } }, + "node_modules/jest-snapshot/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/jest-snapshot/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/jest-snapshot/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/jest-snapshot/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/jest-snapshot/node_modules/diff-sequences": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", @@ -18487,6 +21924,15 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, + "node_modules/jest-snapshot/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/jest-snapshot/node_modules/jest-diff": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", @@ -18568,9 +22014,9 @@ } }, "node_modules/jest-snapshot/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==", + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -18582,6 +22028,18 @@ "node": ">=10" } }, + "node_modules/jest-snapshot/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/jest-util": { "version": "26.6.2", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz", @@ -18599,6 +22057,76 @@ "node": ">= 10.14.2" } }, + "node_modules/jest-util/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/jest-util/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/jest-util/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/jest-util/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/jest-util/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/jest-util/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/jest-validate": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz", @@ -18641,6 +22169,21 @@ "@types/yargs-parser": "*" } }, + "node_modules/jest-validate/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/jest-validate/node_modules/camelcase": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", @@ -18653,6 +22196,61 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/jest-validate/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/jest-validate/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/jest-validate/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/jest-validate/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/jest-validate/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/jest-watcher": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.5.1.tgz", @@ -18696,6 +22294,64 @@ "@types/yargs-parser": "*" } }, + "node_modules/jest-watcher/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/jest-watcher/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/jest-watcher/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/jest-watcher/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/jest-watcher/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/jest-watcher/node_modules/jest-util": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", @@ -18713,6 +22369,18 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, + "node_modules/jest-watcher/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/jest-worker": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", @@ -18727,6 +22395,15 @@ "node": ">= 10.13.0" } }, + "node_modules/jest-worker/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/jest-worker/node_modules/supports-color": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", @@ -18747,6 +22424,24 @@ "resolved": "https://registry.npmjs.org/join-component/-/join-component-1.1.0.tgz", "integrity": "sha512-bF7vcQxbODoGK1imE2P9GS9aw4zD0Sd+Hni68IMZLj7zRnquH7dXUmMw9hDI5S/Jzt7q+IyTXN0rSg2GI0IKhQ==" }, + "node_modules/js-md5": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/js-md5/-/js-md5-0.7.3.tgz", + "integrity": "sha512-ZC41vPSTLKGwIRjqDh8DfXoCrdQIyBgspJVPXHBGu4nZlAEvG3nf+jO9avM9RmLiGakg7vz974ms99nEV0tmTQ==", + "dev": true + }, + "node_modules/js-sdsl": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.1.5.tgz", + "integrity": "sha512-08bOAKweV2NUC1wqTtf3qZlnpOX/R2DU9ikpjOHs0H+ibQv3zpncVQg6um4uYtRtrwIX8M4Nh3ytK4HGlYAq7Q==", + "dev": true + }, + "node_modules/js-sha1": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/js-sha1/-/js-sha1-0.6.0.tgz", + "integrity": "sha512-01gwBFreYydzmU9BmZxpVk6svJJHrVxEN3IOiGl6VO93bVKYETJ0sIth6DASI6mIFdt7NmfX9UiByRzsYHGU9w==", + "dev": true + }, "node_modules/js-string-escape": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/js-string-escape/-/js-string-escape-1.0.1.tgz", @@ -18762,12 +22457,12 @@ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, "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, + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "dependencies": { - "argparse": "^2.0.1" + "argparse": "^1.0.7", + "esprima": "^4.0.0" }, "bin": { "js-yaml": "bin/js-yaml.js" @@ -18777,6 +22472,7 @@ "version": "16.7.0", "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", + "dev": true, "dependencies": { "abab": "^2.0.5", "acorn": "^8.2.4", @@ -18822,6 +22518,7 @@ "version": "8.8.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", + "dev": true, "bin": { "acorn": "bin/acorn" }, @@ -18833,6 +22530,7 @@ "version": "7.5.9", "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "dev": true, "engines": { "node": ">=8.3.0" }, @@ -18878,9 +22576,9 @@ "dev": true }, "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==" + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", @@ -19143,6 +22841,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, "dependencies": { "p-locate": "^5.0.0" }, @@ -19168,11 +22867,6 @@ "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", "integrity": "sha512-xYHt68QRoYGjeeM/XOE1uJtvXQAgvszfBhjV4yvsQH0u2i9I6cI6c6/eG4Hh3UAOVn0y/xAXwmTzEay49Q//HA==" }, - "node_modules/lodash.camelcase": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", - "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==" - }, "node_modules/lodash.castarray": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/lodash.castarray/-/lodash.castarray-4.4.0.tgz", @@ -19181,7 +22875,8 @@ "node_modules/lodash.debounce": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==" + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "dev": true }, "node_modules/lodash.isequal": { "version": "4.5.0", @@ -19237,9 +22932,9 @@ "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==" }, "node_modules/longest-streak": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.4.tgz", - "integrity": "sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.0.1.tgz", + "integrity": "sha512-cHlYSUpL2s7Fb3394mYxwTYj8niTaNHUCLr0qdiCXQfSjfuA7CKofpX2uSwEfFDQ0EB7JcnMnm+GjbqqoinYYg==", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -19360,7 +23055,7 @@ "version": "1.3.6", "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true + "devOptional": true }, "node_modules/makeerror": { "version": "1.0.12", @@ -19417,6 +23112,14 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/markdown-extensions": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/markdown-extensions/-/markdown-extensions-1.1.1.tgz", + "integrity": "sha512-WWC0ZuMzCyDHYCasEGs4IPvLyTGftYwh6wIEOULOF0HXcqZlhwRzrK0w2VUlxWA98xnvb/jszw4ZSkJ6ADpM6Q==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/markdown-link": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/markdown-link/-/markdown-link-0.1.1.tgz", @@ -19462,14 +23165,6 @@ "node": ">=0.10.0" } }, - "node_modules/markdown-toc/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, "node_modules/markdown-toc/node_modules/gray-matter": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-2.1.1.tgz", @@ -19485,22 +23180,10 @@ "node": ">=0.10.0" } }, - "node_modules/markdown-toc/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==", - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, "node_modules/marked": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/marked/-/marked-4.1.0.tgz", - "integrity": "sha512-+Z6KDjSPa6/723PQYyc1axYZpYYpDnECDaU6hkaf5gqBieBkMKYReL5hteF2QizhlMbgbo8umXl/clZ67+GlsA==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/marked/-/marked-4.1.1.tgz", + "integrity": "sha512-0cNMnTcUJPxbA6uWmCmjWz4NJRe/0Xfk2NhXCUHjew9qJzFN20krFnsUe7QynwqOwa5m1fZ4UDg0ycKFVC0ccw==", "bin": { "marked": "bin/marked.js" }, @@ -19534,14 +23217,6 @@ "safe-buffer": "^5.1.2" } }, - "node_modules/mdast-add-list-metadata": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mdast-add-list-metadata/-/mdast-add-list-metadata-1.0.1.tgz", - "integrity": "sha512-fB/VP4MJ0LaRsog7hGPxgOrSL3gE/2uEdZyDuSEnKCv/8IkYHiDkIQSbChiJoHyxZZXZ9bzckyRk+vNxFzh8rA==", - "dependencies": { - "unist-util-visit-parents": "1.1.2" - } - }, "node_modules/mdast-squeeze-paragraphs": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/mdast-squeeze-paragraphs/-/mdast-squeeze-paragraphs-4.0.0.tgz", @@ -19555,48 +23230,18 @@ } }, "node_modules/mdast-util-definitions": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-1.2.5.tgz", - "integrity": "sha512-CJXEdoLfiISCDc2JB6QLb79pYfI6+GcIH+W2ox9nMc7od0Pz+bovcHsiq29xAQY6ayqe/9CsK2VzkSJdg1pFYA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-4.0.0.tgz", + "integrity": "sha512-k8AJ6aNnUkB7IE+5azR9h81O5EQ/cTDXtWdMq9Kk5KcEW/8ritU5CeLg/9HhOC++nALHBlaogJ5jz0Ybk3kPMQ==", "dependencies": { - "unist-util-visit": "^1.0.0" + "unist-util-visit": "^2.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/mdast-util-definitions/node_modules/unist-util-visit": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-1.4.1.tgz", - "integrity": "sha512-AvGNk7Bb//EmJZyhtRUnNMEpId/AZ5Ph/KUpTI09WHQuDZHKovQ1oEv3mfmKpWKtoMzyMC4GLBm1Zy5k12fjIw==", - "dependencies": { - "unist-util-visit-parents": "^2.0.0" - } - }, - "node_modules/mdast-util-definitions/node_modules/unist-util-visit-parents": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-2.1.2.tgz", - "integrity": "sha512-DyN5vD4NE3aSeB+PXYNKxzGsfocxp6asDc2XXE3b0ekO2BaRUpBicbbUygfSvYfUz1IkmjFR1YF7dPklraMZ2g==", - "dependencies": { - "unist-util-is": "^3.0.0" - } - }, - "node_modules/mdast-util-find-and-replace": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-1.1.1.tgz", - "integrity": "sha512-9cKl33Y21lyckGzpSmEQnIDjEfeeWelN5s1kUW1LwdB0Fkuq2u+4GdqcGEygYxJE8GVqCl0741bYXHgamfWAZA==", - "dependencies": { - "escape-string-regexp": "^4.0.0", - "unist-util-is": "^4.0.0", - "unist-util-visit-parents": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-find-and-replace/node_modules/unist-util-is": { + "node_modules/mdast-util-definitions/node_modules/unist-util-is": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==", @@ -19605,7 +23250,21 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/mdast-util-find-and-replace/node_modules/unist-util-visit-parents": { + "node_modules/mdast-util-definitions/node_modules/unist-util-visit": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz", + "integrity": "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0", + "unist-util-visit-parents": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-definitions/node_modules/unist-util-visit-parents": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz", "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==", @@ -19618,6 +23277,31 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/mdast-util-find-and-replace": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-2.2.1.tgz", + "integrity": "sha512-SobxkQXFAdd4b5WmEakmkVoh18icjQRxGy5OWTCzgsLRm1Fu/KCtwD1HIQSsmq5ZRjVH0Ehwg6/Fn3xIUk+nKw==", + "dependencies": { + "escape-string-regexp": "^5.0.0", + "unist-util-is": "^5.0.0", + "unist-util-visit-parents": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-find-and-replace/node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/mdast-util-from-markdown": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-1.2.0.tgz", @@ -19641,59 +23325,18 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/mdast-util-from-markdown/node_modules/mdast-util-to-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-3.1.0.tgz", - "integrity": "sha512-n4Vypz/DZgwo0iMHLQL49dJzlp7YtAJP+N07MZHpjPf/5XJuHUWstviF4Mn2jEiR/GNmtnRRqnwsXExk3igfFA==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-from-markdown/node_modules/micromark": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/micromark/-/micromark-3.0.10.tgz", - "integrity": "sha512-ryTDy6UUunOXy2HPjelppgJ2sNfcPz1pLlMdA6Rz9jPzhLikWXv/irpWV/I2jd68Uhmny7hHxAlAhk4+vWggpg==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "@types/debug": "^4.0.0", - "debug": "^4.0.0", - "decode-named-character-reference": "^1.0.0", - "micromark-core-commonmark": "^1.0.1", - "micromark-factory-space": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-chunked": "^1.0.0", - "micromark-util-combine-extensions": "^1.0.0", - "micromark-util-decode-numeric-character-reference": "^1.0.0", - "micromark-util-encode": "^1.0.0", - "micromark-util-normalize-identifier": "^1.0.0", - "micromark-util-resolve-all": "^1.0.0", - "micromark-util-sanitize-uri": "^1.0.0", - "micromark-util-subtokenize": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.1", - "uvu": "^0.5.0" - } - }, "node_modules/mdast-util-gfm": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-0.1.2.tgz", - "integrity": "sha512-NNkhDx/qYcuOWB7xHUGWZYVXvjPFFd6afg6/e2g+SV4r9q5XUcCbV4Wfa3DLYIiD+xAEZc6K4MGaE/m0KDcPwQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-2.0.1.tgz", + "integrity": "sha512-42yHBbfWIFisaAfV1eixlabbsa6q7vHeSPY+cg+BBjX51M8xhgMacqH9g6TftB/9+YkcI0ooV4ncfrJslzm/RQ==", "dependencies": { - "mdast-util-gfm-autolink-literal": "^0.1.0", - "mdast-util-gfm-strikethrough": "^0.2.0", - "mdast-util-gfm-table": "^0.1.0", - "mdast-util-gfm-task-list-item": "^0.1.0", - "mdast-util-to-markdown": "^0.6.1" + "mdast-util-from-markdown": "^1.0.0", + "mdast-util-gfm-autolink-literal": "^1.0.0", + "mdast-util-gfm-footnote": "^1.0.0", + "mdast-util-gfm-strikethrough": "^1.0.0", + "mdast-util-gfm-table": "^1.0.0", + "mdast-util-gfm-task-list-item": "^1.0.0", + "mdast-util-to-markdown": "^1.0.0" }, "funding": { "type": "opencollective", @@ -19701,13 +23344,28 @@ } }, "node_modules/mdast-util-gfm-autolink-literal": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-0.1.3.tgz", - "integrity": "sha512-GjmLjWrXg1wqMIO9+ZsRik/s7PLwTaeCHVB7vRxUwLntZc8mzmTsLVr6HW1yLokcnhfURsn5zmSVdi3/xWWu1A==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-1.0.2.tgz", + "integrity": "sha512-FzopkOd4xTTBeGXhXSBU0OCDDh5lUj2rd+HQqG92Ld+jL4lpUfgX2AT2OHAVP9aEeDKp7G92fuooSZcYJA3cRg==", "dependencies": { - "ccount": "^1.0.0", - "mdast-util-find-and-replace": "^1.1.0", - "micromark": "^2.11.3" + "@types/mdast": "^3.0.0", + "ccount": "^2.0.0", + "mdast-util-find-and-replace": "^2.0.0", + "micromark-util-character": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-footnote": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-1.0.1.tgz", + "integrity": "sha512-p+PrYlkw9DeCRkTVw1duWqPRHX6Ywh2BNKJQcZbCwAuP/59B0Lk9kakuAd7KbQprVO4GzdW8eS5++A9PUSqIyw==", + "dependencies": { + "@types/mdast": "^3.0.0", + "mdast-util-to-markdown": "^1.3.0", + "micromark-util-normalize-identifier": "^1.0.0" }, "funding": { "type": "opencollective", @@ -19715,11 +23373,12 @@ } }, "node_modules/mdast-util-gfm-strikethrough": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-0.2.3.tgz", - "integrity": "sha512-5OQLXpt6qdbttcDG/UxYY7Yjj3e8P7X16LzvpX8pIQPYJ/C2Z1qFGMmcw+1PZMUM3Z8wt8NRfYTvCni93mgsgA==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-1.0.1.tgz", + "integrity": "sha512-zKJbEPe+JP6EUv0mZ0tQUyLQOC+FADt0bARldONot/nefuISkaZFlmVK4tU6JgfyZGrky02m/I6PmehgAgZgqg==", "dependencies": { - "mdast-util-to-markdown": "^0.6.0" + "@types/mdast": "^3.0.0", + "mdast-util-to-markdown": "^1.3.0" }, "funding": { "type": "opencollective", @@ -19727,24 +23386,36 @@ } }, "node_modules/mdast-util-gfm-table": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-0.1.6.tgz", - "integrity": "sha512-j4yDxQ66AJSBwGkbpFEp9uG/LS1tZV3P33fN1gkyRB2LoRL+RR3f76m0HPHaby6F4Z5xr9Fv1URmATlRRUIpRQ==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-1.0.6.tgz", + "integrity": "sha512-uHR+fqFq3IvB3Rd4+kzXW8dmpxUhvgCQZep6KdjsLK4O6meK5dYZEayLtIxNus1XO3gfjfcIFe8a7L0HZRGgag==", "dependencies": { - "markdown-table": "^2.0.0", - "mdast-util-to-markdown": "~0.6.0" + "@types/mdast": "^3.0.0", + "markdown-table": "^3.0.0", + "mdast-util-from-markdown": "^1.0.0", + "mdast-util-to-markdown": "^1.3.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, + "node_modules/mdast-util-gfm-table/node_modules/markdown-table": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.2.tgz", + "integrity": "sha512-y8j3a5/DkJCmS5x4dMCQL+OR0+2EAq3DOtio1COSHsmW2BGXnNCK3v12hJt1LrUz5iZH5g0LmuYOjDdI+czghA==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/mdast-util-gfm-task-list-item": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-0.1.6.tgz", - "integrity": "sha512-/d51FFIfPsSmCIRNp7E6pozM9z1GYPIkSy1urQ8s/o4TC22BZ7DqfHFWiqBD23bc7J3vV1Fc9O4QIHBlfuit8A==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-1.0.1.tgz", + "integrity": "sha512-KZ4KLmPdABXOsfnM6JHUIjxEvcx2ulk656Z/4Balw071/5qgnhz+H1uGtf2zIGnrnvDC8xR4Fj9uKbjAFGNIeA==", "dependencies": { - "mdast-util-to-markdown": "~0.6.0" + "@types/mdast": "^3.0.0", + "mdast-util-to-markdown": "^1.3.0" }, "funding": { "type": "opencollective", @@ -19766,9 +23437,9 @@ } }, "node_modules/mdast-util-mdx-expression": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-1.3.0.tgz", - "integrity": "sha512-9kTO13HaL/ChfzVCIEfDRdp1m5hsvsm6+R8yr67mH+KS2ikzZ0ISGLPTbTswOFpLLlgVHO9id3cul4ajutCvCA==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-1.3.1.tgz", + "integrity": "sha512-TTb6cKyTA1RD+1su1iStZ5PAv3rFfOUKcoU5EstUpv/IZo63uDX03R8+jXjMEhcobXnNOiG6/ccekvVl4eV1zQ==", "dependencies": { "@types/estree-jsx": "^1.0.0", "@types/hast": "^2.0.0", @@ -19781,87 +23452,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/mdast-util-mdx-expression/node_modules/longest-streak": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.0.1.tgz", - "integrity": "sha512-cHlYSUpL2s7Fb3394mYxwTYj8niTaNHUCLr0qdiCXQfSjfuA7CKofpX2uSwEfFDQ0EB7JcnMnm+GjbqqoinYYg==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/mdast-util-mdx-expression/node_modules/mdast-util-to-markdown": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-1.3.0.tgz", - "integrity": "sha512-6tUSs4r+KK4JGTTiQ7FfHmVOaDrLQJPmpjD6wPMlHGUVXoG9Vjc3jIeP+uyBWRf8clwB2blM+W7+KrlMYQnftA==", - "dependencies": { - "@types/mdast": "^3.0.0", - "@types/unist": "^2.0.0", - "longest-streak": "^3.0.0", - "mdast-util-to-string": "^3.0.0", - "micromark-util-decode-string": "^1.0.0", - "unist-util-visit": "^4.0.0", - "zwitch": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-mdx-expression/node_modules/mdast-util-to-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-3.1.0.tgz", - "integrity": "sha512-n4Vypz/DZgwo0iMHLQL49dJzlp7YtAJP+N07MZHpjPf/5XJuHUWstviF4Mn2jEiR/GNmtnRRqnwsXExk3igfFA==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-mdx-expression/node_modules/unist-util-is": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.1.1.tgz", - "integrity": "sha512-F5CZ68eYzuSvJjGhCLPL3cYx45IxkqXSetCcRgUXtbcm50X2L9oOWQlfUfDdAf+6Pd27YDblBfdtmsThXmwpbQ==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-mdx-expression/node_modules/unist-util-visit": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.1.tgz", - "integrity": "sha512-n9KN3WV9k4h1DxYR1LoajgN93wpEi/7ZplVe02IoB4gH5ctI1AaF2670BLHQYbwj+pY83gFtyeySFiyMHJklrg==", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0", - "unist-util-visit-parents": "^5.1.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-mdx-expression/node_modules/unist-util-visit-parents": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.1.tgz", - "integrity": "sha512-gks4baapT/kNRaWxuGkl5BIhoanZo7sC/cUT/JToSRNL1dYoXRFl75d++NkjYk4TAu2uv2Px+l8guMajogeuiw==", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-mdx-expression/node_modules/zwitch": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.2.tgz", - "integrity": "sha512-JZxotl7SxAJH0j7dN4pxsTV6ZLXoLdGME+PsjkL/DaBrVryK9kTGq06GfKrwcSOqypP+fdXGoCHE36b99fWVoA==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/mdast-util-mdx-jsx": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-2.1.0.tgz", @@ -19883,33 +23473,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/mdast-util-mdx-jsx/node_modules/ccount": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", - "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/mdast-util-mdx-jsx/node_modules/character-entities": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", - "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/mdast-util-mdx-jsx/node_modules/character-entities-html4": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", - "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/mdast-util-mdx-jsx/node_modules/character-entities-legacy": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", @@ -19968,42 +23531,6 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/mdast-util-mdx-jsx/node_modules/longest-streak": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.0.1.tgz", - "integrity": "sha512-cHlYSUpL2s7Fb3394mYxwTYj8niTaNHUCLr0qdiCXQfSjfuA7CKofpX2uSwEfFDQ0EB7JcnMnm+GjbqqoinYYg==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/mdast-util-mdx-jsx/node_modules/mdast-util-to-markdown": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-1.3.0.tgz", - "integrity": "sha512-6tUSs4r+KK4JGTTiQ7FfHmVOaDrLQJPmpjD6wPMlHGUVXoG9Vjc3jIeP+uyBWRf8clwB2blM+W7+KrlMYQnftA==", - "dependencies": { - "@types/mdast": "^3.0.0", - "@types/unist": "^2.0.0", - "longest-streak": "^3.0.0", - "mdast-util-to-string": "^3.0.0", - "micromark-util-decode-string": "^1.0.0", - "unist-util-visit": "^4.0.0", - "zwitch": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-mdx-jsx/node_modules/mdast-util-to-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-3.1.0.tgz", - "integrity": "sha512-n4Vypz/DZgwo0iMHLQL49dJzlp7YtAJP+N07MZHpjPf/5XJuHUWstviF4Mn2jEiR/GNmtnRRqnwsXExk3igfFA==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/mdast-util-mdx-jsx/node_modules/parse-entities": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.0.tgz", @@ -20023,64 +23550,6 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/mdast-util-mdx-jsx/node_modules/stringify-entities": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.3.tgz", - "integrity": "sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g==", - "dependencies": { - "character-entities-html4": "^2.0.0", - "character-entities-legacy": "^3.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/mdast-util-mdx-jsx/node_modules/unist-util-is": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.1.1.tgz", - "integrity": "sha512-F5CZ68eYzuSvJjGhCLPL3cYx45IxkqXSetCcRgUXtbcm50X2L9oOWQlfUfDdAf+6Pd27YDblBfdtmsThXmwpbQ==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-mdx-jsx/node_modules/unist-util-visit": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.1.tgz", - "integrity": "sha512-n9KN3WV9k4h1DxYR1LoajgN93wpEi/7ZplVe02IoB4gH5ctI1AaF2670BLHQYbwj+pY83gFtyeySFiyMHJklrg==", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0", - "unist-util-visit-parents": "^5.1.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-mdx-jsx/node_modules/unist-util-visit-parents": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.1.tgz", - "integrity": "sha512-gks4baapT/kNRaWxuGkl5BIhoanZo7sC/cUT/JToSRNL1dYoXRFl75d++NkjYk4TAu2uv2Px+l8guMajogeuiw==", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-mdx-jsx/node_modules/zwitch": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.2.tgz", - "integrity": "sha512-JZxotl7SxAJH0j7dN4pxsTV6ZLXoLdGME+PsjkL/DaBrVryK9kTGq06GfKrwcSOqypP+fdXGoCHE36b99fWVoA==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/mdast-util-mdxjs-esm": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-1.3.0.tgz", @@ -20097,16 +23566,41 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/mdast-util-mdxjs-esm/node_modules/longest-streak": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.0.1.tgz", - "integrity": "sha512-cHlYSUpL2s7Fb3394mYxwTYj8niTaNHUCLr0qdiCXQfSjfuA7CKofpX2uSwEfFDQ0EB7JcnMnm+GjbqqoinYYg==", + "node_modules/mdast-util-to-hast": { + "version": "12.2.4", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-12.2.4.tgz", + "integrity": "sha512-a21xoxSef1l8VhHxS1Dnyioz6grrJkoaCUgGzMD/7dWHvboYX3VW53esRUfB5tgTyz4Yos1n25SPcj35dJqmAg==", + "dependencies": { + "@types/hast": "^2.0.0", + "@types/mdast": "^3.0.0", + "mdast-util-definitions": "^5.0.0", + "micromark-util-sanitize-uri": "^1.1.0", + "trim-lines": "^3.0.0", + "unist-builder": "^3.0.0", + "unist-util-generated": "^2.0.0", + "unist-util-position": "^4.0.0", + "unist-util-visit": "^4.0.0" + }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/mdast-util-mdxjs-esm/node_modules/mdast-util-to-markdown": { + "node_modules/mdast-util-to-hast/node_modules/mdast-util-definitions": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-5.1.1.tgz", + "integrity": "sha512-rQ+Gv7mHttxHOBx2dkF4HWTg+EE+UR78ptQWDylzPKaQuVGdG4HIoY3SrS/pCp80nZ04greFvXbVFHT+uf0JVQ==", + "dependencies": { + "@types/mdast": "^3.0.0", + "@types/unist": "^2.0.0", + "unist-util-visit": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-markdown": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-1.3.0.tgz", "integrity": "sha512-6tUSs4r+KK4JGTTiQ7FfHmVOaDrLQJPmpjD6wPMlHGUVXoG9Vjc3jIeP+uyBWRf8clwB2blM+W7+KrlMYQnftA==", @@ -20124,7 +23618,7 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/mdast-util-mdxjs-esm/node_modules/mdast-util-to-string": { + "node_modules/mdast-util-to-string": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-3.1.0.tgz", "integrity": "sha512-n4Vypz/DZgwo0iMHLQL49dJzlp7YtAJP+N07MZHpjPf/5XJuHUWstviF4Mn2jEiR/GNmtnRRqnwsXExk3igfFA==", @@ -20133,119 +23627,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/mdast-util-mdxjs-esm/node_modules/unist-util-is": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.1.1.tgz", - "integrity": "sha512-F5CZ68eYzuSvJjGhCLPL3cYx45IxkqXSetCcRgUXtbcm50X2L9oOWQlfUfDdAf+6Pd27YDblBfdtmsThXmwpbQ==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-mdxjs-esm/node_modules/unist-util-visit": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.1.tgz", - "integrity": "sha512-n9KN3WV9k4h1DxYR1LoajgN93wpEi/7ZplVe02IoB4gH5ctI1AaF2670BLHQYbwj+pY83gFtyeySFiyMHJklrg==", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0", - "unist-util-visit-parents": "^5.1.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-mdxjs-esm/node_modules/unist-util-visit-parents": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.1.tgz", - "integrity": "sha512-gks4baapT/kNRaWxuGkl5BIhoanZo7sC/cUT/JToSRNL1dYoXRFl75d++NkjYk4TAu2uv2Px+l8guMajogeuiw==", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-mdxjs-esm/node_modules/zwitch": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.2.tgz", - "integrity": "sha512-JZxotl7SxAJH0j7dN4pxsTV6ZLXoLdGME+PsjkL/DaBrVryK9kTGq06GfKrwcSOqypP+fdXGoCHE36b99fWVoA==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/mdast-util-to-hast": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-6.0.2.tgz", - "integrity": "sha512-GjcOimC9qHI0yNFAQdBesrZXzUkRdFleQlcoU8+TVNfDW6oLUazUx8MgUoTaUyCJzBOnE5AOgqhpURrSlf0QwQ==", - "dependencies": { - "collapse-white-space": "^1.0.0", - "detab": "^2.0.0", - "mdast-util-definitions": "^1.2.0", - "mdurl": "^1.0.1", - "trim": "0.0.1", - "trim-lines": "^1.0.0", - "unist-builder": "^1.0.1", - "unist-util-generated": "^1.1.0", - "unist-util-position": "^3.0.0", - "unist-util-visit": "^1.1.0", - "xtend": "^4.0.1" - } - }, - "node_modules/mdast-util-to-hast/node_modules/unist-builder": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unist-builder/-/unist-builder-1.0.4.tgz", - "integrity": "sha512-v6xbUPP7ILrT15fHGrNyHc1Xda8H3xVhP7/HAIotHOhVPjH5dCXA097C3Rry1Q2O+HbOLCao4hfPB+EYEjHgVg==", - "dependencies": { - "object-assign": "^4.1.0" - } - }, - "node_modules/mdast-util-to-hast/node_modules/unist-util-visit": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-1.4.1.tgz", - "integrity": "sha512-AvGNk7Bb//EmJZyhtRUnNMEpId/AZ5Ph/KUpTI09WHQuDZHKovQ1oEv3mfmKpWKtoMzyMC4GLBm1Zy5k12fjIw==", - "dependencies": { - "unist-util-visit-parents": "^2.0.0" - } - }, - "node_modules/mdast-util-to-hast/node_modules/unist-util-visit-parents": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-2.1.2.tgz", - "integrity": "sha512-DyN5vD4NE3aSeB+PXYNKxzGsfocxp6asDc2XXE3b0ekO2BaRUpBicbbUygfSvYfUz1IkmjFR1YF7dPklraMZ2g==", - "dependencies": { - "unist-util-is": "^3.0.0" - } - }, - "node_modules/mdast-util-to-markdown": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-0.6.5.tgz", - "integrity": "sha512-XeV9sDE7ZlOQvs45C9UKMtfTcctcaj/pGwH8YLbMHoMOXNNCn2LsqVQOqrF1+/NU8lKDAqozme9SCXWyo9oAcQ==", - "dependencies": { - "@types/unist": "^2.0.0", - "longest-streak": "^2.0.0", - "mdast-util-to-string": "^2.0.0", - "parse-entities": "^2.0.0", - "repeat-string": "^1.0.0", - "zwitch": "^1.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-to-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz", - "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/mdurl": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", @@ -20434,9 +23815,9 @@ "dev": true }, "node_modules/micromark": { - "version": "2.11.4", - "resolved": "https://registry.npmjs.org/micromark/-/micromark-2.11.4.tgz", - "integrity": "sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-3.1.0.tgz", + "integrity": "sha512-6Mj0yHLdUZjHnOPgr5xfWIMqMWS12zDN6iws9SLuSz76W8jTtAv24MN4/CL7gJrl5vtxGInkkqDv/JIoRsQOvA==", "funding": [ { "type": "GitHub Sponsors", @@ -20448,8 +23829,23 @@ } ], "dependencies": { + "@types/debug": "^4.0.0", "debug": "^4.0.0", - "parse-entities": "^2.0.0" + "decode-named-character-reference": "^1.0.0", + "micromark-core-commonmark": "^1.0.1", + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-chunked": "^1.0.0", + "micromark-util-combine-extensions": "^1.0.0", + "micromark-util-decode-numeric-character-reference": "^1.0.0", + "micromark-util-encode": "^1.0.0", + "micromark-util-normalize-identifier": "^1.0.0", + "micromark-util-resolve-all": "^1.0.0", + "micromark-util-sanitize-uri": "^1.0.0", + "micromark-util-subtokenize": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.1", + "uvu": "^0.5.0" } }, "node_modules/micromark-core-commonmark": { @@ -20486,16 +23882,18 @@ } }, "node_modules/micromark-extension-gfm": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-0.3.3.tgz", - "integrity": "sha512-oVN4zv5/tAIA+l3GbMi7lWeYpJ14oQyJ3uEim20ktYFAcfX1x3LNlFGGlmrZHt7u9YlKExmyJdDGaTt6cMSR/A==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-2.0.1.tgz", + "integrity": "sha512-p2sGjajLa0iYiGQdT0oelahRYtMWvLjy8J9LOCxzIQsllMCGLbsLW+Nc+N4vi02jcRJvedVJ68cjelKIO6bpDA==", "dependencies": { - "micromark": "~2.11.0", - "micromark-extension-gfm-autolink-literal": "~0.5.0", - "micromark-extension-gfm-strikethrough": "~0.6.5", - "micromark-extension-gfm-table": "~0.4.0", - "micromark-extension-gfm-tagfilter": "~0.3.0", - "micromark-extension-gfm-task-list-item": "~0.3.0" + "micromark-extension-gfm-autolink-literal": "^1.0.0", + "micromark-extension-gfm-footnote": "^1.0.0", + "micromark-extension-gfm-strikethrough": "^1.0.0", + "micromark-extension-gfm-table": "^1.0.0", + "micromark-extension-gfm-tagfilter": "^1.0.0", + "micromark-extension-gfm-task-list-item": "^1.0.0", + "micromark-util-combine-extensions": "^1.0.0", + "micromark-util-types": "^1.0.0" }, "funding": { "type": "opencollective", @@ -20503,11 +23901,34 @@ } }, "node_modules/micromark-extension-gfm-autolink-literal": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-0.5.7.tgz", - "integrity": "sha512-ePiDGH0/lhcngCe8FtH4ARFoxKTUelMp4L7Gg2pujYD5CSMb9PbblnyL+AAMud/SNMyusbS2XDSiPIRcQoNFAw==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-1.0.3.tgz", + "integrity": "sha512-i3dmvU0htawfWED8aHMMAzAVp/F0Z+0bPh3YrbTPPL1v4YAlCZpy5rBO5p0LPYiZo0zFVkoYh7vDU7yQSiCMjg==", "dependencies": { - "micromark": "~2.11.3" + "micromark-util-character": "^1.0.0", + "micromark-util-sanitize-uri": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-footnote": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-1.0.4.tgz", + "integrity": "sha512-E/fmPmDqLiMUP8mLJ8NbJWJ4bTw6tS+FEQS8CcuDtZpILuOb2kjLqPEeAePF1djXROHXChM/wPJw0iS4kHCcIg==", + "dependencies": { + "micromark-core-commonmark": "^1.0.0", + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-normalize-identifier": "^1.0.0", + "micromark-util-sanitize-uri": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" }, "funding": { "type": "opencollective", @@ -20515,11 +23936,16 @@ } }, "node_modules/micromark-extension-gfm-strikethrough": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-0.6.5.tgz", - "integrity": "sha512-PpOKlgokpQRwUesRwWEp+fHjGGkZEejj83k9gU5iXCbDG+XBA92BqnRKYJdfqfkrRcZRgGuPuXb7DaK/DmxOhw==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-1.0.4.tgz", + "integrity": "sha512-/vjHU/lalmjZCT5xt7CcHVJGq8sYRm80z24qAKXzaHzem/xsDYb2yLL+NNVbYvmpLx3O7SYPuGL5pzusL9CLIQ==", "dependencies": { - "micromark": "~2.11.0" + "micromark-util-chunked": "^1.0.0", + "micromark-util-classify-character": "^1.0.0", + "micromark-util-resolve-all": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" }, "funding": { "type": "opencollective", @@ -20527,11 +23953,15 @@ } }, "node_modules/micromark-extension-gfm-table": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-0.4.3.tgz", - "integrity": "sha512-hVGvESPq0fk6ALWtomcwmgLvH8ZSVpcPjzi0AjPclB9FsVRgMtGZkUcpE0zgjOCFAznKepF4z3hX8z6e3HODdA==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-1.0.5.tgz", + "integrity": "sha512-xAZ8J1X9W9K3JTJTUL7G6wSKhp2ZYHrFk5qJgY/4B33scJzE2kpfRL6oiw/veJTbt7jiM/1rngLlOKPWr1G+vg==", "dependencies": { - "micromark": "~2.11.0" + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" }, "funding": { "type": "opencollective", @@ -20539,20 +23969,27 @@ } }, "node_modules/micromark-extension-gfm-tagfilter": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-0.3.0.tgz", - "integrity": "sha512-9GU0xBatryXifL//FJH+tAZ6i240xQuFrSL7mYi8f4oZSbc+NvXjkrHemeYP0+L4ZUT+Ptz3b95zhUZnMtoi/Q==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-1.0.1.tgz", + "integrity": "sha512-Ty6psLAcAjboRa/UKUbbUcwjVAv5plxmpUTy2XC/3nJFL37eHej8jrHrRzkqcpipJliuBH30DTs7+3wqNcQUVA==", + "dependencies": { + "micromark-util-types": "^1.0.0" + }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, "node_modules/micromark-extension-gfm-task-list-item": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-0.3.3.tgz", - "integrity": "sha512-0zvM5iSLKrc/NQl84pZSjGo66aTGd57C1idmlWmE87lkMcXrTxg1uXa/nXomxJytoje9trP0NDLvw4bZ/Z/XCQ==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-1.0.3.tgz", + "integrity": "sha512-PpysK2S1Q/5VXi72IIapbi/jliaiOFzv7THH4amwXeYXLq3l1uo8/2Be0Ac1rEwK20MQEsGH2ltAZLNY2KI/0Q==", "dependencies": { - "micromark": "~2.11.0" + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" }, "funding": { "type": "opencollective", @@ -20951,56 +24388,6 @@ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz", "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==" }, - "node_modules/micromark-util-events-to-acorn/node_modules/is-buffer": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", - "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "engines": { - "node": ">=4" - } - }, - "node_modules/micromark-util-events-to-acorn/node_modules/vfile": { - "version": "5.3.5", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.5.tgz", - "integrity": "sha512-U1ho2ga33eZ8y8pkbQLH54uKqGhFJ6GYIHnnG5AhRpAh3OWjkrRHKa/KogbmQn8We+c0KVV3rTOgR9V/WowbXQ==", - "dependencies": { - "@types/unist": "^2.0.0", - "is-buffer": "^2.0.0", - "unist-util-stringify-position": "^3.0.0", - "vfile-message": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-util-events-to-acorn/node_modules/vfile-location": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-4.0.1.tgz", - "integrity": "sha512-JDxPlTbZrZCQXogGheBHjbRWjESSPEak770XwWPfw5mTc1v1nWGLB/apzZxsx8a0SJVfF8HK8ql8RD308vXRUw==", - "dependencies": { - "@types/unist": "^2.0.0", - "vfile": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/micromark-util-html-tag-name": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-1.1.0.tgz", @@ -21053,9 +24440,9 @@ } }, "node_modules/micromark-util-sanitize-uri": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-1.0.0.tgz", - "integrity": "sha512-cCxvBKlmac4rxCGx6ejlIviRaMKZc0fWm5HdCHEeDWRSkn44l6NdYVRyU+0nT1XC72EQJMZV8IPHF+jTr56lAg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-1.1.0.tgz", + "integrity": "sha512-RoxtuSCX6sUNtxhbmsEFQfWzs8VN7cTctmBPvYivo98xb/kDEoTCtJQX5wyzIYEmk/lvNFTat4hL8oW0KndFpg==", "funding": [ { "type": "GitHub Sponsors", @@ -21170,6 +24557,7 @@ "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, "engines": { "node": ">= 0.6" } @@ -21178,6 +24566,7 @@ "version": "2.1.35", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, "dependencies": { "mime-db": "1.52.0" }, @@ -21420,6 +24809,12 @@ "color-name": "^1.1.4" } }, + "node_modules/moo-color/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/move-concurrently": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", @@ -21635,33 +25030,6 @@ "resolved": "https://registry.npmjs.org/next-compose-plugins/-/next-compose-plugins-2.2.1.tgz", "integrity": "sha512-OjJ+fV15FXO2uQXQagLD4C0abYErBjyjE0I0FHpOEIB8upw0hg1ldFP6cqHTJBH1cZqy96OeR3u1dJ+Ez2D4Bg==" }, - "node_modules/next-mdx-remote": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/next-mdx-remote/-/next-mdx-remote-3.0.8.tgz", - "integrity": "sha512-WFSxt0crxG5PN/0WvaunzxzqV3wh3dPBZyhkclxwyQfLSRKzsNSArzot/4gYTOOZ/GtyRfNjbI/HtDsW2S4fqQ==", - "dependencies": { - "@mdx-js/mdx": "^1.6.22", - "@mdx-js/react": "^1.6.22", - "esbuild": "^0.12.9", - "pkg-dir": "^5.0.0" - }, - "peerDependencies": { - "react": ">=16.x <=17.x", - "react-dom": ">=16.x <=17.x" - } - }, - "node_modules/next-mdx-remote/node_modules/@mdx-js/react": { - "version": "1.6.22", - "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-1.6.22.tgz", - "integrity": "sha512-TDoPum4SHdfPiGSAaRBw7ECyI8VaHpK8GJugbJIJuqyh6kzw9ZLJZW3HGL3NNrJGxcAixUvqROm+YuQOo5eXtg==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - }, - "peerDependencies": { - "react": "^16.13.1 || ^17.0.0" - } - }, "node_modules/next-seo": { "version": "4.29.0", "resolved": "https://registry.npmjs.org/next-seo/-/next-seo-4.29.0.tgz", @@ -21672,16 +25040,6 @@ "react-dom": ">=16.0.0" } }, - "node_modules/next-themes": { - "version": "0.0.15", - "resolved": "https://registry.npmjs.org/next-themes/-/next-themes-0.0.15.tgz", - "integrity": "sha512-LTmtqYi03c4gMTJmWwVK9XkHL7h0/+XrtR970Ujvtu3s0kZNeJN24aJsi4rkZOI8i19+qq6f8j+8Duwy5jqcrQ==", - "peerDependencies": { - "next": "*", - "react": "*", - "react-dom": "*" - } - }, "node_modules/next-tick": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", @@ -21696,11 +25054,6 @@ "escalade": "^3.1.1" } }, - "node_modules/next/node_modules/@next/env": { - "version": "12.0.8", - "resolved": "https://registry.npmjs.org/@next/env/-/env-12.0.8.tgz", - "integrity": "sha512-Wa0gOeioB9PHap9wtZDZEhgOSE3/+qE/UALWjJHuNvH4J3oE+13EjVOiEsr1JcPCXUN8ESQE+phDKlo6qJ8P9g==" - }, "node_modules/next/node_modules/@next/react-refresh-utils": { "version": "12.0.8", "resolved": "https://registry.npmjs.org/@next/react-refresh-utils/-/react-refresh-utils-12.0.8.tgz", @@ -21715,169 +25068,12 @@ } } }, - "node_modules/next/node_modules/@next/swc-android-arm64": { - "version": "12.0.8", - "resolved": "https://registry.npmjs.org/@next/swc-android-arm64/-/swc-android-arm64-12.0.8.tgz", - "integrity": "sha512-BiXMcOZNnXSIXv+FQvbRgbMb+iYayLX/Sb2MwR0wja+eMs46BY1x/ssXDwUBADP1M8YtrGTlSPHZqUiCU94+Mg==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "android" - ], + "node_modules/next/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==", "engines": { - "node": ">= 10" - } - }, - "node_modules/next/node_modules/@next/swc-darwin-arm64": { - "version": "12.0.8", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-12.0.8.tgz", - "integrity": "sha512-6EGMmvcIwPpwt0/iqLbXDGx6oKHAXzbowyyVXK8cqmIvhoghRFjqfiNGBs+ar6wEBGt68zhwn/77vE3iQWoFJw==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/next/node_modules/@next/swc-darwin-x64": { - "version": "12.0.8", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-12.0.8.tgz", - "integrity": "sha512-todxgQOGP/ucz5UH2kKR3XGDdkWmWr0VZAAbzgTbiFm45Ol4ih602k2nNR3xSbza9IqNhxNuUVsMpBgeo19CFQ==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/next/node_modules/@next/swc-linux-arm-gnueabihf": { - "version": "12.0.8", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-12.0.8.tgz", - "integrity": "sha512-KULmdrfI+DJxBuhEyV47MQllB/WpC3P2xbwhHezxL/LkC2nkz5SbV4k432qpx2ebjIRf9SjdQ5Oz1FjD8Urayw==", - "cpu": [ - "arm" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/next/node_modules/@next/swc-linux-arm64-gnu": { - "version": "12.0.8", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-12.0.8.tgz", - "integrity": "sha512-1XO87wgIVPvt5fx5i8CqdhksRdcpqyzCOLW4KrE0f9pUCIT04EbsFiKdmsH9c73aqjNZMnCMXpbV+cn4hN8x1w==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/next/node_modules/@next/swc-linux-arm64-musl": { - "version": "12.0.8", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-12.0.8.tgz", - "integrity": "sha512-NStRZEy/rkk2G18Yhc/Jzi1Q2Dv+zH176oO8479zlDQ5syRfc6AvRHVV4iNRc8Pai58If83r/nOJkwFgGwkKLw==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/next/node_modules/@next/swc-linux-x64-gnu": { - "version": "12.0.8", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-12.0.8.tgz", - "integrity": "sha512-rHxTGtTEDFsdT9/VjewzxE19S7W1NE+aZpm4TwbT1pSNGK9KQxQGcXjqoHMeB+VZCFknzNEoIU/vydbjZMlAuw==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/next/node_modules/@next/swc-linux-x64-musl": { - "version": "12.0.8", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-12.0.8.tgz", - "integrity": "sha512-1F4kuFRQE10GSx7LMSvRmjMXFGpxT30g8rZzq9r/p/WKdErA4WB4uxaKEX0P8AINfuN63i4luKdR+LoacgBhYw==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/next/node_modules/@next/swc-win32-arm64-msvc": { - "version": "12.0.8", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-12.0.8.tgz", - "integrity": "sha512-QuRe49jqCV61TysGopC1P0HPqFAMZMWe1nbIQLyOkDLkULmZR8N2eYZq7fwqvZE5YwhMmJA/grwWFVBqSEh5Kg==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/next/node_modules/@next/swc-win32-ia32-msvc": { - "version": "12.0.8", - "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-12.0.8.tgz", - "integrity": "sha512-0RV3/julybJr1IlPCowIWrJJZyAl+sOakJEM15y1NOOsbwTQ5eKZZXSi+7e23TN4wmy5HwNvn2dKzgOEVJ+jbA==", - "cpu": [ - "ia32" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/next/node_modules/@next/swc-win32-x64-msvc": { - "version": "12.0.8", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-12.0.8.tgz", - "integrity": "sha512-tTga6OFfO2JS+Yt5hdryng259c/tzNgSWkdiU2E+RBHiysAIOta57n4PJ8iPahOSqEqjaToPI76wM+o441GaNQ==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" + "node": ">=8" } }, "node_modules/next/node_modules/jest-worker": { @@ -22080,9 +25276,9 @@ "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==" }, "node_modules/nodemailer": { - "version": "6.7.8", - "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.7.8.tgz", - "integrity": "sha512-2zaTFGqZixVmTxpJRCFC+Vk5eGRd/fYtvIR+dl5u9QXLTQWGIf48x/JXvo58g9sa0bU6To04XUv554Paykum3g==", + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.8.0.tgz", + "integrity": "sha512-EjYvSmHzekz6VNkNd12aUqAco+bOkRe3Of5jVhltqKhEsjw/y0PYPJfp83+s9Wzh1dspYAkUW/YNQ350NATbSQ==", "engines": { "node": ">=6.0.0" } @@ -22176,7 +25372,8 @@ "node_modules/nwsapi": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.2.tgz", - "integrity": "sha512-90yv+6538zuvUMnN+zCr8LuV6bPFdq50304114vJYJ8RDyK8D5O9Phpbd6SZWgI7PwzmmfN1upeOJlvybDSgCw==" + "integrity": "sha512-90yv+6538zuvUMnN+zCr8LuV6bPFdq50304114vJYJ8RDyK8D5O9Phpbd6SZWgI7PwzmmfN1upeOJlvybDSgCw==", + "dev": true }, "node_modules/object-assign": { "version": "4.1.1", @@ -22490,26 +25687,52 @@ "opener": "bin/opener-bin.js" } }, - "node_modules/optimism": { - "version": "0.16.1", - "resolved": "https://registry.npmjs.org/optimism/-/optimism-0.16.1.tgz", - "integrity": "sha512-64i+Uw3otrndfq5kaoGNoY7pvOhSsjFEN4bdEFh80MWVk/dbgJfMv7VFDeCT8LxNAlEVhQmdVEbfE7X2nWNIIg==", + "node_modules/optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, "dependencies": { - "@wry/context": "^0.6.0", - "@wry/trie": "^0.3.0" + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + }, + "engines": { + "node": ">= 0.8.0" } }, - "node_modules/optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "node_modules/optionator/node_modules/levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", + "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" + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/optionator/node_modules/prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/optionator/node_modules/type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", + "dev": true, + "dependencies": { + "prelude-ls": "~1.1.2" }, "engines": { "node": ">= 0.8.0" @@ -22600,6 +25823,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, "dependencies": { "yocto-queue": "^0.1.0" }, @@ -22614,6 +25838,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, "dependencies": { "p-limit": "^3.0.2" }, @@ -22749,6 +25974,15 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/parse-entities/node_modules/character-entities": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", + "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/parse-json": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", @@ -22777,14 +26011,6 @@ "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" }, - "node_modules/parse5-htmlparser2-tree-adapter": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", - "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", - "dependencies": { - "parse5": "^6.0.1" - } - }, "node_modules/parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", @@ -22829,6 +26055,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, "engines": { "node": ">=8" } @@ -22883,6 +26110,15 @@ "node": ">=0.12" } }, + "node_modules/periscopic": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/periscopic/-/periscopic-3.0.4.tgz", + "integrity": "sha512-SFx68DxCv0Iyo6APZuw/AKewkkThGwssmU0QWtTlvov3VAtPX+QJ4CadwSaz8nrT5jPIuxdvJWB4PnD2KNDxQg==", + "dependencies": { + "estree-walker": "^3.0.0", + "is-reference": "^3.0.0" + } + }, "node_modules/pg": { "version": "8.8.0", "resolved": "https://registry.npmjs.org/pg/-/pg-8.8.0.tgz", @@ -23026,6 +26262,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-5.0.0.tgz", "integrity": "sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==", + "dev": true, "dependencies": { "find-up": "^5.0.0" }, @@ -23067,9 +26304,9 @@ } }, "node_modules/postcss": { - "version": "8.4.16", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.16.tgz", - "integrity": "sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ==", + "version": "8.4.17", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.17.tgz", + "integrity": "sha512-UNxNOLQydcOFi41yHNMcKRZ39NeXlr8AxGuZJsdub8vIb12fHzcq37DTU/QtbI6WLxNg2gF9Z+8qtRwTj1UI1Q==", "funding": [ { "type": "opencollective", @@ -23932,9 +27169,9 @@ } }, "node_modules/postcss-loader/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==", + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -24598,6 +27835,16 @@ "node": ">=6.14.4" } }, + "node_modules/postgres": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postgres/-/postgres-3.3.1.tgz", + "integrity": "sha512-ak/xXToZYwRvQlZIUtLgPUIggz62eIIbPTgxl/Yl4oTu0TgNOd1CrzTCifsvZ89jBwLvnX6+Ky5frp5HzIBoaw==", + "dev": true, + "funding": { + "type": "individual", + "url": "https://github.com/sponsors/porsager" + } + }, "node_modules/postgres-array": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", @@ -24811,18 +28058,24 @@ "react-is": "^16.13.1" } }, + "node_modules/properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/properties/-/properties-1.2.1.tgz", + "integrity": "sha512-qYNxyMj1JeW54i/EWEFsM1cVwxJbtgPp8+0Wg9XjNaK6VE/c4oRi6PNu5p7w1mNXEIQIjV5Wwn8v8Gz82/QzdQ==", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, "node_modules/property-expr": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/property-expr/-/property-expr-2.0.5.tgz", "integrity": "sha512-IJUkICM5dP5znhCckHSv30Q4b5/JA5enCtkRHYaOVOAocnH/1BQEYTC5NMfT3AVl/iXKdr3aqQbQn9DxyWknwA==" }, "node_modules/property-information": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/property-information/-/property-information-5.6.0.tgz", - "integrity": "sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA==", - "dependencies": { - "xtend": "^4.0.0" - }, + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.1.1.tgz", + "integrity": "sha512-hrzC564QIl0r0vy4l6MvRLhafmUowhO/O3KgVSoXIbbA2Sz4j8HGpJc6T2cubRVwMwpdiG/vKGfhT4IixmKN9w==", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -24860,7 +28113,8 @@ "node_modules/psl": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", - "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==" + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", + "dev": true }, "node_modules/public-encrypt": { "version": "4.0.3", @@ -24958,7 +28212,8 @@ "node_modules/querystringify": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "dev": true }, "node_modules/queue-microtask": { "version": "1.2.3", @@ -25333,6 +28588,17 @@ "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-2.0.4.tgz", "integrity": "sha512-suNP+J1VU1MWFKcyt7RtjiSWUjvidmQSlqu+eHslq+342xCbGTYmC0mEhPCOHxlW0CywylOC1u2DFAT+bv4dBw==" }, + "node_modules/react-feather": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/react-feather/-/react-feather-2.0.10.tgz", + "integrity": "sha512-BLhukwJ+Z92Nmdcs+EMw6dy1Z/VLiJTzEQACDUEnWMClhYnFykJCGWQx+NmwP/qQHGX/5CzQ+TGi8ofg2+HzVQ==", + "dependencies": { + "prop-types": "^15.7.2" + }, + "peerDependencies": { + "react": ">=16.8.6" + } + }, "node_modules/react-from-dom": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/react-from-dom/-/react-from-dom-0.6.2.tgz", @@ -25464,24 +28730,6 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/react-markdown/node_modules/comma-separated-tokens": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.2.tgz", - "integrity": "sha512-G5yTt3KQN4Yn7Yk4ed73hlZ1evrFKXeUW3086p3PRFNp7m2vIjI6Pg+Kgb+oyzhd9F2qdcoj67+y3SdxL5XWsg==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/react-markdown/node_modules/hast-util-whitespace": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-2.0.0.tgz", - "integrity": "sha512-Pkw+xBHuV6xFeJprJe2BBEoDV+AvQySaz3pPDRUs5PNZEMQjpXJJueqrpcHIXxnWTcAGi/UOCgVShlkY6kLoqg==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/react-markdown/node_modules/is-buffer": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", @@ -25515,15 +28763,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/react-markdown/node_modules/property-information": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.1.1.tgz", - "integrity": "sha512-hrzC564QIl0r0vy4l6MvRLhafmUowhO/O3KgVSoXIbbA2Sz4j8HGpJc6T2cubRVwMwpdiG/vKGfhT4IixmKN9w==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/react-markdown/node_modules/react-is": { "version": "18.2.0", "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", @@ -25543,15 +28782,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/react-markdown/node_modules/space-separated-tokens": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.1.tgz", - "integrity": "sha512-ekwEbFp5aqSPKaqeY1PGrlGQxPNaq+Cnx4+bE2D8sciBQrHpbwoBbawqTN2+6jPs9IdWxxiUcN0K2pkczD3zmw==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/react-markdown/node_modules/trough": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/trough/-/trough-2.1.0.tgz", @@ -25579,57 +28809,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/react-markdown/node_modules/unist-util-is": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.1.1.tgz", - "integrity": "sha512-F5CZ68eYzuSvJjGhCLPL3cYx45IxkqXSetCcRgUXtbcm50X2L9oOWQlfUfDdAf+6Pd27YDblBfdtmsThXmwpbQ==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/react-markdown/node_modules/unist-util-visit": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.1.tgz", - "integrity": "sha512-n9KN3WV9k4h1DxYR1LoajgN93wpEi/7ZplVe02IoB4gH5ctI1AaF2670BLHQYbwj+pY83gFtyeySFiyMHJklrg==", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0", - "unist-util-visit-parents": "^5.1.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/react-markdown/node_modules/unist-util-visit-parents": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.1.tgz", - "integrity": "sha512-gks4baapT/kNRaWxuGkl5BIhoanZo7sC/cUT/JToSRNL1dYoXRFl75d++NkjYk4TAu2uv2Px+l8guMajogeuiw==", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/react-markdown/node_modules/vfile": { - "version": "5.3.5", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.5.tgz", - "integrity": "sha512-U1ho2ga33eZ8y8pkbQLH54uKqGhFJ6GYIHnnG5AhRpAh3OWjkrRHKa/KogbmQn8We+c0KVV3rTOgR9V/WowbXQ==", - "dependencies": { - "@types/unist": "^2.0.0", - "is-buffer": "^2.0.0", - "unist-util-stringify-position": "^3.0.0", - "vfile-message": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/react-merge-refs": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/react-merge-refs/-/react-merge-refs-1.1.0.tgz", @@ -25673,9 +28852,9 @@ "integrity": "sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA==" }, "node_modules/react-redux": { - "version": "7.2.8", - "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-7.2.8.tgz", - "integrity": "sha512-6+uDjhs3PSIclqoCk0kd6iX74gzrGc3W5zcAjbrFgEdIjRSQObdIwfx80unTkVUYvbQ95Y8Av3OvFHq1w5EOUw==", + "version": "7.2.9", + "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-7.2.9.tgz", + "integrity": "sha512-Gx4L3uM182jEEayZfRbI/G11ZpYdNAnBs70lFVMNdHJI76XYtR+7m0MN+eAs7UHBPhWXcnFPaS+9owSCJQHNpQ==", "dependencies": { "@babel/runtime": "^7.15.4", "@types/react-redux": "^7.1.20", @@ -26259,12 +29438,14 @@ "node_modules/regenerate": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", - "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==" + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true }, "node_modules/regenerate-unicode-properties": { "version": "10.1.0", "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz", "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==", + "dev": true, "dependencies": { "regenerate": "^1.4.2" }, @@ -26281,6 +29462,7 @@ "version": "0.15.0", "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.0.tgz", "integrity": "sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==", + "dev": true, "dependencies": { "@babel/runtime": "^7.8.4" } @@ -26366,6 +29548,7 @@ "version": "5.2.1", "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.2.1.tgz", "integrity": "sha512-HrnlNtpvqP1Xkb28tMhBUO2EbyUHdQlsnlAhzWcwHy8WJR53UWr7/MAvqrsQKMbV4qdpv03oTMG8iIhfsPFktQ==", + "dev": true, "dependencies": { "regenerate": "^1.4.2", "regenerate-unicode-properties": "^10.1.0", @@ -26381,12 +29564,14 @@ "node_modules/regjsgen": { "version": "0.7.1", "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.7.1.tgz", - "integrity": "sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA==" + "integrity": "sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA==", + "dev": true }, "node_modules/regjsparser": { "version": "0.9.1", "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "dev": true, "dependencies": { "jsesc": "~0.5.0" }, @@ -26398,20 +29583,92 @@ "version": "0.5.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "dev": true, "bin": { "jsesc": "bin/jsesc" } }, "node_modules/rehype-slug": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/rehype-slug/-/rehype-slug-4.0.1.tgz", - "integrity": "sha512-KIlJALf9WfHFF21icwTd2yI2IP+RQRweaxH9ChVGQwRYy36+hiomG4ZSe0yQRyCt+D/vE39LbAcOI/h4O4GPhA==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/rehype-slug/-/rehype-slug-5.0.1.tgz", + "integrity": "sha512-X5v3wV/meuOX9NFcGhJvUpEjIvQl2gDvjg3z40RVprYFt7q3th4qMmYLULiu3gXvbNX1ppx+oaa6JyY1W67pTA==", "dependencies": { + "@types/hast": "^2.0.0", "github-slugger": "^1.1.1", - "hast-util-has-property": "^1.0.0", - "hast-util-heading-rank": "^1.0.0", - "hast-util-to-string": "^1.0.0", - "unist-util-visit": "^2.0.0" + "hast-util-has-property": "^2.0.0", + "hast-util-heading-rank": "^2.0.0", + "hast-util-to-string": "^2.0.0", + "unified": "^10.0.0", + "unist-util-visit": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-slug/node_modules/bail": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", + "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/rehype-slug/node_modules/is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "engines": { + "node": ">=4" + } + }, + "node_modules/rehype-slug/node_modules/is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/rehype-slug/node_modules/trough": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/trough/-/trough-2.1.0.tgz", + "integrity": "sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/rehype-slug/node_modules/unified": { + "version": "10.1.2", + "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz", + "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==", + "dependencies": { + "@types/unist": "^2.0.0", + "bail": "^2.0.0", + "extend": "^3.0.0", + "is-buffer": "^2.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^5.0.0" }, "funding": { "type": "opencollective", @@ -26427,21 +29684,6 @@ "node": ">= 0.10" } }, - "node_modules/remark": { - "version": "14.0.2", - "resolved": "https://registry.npmjs.org/remark/-/remark-14.0.2.tgz", - "integrity": "sha512-A3ARm2V4BgiRXaUo5K0dRvJ1lbogrbXnhkJRmD0yw092/Yl0kOCZt1k9ZeElEwkZsWGsMumz6qL5MfNJH9nOBA==", - "dependencies": { - "@types/mdast": "^3.0.0", - "remark-parse": "^10.0.0", - "remark-stringify": "^10.0.0", - "unified": "^10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/remark-external-links": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/remark-external-links/-/remark-external-links-8.0.0.tgz", @@ -26459,13 +29701,49 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/remark-external-links/node_modules/mdast-util-definitions": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-4.0.0.tgz", - "integrity": "sha512-k8AJ6aNnUkB7IE+5azR9h81O5EQ/cTDXtWdMq9Kk5KcEW/8ritU5CeLg/9HhOC++nALHBlaogJ5jz0Ybk3kPMQ==", + "node_modules/remark-external-links/node_modules/space-separated-tokens": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz", + "integrity": "sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/remark-external-links/node_modules/unist-util-is": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", + "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-external-links/node_modules/unist-util-visit": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz", + "integrity": "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==", "dev": true, "dependencies": { - "unist-util-visit": "^2.0.0" + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0", + "unist-util-visit-parents": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-external-links/node_modules/unist-util-visit-parents": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz", + "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0" }, "funding": { "type": "opencollective", @@ -26482,12 +29760,83 @@ } }, "node_modules/remark-gfm": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-1.0.0.tgz", - "integrity": "sha512-KfexHJCiqvrdBZVbQ6RopMZGwaXz6wFJEfByIuEwGf0arvITHjiKKZ1dpXujjH9KZdm1//XJQwgfnJ3lmXaDPA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-3.0.1.tgz", + "integrity": "sha512-lEFDoi2PICJyNrACFOfDD3JlLkuSbOa5Wd8EPt06HUdptv8Gn0bxYTdbU/XXQ3swAPkEaGxxPN9cbnMHvVu1Ig==", "dependencies": { - "mdast-util-gfm": "^0.1.0", - "micromark-extension-gfm": "^0.3.0" + "@types/mdast": "^3.0.0", + "mdast-util-gfm": "^2.0.0", + "micromark-extension-gfm": "^2.0.0", + "unified": "^10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-gfm/node_modules/bail": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", + "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/remark-gfm/node_modules/is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "engines": { + "node": ">=4" + } + }, + "node_modules/remark-gfm/node_modules/is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/remark-gfm/node_modules/trough": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/trough/-/trough-2.1.0.tgz", + "integrity": "sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/remark-gfm/node_modules/unified": { + "version": "10.1.2", + "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz", + "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==", + "dependencies": { + "@types/unist": "^2.0.0", + "bail": "^2.0.0", + "extend": "^3.0.0", + "is-buffer": "^2.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^5.0.0" }, "funding": { "type": "opencollective", @@ -26519,106 +29868,6 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/remark-html/node_modules/ccount": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", - "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/remark-html/node_modules/character-entities-html4": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", - "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/remark-html/node_modules/character-entities-legacy": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", - "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/remark-html/node_modules/comma-separated-tokens": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.2.tgz", - "integrity": "sha512-G5yTt3KQN4Yn7Yk4ed73hlZ1evrFKXeUW3086p3PRFNp7m2vIjI6Pg+Kgb+oyzhd9F2qdcoj67+y3SdxL5XWsg==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/remark-html/node_modules/hast-util-is-element": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-2.1.2.tgz", - "integrity": "sha512-thjnlGAnwP8ef/GSO1Q8BfVk2gundnc2peGQqEg2kUt/IqesiGg/5mSwN2fE7nLzy61pg88NG6xV+UrGOrx9EA==", - "dependencies": { - "@types/hast": "^2.0.0", - "@types/unist": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-html/node_modules/hast-util-sanitize": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/hast-util-sanitize/-/hast-util-sanitize-4.0.0.tgz", - "integrity": "sha512-pw56+69jq+QSr/coADNvWTmBPDy+XsmwaF5KnUys4/wM1jt/fZdl7GPxhXXXYdXnz3Gj3qMkbUCH2uKjvX0MgQ==", - "dependencies": { - "@types/hast": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-html/node_modules/hast-util-to-html": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-8.0.3.tgz", - "integrity": "sha512-/D/E5ymdPYhHpPkuTHOUkSatxr4w1ZKrZsG0Zv/3C2SRVT0JFJG53VS45AMrBtYk0wp5A7ksEhiC8QaOZM95+A==", - "dependencies": { - "@types/hast": "^2.0.0", - "ccount": "^2.0.0", - "comma-separated-tokens": "^2.0.0", - "hast-util-is-element": "^2.0.0", - "hast-util-whitespace": "^2.0.0", - "html-void-elements": "^2.0.0", - "property-information": "^6.0.0", - "space-separated-tokens": "^2.0.0", - "stringify-entities": "^4.0.2", - "unist-util-is": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-html/node_modules/hast-util-whitespace": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-2.0.0.tgz", - "integrity": "sha512-Pkw+xBHuV6xFeJprJe2BBEoDV+AvQySaz3pPDRUs5PNZEMQjpXJJueqrpcHIXxnWTcAGi/UOCgVShlkY6kLoqg==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-html/node_modules/html-void-elements": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-2.0.1.tgz", - "integrity": "sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/remark-html/node_modules/is-buffer": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", @@ -26652,82 +29901,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/remark-html/node_modules/mdast-util-definitions": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-5.1.1.tgz", - "integrity": "sha512-rQ+Gv7mHttxHOBx2dkF4HWTg+EE+UR78ptQWDylzPKaQuVGdG4HIoY3SrS/pCp80nZ04greFvXbVFHT+uf0JVQ==", - "dependencies": { - "@types/mdast": "^3.0.0", - "@types/unist": "^2.0.0", - "unist-util-visit": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-html/node_modules/mdast-util-to-hast": { - "version": "12.2.2", - "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-12.2.2.tgz", - "integrity": "sha512-lVkUttV9wqmdXFtEBXKcepvU/zfwbhjbkM5rxrquLW55dS1DfOrnAXCk5mg1be1sfY/WfMmayGy1NsbK1GLCYQ==", - "dependencies": { - "@types/hast": "^2.0.0", - "@types/mdast": "^3.0.0", - "@types/mdurl": "^1.0.0", - "mdast-util-definitions": "^5.0.0", - "mdurl": "^1.0.0", - "micromark-util-sanitize-uri": "^1.0.0", - "trim-lines": "^3.0.0", - "unist-builder": "^3.0.0", - "unist-util-generated": "^2.0.0", - "unist-util-position": "^4.0.0", - "unist-util-visit": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-html/node_modules/property-information": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.1.1.tgz", - "integrity": "sha512-hrzC564QIl0r0vy4l6MvRLhafmUowhO/O3KgVSoXIbbA2Sz4j8HGpJc6T2cubRVwMwpdiG/vKGfhT4IixmKN9w==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/remark-html/node_modules/space-separated-tokens": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.1.tgz", - "integrity": "sha512-ekwEbFp5aqSPKaqeY1PGrlGQxPNaq+Cnx4+bE2D8sciBQrHpbwoBbawqTN2+6jPs9IdWxxiUcN0K2pkczD3zmw==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/remark-html/node_modules/stringify-entities": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.3.tgz", - "integrity": "sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g==", - "dependencies": { - "character-entities-html4": "^2.0.0", - "character-entities-legacy": "^3.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/remark-html/node_modules/trim-lines": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", - "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/remark-html/node_modules/trough": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/trough/-/trough-2.1.0.tgz", @@ -26755,94 +29928,10 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/remark-html/node_modules/unist-builder": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unist-builder/-/unist-builder-3.0.0.tgz", - "integrity": "sha512-GFxmfEAa0vi9i5sd0R2kcrI9ks0r82NasRq5QHh2ysGngrc6GiqD5CDf1FjPenY4vApmFASBIIlk/jj5J5YbmQ==", - "dependencies": { - "@types/unist": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-html/node_modules/unist-util-generated": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-2.0.0.tgz", - "integrity": "sha512-TiWE6DVtVe7Ye2QxOVW9kqybs6cZexNwTwSMVgkfjEReqy/xwGpAXb99OxktoWwmL+Z+Epb0Dn8/GNDYP1wnUw==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-html/node_modules/unist-util-is": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.1.1.tgz", - "integrity": "sha512-F5CZ68eYzuSvJjGhCLPL3cYx45IxkqXSetCcRgUXtbcm50X2L9oOWQlfUfDdAf+6Pd27YDblBfdtmsThXmwpbQ==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-html/node_modules/unist-util-position": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-4.0.3.tgz", - "integrity": "sha512-p/5EMGIa1qwbXjA+QgcBXaPWjSnZfQ2Sc3yBEEfgPwsEmJd8Qh+DSk3LGnmOM4S1bY2C0AjmMnB8RuEYxpPwXQ==", - "dependencies": { - "@types/unist": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-html/node_modules/unist-util-visit": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.1.tgz", - "integrity": "sha512-n9KN3WV9k4h1DxYR1LoajgN93wpEi/7ZplVe02IoB4gH5ctI1AaF2670BLHQYbwj+pY83gFtyeySFiyMHJklrg==", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0", - "unist-util-visit-parents": "^5.1.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-html/node_modules/unist-util-visit-parents": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.1.tgz", - "integrity": "sha512-gks4baapT/kNRaWxuGkl5BIhoanZo7sC/cUT/JToSRNL1dYoXRFl75d++NkjYk4TAu2uv2Px+l8guMajogeuiw==", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-html/node_modules/vfile": { - "version": "5.3.5", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.5.tgz", - "integrity": "sha512-U1ho2ga33eZ8y8pkbQLH54uKqGhFJ6GYIHnnG5AhRpAh3OWjkrRHKa/KogbmQn8We+c0KVV3rTOgR9V/WowbXQ==", - "dependencies": { - "@types/unist": "^2.0.0", - "is-buffer": "^2.0.0", - "unist-util-stringify-position": "^3.0.0", - "vfile-message": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/remark-mdx": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-2.1.3.tgz", - "integrity": "sha512-3SmtXOy9+jIaVctL8Cs3VAQInjRLGOwNXfrBB9KCT+EpJpKD3PQiy0x8hUNGyjQmdyOs40BqgPU7kYtH9uoR6w==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-2.1.4.tgz", + "integrity": "sha512-zZxHdd0s8xfMmIKcxhFoUT4x54VOJTUJ+lPys7ZR2Vcgb4xwuAwxvUfkVrsCTdo/lBVxLQv43bXVNu3ZIbahnA==", "dependencies": { "mdast-util-mdx": "^2.0.0", "micromark-extension-mdxjs": "^1.0.0" @@ -26880,6 +29969,34 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/remark-parse/node_modules/mdast-util-to-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz", + "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-parse/node_modules/micromark": { + "version": "2.11.4", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-2.11.4.tgz", + "integrity": "sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "debug": "^4.0.0", + "parse-entities": "^2.0.0" + } + }, "node_modules/remark-parse/node_modules/unist-util-stringify-position": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", @@ -26892,22 +30009,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/remark-prism": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/remark-prism/-/remark-prism-1.3.6.tgz", - "integrity": "sha512-yYSXJ2MEK2DeD9UKDKFkQPcVqRx6aX2FYD1kE27ScogpZ/BBO8MoOO6gf/AKqfXvKGnP51wqvDEBmPseypgaug==", - "dependencies": { - "classnames": "^2.3.1", - "css-selector-parser": "^1.4.1", - "escape-html": "^1.0.3", - "jsdom": "^16.5.3", - "parse-numeric-range": "^1.2.0", - "parse5": "^6.0.1", - "parse5-htmlparser2-tree-adapter": "^6.0.1", - "prismjs": "^1.23.0", - "unist-util-map": "^2.0.1" - } - }, "node_modules/remark-rehype": { "version": "10.1.0", "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-10.1.0.tgz", @@ -26965,51 +30066,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/remark-rehype/node_modules/mdast-util-definitions": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-5.1.1.tgz", - "integrity": "sha512-rQ+Gv7mHttxHOBx2dkF4HWTg+EE+UR78ptQWDylzPKaQuVGdG4HIoY3SrS/pCp80nZ04greFvXbVFHT+uf0JVQ==", - "dependencies": { - "@types/mdast": "^3.0.0", - "@types/unist": "^2.0.0", - "unist-util-visit": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-rehype/node_modules/mdast-util-to-hast": { - "version": "12.2.2", - "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-12.2.2.tgz", - "integrity": "sha512-lVkUttV9wqmdXFtEBXKcepvU/zfwbhjbkM5rxrquLW55dS1DfOrnAXCk5mg1be1sfY/WfMmayGy1NsbK1GLCYQ==", - "dependencies": { - "@types/hast": "^2.0.0", - "@types/mdast": "^3.0.0", - "@types/mdurl": "^1.0.0", - "mdast-util-definitions": "^5.0.0", - "mdurl": "^1.0.0", - "micromark-util-sanitize-uri": "^1.0.0", - "trim-lines": "^3.0.0", - "unist-builder": "^3.0.0", - "unist-util-generated": "^2.0.0", - "unist-util-position": "^4.0.0", - "unist-util-visit": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-rehype/node_modules/trim-lines": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", - "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/remark-rehype/node_modules/trough": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/trough/-/trough-2.1.0.tgz", @@ -27037,90 +30093,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/remark-rehype/node_modules/unist-builder": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unist-builder/-/unist-builder-3.0.0.tgz", - "integrity": "sha512-GFxmfEAa0vi9i5sd0R2kcrI9ks0r82NasRq5QHh2ysGngrc6GiqD5CDf1FjPenY4vApmFASBIIlk/jj5J5YbmQ==", - "dependencies": { - "@types/unist": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-rehype/node_modules/unist-util-generated": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-2.0.0.tgz", - "integrity": "sha512-TiWE6DVtVe7Ye2QxOVW9kqybs6cZexNwTwSMVgkfjEReqy/xwGpAXb99OxktoWwmL+Z+Epb0Dn8/GNDYP1wnUw==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-rehype/node_modules/unist-util-is": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.1.1.tgz", - "integrity": "sha512-F5CZ68eYzuSvJjGhCLPL3cYx45IxkqXSetCcRgUXtbcm50X2L9oOWQlfUfDdAf+6Pd27YDblBfdtmsThXmwpbQ==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-rehype/node_modules/unist-util-position": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-4.0.3.tgz", - "integrity": "sha512-p/5EMGIa1qwbXjA+QgcBXaPWjSnZfQ2Sc3yBEEfgPwsEmJd8Qh+DSk3LGnmOM4S1bY2C0AjmMnB8RuEYxpPwXQ==", - "dependencies": { - "@types/unist": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-rehype/node_modules/unist-util-visit": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.1.tgz", - "integrity": "sha512-n9KN3WV9k4h1DxYR1LoajgN93wpEi/7ZplVe02IoB4gH5ctI1AaF2670BLHQYbwj+pY83gFtyeySFiyMHJklrg==", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0", - "unist-util-visit-parents": "^5.1.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-rehype/node_modules/unist-util-visit-parents": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.1.tgz", - "integrity": "sha512-gks4baapT/kNRaWxuGkl5BIhoanZo7sC/cUT/JToSRNL1dYoXRFl75d++NkjYk4TAu2uv2Px+l8guMajogeuiw==", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-rehype/node_modules/vfile": { - "version": "5.3.5", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.5.tgz", - "integrity": "sha512-U1ho2ga33eZ8y8pkbQLH54uKqGhFJ6GYIHnnG5AhRpAh3OWjkrRHKa/KogbmQn8We+c0KVV3rTOgR9V/WowbXQ==", - "dependencies": { - "@types/unist": "^2.0.0", - "is-buffer": "^2.0.0", - "unist-util-stringify-position": "^3.0.0", - "vfile-message": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/remark-slug": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/remark-slug/-/remark-slug-6.1.0.tgz", @@ -27146,6 +30118,45 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/remark-slug/node_modules/unist-util-is": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", + "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-slug/node_modules/unist-util-visit": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz", + "integrity": "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0", + "unist-util-visit-parents": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-slug/node_modules/unist-util-visit-parents": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz", + "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/remark-squeeze-paragraphs": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/remark-squeeze-paragraphs/-/remark-squeeze-paragraphs-4.0.0.tgz", @@ -27170,194 +30181,45 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/remark/node_modules/bail": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", - "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", + "node_modules/remark-stringify/node_modules/longest-streak": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.4.tgz", + "integrity": "sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/remark/node_modules/is-buffer": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", - "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "engines": { - "node": ">=4" - } - }, - "node_modules/remark/node_modules/is-plain-obj": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", - "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/remark/node_modules/longest-streak": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.0.1.tgz", - "integrity": "sha512-cHlYSUpL2s7Fb3394mYxwTYj8niTaNHUCLr0qdiCXQfSjfuA7CKofpX2uSwEfFDQ0EB7JcnMnm+GjbqqoinYYg==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/remark/node_modules/mdast-util-to-markdown": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-1.3.0.tgz", - "integrity": "sha512-6tUSs4r+KK4JGTTiQ7FfHmVOaDrLQJPmpjD6wPMlHGUVXoG9Vjc3jIeP+uyBWRf8clwB2blM+W7+KrlMYQnftA==", - "dependencies": { - "@types/mdast": "^3.0.0", - "@types/unist": "^2.0.0", - "longest-streak": "^3.0.0", - "mdast-util-to-string": "^3.0.0", - "micromark-util-decode-string": "^1.0.0", - "unist-util-visit": "^4.0.0", - "zwitch": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark/node_modules/mdast-util-to-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-3.1.0.tgz", - "integrity": "sha512-n4Vypz/DZgwo0iMHLQL49dJzlp7YtAJP+N07MZHpjPf/5XJuHUWstviF4Mn2jEiR/GNmtnRRqnwsXExk3igfFA==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark/node_modules/remark-parse": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-10.0.1.tgz", - "integrity": "sha512-1fUyHr2jLsVOkhbvPRBJ5zTKZZyD6yZzYaWCS6BPBdQ8vEMBCH+9zNCDA6tET/zHCi/jLqjCWtlJZUPk+DbnFw==", - "dependencies": { - "@types/mdast": "^3.0.0", - "mdast-util-from-markdown": "^1.0.0", - "unified": "^10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark/node_modules/remark-stringify": { - "version": "10.0.2", - "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-10.0.2.tgz", - "integrity": "sha512-6wV3pvbPvHkbNnWB0wdDvVFHOe1hBRAx1Q/5g/EpH4RppAII6J8Gnwe7VbHuXaoKIF6LAg6ExTel/+kNqSQ7lw==", - "dependencies": { - "@types/mdast": "^3.0.0", - "mdast-util-to-markdown": "^1.0.0", - "unified": "^10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark/node_modules/trough": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/trough/-/trough-2.1.0.tgz", - "integrity": "sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/remark/node_modules/unified": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz", - "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==", + "node_modules/remark-stringify/node_modules/mdast-util-to-markdown": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-0.6.5.tgz", + "integrity": "sha512-XeV9sDE7ZlOQvs45C9UKMtfTcctcaj/pGwH8YLbMHoMOXNNCn2LsqVQOqrF1+/NU8lKDAqozme9SCXWyo9oAcQ==", "dependencies": { "@types/unist": "^2.0.0", - "bail": "^2.0.0", - "extend": "^3.0.0", - "is-buffer": "^2.0.0", - "is-plain-obj": "^4.0.0", - "trough": "^2.0.0", - "vfile": "^5.0.0" + "longest-streak": "^2.0.0", + "mdast-util-to-string": "^2.0.0", + "parse-entities": "^2.0.0", + "repeat-string": "^1.0.0", + "zwitch": "^1.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/remark/node_modules/unist-util-is": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.1.1.tgz", - "integrity": "sha512-F5CZ68eYzuSvJjGhCLPL3cYx45IxkqXSetCcRgUXtbcm50X2L9oOWQlfUfDdAf+6Pd27YDblBfdtmsThXmwpbQ==", + "node_modules/remark-stringify/node_modules/mdast-util-to-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz", + "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==", "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/remark/node_modules/unist-util-visit": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.1.tgz", - "integrity": "sha512-n9KN3WV9k4h1DxYR1LoajgN93wpEi/7ZplVe02IoB4gH5ctI1AaF2670BLHQYbwj+pY83gFtyeySFiyMHJklrg==", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0", - "unist-util-visit-parents": "^5.1.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark/node_modules/unist-util-visit-parents": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.1.tgz", - "integrity": "sha512-gks4baapT/kNRaWxuGkl5BIhoanZo7sC/cUT/JToSRNL1dYoXRFl75d++NkjYk4TAu2uv2Px+l8guMajogeuiw==", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark/node_modules/vfile": { - "version": "5.3.5", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.5.tgz", - "integrity": "sha512-U1ho2ga33eZ8y8pkbQLH54uKqGhFJ6GYIHnnG5AhRpAh3OWjkrRHKa/KogbmQn8We+c0KVV3rTOgR9V/WowbXQ==", - "dependencies": { - "@types/unist": "^2.0.0", - "is-buffer": "^2.0.0", - "unist-util-stringify-position": "^3.0.0", - "vfile-message": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark/node_modules/zwitch": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.2.tgz", - "integrity": "sha512-JZxotl7SxAJH0j7dN4pxsTV6ZLXoLdGME+PsjkL/DaBrVryK9kTGq06GfKrwcSOqypP+fdXGoCHE36b99fWVoA==", + "node_modules/remark-stringify/node_modules/zwitch": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz", + "integrity": "sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -27378,14 +30240,6 @@ "node": ">= 0.10.0" } }, - "node_modules/remarkable/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, "node_modules/remove-trailing-separator": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", @@ -27419,68 +30273,6 @@ "node": ">=0.10.0" } }, - "node_modules/renderkid/node_modules/dom-serializer": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", - "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", - "dev": true, - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" - } - }, - "node_modules/renderkid/node_modules/domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", - "dev": true, - "dependencies": { - "domelementtype": "^2.2.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "node_modules/renderkid/node_modules/domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "dev": true, - "dependencies": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" - } - }, - "node_modules/renderkid/node_modules/htmlparser2": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", - "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", - "dev": true, - "funding": [ - "https://github.com/fb55/htmlparser2?sponsor=1", - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.0.0", - "domutils": "^2.5.2", - "entities": "^2.0.0" - } - }, "node_modules/renderkid/node_modules/strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", @@ -27542,7 +30334,8 @@ "node_modules/requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true }, "node_modules/resize-observer-polyfill": { "version": "1.5.1", @@ -27709,10 +30502,24 @@ "ret": "~0.1.10" } }, + "node_modules/safe-regex-test": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", + "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-regex": "^1.1.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "devOptional": true }, "node_modules/sane": { "version": "4.1.0", @@ -28032,6 +30839,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "dev": true, "dependencies": { "xmlchars": "^2.2.0" }, @@ -28091,6 +30899,12 @@ "ajv": "^6.9.1" } }, + "node_modules/schema-utils/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/section-matter": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz", @@ -28367,6 +31181,36 @@ "url": "https://github.com/chalk/slice-ansi?sponsor=1" } }, + "node_modules/slice-ansi/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==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/slice-ansi/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==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/slice-ansi/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==" + }, "node_modules/snapdragon": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", @@ -28597,9 +31441,9 @@ "devOptional": true }, "node_modules/space-separated-tokens": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz", - "integrity": "sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.1.tgz", + "integrity": "sha512-ekwEbFp5aqSPKaqeY1PGrlGQxPNaq+Cnx4+bE2D8sciBQrHpbwoBbawqTN2+6jPs9IdWxxiUcN0K2pkczD3zmw==", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -29090,15 +31934,25 @@ } }, "node_modules/stringify-entities": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-2.0.0.tgz", - "integrity": "sha512-fqqhZzXyAM6pGD9lky/GOPq6V4X0SeTAFBl0iXb/BzOegl40gpf/bV3QQP7zULNYvjr6+Dx8SCaDULjVoOru0A==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.3.tgz", + "integrity": "sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g==", "dependencies": { - "character-entities-html4": "^1.0.0", - "character-entities-legacy": "^1.0.0", - "is-alphanumerical": "^1.0.0", - "is-decimal": "^1.0.2", - "is-hexadecimal": "^1.0.0" + "character-entities-html4": "^2.0.0", + "character-entities-legacy": "^3.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/stringify-entities/node_modules/character-entities-legacy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", + "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, "node_modules/strip-ansi": { @@ -29227,6 +32081,12 @@ "ajv": "^6.9.1" } }, + "node_modules/style-loader/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/style-loader/node_modules/schema-utils": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", @@ -29366,15 +32226,19 @@ "stylis": "^3.5.0" } }, + "node_modules/supabase-tests": { + "resolved": "tests", + "link": true + }, "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==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dependencies": { - "has-flag": "^4.0.0" + "has-flag": "^3.0.0" }, "engines": { - "node": ">=8" + "node": ">=4" } }, "node_modules/supports-hyperlinks": { @@ -29390,6 +32254,27 @@ "node": ">=8" } }, + "node_modules/supports-hyperlinks/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/supports-hyperlinks/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", @@ -29435,18 +32320,11 @@ "react": "^16.11.0 || ^17.0.0" } }, - "node_modules/symbol-observable": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz", - "integrity": "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==", - "engines": { - "node": ">=0.10" - } - }, "node_modules/symbol-tree": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==" + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true }, "node_modules/symbol.prototype.description": { "version": "1.0.5", @@ -29531,6 +32409,11 @@ "resolved": "https://registry.npmjs.org/tailwindcss-radix/-/tailwindcss-radix-1.6.0.tgz", "integrity": "sha512-5oBgGCVGsITMiUVlc6Euj4kt03l8htLJxVT9AXbkFxcJiXLtQxJriFq/8R+3s63OKit/ynCVdkqvlnW6H7iG1g==" }, + "node_modules/tailwindcss/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==" + }, "node_modules/tapable": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", @@ -29594,10 +32477,6 @@ "node": ">=0.10.0" } }, - "node_modules/temp-docs": { - "resolved": "apps/temp-docs", - "link": true - }, "node_modules/terminal-link": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", @@ -29706,6 +32585,15 @@ "node": ">=8" } }, + "node_modules/terser-webpack-plugin/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/terser-webpack-plugin/node_modules/jest-worker": { "version": "26.6.2", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", @@ -29786,10 +32674,22 @@ "node": ">=8" } }, + "node_modules/terser-webpack-plugin/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/terser-webpack-plugin/node_modules/terser": { - "version": "5.15.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.15.0.tgz", - "integrity": "sha512-L1BJiXVmheAQQy+as0oF3Pwtlo4s3Wi1X2zNZ2NxOB4wx9bdS9Vk67XQENLFdLYGCK/Z2di53mTj/hBafR+dTA==", + "version": "5.15.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.15.1.tgz", + "integrity": "sha512-K1faMUvpm/FBxjBXud0LWVAGxmvoPbZbfTCYbSgaaYQaIXI3/TdI7a7ZGA73Zrou6Q8Zmz3oeUTsp/dj+ag2Xw==", "dev": true, "dependencies": { "@jridgewell/source-map": "^0.3.2", @@ -29862,9 +32762,9 @@ "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==" }, "node_modules/tiny-invariant": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.2.0.tgz", - "integrity": "sha512-1Uhn/aqw5C6RI4KejVeTg6mIS7IqxnLJ8Mv2tV5rTc0qWobay7pDUz6Wi392Cnc8ak1H0F2cjoRzb2/AW4+Fvg==" + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.1.tgz", + "integrity": "sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==" }, "node_modules/tiny-warning": { "version": "1.0.3", @@ -30020,6 +32920,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.2.tgz", "integrity": "sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==", + "dev": true, "dependencies": { "psl": "^1.1.33", "punycode": "^2.1.1", @@ -30034,6 +32935,7 @@ "version": "0.2.0", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "dev": true, "engines": { "node": ">= 4.0.0" } @@ -30042,6 +32944,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", + "dev": true, "dependencies": { "punycode": "^2.1.1" }, @@ -30055,9 +32958,9 @@ "integrity": "sha512-YzQV+TZg4AxpKxaTHK3c3D+kRDCGVEE7LemdlQZoQXn0iennk10RsIoY6ikzAqJTc9Xjl9C1/waHom/J86ziAQ==" }, "node_modules/trim-lines": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-1.1.3.tgz", - "integrity": "sha512-E0ZosSWYK2mkSu+KEtQ9/KqarVjA9HztOSX+9FDdNacRAq29RRV6ZQNgob3iuW8Htar9vAfEa6yyt5qBAHZDBA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", + "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -30100,17 +33003,246 @@ "node": ">=6.10" } }, - "node_modules/ts-invariant": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.10.3.tgz", - "integrity": "sha512-uivwYcQaxAucv1CzRp2n/QdYPo4ILf9VXgH19zEIjFx2EJufV16P0JtJVpYHy89DItG6Kwj2oIUjrcK5au+4tQ==", + "node_modules/ts-jest": { + "version": "27.1.5", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.1.5.tgz", + "integrity": "sha512-Xv6jBQPoBEvBq/5i2TeSG9tt/nqkbpcurrEG1b+2yfBrcJelOZF9Ml6dmyMh7bcW9JyFbRYpR5rxROSlBLTZHA==", + "dev": true, "dependencies": { - "tslib": "^2.1.0" + "bs-logger": "0.x", + "fast-json-stable-stringify": "2.x", + "jest-util": "^27.0.0", + "json5": "2.x", + "lodash.memoize": "4.x", + "make-error": "1.x", + "semver": "7.x", + "yargs-parser": "20.x" + }, + "bin": { + "ts-jest": "cli.js" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "@babel/core": ">=7.0.0-beta.0 <8", + "@types/jest": "^27.0.0", + "babel-jest": ">=27.0.0 <28", + "jest": "^27.0.0", + "typescript": ">=3.8 <5.0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "@types/jest": { + "optional": true + }, + "babel-jest": { + "optional": true + }, + "esbuild": { + "optional": true + } + } + }, + "node_modules/ts-jest/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/ts-jest/node_modules/@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/ts-jest/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/ts-jest/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/ts-jest/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/ts-jest/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/ts-jest/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/ts-jest/node_modules/jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/ts-jest/node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/ts-jest/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/ts-node": { + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", + "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", + "devOptional": true, + "dependencies": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } + } + }, + "node_modules/ts-node/node_modules/acorn": { + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", + "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", + "devOptional": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/ts-node/node_modules/acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "devOptional": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/ts-node/node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "devOptional": true + }, "node_modules/ts-pnp": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/ts-pnp/-/ts-pnp-1.2.0.tgz", @@ -30397,10 +33529,6 @@ "win32" ] }, - "node_modules/tutorials": { - "resolved": "apps/temp-community-tutorials", - "link": true - }, "node_modules/type": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", @@ -30464,9 +33592,9 @@ } }, "node_modules/typescript": { - "version": "4.8.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.3.tgz", - "integrity": "sha512-goMHfm00nWPa8UvR/CPSvykqf6dVV8x/dp0c5mFTMTIu0u0FlGWRioyy7Nn0PGAdHxpJZnuO/ut+PpQ8UiHAig==", + "version": "4.8.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.4.tgz", + "integrity": "sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -30476,9 +33604,9 @@ } }, "node_modules/uglify-js": { - "version": "3.17.1", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.1.tgz", - "integrity": "sha512-+juFBsLLw7AqMaqJ0GFvlsGZwdQfI2ooKQB39PSBgMnMakcFosi9O8jCwE+2/2nMNcc0z63r9mwjoDG8zr+q0Q==", + "version": "3.17.3", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.3.tgz", + "integrity": "sha512-JmMFDME3iufZnBpyKL+uS78LRiC+mK55zWfM5f/pWBJfpOttXAqYfdDGRukYhJuyRinvPVAtUhvy7rlDybNtFg==", "dev": true, "optional": true, "bin": { @@ -30488,6 +33616,10 @@ "node": ">=0.8.0" } }, + "node_modules/ui": { + "resolved": "packages/ui", + "link": true + }, "node_modules/unbox-primitive": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", @@ -30525,6 +33657,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "dev": true, "engines": { "node": ">=4" } @@ -30533,6 +33666,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, "dependencies": { "unicode-canonical-property-names-ecmascript": "^2.0.0", "unicode-property-aliases-ecmascript": "^2.0.0" @@ -30545,6 +33679,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", + "dev": true, "engines": { "node": ">=4" } @@ -30553,6 +33688,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "dev": true, "engines": { "node": ">=4" } @@ -30596,10 +33732,50 @@ "node": ">=4" } }, + "node_modules/unified/node_modules/unist-util-stringify-position": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", + "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==", + "dependencies": { + "@types/unist": "^2.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unified/node_modules/vfile": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz", + "integrity": "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==", + "dependencies": { + "@types/unist": "^2.0.0", + "is-buffer": "^2.0.0", + "unist-util-stringify-position": "^2.0.0", + "vfile-message": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unified/node_modules/vfile-message": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz", + "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/uniforms": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/uniforms/-/uniforms-3.10.0.tgz", - "integrity": "sha512-wp8mnm5DqRzGUQwbEIG6sfpnu5H+gCncL5g3Cmohax9E1bmn4PattsBRI88gSMLckZNZdpA79LX1f8QdQFub/g==", + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/uniforms/-/uniforms-3.10.1.tgz", + "integrity": "sha512-R2FBzYVv9KbgsYaVloL13Cw+eoF9q1DeSZOePBf28WWDtHFWNrziUZBPgmd4UVbk+6oQuwkbomX7BnNJ/jdtqw==", "dependencies": { "invariant": "^2.0.0", "lodash": "^4.0.0", @@ -30613,15 +33789,15 @@ } }, "node_modules/uniforms-bootstrap4": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/uniforms-bootstrap4/-/uniforms-bootstrap4-3.10.0.tgz", - "integrity": "sha512-0C/kp1Uo7W7Y/PFJm39iWyCUhWuCEQ5q3tjVL7Kmf/gpBG05Rmyp0OiWl1hY2csYQvzzid6uusYRmq1H6pSivw==", + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/uniforms-bootstrap4/-/uniforms-bootstrap4-3.10.1.tgz", + "integrity": "sha512-zxSNc3rViHhKF2P2uyak566+F66MOPoj3dAdf2S9xt44zCVvLtSAg+LVV8MMsL6USqVg5oSQeMEHp277bPSAnw==", "dependencies": { "classnames": "^2.0.0", "invariant": "^2.0.0", "lodash": "^4.0.0", "tslib": "^2.2.0", - "uniforms": "^3.10.0", + "uniforms": "^3.10.1", "warning": "^4.0.0" }, "funding": { @@ -30632,14 +33808,14 @@ } }, "node_modules/uniforms-bridge-json-schema": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/uniforms-bridge-json-schema/-/uniforms-bridge-json-schema-3.10.0.tgz", - "integrity": "sha512-MGGV9w+Y9ZMNQq9KI58ll3Bb0wAJyQvilg2j4mLnmtJi/10zW2JNL+88QZjELlfHPO8UZxT2LZkKUQyG8SGDbQ==", + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/uniforms-bridge-json-schema/-/uniforms-bridge-json-schema-3.10.1.tgz", + "integrity": "sha512-AVC+HSTQplF28o7f7Cvc+ezTr07dO+OkRSYaG7Ip8VyGi7BSmORYOKCU8LMkKlLm3Ez3QhHCGnDdLwy9d9Vqgw==", "dependencies": { "invariant": "^2.0.0", "lodash": "^4.0.0", "tslib": "^2.2.0", - "uniforms": "^3.10.0" + "uniforms": "^3.10.1" }, "funding": { "url": "https://github.com/vazco/uniforms?sponsor=1" @@ -30685,45 +33861,42 @@ } }, "node_modules/unist-builder": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/unist-builder/-/unist-builder-2.0.3.tgz", - "integrity": "sha512-f98yt5pnlMWlzP539tPc4grGMsFaQQlP/vM396b00jngsiINumNmsY8rkXjfoi1c6QaM8nQ3vaGDuoKWbe/1Uw==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-generated": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-1.1.6.tgz", - "integrity": "sha512-cln2Mm1/CZzN5ttGK7vkoGw+RZ8VcUH6BtGbq98DDtRGquAAOXig1mrBQYelOwMXYS8rK+vZDyyojSjp7JX+Lg==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-is": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-3.0.0.tgz", - "integrity": "sha512-sVZZX3+kspVNmLWBPAB6r+7D9ZgAFPNWm66f7YNb420RlQSbn+n8rG8dGZSkrER7ZIXGQYNm5pqC3v3HopH24A==" - }, - "node_modules/unist-util-map": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/unist-util-map/-/unist-util-map-2.0.1.tgz", - "integrity": "sha512-VdNvk4BQUUU9Rgr8iUOvclHa/iN9O+6Dt66FKij8l9OVezGG37gGWCPU5KSax1R2degqXFvl3kWTkvzL79e9tQ==", + "resolved": "https://registry.npmjs.org/unist-builder/-/unist-builder-3.0.0.tgz", + "integrity": "sha512-GFxmfEAa0vi9i5sd0R2kcrI9ks0r82NasRq5QHh2ysGngrc6GiqD5CDf1FjPenY4vApmFASBIIlk/jj5J5YbmQ==", "dependencies": { - "@types/mdast": "^3.0.0", - "object-assign": "^4.0.0" + "@types/unist": "^2.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, + "node_modules/unist-util-generated": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-2.0.0.tgz", + "integrity": "sha512-TiWE6DVtVe7Ye2QxOVW9kqybs6cZexNwTwSMVgkfjEReqy/xwGpAXb99OxktoWwmL+Z+Epb0Dn8/GNDYP1wnUw==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-is": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.1.1.tgz", + "integrity": "sha512-F5CZ68eYzuSvJjGhCLPL3cYx45IxkqXSetCcRgUXtbcm50X2L9oOWQlfUfDdAf+6Pd27YDblBfdtmsThXmwpbQ==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/unist-util-position": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-3.1.0.tgz", - "integrity": "sha512-w+PkwCbYSFw8vpgWD0v7zRCl1FpY3fjDSQ3/N/wNd9Ffa4gPi8+4keqt99N3XW6F99t/mUzp2xAhNmfKWp95QA==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-4.0.3.tgz", + "integrity": "sha512-p/5EMGIa1qwbXjA+QgcBXaPWjSnZfQ2Sc3yBEEfgPwsEmJd8Qh+DSk3LGnmOM4S1bY2C0AjmMnB8RuEYxpPwXQ==", + "dependencies": { + "@types/unist": "^2.0.0" + }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" @@ -30766,42 +33939,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/unist-util-remove-position/node_modules/unist-util-is": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.1.1.tgz", - "integrity": "sha512-F5CZ68eYzuSvJjGhCLPL3cYx45IxkqXSetCcRgUXtbcm50X2L9oOWQlfUfDdAf+6Pd27YDblBfdtmsThXmwpbQ==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-remove-position/node_modules/unist-util-visit": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.1.tgz", - "integrity": "sha512-n9KN3WV9k4h1DxYR1LoajgN93wpEi/7ZplVe02IoB4gH5ctI1AaF2670BLHQYbwj+pY83gFtyeySFiyMHJklrg==", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0", - "unist-util-visit-parents": "^5.1.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-remove-position/node_modules/unist-util-visit-parents": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.1.tgz", - "integrity": "sha512-gks4baapT/kNRaWxuGkl5BIhoanZo7sC/cUT/JToSRNL1dYoXRFl75d++NkjYk4TAu2uv2Px+l8guMajogeuiw==", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/unist-util-remove/node_modules/unist-util-is": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", @@ -30824,13 +33961,13 @@ } }, "node_modules/unist-util-visit": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz", - "integrity": "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.1.tgz", + "integrity": "sha512-n9KN3WV9k4h1DxYR1LoajgN93wpEi/7ZplVe02IoB4gH5ctI1AaF2670BLHQYbwj+pY83gFtyeySFiyMHJklrg==", "dependencies": { "@types/unist": "^2.0.0", - "unist-util-is": "^4.0.0", - "unist-util-visit-parents": "^3.0.0" + "unist-util-is": "^5.0.0", + "unist-util-visit-parents": "^5.1.1" }, "funding": { "type": "opencollective", @@ -30838,37 +33975,18 @@ } }, "node_modules/unist-util-visit-parents": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-1.1.2.tgz", - "integrity": "sha512-yvo+MMLjEwdc3RhhPYSximset7rwjMrdt9E41Smmvg25UQIenzrN83cRnF1JMzoMi9zZOQeYXHSDf7p+IQkW3Q==" - }, - "node_modules/unist-util-visit/node_modules/unist-util-is": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", - "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-visit/node_modules/unist-util-visit-parents": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz", - "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.1.tgz", + "integrity": "sha512-gks4baapT/kNRaWxuGkl5BIhoanZo7sC/cUT/JToSRNL1dYoXRFl75d++NkjYk4TAu2uv2Px+l8guMajogeuiw==", "dependencies": { "@types/unist": "^2.0.0", - "unist-util-is": "^4.0.0" + "unist-util-is": "^5.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/universal-user-agent": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", - "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==" - }, "node_modules/universalify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", @@ -30966,9 +34084,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.9.tgz", - "integrity": "sha512-/xsqn21EGVdXI3EXSum1Yckj3ZVZugqyOZQ/CxYPBD/R+ko9NSUScf8tFF4dOKY+2pvSSJA/S+5B8s4Zr4kyvg==", + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", + "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", "funding": [ { "type": "opencollective", @@ -31046,6 +34164,7 @@ "version": "1.5.10", "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dev": true, "dependencies": { "querystringify": "^2.1.1", "requires-port": "^1.0.0" @@ -31208,6 +34327,16 @@ "integrity": "sha512-dsNgbLaTrd6l3MMxTtouOCFw4CBFc/3a+GgYA2YyrJvyQ1u6q4pcu3ktLoUZ/VN/Aw9WsauazbgsgdfVWgAKQg==", "dev": true }, + "node_modules/uuid-by-string": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/uuid-by-string/-/uuid-by-string-3.0.7.tgz", + "integrity": "sha512-9xf+GAcwzLLGL2Z2Vb7hmi7jWIAKSiuaI5cLFsKw1IIlm7S5VpqvdJ5S7N36hqdy0v7DAwnnENJVAeev57/H1A==", + "dev": true, + "dependencies": { + "js-md5": "^0.7.3", + "js-sha1": "^0.6.0" + } + }, "node_modules/uvu": { "version": "0.5.6", "resolved": "https://registry.npmjs.org/uvu/-/uvu-0.5.6.tgz", @@ -31225,6 +34354,14 @@ "node": ">=8" } }, + "node_modules/uvu/node_modules/diff": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz", + "integrity": "sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==", + "engines": { + "node": ">=0.3.1" + } + }, "node_modules/uvu/node_modules/kleur": { "version": "4.1.5", "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", @@ -31238,6 +34375,12 @@ "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==" }, + "node_modules/v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "devOptional": true + }, "node_modules/v8-to-istanbul": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz", @@ -31281,14 +34424,14 @@ } }, "node_modules/vfile": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz", - "integrity": "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==", + "version": "5.3.5", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.5.tgz", + "integrity": "sha512-U1ho2ga33eZ8y8pkbQLH54uKqGhFJ6GYIHnnG5AhRpAh3OWjkrRHKa/KogbmQn8We+c0KVV3rTOgR9V/WowbXQ==", "dependencies": { "@types/unist": "^2.0.0", "is-buffer": "^2.0.0", - "unist-util-stringify-position": "^2.0.0", - "vfile-message": "^2.0.0" + "unist-util-stringify-position": "^3.0.0", + "vfile-message": "^3.0.0" }, "funding": { "type": "opencollective", @@ -31296,14 +34439,70 @@ } }, "node_modules/vfile-location": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-3.2.0.tgz", - "integrity": "sha512-aLEIZKv/oxuCDZ8lkJGhuhztf/BW4M+iHdCwglA/eWc+vtuRFJj8EtgceYFX4LRjOhCAAiNHsKGssC6onJ+jbA==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-4.0.1.tgz", + "integrity": "sha512-JDxPlTbZrZCQXogGheBHjbRWjESSPEak770XwWPfw5mTc1v1nWGLB/apzZxsx8a0SJVfF8HK8ql8RD308vXRUw==", + "dependencies": { + "@types/unist": "^2.0.0", + "vfile": "^5.0.0" + }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, + "node_modules/vfile-matter": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/vfile-matter/-/vfile-matter-3.0.1.tgz", + "integrity": "sha512-CAAIDwnh6ZdtrqAuxdElUqQRQDQgbbIrYtDYI8gCjXS1qQ+1XdLoK8FIZWxJwn0/I+BkSSZpar3SOgjemQz4fg==", + "dependencies": { + "@types/js-yaml": "^4.0.0", + "is-buffer": "^2.0.0", + "js-yaml": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-matter/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==" + }, + "node_modules/vfile-matter/node_modules/is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "engines": { + "node": ">=4" + } + }, + "node_modules/vfile-matter/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==", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, "node_modules/vfile-message": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.2.tgz", @@ -31339,31 +34538,6 @@ "node": ">=4" } }, - "node_modules/vfile/node_modules/unist-util-stringify-position": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", - "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==", - "dependencies": { - "@types/unist": "^2.0.2" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/vfile/node_modules/vfile-message": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz", - "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-stringify-position": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/vm-browserify": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", @@ -31374,6 +34548,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "dev": true, "dependencies": { "browser-process-hrtime": "^1.0.0" } @@ -31382,6 +34557,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", + "dev": true, "dependencies": { "xml-name-validator": "^3.0.0" }, @@ -31714,6 +34890,7 @@ "version": "6.1.0", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", + "dev": true, "engines": { "node": ">=10.4" } @@ -31808,6 +34985,70 @@ "node": ">=0.4.0" } }, + "node_modules/webpack-bundle-analyzer/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==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/webpack-bundle-analyzer/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "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/webpack-bundle-analyzer/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==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/webpack-bundle-analyzer/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==" + }, + "node_modules/webpack-bundle-analyzer/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==", + "engines": { + "node": ">=8" + } + }, + "node_modules/webpack-bundle-analyzer/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==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/webpack-bundle-analyzer/node_modules/ws": { "version": "7.5.9", "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", @@ -32150,6 +35391,12 @@ "node": ">=4" } }, + "node_modules/webpack/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==", + "devOptional": true + }, "node_modules/webpack/node_modules/json5": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", @@ -32361,6 +35608,7 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "dev": true, "dependencies": { "iconv-lite": "0.4.24" } @@ -32368,12 +35616,14 @@ "node_modules/whatwg-mimetype": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", - "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==" + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", + "dev": true }, "node_modules/whatwg-url": { "version": "8.7.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", + "dev": true, "dependencies": { "lodash": "^4.7.0", "tr46": "^2.1.0", @@ -32481,6 +35731,39 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, + "node_modules/wrap-ansi/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/wrap-ansi/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/wrap-ansi/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/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -32499,9 +35782,9 @@ } }, "node_modules/ws": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.8.1.tgz", - "integrity": "sha512-bGy2JzvzkPowEJV++hF07hAD6niYSr0JzBNo/J29WsB57A2r7Wlc1UFcTR9IzrPvuNVO4B8LGqF8qcpsVOhJCA==", + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.9.0.tgz", + "integrity": "sha512-Ja7nszREasGaYUYCI2k4lCKIRTt+y7XuqVoHR44YpI49TtryyqbqvDMn5eqfW7e6HzTukDRIsXqzVHScqRcafg==", "dev": true, "engines": { "node": ">=10.0.0" @@ -32538,12 +35821,14 @@ "node_modules/xml-name-validator": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", - "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==" + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", + "dev": true }, "node_modules/xmlchars": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==" + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true }, "node_modules/xtend": { "version": "4.0.2", @@ -32610,10 +35895,20 @@ "node": ">=10" } }, + "node_modules/yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "devOptional": true, + "engines": { + "node": ">=6" + } + }, "node_modules/yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, "engines": { "node": ">=10" }, @@ -32638,23 +35933,10 @@ "node": ">=10" } }, - "node_modules/zen-observable": { - "version": "0.8.15", - "resolved": "https://registry.npmjs.org/zen-observable/-/zen-observable-0.8.15.tgz", - "integrity": "sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ==" - }, - "node_modules/zen-observable-ts": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/zen-observable-ts/-/zen-observable-ts-1.2.5.tgz", - "integrity": "sha512-QZWQekv6iB72Naeake9hS1KxHlotfRpe+WGNbNx5/ta+R3DNjVO2bswf63gXlWDcs+EMd7XY8HfVQyP1X6T4Zg==", - "dependencies": { - "zen-observable": "0.8.15" - } - }, "node_modules/zwitch": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz", - "integrity": "sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.2.tgz", + "integrity": "sha512-JZxotl7SxAJH0j7dN4pxsTV6ZLXoLdGME+PsjkL/DaBrVryK9kTGq06GfKrwcSOqypP+fdXGoCHE36b99fWVoA==", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -32736,6 +36018,64 @@ "packages/tsconfig": { "version": "0.0.0" }, + "packages/ui": { + "version": "0.0.0", + "license": "MIT", + "dependencies": { + "@headlessui/react": "^1.0.0", + "@mertasan/tailwindcss-variables": "^2.0.1", + "@radix-ui/colors": "^0.1.8", + "@radix-ui/react-accordion": "^0.1.5", + "@radix-ui/react-collapsible": "^0.1.5", + "@radix-ui/react-context-menu": "^0.1.0", + "@radix-ui/react-dialog": "^0.1.5", + "@radix-ui/react-dropdown-menu": "^0.1.4", + "@radix-ui/react-popover": "^0.1.0", + "@radix-ui/react-portal": "^0.1.3", + "@radix-ui/react-tabs": "^0.1.0", + "@tailwindcss/forms": "^0.4.0", + "@tailwindcss/typography": "^0.5.0", + "autoprefixer": "^10.4.2", + "deepmerge": "^4.2.2", + "formik": "^2.2.9", + "lodash": "^4.17.20", + "postcss": "^8.4.5", + "prop-types": "^15.7.2", + "react-feather": "^2.0.10", + "tailwindcss": "^3.0.15", + "tailwindcss-radix": "^1.6.0" + }, + "devDependencies": { + "@types/react": "^17.0.37", + "@types/react-dom": "^17.0.11", + "typescript": "4.3.4" + } + }, + "packages/ui/node_modules/@tailwindcss/typography": { + "version": "0.5.7", + "license": "MIT", + "dependencies": { + "lodash.castarray": "^4.4.0", + "lodash.isplainobject": "^4.0.6", + "lodash.merge": "^4.6.2", + "postcss-selector-parser": "6.0.10" + }, + "peerDependencies": { + "tailwindcss": ">=3.0.0 || insiders" + } + }, + "packages/ui/node_modules/typescript": { + "version": "4.3.4", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, "studio": { "version": "0.0.9", "dependencies": { @@ -32751,19 +36091,20 @@ "@stripe/stripe-js": "^1.25.0", "@supabase/postgres-meta": "^0.26.1", "@supabase/react-data-grid": "^7.1.0-beta.7", - "@supabase/shared-types": "^0.1.25", - "@supabase/supabase-js": "^2.0.0-rc.2", - "@supabase/ui": "0.37.0-alpha.80", + "@supabase/shared-types": "^0.1.29", + "@supabase/supabase-js": "^2.0.0", "ajv": "^8.6.3", "analytics-node": "^3.5.0", "awesome-debounce-promise": "^2.1.0", "clipboard": "^2.0.8", + "common": "*", "config": "*", "configcat-js": "^5.6.0", "crypto-js": "^4.1.1", "dayjs": "^1.11.0", "file-saver": "^2.0.5", "generate-password": "^1.7.0", + "html-to-image": "^1.10.8", "immutability-helper": "^3.1.1", "json-logic-js": "^2.0.2", "lodash": "^4.17.21", @@ -32784,7 +36125,7 @@ "react-beautiful-dnd": "^13.1.0", "react-contexify": "^5.0.0", "react-csv": "^2.0.3", - "react-datepicker": "^4.6.0", + "react-datepicker": "^4.8.0", "react-dnd": "^14.0.3", "react-dnd-html5-backend": "^14.0.1", "react-dom": "^17.0.2", @@ -32803,6 +36144,7 @@ "semver": "^6.3.0", "sqlstring": "^2.3.2", "swr": "^1.2.1", + "ui": "*", "uniforms-bootstrap4": "^3.6.2", "uniforms-bridge-json-schema": "^3.6.2", "uuid": "^8.3.2", @@ -32854,26 +36196,9 @@ "typescript": "4.3.4" } }, - "studio/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, "studio/node_modules/@next/env": { "version": "12.0.9", - "resolved": "https://registry.npmjs.org/@next/env/-/env-12.0.9.tgz", - "integrity": "sha512-oBlkyDop0Stf7MPIzETGv5r0YT/G/weBrknoPOUTaa5qwOeGjuy6gsOVc/SBtrBkOoBmRpD+fFhQJPvmo1mS+g==" + "license": "MIT" }, "studio/node_modules/@next/swc-android-arm64": { "version": "12.0.9", @@ -32892,11 +36217,10 @@ }, "studio/node_modules/@next/swc-darwin-arm64": { "version": "12.0.9", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-12.0.9.tgz", - "integrity": "sha512-uAgRKm4a2nVdyBiPPJokvmDD1saugOvxljz9ld2ih0CCg5S9vBhqaj3kPGCQBj9hSu3q+Lng2CHnQqG3ga1jzA==", "cpu": [ "arm64" ], + "license": "MIT", "optional": true, "os": [ "darwin" @@ -33040,99 +36364,10 @@ "node": ">= 10" } }, - "studio/node_modules/@supabase/functions-js": { - "version": "2.0.0-rc.2", - "resolved": "https://registry.npmjs.org/@supabase/functions-js/-/functions-js-2.0.0-rc.2.tgz", - "integrity": "sha512-SSgqdL9NKRwEEEHMRnou0rYdYLdu1e7hsEwsaDr6cycmt5YS002ia8sGnj02ytPmgDk/wv+Y8DMdGd4QfZHAOA==", - "dependencies": { - "cross-fetch": "^3.1.5" - } - }, - "studio/node_modules/@supabase/gotrue-js": { - "version": "2.0.0-rc.5", - "resolved": "https://registry.npmjs.org/@supabase/gotrue-js/-/gotrue-js-2.0.0-rc.5.tgz", - "integrity": "sha512-7oeQKkphuLNtCusXirckTCrmF7tu0mR/EM/j5rUwobBIc84gDJ6efcTdYoSLdGm7G30oNeoUmtOSidOUePRgPA==", - "dependencies": { - "cross-fetch": "^3.1.5" - } - }, - "studio/node_modules/@supabase/postgrest-js": { - "version": "1.0.0-rc.5", - "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-1.0.0-rc.5.tgz", - "integrity": "sha512-rBOyhK+qLd2fdX6WbCW3e9gY9qbwC5Zeso6QWM+00RlRz3k156lxnreVpe4KKGXNT3JMqJwAHXjQ2lbxmtBJqg==", - "dependencies": { - "cross-fetch": "^3.1.5" - } - }, - "studio/node_modules/@supabase/realtime-js": { - "version": "2.0.0-rc.5", - "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-2.0.0-rc.5.tgz", - "integrity": "sha512-0JiSJjoTmwleufGzBQwEVamI047jnAiemBk8qOkgwyoLOlfGTQk8XSA7aT023BsGVgRNKZqp/jJJAVBht/Rd2w==", - "dependencies": { - "@types/phoenix": "^1.5.4", - "websocket": "^1.0.34" - } - }, - "studio/node_modules/@supabase/storage-js": { - "version": "2.0.0-rc.2", - "resolved": "https://registry.npmjs.org/@supabase/storage-js/-/storage-js-2.0.0-rc.2.tgz", - "integrity": "sha512-KovBS7+uJYu8KSvwWPFB6ZPAFFZFnj6s72GvDqhkWpGHIC1OLijYQ9/sRWq2Y+G6HofB8szz4+KLvtyxrgX6AQ==", - "dependencies": { - "cross-fetch": "^3.1.5" - } - }, - "studio/node_modules/@supabase/supabase-js": { - "version": "2.0.0-rc.10", - "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.0.0-rc.10.tgz", - "integrity": "sha512-0yjcWm7YnyPcuHl4OOhUkWzyyvFpGeuKdK0x5HKVROApadVcUZEz5/Zng8J32TbmD0nSMhU/IDBYhVfjZrLSYw==", - "dependencies": { - "@supabase/functions-js": "^2.0.0-rc.1", - "@supabase/gotrue-js": "^2.0.0-rc.4", - "@supabase/postgrest-js": "^1.0.0-rc.5", - "@supabase/realtime-js": "^2.0.0-rc.5", - "@supabase/storage-js": "^2.0.0-rc.1", - "cross-fetch": "^3.1.5" - } - }, - "studio/node_modules/@supabase/ui": { - "version": "0.37.0-alpha.80", - "resolved": "https://registry.npmjs.org/@supabase/ui/-/ui-0.37.0-alpha.80.tgz", - "integrity": "sha512-oTBX43SipvCOmdG4UTt2yM//Meqfof4j7Fgmdi6rAn2EGpqo9xVqWxqlCLLvcbaK94Sl0i5R43zZEWz6RJoUIg==", - "dependencies": { - "@headlessui/react": "^1.0.0", - "@mertasan/tailwindcss-variables": "^2.0.1", - "@radix-ui/colors": "^0.1.8", - "@radix-ui/react-accordion": "^0.1.5", - "@radix-ui/react-collapsible": "^0.1.5", - "@radix-ui/react-context-menu": "^0.1.0", - "@radix-ui/react-dialog": "^0.1.5", - "@radix-ui/react-dropdown-menu": "^0.1.4", - "@radix-ui/react-popover": "^0.1.0", - "@radix-ui/react-portal": "^0.1.3", - "@radix-ui/react-tabs": "^0.1.0", - "@tailwindcss/forms": "^0.4.0", - "@tailwindcss/typography": "^0.5.0", - "autoprefixer": "^10.4.2", - "deepmerge": "^4.2.2", - "formik": "^2.2.9", - "lodash": "^4.17.20", - "postcss": "^8.4.5", - "prop-types": "^15.7.2", - "tailwindcss": "^3.0.15", - "tailwindcss-radix": "^1.6.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.2" - }, - "peerDependencies": { - "react": "^16.13.1 || ^17.0.1", - "react-dom": "^16.13.1 || ^17.0.1" - } - }, "studio/node_modules/@tailwindcss/typography": { "version": "0.5.7", - "resolved": "https://registry.npmjs.org/@tailwindcss/typography/-/typography-0.5.7.tgz", - "integrity": "sha512-JTTSTrgZfp6Ki4svhPA4mkd9nmQ/j9EfE7SbHJ1cLtthKkpW2OxsFXzSmxbhYbEkfNIyAyhle5p4SYyKRbz/jg==", + "dev": true, + "license": "MIT", "dependencies": { "lodash.castarray": "^4.4.0", "lodash.isplainobject": "^4.0.6", @@ -33143,42 +36378,20 @@ "tailwindcss": ">=3.0.0 || insiders" } }, - "studio/node_modules/@types/jest": { - "version": "27.5.2", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.5.2.tgz", - "integrity": "sha512-mpT8LJJ4CMeeahobofYWIjFo0xonRS/HfxnVEPMPFSQdGUt1uHCnoPT7Zhb+sjDU2wz0oKV0OLUR0WzrHNgfeA==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "jest-matcher-utils": "^27.0.0", - "pretty-format": "^27.0.0" - } - }, "studio/node_modules/@types/react": { "version": "17.0.11", - "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.11.tgz", - "integrity": "sha512-yFRQbD+whVonItSk7ZzP/L+gPTJVBkL/7shLEF+i9GC/1cV3JmUxEQz6+9ylhUpWSDuqo1N9qEvqS6vTj4USUA==", "dev": true, + "license": "MIT", "dependencies": { "@types/prop-types": "*", "@types/scheduler": "*", "csstype": "^3.0.2" } }, - "studio/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, "studio/node_modules/autoprefixer": { "version": "10.4.2", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.2.tgz", - "integrity": "sha512-9fOPpHKuDW1w/0EKfRmVnxTDt8166MAnLI3mgZ1JCnhNtYWxcJ6Ud5CO/AVOZi/AvFa8DY9RTy3h3+tFBlrrdQ==", + "dev": true, + "license": "MIT", "dependencies": { "browserslist": "^4.19.1", "caniuse-lite": "^1.0.30001297", @@ -33201,27 +36414,9 @@ "postcss": "^8.1.0" } }, - "studio/node_modules/jest-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", - "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", - "dev": true, - "dependencies": { - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, "studio/node_modules/next": { "version": "12.0.9", - "resolved": "https://registry.npmjs.org/next/-/next-12.0.9.tgz", - "integrity": "sha512-omfYqoR/DvbdOIJ6SS1unKJ4mGIxUPs0RPa7wr/Mft22OCKgJhuG+aI9KFYi5ZJBwoFQk1vqaMKpWz5qr+dN0Q==", + "license": "MIT", "dependencies": { "@next/env": "12.0.9", "caniuse-lite": "^1.0.30001283", @@ -33269,8 +36464,7 @@ }, "studio/node_modules/next/node_modules/postcss": { "version": "8.4.5", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.5.tgz", - "integrity": "sha512-jBDboWM8qpaqwkMwItqTQTiFikhs/67OYVvblFFTM7MrZjt6yMKd6r2kgXizEbTTljacm4NldIlZnhbjr84QYg==", + "license": "MIT", "dependencies": { "nanoid": "^3.1.30", "picocolors": "^1.0.0", @@ -33286,8 +36480,7 @@ }, "studio/node_modules/next/node_modules/styled-jsx": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.0.0.tgz", - "integrity": "sha512-qUqsWoBquEdERe10EW8vLp3jT25s/ssG1/qX5gZ4wu15OZpmSMFI2v+fWlRhLfykA5rFtlJ1ME8A8pm/peV4WA==", + "license": "MIT", "engines": { "node": ">= 12.0.0" }, @@ -33305,75 +36498,15 @@ }, "studio/node_modules/swr": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/swr/-/swr-1.3.0.tgz", - "integrity": "sha512-dkghQrOl2ORX9HYrMDtPa7LTVHJjCTeZoB1dqTbnnEDlSvN8JEKpYIYurDfvbQFUUS8Cg8PceFVZNkW0KNNYPw==", + "license": "MIT", "peerDependencies": { "react": "^16.11.0 || ^17.0.0 || ^18.0.0" } }, - "studio/node_modules/ts-jest": { - "version": "27.1.5", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.1.5.tgz", - "integrity": "sha512-Xv6jBQPoBEvBq/5i2TeSG9tt/nqkbpcurrEG1b+2yfBrcJelOZF9Ml6dmyMh7bcW9JyFbRYpR5rxROSlBLTZHA==", - "dev": true, - "dependencies": { - "bs-logger": "0.x", - "fast-json-stable-stringify": "2.x", - "jest-util": "^27.0.0", - "json5": "2.x", - "lodash.memoize": "4.x", - "make-error": "1.x", - "semver": "7.x", - "yargs-parser": "20.x" - }, - "bin": { - "ts-jest": "cli.js" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "@babel/core": ">=7.0.0-beta.0 <8", - "@types/jest": "^27.0.0", - "babel-jest": ">=27.0.0 <28", - "jest": "^27.0.0", - "typescript": ">=3.8 <5.0" - }, - "peerDependenciesMeta": { - "@babel/core": { - "optional": true - }, - "@types/jest": { - "optional": true - }, - "babel-jest": { - "optional": true - }, - "esbuild": { - "optional": true - } - } - }, - "studio/node_modules/ts-jest/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" - } - }, "studio/node_modules/typescript": { "version": "4.3.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.3.4.tgz", - "integrity": "sha512-uauPG7XZn9F/mo+7MrsRjyvbxFpzemRjKEZXS4AK83oP2KKOJPvb+9cO/gmnv8arWZvhnjVOXz7B49m1l0e9Ew==", "dev": true, + "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -33381,6 +36514,280 @@ "engines": { "node": ">=4.2.0" } + }, + "tests": { + "name": "supabase-tests", + "version": "1.0.0", + "license": "MIT", + "devDependencies": { + "@faker-js/faker": "^6.1.2", + "@supabase/supabase-js": "^2.0.0", + "@testdeck/jest": "^0.2.0", + "@types/jest": "^27.4.0", + "@types/node": "^17.0.24", + "@typescript-eslint/eslint-plugin": "^5.10.0", + "@typescript-eslint/parser": "^5.10.0", + "allure-commandline": "^2.17.2", + "allure-js-commons": "^2.0.0-beta.14", + "cross-fetch": "^3.1.5", + "eslint": "^8.7.0", + "jest": "^27.4.7", + "jest-allure2-adapter": "^0.3.11", + "postgres": "^3.0.5", + "ts-jest": "^27.1.3", + "ts-node": "^10.7.0", + "typescript": "^4.6.3" + } + }, + "tests/node_modules/@humanwhocodes/config-array": { + "version": "0.10.7", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "tests/node_modules/ajv": { + "version": "6.12.6", + "dev": true, + "license": "MIT", + "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" + } + }, + "tests/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "tests/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 + }, + "tests/node_modules/array-union": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "tests/node_modules/chalk": { + "version": "4.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "tests/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "tests/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "tests/node_modules/escape-string-regexp": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "tests/node_modules/eslint": { + "version": "8.24.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint/eslintrc": "^1.3.2", + "@humanwhocodes/config-array": "^0.10.5", + "@humanwhocodes/gitignore-to-minimatch": "^1.0.2", + "@humanwhocodes/module-importer": "^1.0.1", + "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.4.0", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.1", + "globals": "^13.15.0", + "globby": "^11.1.0", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-sdsl": "^4.1.4", + "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" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "tests/node_modules/eslint-scope": { + "version": "7.1.1", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "tests/node_modules/globals": { + "version": "13.17.0", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "tests/node_modules/globby": { + "version": "11.1.0", + "dev": true, + "license": "MIT", + "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" + } + }, + "tests/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "tests/node_modules/js-yaml": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "tests/node_modules/json-schema-traverse": { + "version": "0.4.1", + "dev": true, + "license": "MIT" + }, + "tests/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" + } + }, + "tests/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } } }, "dependencies": { @@ -33393,25 +36800,6 @@ "@jridgewell/trace-mapping": "^0.3.9" } }, - "@apollo/client": { - "version": "3.6.9", - "resolved": "https://registry.npmjs.org/@apollo/client/-/client-3.6.9.tgz", - "integrity": "sha512-Y1yu8qa2YeaCUBVuw08x8NHenFi0sw2I3KCu7Kw9mDSu86HmmtHJkCAifKVrN2iPgDTW/BbP3EpSV8/EQCcxZA==", - "requires": { - "@graphql-typed-document-node/core": "^3.1.1", - "@wry/context": "^0.6.0", - "@wry/equality": "^0.5.0", - "@wry/trie": "^0.3.0", - "graphql-tag": "^2.12.6", - "hoist-non-react-statics": "^3.3.2", - "optimism": "^0.16.1", - "prop-types": "^15.7.2", - "symbol-observable": "^4.0.0", - "ts-invariant": "^0.10.3", - "tslib": "^2.3.0", - "zen-observable-ts": "^1.2.5" - } - }, "@babel/code-frame": { "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", @@ -33421,25 +36809,25 @@ } }, "@babel/compat-data": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.19.1.tgz", - "integrity": "sha512-72a9ghR0gnESIa7jBN53U32FOVCEoztyIlKaNoU05zRhEecduGK9L9c3ww7Mp06JiR+0ls0GBPFJQwwtjn9ksg==" + "version": "7.19.3", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.19.3.tgz", + "integrity": "sha512-prBHMK4JYYK+wDjJF1q99KK4JLL+egWS4nmNqdlMUgCExMZ+iZW0hGhyC3VEbsPjvaN0TBhW//VIFwBrk8sEiw==" }, "@babel/core": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.19.1.tgz", - "integrity": "sha512-1H8VgqXme4UXCRv7/Wa1bq7RVymKOzC7znjyFM8KiEzwFqcKUKYNoQef4GhdklgNvoBXyW4gYhuBNCM5o1zImw==", + "version": "7.19.3", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.19.3.tgz", + "integrity": "sha512-WneDJxdsjEvyKtXKsaBGbDeiyOjR5vYq4HcShxnIbG0qixpoHjI3MqeZM9NDvsojNCEBItQE4juOo/bU6e72gQ==", "requires": { "@ampproject/remapping": "^2.1.0", "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.19.0", - "@babel/helper-compilation-targets": "^7.19.1", + "@babel/generator": "^7.19.3", + "@babel/helper-compilation-targets": "^7.19.3", "@babel/helper-module-transforms": "^7.19.0", "@babel/helpers": "^7.19.0", - "@babel/parser": "^7.19.1", + "@babel/parser": "^7.19.3", "@babel/template": "^7.18.10", - "@babel/traverse": "^7.19.1", - "@babel/types": "^7.19.0", + "@babel/traverse": "^7.19.3", + "@babel/types": "^7.19.3", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -33448,11 +36836,11 @@ } }, "@babel/generator": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.19.0.tgz", - "integrity": "sha512-S1ahxf1gZ2dpoiFgA+ohK9DIpz50bJ0CWs7Zlzb54Z4sG8qmdIrGrVqmy1sAtTVRb+9CU6U8VqT9L0Zj7hxHVg==", + "version": "7.19.3", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.19.3.tgz", + "integrity": "sha512-fqVZnmp1ncvZU757UzDheKZpfPgatqY59XtW2/j/18H7u76akb8xqvjw82f+i2UKd/ksYsSick/BCLQUUtJ/qQ==", "requires": { - "@babel/types": "^7.19.0", + "@babel/types": "^7.19.3", "@jridgewell/gen-mapping": "^0.3.2", "jsesc": "^2.5.1" }, @@ -33473,6 +36861,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", + "dev": true, "requires": { "@babel/types": "^7.18.6" } @@ -33481,17 +36870,18 @@ "version": "7.18.9", "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz", "integrity": "sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==", + "dev": true, "requires": { "@babel/helper-explode-assignable-expression": "^7.18.6", "@babel/types": "^7.18.9" } }, "@babel/helper-compilation-targets": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.19.1.tgz", - "integrity": "sha512-LlLkkqhCMyz2lkQPvJNdIYU7O5YjWRgC2R4omjCTpZd8u8KMQzZvX4qce+/BluN1rcQiV7BoGUpmQ0LeHerbhg==", + "version": "7.19.3", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.19.3.tgz", + "integrity": "sha512-65ESqLGyGmLvgR0mst5AdW1FkNlj9rQsCKduzEoEPhBCDFGXvz2jW6bXFG6i0/MrV2s7hhXjjb2yAzcPuQlLwg==", "requires": { - "@babel/compat-data": "^7.19.1", + "@babel/compat-data": "^7.19.3", "@babel/helper-validator-option": "^7.18.6", "browserslist": "^4.21.3", "semver": "^6.3.0" @@ -33501,6 +36891,7 @@ "version": "7.19.0", "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.19.0.tgz", "integrity": "sha512-NRz8DwF4jT3UfrmUoZjd0Uph9HQnP30t7Ash+weACcyNkiYTywpIjDBgReJMKgr+n86sn2nPVVmJ28Dm053Kqw==", + "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.18.6", "@babel/helper-environment-visitor": "^7.18.9", @@ -33515,6 +36906,7 @@ "version": "7.19.0", "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.19.0.tgz", "integrity": "sha512-htnV+mHX32DF81amCDrwIDr8nrp1PTm+3wfBN9/v8QJOLEioOCOG7qNyq0nHeFiWbT3Eb7gsPwEmV64UCQ1jzw==", + "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.18.6", "regexpu-core": "^5.1.0" @@ -33524,6 +36916,7 @@ "version": "0.3.3", "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz", "integrity": "sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==", + "dev": true, "requires": { "@babel/helper-compilation-targets": "^7.17.7", "@babel/helper-plugin-utils": "^7.16.7", @@ -33542,6 +36935,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz", "integrity": "sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==", + "dev": true, "requires": { "@babel/types": "^7.18.6" } @@ -33567,6 +36961,7 @@ "version": "7.18.9", "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz", "integrity": "sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==", + "dev": true, "requires": { "@babel/types": "^7.18.9" } @@ -33598,6 +36993,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz", "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==", + "dev": true, "requires": { "@babel/types": "^7.18.6" } @@ -33611,6 +37007,7 @@ "version": "7.18.9", "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz", "integrity": "sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==", + "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.18.6", "@babel/helper-environment-visitor": "^7.18.9", @@ -33622,6 +37019,7 @@ "version": "7.19.1", "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.19.1.tgz", "integrity": "sha512-T7ahH7wV0Hfs46SFh5Jz3s0B6+o8g3c+7TMxu7xKfmHikg7EAZ3I2Qk9LFhjxXq8sL7UkP5JflezNwoZa8WvWw==", + "dev": true, "requires": { "@babel/helper-environment-visitor": "^7.18.9", "@babel/helper-member-expression-to-functions": "^7.18.9", @@ -33642,6 +37040,7 @@ "version": "7.18.9", "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.18.9.tgz", "integrity": "sha512-imytd2gHi3cJPsybLRbmFrF7u5BIEuI2cNheyKi3/iOBC63kNn3q8Crn2xVuESli0aM4KYsyEqKyS7lFL8YVtw==", + "dev": true, "requires": { "@babel/types": "^7.18.9" } @@ -33673,6 +37072,7 @@ "version": "7.19.0", "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.19.0.tgz", "integrity": "sha512-txX8aN8CZyYGTwcLhlk87KRqncAzhh5TpQamZUa0/u3an36NtDpUP6bQgBCBcLeBs09R/OwQu3OjK0k/HwfNDg==", + "dev": true, "requires": { "@babel/helper-function-name": "^7.19.0", "@babel/template": "^7.18.10", @@ -33698,68 +37098,18 @@ "@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==", - "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==", - "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==", - "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==" - }, - "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==" - }, - "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==" - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "requires": { - "has-flag": "^3.0.0" - } - } } }, "@babel/parser": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.19.1.tgz", - "integrity": "sha512-h7RCSorm1DdTVGJf3P2Mhj3kdnkmF/EiysUkzS2TdgAYqyjFdMQJbVuXOBej2SBJaXan/lIVtT6KkGbyyq753A==" + "version": "7.19.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.19.3.tgz", + "integrity": "sha512-pJ9xOlNWHiy9+FuFP09DEAFbAn4JskgRsVcc169w2xRBC3FRGuQEwjeIMMND9L2zc0iEhO/tGv4Zq+km+hxNpQ==" }, "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz", "integrity": "sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.6" } @@ -33768,6 +37118,7 @@ "version": "7.18.9", "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz", "integrity": "sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.9", "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", @@ -33778,6 +37129,7 @@ "version": "7.19.1", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.19.1.tgz", "integrity": "sha512-0yu8vNATgLy4ivqMNBIwb1HebCelqN7YX8SL3FDXORv/RqT0zEEWUCH4GH44JsSrvCu6GqnAdR5EBFAPeNBB4Q==", + "dev": true, "requires": { "@babel/helper-environment-visitor": "^7.18.9", "@babel/helper-plugin-utils": "^7.19.0", @@ -33789,6 +37141,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", + "dev": true, "requires": { "@babel/helper-create-class-features-plugin": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" @@ -33798,6 +37151,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz", "integrity": "sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw==", + "dev": true, "requires": { "@babel/helper-create-class-features-plugin": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6", @@ -33805,9 +37159,9 @@ } }, "@babel/plugin-proposal-decorators": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.19.1.tgz", - "integrity": "sha512-LfIKNBBY7Q1OX5C4xAgRQffOg2OnhAo9fnbcOHgOC9Yytm2Sw+4XqHufRYU86tHomzepxtvuVaNO+3EVKR4ivw==", + "version": "7.19.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.19.3.tgz", + "integrity": "sha512-MbgXtNXqo7RTKYIXVchVJGPvaVufQH3pxvQyfbGvNw1DObIhph+PesYXJTcd8J4DdWibvf6Z2eanOyItX8WnJg==", "dev": true, "requires": { "@babel/helper-create-class-features-plugin": "^7.19.0", @@ -33821,6 +37175,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz", "integrity": "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-dynamic-import": "^7.8.3" @@ -33840,6 +37195,7 @@ "version": "7.18.9", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz", "integrity": "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.9", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" @@ -33849,6 +37205,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz", "integrity": "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-json-strings": "^7.8.3" @@ -33858,6 +37215,7 @@ "version": "7.18.9", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz", "integrity": "sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.9", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" @@ -33867,6 +37225,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" @@ -33876,6 +37235,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-numeric-separator": "^7.10.4" @@ -33885,6 +37245,7 @@ "version": "7.18.9", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.9.tgz", "integrity": "sha512-kDDHQ5rflIeY5xl69CEqGEZ0KY369ehsCIEbTGb4siHG5BE9sga/T0r0OUwyZNLMmZE79E1kbsqAjwFCW4ds6Q==", + "dev": true, "requires": { "@babel/compat-data": "^7.18.8", "@babel/helper-compilation-targets": "^7.18.9", @@ -33897,6 +37258,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz", "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" @@ -33906,6 +37268,7 @@ "version": "7.18.9", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz", "integrity": "sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.9", "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", @@ -33916,6 +37279,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz", "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==", + "dev": true, "requires": { "@babel/helper-create-class-features-plugin": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" @@ -33925,6 +37289,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.18.6.tgz", "integrity": "sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw==", + "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.18.6", "@babel/helper-create-class-features-plugin": "^7.18.6", @@ -33936,6 +37301,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz", "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==", + "dev": true, "requires": { "@babel/helper-create-regexp-features-plugin": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" @@ -33945,6 +37311,7 @@ "version": "7.8.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" } @@ -33962,6 +37329,7 @@ "version": "7.12.13", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.12.13" } @@ -33970,6 +37338,7 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } @@ -33987,6 +37356,7 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" } @@ -34004,6 +37374,7 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.3" } @@ -34021,6 +37392,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.18.6.tgz", "integrity": "sha512-/DU3RXad9+bZwrgWJQKbr39gYbJpLJHezqEzRzi/BHRlJ9zsQb4CK2CA/5apllXNomwA1qHwzvHl+AdEmC5krQ==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.6" } @@ -34038,6 +37410,7 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" } @@ -34046,6 +37419,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz", "integrity": "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.6" } @@ -34054,6 +37428,7 @@ "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" } @@ -34062,6 +37437,7 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" } @@ -34070,6 +37446,7 @@ "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" } @@ -34086,6 +37463,7 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" } @@ -34094,6 +37472,7 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" } @@ -34102,6 +37481,7 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } @@ -34110,6 +37490,7 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } @@ -34118,6 +37499,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.18.6.tgz", "integrity": "sha512-mAWAuq4rvOepWCBid55JuRNvpTNf2UGVgoz4JV0fXEKolsVZDzsa4NqCef758WZJj/GDu0gVGItjKFiClTAmZA==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.6" } @@ -34126,6 +37508,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz", "integrity": "sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.6" } @@ -34134,6 +37517,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz", "integrity": "sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag==", + "dev": true, "requires": { "@babel/helper-module-imports": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6", @@ -34144,6 +37528,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz", "integrity": "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.6" } @@ -34152,6 +37537,7 @@ "version": "7.18.9", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.9.tgz", "integrity": "sha512-5sDIJRV1KtQVEbt/EIBwGy4T01uYIo4KRB3VUqzkhrAIOGx7AoctL9+Ux88btY0zXdDyPJ9mW+bg+v+XEkGmtw==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.9" } @@ -34160,6 +37546,7 @@ "version": "7.19.0", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.19.0.tgz", "integrity": "sha512-YfeEE9kCjqTS9IitkgfJuxjcEtLUHMqa8yUJ6zdz8vR7hKuo6mOy2C05P0F1tdMmDCeuyidKnlrw/iTppHcr2A==", + "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.18.6", "@babel/helper-compilation-targets": "^7.19.0", @@ -34170,19 +37557,13 @@ "@babel/helper-replace-supers": "^7.18.9", "@babel/helper-split-export-declaration": "^7.18.6", "globals": "^11.1.0" - }, - "dependencies": { - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" - } } }, "@babel/plugin-transform-computed-properties": { "version": "7.18.9", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz", "integrity": "sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.9" } @@ -34191,6 +37572,7 @@ "version": "7.18.13", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.13.tgz", "integrity": "sha512-TodpQ29XekIsex2A+YJPj5ax2plkGa8YYY6mFjCohk/IG9IY42Rtuj1FuDeemfg2ipxIFLzPeA83SIBnlhSIow==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.9" } @@ -34199,6 +37581,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz", "integrity": "sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==", + "dev": true, "requires": { "@babel/helper-create-regexp-features-plugin": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" @@ -34208,6 +37591,7 @@ "version": "7.18.9", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz", "integrity": "sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.9" } @@ -34216,6 +37600,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz", "integrity": "sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==", + "dev": true, "requires": { "@babel/helper-builder-binary-assignment-operator-visitor": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" @@ -34235,6 +37620,7 @@ "version": "7.18.8", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz", "integrity": "sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.6" } @@ -34243,6 +37629,7 @@ "version": "7.18.9", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz", "integrity": "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==", + "dev": true, "requires": { "@babel/helper-compilation-targets": "^7.18.9", "@babel/helper-function-name": "^7.18.9", @@ -34253,6 +37640,7 @@ "version": "7.18.9", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz", "integrity": "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.9" } @@ -34261,6 +37649,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz", "integrity": "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.6" } @@ -34269,6 +37658,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.18.6.tgz", "integrity": "sha512-Pra5aXsmTsOnjM3IajS8rTaLCy++nGM4v3YR4esk5PCsyg9z8NA5oQLwxzMUtDBd8F+UmVza3VxoAaWCbzH1rg==", + "dev": true, "requires": { "@babel/helper-module-transforms": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6", @@ -34279,6 +37669,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.6.tgz", "integrity": "sha512-Qfv2ZOWikpvmedXQJDSbxNqy7Xr/j2Y8/KfijM0iJyKkBTmWuvCA1yeH1yDM7NJhBW/2aXxeucLj6i80/LAJ/Q==", + "dev": true, "requires": { "@babel/helper-module-transforms": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6", @@ -34290,6 +37681,7 @@ "version": "7.19.0", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.19.0.tgz", "integrity": "sha512-x9aiR0WXAWmOWsqcsnrzGR+ieaTMVyGyffPVA7F8cXAGt/UxefYv6uSHZLkAFChN5M5Iy1+wjE+xJuPt22H39A==", + "dev": true, "requires": { "@babel/helper-hoist-variables": "^7.18.6", "@babel/helper-module-transforms": "^7.19.0", @@ -34302,6 +37694,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz", "integrity": "sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==", + "dev": true, "requires": { "@babel/helper-module-transforms": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" @@ -34311,6 +37704,7 @@ "version": "7.19.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.19.1.tgz", "integrity": "sha512-oWk9l9WItWBQYS4FgXD4Uyy5kq898lvkXpXQxoJEY1RnvPk4R/Dvu2ebXU9q8lP+rlMwUQTFf2Ok6d78ODa0kw==", + "dev": true, "requires": { "@babel/helper-create-regexp-features-plugin": "^7.19.0", "@babel/helper-plugin-utils": "^7.19.0" @@ -34320,6 +37714,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz", "integrity": "sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.6" } @@ -34328,6 +37723,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz", "integrity": "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.6", "@babel/helper-replace-supers": "^7.18.6" @@ -34345,6 +37741,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz", "integrity": "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.6" } @@ -34353,6 +37750,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.18.6.tgz", "integrity": "sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.6" } @@ -34361,6 +37759,7 @@ "version": "7.19.0", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.19.0.tgz", "integrity": "sha512-UVEvX3tXie3Szm3emi1+G63jyw1w5IcMY0FSKM+CRnKRI5Mr1YbCNgsSTwoTwKphQEG9P+QqmuRFneJPZuHNhg==", + "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.18.6", "@babel/helper-module-imports": "^7.18.6", @@ -34373,6 +37772,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.18.6.tgz", "integrity": "sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA==", + "dev": true, "requires": { "@babel/plugin-transform-react-jsx": "^7.18.6" } @@ -34381,6 +37781,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.18.6.tgz", "integrity": "sha512-I8VfEPg9r2TRDdvnHgPepTKvuRomzA8+u+nhY7qSI1fR2hRNebasZEETLyM5mAUr0Ku56OkXJ0I7NHJnO6cJiQ==", + "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" @@ -34390,6 +37791,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.6.tgz", "integrity": "sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.6", "regenerator-transform": "^0.15.0" @@ -34399,6 +37801,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz", "integrity": "sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.6" } @@ -34407,6 +37810,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz", "integrity": "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.6" } @@ -34415,6 +37819,7 @@ "version": "7.19.0", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.19.0.tgz", "integrity": "sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.19.0", "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9" @@ -34424,6 +37829,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz", "integrity": "sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.6" } @@ -34432,6 +37838,7 @@ "version": "7.18.9", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz", "integrity": "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.9" } @@ -34440,14 +37847,16 @@ "version": "7.18.9", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz", "integrity": "sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.9" } }, "@babel/plugin-transform-typescript": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.19.1.tgz", - "integrity": "sha512-+ILcOU+6mWLlvCwnL920m2Ow3wWx3Wo8n2t5aROQmV55GZt+hOiLvBaa3DNzRjSEHa1aauRs4/YLmkCfFkhhRQ==", + "version": "7.19.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.19.3.tgz", + "integrity": "sha512-z6fnuK9ve9u/0X0rRvI9MY0xg+DOUaABDYOe+/SQTxtlptaBB/V9JIUxJn6xp3lMBeb9qe8xSFmHU35oZDXD+w==", + "dev": true, "requires": { "@babel/helper-create-class-features-plugin": "^7.19.0", "@babel/helper-plugin-utils": "^7.19.0", @@ -34458,6 +37867,7 @@ "version": "7.18.10", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz", "integrity": "sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.9" } @@ -34466,18 +37876,20 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz", "integrity": "sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==", + "dev": true, "requires": { "@babel/helper-create-regexp-features-plugin": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/preset-env": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.19.1.tgz", - "integrity": "sha512-c8B2c6D16Lp+Nt6HcD+nHl0VbPKVnNPTpszahuxJJnurfMtKeZ80A+qUv48Y7wqvS+dTFuLuaM9oYxyNHbCLWA==", + "version": "7.19.3", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.19.3.tgz", + "integrity": "sha512-ziye1OTc9dGFOAXSWKUqQblYHNlBOaDl8wzqf2iKXJAltYiR3hKHUKmkt+S9PppW7RQpq4fFCrwwpIDj/f5P4w==", + "dev": true, "requires": { - "@babel/compat-data": "^7.19.1", - "@babel/helper-compilation-targets": "^7.19.1", + "@babel/compat-data": "^7.19.3", + "@babel/helper-compilation-targets": "^7.19.3", "@babel/helper-plugin-utils": "^7.19.0", "@babel/helper-validator-option": "^7.18.6", "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6", @@ -34545,7 +37957,7 @@ "@babel/plugin-transform-unicode-escapes": "^7.18.10", "@babel/plugin-transform-unicode-regex": "^7.18.6", "@babel/preset-modules": "^0.1.5", - "@babel/types": "^7.19.0", + "@babel/types": "^7.19.3", "babel-plugin-polyfill-corejs2": "^0.3.3", "babel-plugin-polyfill-corejs3": "^0.6.0", "babel-plugin-polyfill-regenerator": "^0.4.1", @@ -34568,6 +37980,7 @@ "version": "0.1.5", "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", @@ -34580,6 +37993,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.18.6.tgz", "integrity": "sha512-zXr6atUmyYdiWRVLOZahakYmOBHtWc2WGCkP8PYTgZi0iJXDY2CN180TdrIW4OGOAdLc7TifzDIvtx6izaRIzg==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.6", "@babel/helper-validator-option": "^7.18.6", @@ -34593,6 +38007,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.18.6.tgz", "integrity": "sha512-s9ik86kXBAnD760aybBucdpnLsAt0jK1xqJn2juOn9lkOvSHV60os5hxoVJsPzMQxvnUJFAlkont2DvvaYEBtQ==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.6", "@babel/helper-validator-option": "^7.18.6", @@ -34640,36 +38055,29 @@ } }, "@babel/traverse": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.19.1.tgz", - "integrity": "sha512-0j/ZfZMxKukDaag2PtOPDbwuELqIar6lLskVPPJDjXMXjfLb1Obo/1yjxIGqqAJrmfaTIY3z2wFLAQ7qSkLsuA==", + "version": "7.19.3", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.19.3.tgz", + "integrity": "sha512-qh5yf6149zhq2sgIXmwjnsvmnNQC2iw70UFjp4olxucKrWd/dvlUsBI88VSLUsnMNF7/vnOiA+nk1+yLoCqROQ==", "requires": { "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.19.0", + "@babel/generator": "^7.19.3", "@babel/helper-environment-visitor": "^7.18.9", "@babel/helper-function-name": "^7.19.0", "@babel/helper-hoist-variables": "^7.18.6", "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.19.1", - "@babel/types": "^7.19.0", + "@babel/parser": "^7.19.3", + "@babel/types": "^7.19.3", "debug": "^4.1.0", "globals": "^11.1.0" - }, - "dependencies": { - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" - } } }, "@babel/types": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.19.0.tgz", - "integrity": "sha512-YuGopBq3ke25BVSiS6fgF49Ul9gH1x70Bcr6bqRLjWCkcX8Hre1/5+z+IiWOIerRMSSEfGZVB9z9kyq7wVs9YA==", + "version": "7.19.3", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.19.3.tgz", + "integrity": "sha512-hGCaQzIY22DJlDh9CH7NOxgKkFjBk0Cw9xDO1Xmh2151ti7wiGfQ3LauXzL4HP1fmFlTX6XjpRETTpUcv7wQLw==", "requires": { "@babel/helper-string-parser": "^7.18.10", - "@babel/helper-validator-identifier": "^7.18.6", + "@babel/helper-validator-identifier": "^7.19.1", "to-fast-properties": "^2.0.0" } }, @@ -34702,6 +38110,27 @@ "dev": true, "optional": true }, + "@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "devOptional": true, + "requires": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "dependencies": { + "@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "devOptional": true, + "requires": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + } + } + }, "@csstools/convert-colors": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/@csstools/convert-colors/-/convert-colors-1.4.0.tgz", @@ -34853,25 +38282,55 @@ "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" } + }, + "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 + }, + "globals": { + "version": "13.17.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", + "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "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 } } }, + "@faker-js/faker": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/@faker-js/faker/-/faker-6.3.1.tgz", + "integrity": "sha512-8YXBE2ZcU/pImVOHX7MWrSR/X5up7t6rPWZlk34RwZEcdr3ua6X+32pSd6XuOQRN+vbuvYNfA6iey8NbrjuMFQ==", + "dev": true + }, "@gar/promisify": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", "dev": true }, - "@graphql-typed-document-node/core": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.1.1.tgz", - "integrity": "sha512-NQ17ii0rK1b34VZonlmT2QMJFI70m0TRwbknO/ihlbatXyaktDhN/98vBiUU6kNBPljqGqyIrl2T4nY2RpFANg==", - "requires": {} - }, "@headlessui/react": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/@headlessui/react/-/react-1.7.2.tgz", - "integrity": "sha512-snLv2lxwsf2HNTOBNgHYdvoYZ3ChJE8QszPi1d/hl9js8KrFrUulTaQBfSyPbJP5BybVreWh9DxCgz9S0Z6hKQ==", + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/@headlessui/react/-/react-1.7.3.tgz", + "integrity": "sha512-LGp06SrGv7BMaIQlTs8s2G06moqkI0cb0b8stgq7KZ3xcHdH3qMP+cRyV7qe5x4XEW/IGY48BW4fLesD6NQLng==", "requires": {} }, "@heroicons/react": { @@ -34880,16 +38339,17 @@ "integrity": "sha512-JJCXydOFWMDpCP4q13iEplA503MQO3xLoZiKum+955ZCtHINWnx26CUxVxxFQu/uLb4LW3ge15ZpzIkXKkJ8oQ==", "requires": {} }, - "@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/gitignore-to-minimatch": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@humanwhocodes/gitignore-to-minimatch/-/gitignore-to-minimatch-1.0.2.tgz", + "integrity": "sha512-rSqmMJDdLFUsyxR6FMtD00nfQKKLFb1kv+qBbOVKqErvloEIJLo5bDTJTQNTYgeyp78JsA7u/NPi5jT1GR/MuA==", + "dev": true + }, + "@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true }, "@humanwhocodes/object-schema": { "version": "1.2.1", @@ -34909,15 +38369,6 @@ "resolve-from": "^5.0.0" }, "dependencies": { - "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" - } - }, "find-up": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", @@ -34928,16 +38379,6 @@ "path-exists": "^4.0.0" } }, - "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" - } - }, "locate-path": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", @@ -35009,6 +38450,46 @@ "@types/yargs-parser": "*" } }, + "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" + } + }, + "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 + }, + "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 + }, "jest-util": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", @@ -35022,6 +38503,15 @@ "graceful-fs": "^4.2.9", "picomatch": "^2.2.3" } + }, + "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" + } } } }, @@ -35106,6 +38596,46 @@ "@types/yargs-parser": "*" } }, + "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" + } + }, + "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 + }, + "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 + }, "jest-haste-map": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", @@ -35156,6 +38686,15 @@ "graceful-fs": "^4.2.9", "picomatch": "^2.2.3" } + }, + "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" + } } } }, @@ -35192,6 +38731,55 @@ "requires": { "@types/yargs-parser": "*" } + }, + "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" + } + }, + "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 + }, + "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 + }, + "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" + } } } }, @@ -35231,6 +38819,46 @@ "@types/yargs-parser": "*" } }, + "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" + } + }, + "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 + }, + "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 + }, "jest-util": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", @@ -35244,6 +38872,15 @@ "graceful-fs": "^4.2.9", "picomatch": "^2.2.3" } + }, + "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" + } } } }, @@ -35279,6 +38916,55 @@ "requires": { "@types/yargs-parser": "*" } + }, + "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" + } + }, + "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 + }, + "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 + }, + "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" + } } } }, @@ -35360,6 +39046,46 @@ "@types/yargs-parser": "*" } }, + "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" + } + }, + "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 + }, + "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 + }, "jest-haste-map": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", @@ -35410,6 +39136,15 @@ "graceful-fs": "^4.2.9", "picomatch": "^2.2.3" } + }, + "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" + } } } }, @@ -35457,6 +39192,55 @@ "requires": { "@types/yargs-parser": "*" } + }, + "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" + } + }, + "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 + }, + "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 + }, + "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" + } } } }, @@ -35494,6 +39278,46 @@ "@types/yargs-parser": "*" } }, + "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" + } + }, + "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 + }, + "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 + }, "jest-haste-map": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", @@ -35544,6 +39368,15 @@ "graceful-fs": "^4.2.9", "picomatch": "^2.2.3" } + }, + "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" + } } } }, @@ -35568,6 +39401,57 @@ "slash": "^3.0.0", "source-map": "^0.6.1", "write-file-atomic": "^3.0.0" + }, + "dependencies": { + "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" + } + }, + "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 + }, + "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 + }, + "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" + } + } } }, "@jest/types": { @@ -35581,6 +39465,57 @@ "@types/node": "*", "@types/yargs": "^15.0.0", "chalk": "^4.0.0" + }, + "dependencies": { + "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" + } + }, + "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 + }, + "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 + }, + "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" + } + } } }, "@jridgewell/gen-mapping": { @@ -35648,40 +39583,6 @@ "@mdx-js/react": "1.6.22", "loader-utils": "2.0.0" }, - "dependencies": { - "@mdx-js/react": { - "version": "1.6.22", - "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-1.6.22.tgz", - "integrity": "sha512-TDoPum4SHdfPiGSAaRBw7ECyI8VaHpK8GJugbJIJuqyh6kzw9ZLJZW3HGL3NNrJGxcAixUvqROm+YuQOo5eXtg==", - "requires": {} - } - } - }, - "@mdx-js/mdx": { - "version": "1.6.22", - "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-1.6.22.tgz", - "integrity": "sha512-AMxuLxPz2j5/6TpF/XSdKpQP1NlG0z11dFOlq+2IP/lSgl11GY8ji6S/rgsViN/L0BDvHvUMruRb7ub+24LUYA==", - "requires": { - "@babel/core": "7.12.9", - "@babel/plugin-syntax-jsx": "7.12.1", - "@babel/plugin-syntax-object-rest-spread": "7.8.3", - "@mdx-js/util": "1.6.22", - "babel-plugin-apply-mdx-type-prop": "1.6.22", - "babel-plugin-extract-import-names": "1.6.22", - "camelcase-css": "2.0.1", - "detab": "2.0.4", - "hast-util-raw": "6.0.1", - "lodash.uniq": "4.5.0", - "mdast-util-to-hast": "10.0.1", - "remark-footnotes": "2.0.0", - "remark-mdx": "1.6.22", - "remark-parse": "8.0.3", - "remark-squeeze-paragraphs": "4.0.0", - "style-to-object": "0.3.0", - "unified": "9.2.0", - "unist-builder": "2.0.3", - "unist-util-visit": "2.0.3" - }, "dependencies": { "@babel/core": { "version": "7.12.9", @@ -35729,19 +39630,48 @@ "@babel/helper-plugin-utils": "^7.10.4" } }, + "@mdx-js/mdx": { + "version": "1.6.22", + "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-1.6.22.tgz", + "integrity": "sha512-AMxuLxPz2j5/6TpF/XSdKpQP1NlG0z11dFOlq+2IP/lSgl11GY8ji6S/rgsViN/L0BDvHvUMruRb7ub+24LUYA==", + "requires": { + "@babel/core": "7.12.9", + "@babel/plugin-syntax-jsx": "7.12.1", + "@babel/plugin-syntax-object-rest-spread": "7.8.3", + "@mdx-js/util": "1.6.22", + "babel-plugin-apply-mdx-type-prop": "1.6.22", + "babel-plugin-extract-import-names": "1.6.22", + "camelcase-css": "2.0.1", + "detab": "2.0.4", + "hast-util-raw": "6.0.1", + "lodash.uniq": "4.5.0", + "mdast-util-to-hast": "10.0.1", + "remark-footnotes": "2.0.0", + "remark-mdx": "1.6.22", + "remark-parse": "8.0.3", + "remark-squeeze-paragraphs": "4.0.0", + "style-to-object": "0.3.0", + "unified": "9.2.0", + "unist-builder": "2.0.3", + "unist-util-visit": "2.0.3" + } + }, + "@mdx-js/react": { + "version": "1.6.22", + "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-1.6.22.tgz", + "integrity": "sha512-TDoPum4SHdfPiGSAaRBw7ECyI8VaHpK8GJugbJIJuqyh6kzw9ZLJZW3HGL3NNrJGxcAixUvqROm+YuQOo5eXtg==", + "requires": {} + }, + "ccount": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-1.1.0.tgz", + "integrity": "sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg==" + }, "is-buffer": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==" }, - "mdast-util-definitions": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-4.0.0.tgz", - "integrity": "sha512-k8AJ6aNnUkB7IE+5azR9h81O5EQ/cTDXtWdMq9Kk5KcEW/8ritU5CeLg/9HhOC++nALHBlaogJ5jz0Ybk3kPMQ==", - "requires": { - "unist-util-visit": "^2.0.0" - } - }, "mdast-util-to-hast": { "version": "10.0.1", "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-10.0.1.tgz", @@ -35818,6 +39748,26 @@ "vfile": "^4.0.0" } }, + "unist-builder": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-builder/-/unist-builder-2.0.3.tgz", + "integrity": "sha512-f98yt5pnlMWlzP539tPc4grGMsFaQQlP/vM396b00jngsiINumNmsY8rkXjfoi1c6QaM8nQ3vaGDuoKWbe/1Uw==" + }, + "unist-util-generated": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-1.1.6.tgz", + "integrity": "sha512-cln2Mm1/CZzN5ttGK7vkoGw+RZ8VcUH6BtGbq98DDtRGquAAOXig1mrBQYelOwMXYS8rK+vZDyyojSjp7JX+Lg==" + }, + "unist-util-is": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", + "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==" + }, + "unist-util-position": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-3.1.0.tgz", + "integrity": "sha512-w+PkwCbYSFw8vpgWD0v7zRCl1FpY3fjDSQ3/N/wNd9Ffa4gPi8+4keqt99N3XW6F99t/mUzp2xAhNmfKWp95QA==" + }, "unist-util-remove-position": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-2.0.1.tgz", @@ -35825,13 +39775,135 @@ "requires": { "unist-util-visit": "^2.0.0" } + }, + "unist-util-stringify-position": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", + "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==", + "requires": { + "@types/unist": "^2.0.2" + } + }, + "unist-util-visit": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz", + "integrity": "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==", + "requires": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0", + "unist-util-visit-parents": "^3.0.0" + } + }, + "unist-util-visit-parents": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz", + "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==", + "requires": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0" + } + }, + "vfile": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz", + "integrity": "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==", + "requires": { + "@types/unist": "^2.0.0", + "is-buffer": "^2.0.0", + "unist-util-stringify-position": "^2.0.0", + "vfile-message": "^2.0.0" + } + }, + "vfile-location": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-3.2.0.tgz", + "integrity": "sha512-aLEIZKv/oxuCDZ8lkJGhuhztf/BW4M+iHdCwglA/eWc+vtuRFJj8EtgceYFX4LRjOhCAAiNHsKGssC6onJ+jbA==" + }, + "vfile-message": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz", + "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==", + "requires": { + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^2.0.0" + } + } + } + }, + "@mdx-js/mdx": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-2.1.4.tgz", + "integrity": "sha512-47drTDRr6QiMx1SXIoIyjTL8izoC+IBP5nmOLTUbuFJZYXdV9TPLuZJic0i96FGKfL7DpRN4WylpsxOVlpufMg==", + "requires": { + "@types/estree-jsx": "^1.0.0", + "@types/mdx": "^2.0.0", + "estree-util-build-jsx": "^2.0.0", + "estree-util-is-identifier-name": "^2.0.0", + "estree-util-to-js": "^1.1.0", + "estree-walker": "^3.0.0", + "hast-util-to-estree": "^2.0.0", + "markdown-extensions": "^1.0.0", + "periscopic": "^3.0.0", + "remark-mdx": "^2.0.0", + "remark-parse": "^10.0.0", + "remark-rehype": "^10.0.0", + "unified": "^10.0.0", + "unist-util-position-from-estree": "^1.0.0", + "unist-util-stringify-position": "^3.0.0", + "unist-util-visit": "^4.0.0", + "vfile": "^5.0.0" + }, + "dependencies": { + "bail": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", + "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==" + }, + "is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==" + }, + "is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==" + }, + "remark-parse": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-10.0.1.tgz", + "integrity": "sha512-1fUyHr2jLsVOkhbvPRBJ5zTKZZyD6yZzYaWCS6BPBdQ8vEMBCH+9zNCDA6tET/zHCi/jLqjCWtlJZUPk+DbnFw==", + "requires": { + "@types/mdast": "^3.0.0", + "mdast-util-from-markdown": "^1.0.0", + "unified": "^10.0.0" + } + }, + "trough": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/trough/-/trough-2.1.0.tgz", + "integrity": "sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==" + }, + "unified": { + "version": "10.1.2", + "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz", + "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==", + "requires": { + "@types/unist": "^2.0.0", + "bail": "^2.0.0", + "extend": "^3.0.0", + "is-buffer": "^2.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^5.0.0" + } } } }, "@mdx-js/react": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-2.1.3.tgz", - "integrity": "sha512-11n4lTvvRyxq3OYbWJwEYM+7q6PE0GxKbk0AwYIIQmrRkxDeljIsjDQkKOgdr/orgRRbYy5zi+iERdnwe01CHQ==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-2.1.4.tgz", + "integrity": "sha512-PRwLjoAxhSA6xTB2+FA5CPGUCOsIK3bJD0RYsoju+nUIyOpIZUSw6SJChfILByLizzxqslE0R+l8IjARo0N+hA==", "requires": { "@types/mdx": "^2.0.0", "@types/react": ">=16" @@ -35843,9 +39915,9 @@ "integrity": "sha512-H1rQc1ZOHANWBvPcW+JpGwr+juXSxM8Q8YCkm3GhZd8REu1fHR3z99CErO1p9pkcfcxZnMdIZdIsXkOHY0NilA==" }, "@mertasan/tailwindcss-variables": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@mertasan/tailwindcss-variables/-/tailwindcss-variables-2.5.0.tgz", - "integrity": "sha512-yAOBw4DfJAqr3N9e4x4/e7DBtPU/XdT4pi51o2cIb5QiCQeT7kkZ0vtRQk4sN2wPI9Mg/oSEHhMu7ZIxjJGQpg==", + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@mertasan/tailwindcss-variables/-/tailwindcss-variables-2.5.1.tgz", + "integrity": "sha512-I1Jvpu5fcinGT/yEDL53dRXznFWV4LoTCUVcTvQqA1YH1iAfs72OO/VZdBKPqcxe/lS2nBr/Ikloe+pLsxemmA==", "requires": { "lodash": "^4.17.21" } @@ -35859,9 +39931,9 @@ } }, "@monaco-editor/react": { - "version": "4.4.5", - "resolved": "https://registry.npmjs.org/@monaco-editor/react/-/react-4.4.5.tgz", - "integrity": "sha512-IImtzU7sRc66OOaQVCG+5PFHkSWnnhrUWGBuH6zNmH2h0YgmAhcjHZQc/6MY9JWEbUtVF1WPBMJ9u1XuFbRrVA==", + "version": "4.4.6", + "resolved": "https://registry.npmjs.org/@monaco-editor/react/-/react-4.4.6.tgz", + "integrity": "sha512-Gr3uz3LYf33wlFE3eRnta4RxP5FSNxiIV9ENn2D2/rN8KgGAD8ecvcITRtsbbyuOuNkwbuHYxfeaz2Vr+CtyFA==", "requires": { "@monaco-editor/loader": "^1.3.2", "prop-types": "^15.7.2" @@ -35894,9 +39966,9 @@ } }, "@next/env": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/@next/env/-/env-12.1.0.tgz", - "integrity": "sha512-nrIgY6t17FQ9xxwH3jj0a6EOiQ/WDHUos35Hghtr+SWN/ntHIQ7UpuvSi0vaLzZVHQWaDupKI+liO5vANcDeTQ==" + "version": "12.0.8", + "resolved": "https://registry.npmjs.org/@next/env/-/env-12.0.8.tgz", + "integrity": "sha512-Wa0gOeioB9PHap9wtZDZEhgOSE3/+qE/UALWjJHuNvH4J3oE+13EjVOiEsr1JcPCXUN8ESQE+phDKlo6qJ8P9g==" }, "@next/eslint-plugin-next": { "version": "12.3.1", @@ -35921,76 +39993,70 @@ } } }, - "@next/mdx": { - "version": "12.3.1", - "resolved": "https://registry.npmjs.org/@next/mdx/-/mdx-12.3.1.tgz", - "integrity": "sha512-b7G3CsAwyD/8Eo6uDjCCqNwEi68LTyo/JYPC0N2Yu3yl/iveMDCi03ME+9JsnFPr3DcjmGSKc1ioiYM4dJUkTg==", - "requires": {} - }, "@next/swc-android-arm64": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/@next/swc-android-arm64/-/swc-android-arm64-12.1.0.tgz", - "integrity": "sha512-/280MLdZe0W03stA69iL+v6I+J1ascrQ6FrXBlXGCsGzrfMaGr7fskMa0T5AhQIVQD4nA/46QQWxG//DYuFBcA==", + "version": "12.0.8", + "resolved": "https://registry.npmjs.org/@next/swc-android-arm64/-/swc-android-arm64-12.0.8.tgz", + "integrity": "sha512-BiXMcOZNnXSIXv+FQvbRgbMb+iYayLX/Sb2MwR0wja+eMs46BY1x/ssXDwUBADP1M8YtrGTlSPHZqUiCU94+Mg==", "optional": true }, "@next/swc-darwin-arm64": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-12.1.0.tgz", - "integrity": "sha512-R8vcXE2/iONJ1Unf5Ptqjk6LRW3bggH+8drNkkzH4FLEQkHtELhvcmJwkXcuipyQCsIakldAXhRbZmm3YN1vXg==", + "version": "12.0.8", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-12.0.8.tgz", + "integrity": "sha512-6EGMmvcIwPpwt0/iqLbXDGx6oKHAXzbowyyVXK8cqmIvhoghRFjqfiNGBs+ar6wEBGt68zhwn/77vE3iQWoFJw==", "optional": true }, "@next/swc-darwin-x64": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-12.1.0.tgz", - "integrity": "sha512-ieAz0/J0PhmbZBB8+EA/JGdhRHBogF8BWaeqR7hwveb6SYEIJaDNQy0I+ZN8gF8hLj63bEDxJAs/cEhdnTq+ug==", + "version": "12.0.8", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-12.0.8.tgz", + "integrity": "sha512-todxgQOGP/ucz5UH2kKR3XGDdkWmWr0VZAAbzgTbiFm45Ol4ih602k2nNR3xSbza9IqNhxNuUVsMpBgeo19CFQ==", "optional": true }, "@next/swc-linux-arm-gnueabihf": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-12.1.0.tgz", - "integrity": "sha512-njUd9hpl6o6A5d08dC0cKAgXKCzm5fFtgGe6i0eko8IAdtAPbtHxtpre3VeSxdZvuGFh+hb0REySQP9T1ttkog==", + "version": "12.0.8", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-12.0.8.tgz", + "integrity": "sha512-KULmdrfI+DJxBuhEyV47MQllB/WpC3P2xbwhHezxL/LkC2nkz5SbV4k432qpx2ebjIRf9SjdQ5Oz1FjD8Urayw==", "optional": true }, "@next/swc-linux-arm64-gnu": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-12.1.0.tgz", - "integrity": "sha512-OqangJLkRxVxMhDtcb7Qn1xjzFA3s50EIxY7mljbSCLybU+sByPaWAHY4px97ieOlr2y4S0xdPKkQ3BCAwyo6Q==", + "version": "12.0.8", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-12.0.8.tgz", + "integrity": "sha512-1XO87wgIVPvt5fx5i8CqdhksRdcpqyzCOLW4KrE0f9pUCIT04EbsFiKdmsH9c73aqjNZMnCMXpbV+cn4hN8x1w==", "optional": true }, "@next/swc-linux-arm64-musl": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-12.1.0.tgz", - "integrity": "sha512-hB8cLSt4GdmOpcwRe2UzI5UWn6HHO/vLkr5OTuNvCJ5xGDwpPXelVkYW/0+C3g5axbDW2Tym4S+MQCkkH9QfWA==", + "version": "12.0.8", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-12.0.8.tgz", + "integrity": "sha512-NStRZEy/rkk2G18Yhc/Jzi1Q2Dv+zH176oO8479zlDQ5syRfc6AvRHVV4iNRc8Pai58If83r/nOJkwFgGwkKLw==", "optional": true }, "@next/swc-linux-x64-gnu": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-12.1.0.tgz", - "integrity": "sha512-OKO4R/digvrVuweSw/uBM4nSdyzsBV5EwkUeeG4KVpkIZEe64ZwRpnFB65bC6hGwxIBnTv5NMSnJ+0K/WmG78A==", + "version": "12.0.8", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-12.0.8.tgz", + "integrity": "sha512-rHxTGtTEDFsdT9/VjewzxE19S7W1NE+aZpm4TwbT1pSNGK9KQxQGcXjqoHMeB+VZCFknzNEoIU/vydbjZMlAuw==", "optional": true }, "@next/swc-linux-x64-musl": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-12.1.0.tgz", - "integrity": "sha512-JohhgAHZvOD3rQY7tlp7NlmvtvYHBYgY0x5ZCecUT6eCCcl9lv6iV3nfu82ErkxNk1H893fqH0FUpznZ/H3pSw==", + "version": "12.0.8", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-12.0.8.tgz", + "integrity": "sha512-1F4kuFRQE10GSx7LMSvRmjMXFGpxT30g8rZzq9r/p/WKdErA4WB4uxaKEX0P8AINfuN63i4luKdR+LoacgBhYw==", "optional": true }, "@next/swc-win32-arm64-msvc": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-12.1.0.tgz", - "integrity": "sha512-T/3gIE6QEfKIJ4dmJk75v9hhNiYZhQYAoYm4iVo1TgcsuaKLFa+zMPh4056AHiG6n9tn2UQ1CFE8EoybEsqsSw==", + "version": "12.0.8", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-12.0.8.tgz", + "integrity": "sha512-QuRe49jqCV61TysGopC1P0HPqFAMZMWe1nbIQLyOkDLkULmZR8N2eYZq7fwqvZE5YwhMmJA/grwWFVBqSEh5Kg==", "optional": true }, "@next/swc-win32-ia32-msvc": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-12.1.0.tgz", - "integrity": "sha512-iwnKgHJdqhIW19H9PRPM9j55V6RdcOo6rX+5imx832BCWzkDbyomWnlzBfr6ByUYfhohb8QuH4hSGEikpPqI0Q==", + "version": "12.0.8", + "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-12.0.8.tgz", + "integrity": "sha512-0RV3/julybJr1IlPCowIWrJJZyAl+sOakJEM15y1NOOsbwTQ5eKZZXSi+7e23TN4wmy5HwNvn2dKzgOEVJ+jbA==", "optional": true }, "@next/swc-win32-x64-msvc": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-12.1.0.tgz", - "integrity": "sha512-aBvcbMwuanDH4EMrL2TthNJy+4nP59Bimn8egqv6GHMVj0a44cU6Au4PjOhLNqEh9l+IpRGBqMTzec94UdC5xg==", + "version": "12.0.8", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-12.0.8.tgz", + "integrity": "sha512-tTga6OFfO2JS+Yt5hdryng259c/tzNgSWkdiU2E+RBHiysAIOta57n4PJ8iPahOSqEqjaToPI76wM+o441GaNQ==", "optional": true }, "@nodelib/fs.scandir": { @@ -36027,9 +40093,9 @@ }, "dependencies": { "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -36055,62 +40121,6 @@ } } }, - "@octokit/endpoint": { - "version": "6.0.12", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.12.tgz", - "integrity": "sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA==", - "requires": { - "@octokit/types": "^6.0.3", - "is-plain-object": "^5.0.0", - "universal-user-agent": "^6.0.0" - } - }, - "@octokit/graphql": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.8.0.tgz", - "integrity": "sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg==", - "requires": { - "@octokit/request": "^5.6.0", - "@octokit/types": "^6.0.3", - "universal-user-agent": "^6.0.0" - } - }, - "@octokit/openapi-types": { - "version": "12.11.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz", - "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==" - }, - "@octokit/request": { - "version": "5.6.3", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.6.3.tgz", - "integrity": "sha512-bFJl0I1KVc9jYTe9tdGGpAMPy32dLBXXo1dS/YwSCTL/2nd9XeHsY616RE3HPXDVk+a+dBuzyz5YdlXwcDTr2A==", - "requires": { - "@octokit/endpoint": "^6.0.1", - "@octokit/request-error": "^2.1.0", - "@octokit/types": "^6.16.1", - "is-plain-object": "^5.0.0", - "node-fetch": "^2.6.7", - "universal-user-agent": "^6.0.0" - } - }, - "@octokit/request-error": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz", - "integrity": "sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==", - "requires": { - "@octokit/types": "^6.0.3", - "deprecation": "^2.0.0", - "once": "^1.4.0" - } - }, - "@octokit/types": { - "version": "6.41.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", - "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", - "requires": { - "@octokit/openapi-types": "^12.11.0" - } - }, "@pmmmwh/react-refresh-webpack-plugin": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.7.tgz", @@ -37206,20 +41216,11 @@ }, "dependencies": { "@types/node": { - "version": "16.11.59", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.59.tgz", - "integrity": "sha512-6u+36Dj3aDzhfBVUf/mfmc92OEdzQ2kx2jcXGdigfl70E/neV21ZHE6UCz4MDzTRcVqGAM27fk+DLXvyDsn3Jw==", + "version": "16.11.64", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.64.tgz", + "integrity": "sha512-z5hPTlVFzNwtJ2LNozTpJcD1Cu44c4LNuzaq1mwxmiHWQh2ULdR6Vjwo1UGldzRpzL0yUEdZddnfqGW2G70z6Q==", "dev": true }, - "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" - } - }, "autoprefixer": { "version": "9.8.8", "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.8.tgz", @@ -37253,38 +41254,6 @@ "to-regex": "^3.0.1" } }, - "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 - }, "fill-range": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", @@ -37312,12 +41281,6 @@ "worker-rpc": "^0.1.0" } }, - "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 - }, "is-extendable": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", @@ -37411,15 +41374,6 @@ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "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" - } - }, "to-regex-range": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", @@ -37638,11 +41592,20 @@ } }, "@types/node": { - "version": "16.11.59", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.59.tgz", - "integrity": "sha512-6u+36Dj3aDzhfBVUf/mfmc92OEdzQ2kx2jcXGdigfl70E/neV21ZHE6UCz4MDzTRcVqGAM27fk+DLXvyDsn3Jw==", + "version": "16.11.64", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.64.tgz", + "integrity": "sha512-z5hPTlVFzNwtJ2LNozTpJcD1Cu44c4LNuzaq1mwxmiHWQh2ULdR6Vjwo1UGldzRpzL0yUEdZddnfqGW2G70z6Q==", "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" + } + }, "babel-plugin-polyfill-corejs3": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.1.7.tgz", @@ -37652,6 +41615,46 @@ "@babel/helper-define-polyfill-provider": "^0.1.5", "core-js-compat": "^3.8.1" } + }, + "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 + }, + "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 + }, + "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" + } } } }, @@ -37718,17 +41721,51 @@ }, "dependencies": { "@types/node": { - "version": "16.11.59", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.59.tgz", - "integrity": "sha512-6u+36Dj3aDzhfBVUf/mfmc92OEdzQ2kx2jcXGdigfl70E/neV21ZHE6UCz4MDzTRcVqGAM27fk+DLXvyDsn3Jw==", + "version": "16.11.64", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.64.tgz", + "integrity": "sha512-z5hPTlVFzNwtJ2LNozTpJcD1Cu44c4LNuzaq1mwxmiHWQh2ULdR6Vjwo1UGldzRpzL0yUEdZddnfqGW2G70z6Q==", "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" + } + }, "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 }, + "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 + }, "globby": { "version": "11.1.0", "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", @@ -37742,6 +41779,21 @@ "merge2": "^1.4.1", "slash": "^3.0.0" } + }, + "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 + }, + "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" + } } } }, @@ -37848,10 +41900,59 @@ }, "dependencies": { "@types/node": { - "version": "16.11.59", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.59.tgz", - "integrity": "sha512-6u+36Dj3aDzhfBVUf/mfmc92OEdzQ2kx2jcXGdigfl70E/neV21ZHE6UCz4MDzTRcVqGAM27fk+DLXvyDsn3Jw==", + "version": "16.11.64", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.64.tgz", + "integrity": "sha512-z5hPTlVFzNwtJ2LNozTpJcD1Cu44c4LNuzaq1mwxmiHWQh2ULdR6Vjwo1UGldzRpzL0yUEdZddnfqGW2G70z6Q==", "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" + } + }, + "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 + }, + "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 + }, + "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" + } } } }, @@ -37874,11 +41975,273 @@ "ts-dedent": "^2.0.0" }, "dependencies": { + "@babel/core": { + "version": "7.12.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.9.tgz", + "integrity": "sha512-gTXYh3M5wb7FRXQy+FErKFAv90BnlOuNn1QkCK2lREoPAjrQCO49+HVSrFoe5uakFAF5eenS75KbO2vQiLrTMQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.12.5", + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helpers": "^7.12.5", + "@babel/parser": "^7.12.7", + "@babel/template": "^7.12.7", + "@babel/traverse": "^7.12.9", + "@babel/types": "^7.12.7", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.2", + "lodash": "^4.17.19", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", + "dev": true + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz", + "integrity": "sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-transform-parameters": "^7.12.1" + } + }, + "@babel/plugin-syntax-jsx": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.1.tgz", + "integrity": "sha512-1yRi7yAtB0ETgxdY9ti/p2TivUxJkTdhu/ZbF9MshVGqOx1TdB3b7xCXs49Fupgg50N45KcAsRP/ZqWjs9SRjg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@mdx-js/mdx": { + "version": "1.6.22", + "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-1.6.22.tgz", + "integrity": "sha512-AMxuLxPz2j5/6TpF/XSdKpQP1NlG0z11dFOlq+2IP/lSgl11GY8ji6S/rgsViN/L0BDvHvUMruRb7ub+24LUYA==", + "dev": true, + "requires": { + "@babel/core": "7.12.9", + "@babel/plugin-syntax-jsx": "7.12.1", + "@babel/plugin-syntax-object-rest-spread": "7.8.3", + "@mdx-js/util": "1.6.22", + "babel-plugin-apply-mdx-type-prop": "1.6.22", + "babel-plugin-extract-import-names": "1.6.22", + "camelcase-css": "2.0.1", + "detab": "2.0.4", + "hast-util-raw": "6.0.1", + "lodash.uniq": "4.5.0", + "mdast-util-to-hast": "10.0.1", + "remark-footnotes": "2.0.0", + "remark-mdx": "1.6.22", + "remark-parse": "8.0.3", + "remark-squeeze-paragraphs": "4.0.0", + "style-to-object": "0.3.0", + "unified": "9.2.0", + "unist-builder": "2.0.3", + "unist-util-visit": "2.0.3" + } + }, + "ccount": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-1.1.0.tgz", + "integrity": "sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg==", + "dev": true + }, + "is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", + "dev": true + }, + "mdast-util-to-hast": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-10.0.1.tgz", + "integrity": "sha512-BW3LM9SEMnjf4HXXVApZMt8gLQWVNXc3jryK0nJu/rOXPOnlkUjmdkDlmxMirpbU9ILncGFIwLH/ubnWBbcdgA==", + "dev": true, + "requires": { + "@types/mdast": "^3.0.0", + "@types/unist": "^2.0.0", + "mdast-util-definitions": "^4.0.0", + "mdurl": "^1.0.0", + "unist-builder": "^2.0.0", + "unist-util-generated": "^1.0.0", + "unist-util-position": "^3.0.0", + "unist-util-visit": "^2.0.0" + } + }, "prettier": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.3.0.tgz", "integrity": "sha512-kXtO4s0Lz/DW/IJ9QdWhAf7/NmPWQXkFr/r/WkR3vyI+0v8amTDxiaQSLzs8NBlytfLWX/7uQUMIW677yLKl4w==", "dev": true + }, + "remark-mdx": { + "version": "1.6.22", + "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-1.6.22.tgz", + "integrity": "sha512-phMHBJgeV76uyFkH4rvzCftLfKCr2RZuF+/gmVcaKrpsihyzmhXjA0BEMDaPTXG5y8qZOKPVo83NAOX01LPnOQ==", + "dev": true, + "requires": { + "@babel/core": "7.12.9", + "@babel/helper-plugin-utils": "7.10.4", + "@babel/plugin-proposal-object-rest-spread": "7.12.1", + "@babel/plugin-syntax-jsx": "7.12.1", + "@mdx-js/util": "1.6.22", + "is-alphabetical": "1.0.4", + "remark-parse": "8.0.3", + "unified": "9.2.0" + } + }, + "remark-parse": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-8.0.3.tgz", + "integrity": "sha512-E1K9+QLGgggHxCQtLt++uXltxEprmWzNfg+MxpfHsZlrddKzZ/hZyWHDbK3/Ap8HJQqYJRXP+jHczdL6q6i85Q==", + "dev": true, + "requires": { + "ccount": "^1.0.0", + "collapse-white-space": "^1.0.2", + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-whitespace-character": "^1.0.0", + "is-word-character": "^1.0.0", + "markdown-escapes": "^1.0.0", + "parse-entities": "^2.0.0", + "repeat-string": "^1.5.4", + "state-toggle": "^1.0.0", + "trim": "0.0.1", + "trim-trailing-lines": "^1.0.0", + "unherit": "^1.0.4", + "unist-util-remove-position": "^2.0.0", + "vfile-location": "^3.0.0", + "xtend": "^4.0.1" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "dev": true + }, + "unified": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.0.tgz", + "integrity": "sha512-vx2Z0vY+a3YoTj8+pttM3tiJHCwY5UFbYdiWrwBEbHmK8pvsPj2rtAX2BFfgXen8T39CJWblWRDT4L5WGXtDdg==", + "dev": true, + "requires": { + "bail": "^1.0.0", + "extend": "^3.0.0", + "is-buffer": "^2.0.0", + "is-plain-obj": "^2.0.0", + "trough": "^1.0.0", + "vfile": "^4.0.0" + } + }, + "unist-builder": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-builder/-/unist-builder-2.0.3.tgz", + "integrity": "sha512-f98yt5pnlMWlzP539tPc4grGMsFaQQlP/vM396b00jngsiINumNmsY8rkXjfoi1c6QaM8nQ3vaGDuoKWbe/1Uw==", + "dev": true + }, + "unist-util-generated": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-1.1.6.tgz", + "integrity": "sha512-cln2Mm1/CZzN5ttGK7vkoGw+RZ8VcUH6BtGbq98DDtRGquAAOXig1mrBQYelOwMXYS8rK+vZDyyojSjp7JX+Lg==", + "dev": true + }, + "unist-util-is": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", + "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==", + "dev": true + }, + "unist-util-position": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-3.1.0.tgz", + "integrity": "sha512-w+PkwCbYSFw8vpgWD0v7zRCl1FpY3fjDSQ3/N/wNd9Ffa4gPi8+4keqt99N3XW6F99t/mUzp2xAhNmfKWp95QA==", + "dev": true + }, + "unist-util-remove-position": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-2.0.1.tgz", + "integrity": "sha512-fDZsLYIe2uT+oGFnuZmy73K6ZxOPG/Qcm+w7jbEjaFcJgbQ6cqjs/eSPzXhsmGpAsWPkqZM9pYjww5QTn3LHMA==", + "dev": true, + "requires": { + "unist-util-visit": "^2.0.0" + } + }, + "unist-util-stringify-position": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", + "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==", + "dev": true, + "requires": { + "@types/unist": "^2.0.2" + } + }, + "unist-util-visit": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz", + "integrity": "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0", + "unist-util-visit-parents": "^3.0.0" + } + }, + "unist-util-visit-parents": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz", + "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0" + } + }, + "vfile": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz", + "integrity": "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0", + "is-buffer": "^2.0.0", + "unist-util-stringify-position": "^2.0.0", + "vfile-message": "^2.0.0" + } + }, + "vfile-location": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-3.2.0.tgz", + "integrity": "sha512-aLEIZKv/oxuCDZ8lkJGhuhztf/BW4M+iHdCwglA/eWc+vtuRFJj8EtgceYFX4LRjOhCAAiNHsKGssC6onJ+jbA==", + "dev": true + }, + "vfile-message": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz", + "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^2.0.0" + } } } }, @@ -37895,6 +42258,15 @@ "pretty-hrtime": "^1.0.3" }, "dependencies": { + "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" + } + }, "are-we-there-yet": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", @@ -37905,6 +42277,31 @@ "readable-stream": "^3.6.0" } }, + "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 + }, "gauge": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", @@ -37922,6 +42319,12 @@ "wide-align": "^1.1.2" } }, + "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 + }, "npmlog": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", @@ -37944,6 +42347,15 @@ "string_decoder": "^1.1.1", "util-deprecate": "^1.0.1" } + }, + "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" + } } } }, @@ -38024,9 +42436,9 @@ }, "dependencies": { "@types/node": { - "version": "16.11.59", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.59.tgz", - "integrity": "sha512-6u+36Dj3aDzhfBVUf/mfmc92OEdzQ2kx2jcXGdigfl70E/neV21ZHE6UCz4MDzTRcVqGAM27fk+DLXvyDsn3Jw==", + "version": "16.11.64", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.64.tgz", + "integrity": "sha512-z5hPTlVFzNwtJ2LNozTpJcD1Cu44c4LNuzaq1mwxmiHWQh2ULdR6Vjwo1UGldzRpzL0yUEdZddnfqGW2G70z6Q==", "dev": true } } @@ -38243,6 +42655,57 @@ "nanoid": "^3.3.1", "read-pkg-up": "^7.0.1", "regenerator-runtime": "^0.13.7" + }, + "dependencies": { + "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" + } + }, + "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 + }, + "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 + }, + "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" + } + } } }, "@storybook/testing-library": { @@ -38293,17 +42756,17 @@ } }, "@stripe/react-stripe-js": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/@stripe/react-stripe-js/-/react-stripe-js-1.10.0.tgz", - "integrity": "sha512-vuIjJUZJ3nyiaGa5z5iyMCzZfGGsgzOOjWjqknbbhkNsewyyginfeky9EZLSz9+iSAsgC9K6MeNOTLKVGcMycQ==", + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/@stripe/react-stripe-js/-/react-stripe-js-1.12.0.tgz", + "integrity": "sha512-LW/f/slRq8x0y99qFjlZirnIk+q0zQvNNRtidigvHfYSbHji4QdtKDMD/HfYmtriPDRpIxOFilwsJ3ayPCC9Fw==", "requires": { "prop-types": "^15.7.2" } }, "@stripe/stripe-js": { - "version": "1.37.0", - "resolved": "https://registry.npmjs.org/@stripe/stripe-js/-/stripe-js-1.37.0.tgz", - "integrity": "sha512-khoaEqpvQUwEz/PyeKiiOGfzzhX8i009BJNTXjkkUpT2uCjnemo2JyFPCyHGszViqTSpDbFXeNIGIv+dtvd+9g==" + "version": "1.38.1", + "resolved": "https://registry.npmjs.org/@stripe/stripe-js/-/stripe-js-1.38.1.tgz", + "integrity": "sha512-v0hF65jEs7tw33JE70E5puJ2fFhpiS2XYwmayupEdjKWavJivycYcZgZKYXAQhTiMgtDgN9YPzqUr86VzVc3Ew==" }, "@supabase/auth-ui-react": { "version": "0.1.8", @@ -38318,19 +42781,19 @@ } }, "@supabase/functions-js": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/@supabase/functions-js/-/functions-js-1.3.4.tgz", - "integrity": "sha512-yYVgkECjv7IZEBKBI3EB5Q7R1p0FJ10g8Q9N7SWKIHUU6i6DnbEGHIMFLyQRm1hmiNWD8fL7bRVEYacmTRJhHw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@supabase/functions-js/-/functions-js-2.0.0.tgz", + "integrity": "sha512-ozb7bds2yvf5k7NM2ZzUkxvsx4S4i2eRKFSJetdTADV91T65g4gCzEs9L3LUXSrghcGIkUaon03VPzOrFredqg==", "requires": { "cross-fetch": "^3.1.5" } }, "@supabase/gotrue-js": { - "version": "1.22.22", - "resolved": "https://registry.npmjs.org/@supabase/gotrue-js/-/gotrue-js-1.22.22.tgz", - "integrity": "sha512-exbCopLo4tLawKZR25wEdipm+IRVujuqFRR4h2wiXd11YA+N8rfgg/4S4L6BTFHmzV+KMjy0kDF3yMbsjIR/xA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@supabase/gotrue-js/-/gotrue-js-2.0.1.tgz", + "integrity": "sha512-PCzHeFhz33lPWLZT+UiVDpGkZQI3K1wwhkhgAjvJdkyCbwK5u+LWWUzz0AX66bGGLpg1IYQIP7oz8V68XVjzMA==", "requires": { - "cross-fetch": "^3.0.6" + "cross-fetch": "^3.1.5" } }, "@supabase/postgres-meta": { @@ -38344,9 +42807,9 @@ } }, "@supabase/postgrest-js": { - "version": "0.37.4", - "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-0.37.4.tgz", - "integrity": "sha512-x+c2rk1fz9s6f1PrGxCJ0QTUgXPDI0G3ngIqD5sSiXhhCyfl8Q5V92mXl2EYtlDhkiUkjFNrOZFhXVbXOHgvDw==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-1.0.0.tgz", + "integrity": "sha512-MRR4g8dThgSnlnjkL2Jvc6gS73W68hLq48/Q245CLvUPt3KtOh3WXpvo4rZDEDHYVkyVga+L9IQixo6YTsjMQg==", "requires": { "cross-fetch": "^3.1.5" } @@ -38367,37 +42830,38 @@ } }, "@supabase/realtime-js": { - "version": "1.7.5", - "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-1.7.5.tgz", - "integrity": "sha512-nXuoxt7NE1NTI+G8WBim1K2gkUC8YE3e9evBUG+t6xwd9Sq+sSOrjcE0qJ8/Y631BCnLzlhX6yhFYQFh1oQDOg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-2.0.0.tgz", + "integrity": "sha512-DJVt5Z76pik3Fxt1es4fmquq6GrwR3nLqcb2Q6VpHXSudtixML0Cyxsu0DPzxa6ruSQrO9s08s0OQgwaIA1C0Q==", "requires": { "@types/phoenix": "^1.5.4", "websocket": "^1.0.34" } }, "@supabase/shared-types": { - "version": "0.1.27", - "resolved": "https://registry.npmjs.org/@supabase/shared-types/-/shared-types-0.1.27.tgz", - "integrity": "sha512-65obkZ4A+6R5RAP1oZwPvQAs/lLX2LUNRvYOlz58D4vUocZt2hrUqhCHnCettI7+Wd1rcYTHhulKVcGGugsEIA==" + "version": "0.1.29", + "resolved": "https://registry.npmjs.org/@supabase/shared-types/-/shared-types-0.1.29.tgz", + "integrity": "sha512-CQEr/dKLNt3+du3xhpqohO3fkVFCLL+v92Vgj51cECpAv3LIkkxGKNNc+SXsG+niDxMZp9EuyDLo7fGzsB8f6w==" }, "@supabase/storage-js": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/@supabase/storage-js/-/storage-js-1.7.3.tgz", - "integrity": "sha512-jnIZWqOc9TGclOozgX9v/RWGFCgJAyW/yvmauexgRZhWknUXoA4b2i8tj7vfwE0WTvNRuA5JpXID98rfJeSG7Q==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@supabase/storage-js/-/storage-js-2.0.0.tgz", + "integrity": "sha512-7kXThdRt/xqnOOvZZxBqNkeX1CFNUWc0hYBJtNN/Uvt8ok9hD14foYmroWrHn046wEYFqUrB9U35JYsfTrvltA==", "requires": { - "cross-fetch": "^3.1.0" + "cross-fetch": "^3.1.5" } }, "@supabase/supabase-js": { - "version": "1.35.7", - "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-1.35.7.tgz", - "integrity": "sha512-X+qCzmj5sH0dozagbLoK7LzysBaWoivO0gsAUAPPBQkQupQWuBfaOqG18gKhlfL0wp2PL888QzhQNScp/IwUfA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.0.0.tgz", + "integrity": "sha512-8nNMXYzBlQVSDONFaNgyyxsAdUY+C9Q/7vEDYDdTFTyC3i+luXTDOSjHMLcjIky/+x5rIAcNQqqIJ48HJUluXA==", "requires": { - "@supabase/functions-js": "^1.3.4", - "@supabase/gotrue-js": "^1.22.21", - "@supabase/postgrest-js": "^0.37.4", - "@supabase/realtime-js": "^1.7.5", - "@supabase/storage-js": "^1.7.2" + "@supabase/functions-js": "^2.0.0", + "@supabase/gotrue-js": "^2.0.1", + "@supabase/postgrest-js": "^1.0.0", + "@supabase/realtime-js": "^2.0.0", + "@supabase/storage-js": "^2.0.0", + "cross-fetch": "^3.1.5" } }, "@supabase/ui": { @@ -38450,15 +42914,19 @@ "mini-svg-data-uri": "^1.2.3" } }, - "@tailwindcss/typography": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@tailwindcss/typography/-/typography-0.4.1.tgz", - "integrity": "sha512-ovPPLUhs7zAIJfr0y1dbGlyCuPhpuv/jpBoFgqAc658DWGGrOBWBMpAWLw2KlzbNeVk4YBJMzue1ekvIbdw6XA==", + "@testdeck/core": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@testdeck/core/-/core-0.2.1.tgz", + "integrity": "sha512-eMO5LKxCN8/fST2RTrxo6+1rmwT4ZGN3giwaEeD94d8o4FoHk5Xp1SWGZeqYu/M8jfHpCN2MTKQO9viIBPVBAQ==", + "dev": true + }, + "@testdeck/jest": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@testdeck/jest/-/jest-0.2.1.tgz", + "integrity": "sha512-y/AwMEac1vZGZyrIj6LKZ4yoZk4ChL2G8fsbCPPeoeXfl7WNBNm739KDhcGOxsjJDhKCfxyt+RIso3RrsmqzVw==", + "dev": true, "requires": { - "lodash.castarray": "^4.4.0", - "lodash.isplainobject": "^4.0.6", - "lodash.merge": "^4.6.2", - "lodash.uniq": "^4.5.0" + "@testdeck/core": "^0.2.0" } }, "@testing-library/dom": { @@ -38475,6 +42943,57 @@ "dom-accessibility-api": "^0.5.9", "lz-string": "^1.4.4", "pretty-format": "^27.0.2" + }, + "dependencies": { + "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" + } + }, + "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 + }, + "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 + }, + "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" + } + } } }, "@testing-library/react": { @@ -38500,7 +43019,32 @@ "@tootallnate/once": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==" + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "dev": true + }, + "@tsconfig/node10": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", + "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", + "devOptional": true + }, + "@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "devOptional": true + }, + "@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "devOptional": true + }, + "@tsconfig/node16": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", + "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", + "devOptional": true }, "@types/acorn": { "version": "4.0.6", @@ -38510,6 +43054,12 @@ "@types/estree": "*" } }, + "@types/allure-js-commons": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/@types/allure-js-commons/-/allure-js-commons-0.0.1.tgz", + "integrity": "sha512-PuKCD4zeoF7Z6tKP0paOKmiMv3zXP2fKj/NiUylxDwBV1AL0PsD6AsbkieuEuRfbFUbG4C28RnmcSu9rPMWWjQ==", + "dev": true + }, "@types/aria-query": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-4.2.2.tgz", @@ -38549,9 +43099,9 @@ } }, "@types/babel__traverse": { - "version": "7.18.1", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.1.tgz", - "integrity": "sha512-FSdLaZh2UxaMuLp9lixWaHq/golWTRWOnRsAXzDTDSDOQLuZb1nsdCt6pJSPWSEQt2eFZ2YVk3oYhn+1kLMeMA==", + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.2.tgz", + "integrity": "sha512-FcFaxOr2V5KZCviw1TnutEMVUVsGt4D2hP1TAfXZAMKuHYW3xQhe3jTxNPWutgCJ3/X1c5yX8ZoGVEItxKbwBg==", "dev": true, "requires": { "@babel/types": "^7.3.0" @@ -38716,61 +43266,20 @@ } }, "@types/jest": { - "version": "25.2.3", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-25.2.3.tgz", - "integrity": "sha512-JXc1nK/tXHiDhV55dvfzqtmP4S3sy3T3ouV2tkViZgxY/zeUkcpQcQPGRlgF4KmWzWW5oiWYSZwtCB+2RsE4Fw==", + "version": "27.5.2", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.5.2.tgz", + "integrity": "sha512-mpT8LJJ4CMeeahobofYWIjFo0xonRS/HfxnVEPMPFSQdGUt1uHCnoPT7Zhb+sjDU2wz0oKV0OLUR0WzrHNgfeA==", "dev": true, "requires": { - "jest-diff": "^25.2.1", - "pretty-format": "^25.2.1" - }, - "dependencies": { - "@jest/types": { - "version": "25.5.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-25.5.0.tgz", - "integrity": "sha512-OXD0RgQ86Tu3MazKo8bnrkDRaDXXMGUqd+kTtLtK1Zb7CRzQcaSRPPPV37SvYTdevXEBVxe0HXylEjs8ibkmCw==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^15.0.0", - "chalk": "^3.0.0" - } - }, - "@types/istanbul-reports": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz", - "integrity": "sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "*", - "@types/istanbul-lib-report": "*" - } - }, - "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "pretty-format": { - "version": "25.5.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-25.5.0.tgz", - "integrity": "sha512-kbo/kq2LQ/A/is0PQwsEHM7Ca6//bGPPvU6UnsdDRSKTWxT/ru/xb88v4BJf6a69H+uTytOEsTusT9ksd/1iWQ==", - "dev": true, - "requires": { - "@jest/types": "^25.5.0", - "ansi-regex": "^5.0.0", - "ansi-styles": "^4.0.0", - "react-is": "^16.12.0" - } - } + "jest-matcher-utils": "^27.0.0", + "pretty-format": "^27.0.0" } }, + "@types/js-yaml": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.5.tgz", + "integrity": "sha512-FhpRzf927MNQdRZP0J5DLIdTXhjLYzeUTmLAu69mnVksLH9CJY3IuSeEgbKUki7GQZm0WqDkGzyxju2EZGD2wA==" + }, "@types/json-logic-js": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/@types/json-logic-js/-/json-logic-js-1.2.1.tgz", @@ -38789,9 +43298,9 @@ "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==" }, "@types/lodash": { - "version": "4.14.185", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.185.tgz", - "integrity": "sha512-evMDG1bC4rgQg4ku9tKpuMh5iBNEwNa3tf9zRHdP1qlv+1WUg44xat4IxCE14gIpZRGUUWAx2VhItCZc25NfMA==" + "version": "4.14.186", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.186.tgz", + "integrity": "sha512-eHcVlLXP0c2FlMPm56ITode2AgLMSa6aJ05JTTbYbI+7EMkCEE5qk2E41d5g2lCVTqRe0GnnRFurmlCsDODrPw==" }, "@types/markdown-table": { "version": "3.0.0", @@ -38816,11 +43325,6 @@ "@types/unist": "*" } }, - "@types/mdurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-1.0.2.tgz", - "integrity": "sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA==" - }, "@types/mdx": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.2.tgz", @@ -38914,9 +43418,9 @@ "integrity": "sha512-L5eZmzw89eXBKkiqVBcJfU1QGx9y+wurRIEgt0cuLH0hwNtVUxtx+6cu0R2STwWj468sjXyBYPYDtGclUd1kjQ==" }, "@types/prettier": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.0.tgz", - "integrity": "sha512-RI1L7N4JnW5gQw2spvL7Sllfuf1SaHdrZpCHiBlCXjIlufi1SMNnbu2teze3/QE67Fg2tBlH7W+mi4hVNk4p0A==", + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.1.tgz", + "integrity": "sha512-ri0UmynRRvZiiUJdiz38MmIblKK+oH30MztdBVR95dv/Ubw6neWSb8u1XpRb72L4qsZOhz+L+z9JD40SJmfWow==", "dev": true }, "@types/pretty-hrtime": { @@ -39085,6 +43589,15 @@ "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", "dev": true }, + "@types/strip-ansi": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/@types/strip-ansi/-/strip-ansi-5.2.1.tgz", + "integrity": "sha512-1l5iM0LBkVU8JXxnIoBqNvg+yyOXxPeN6DNoD+7A9AN1B8FhYPSeIXgyNqwIqg1uzipTgVC2hmuDzB0u9qw/PA==", + "dev": true, + "requires": { + "strip-ansi": "*" + } + }, "@types/tapable": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/@types/tapable/-/tapable-1.0.8.tgz", @@ -39171,38 +43684,77 @@ "integrity": "sha512-3NoqvZC2W5gAC5DZbTpCeJ251vGQmgcWIHQJGq2J240HY6ErQ9aWKkwfoKJlHLx+A83WPNTZ9+3cd2ILxbvr1w==", "dev": true }, - "@typescript-eslint/parser": { - "version": "5.38.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.38.0.tgz", - "integrity": "sha512-/F63giJGLDr0ms1Cr8utDAxP2SPiglaD6V+pCOcG35P2jCqdfR7uuEhz1GIC3oy4hkUF8xA1XSXmd9hOh/a5EA==", + "@typescript-eslint/eslint-plugin": { + "version": "5.39.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.39.0.tgz", + "integrity": "sha512-xVfKOkBm5iWMNGKQ2fwX5GVgBuHmZBO1tCRwXmY5oAIsPscfwm2UADDuNB8ZVYCtpQvJK4xpjrK7jEhcJ0zY9A==", + "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.38.0", - "@typescript-eslint/types": "5.38.0", - "@typescript-eslint/typescript-estree": "5.38.0", + "@typescript-eslint/scope-manager": "5.39.0", + "@typescript-eslint/type-utils": "5.39.0", + "@typescript-eslint/utils": "5.39.0", + "debug": "^4.3.4", + "ignore": "^5.2.0", + "regexpp": "^3.2.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "dependencies": { + "semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "@typescript-eslint/parser": { + "version": "5.39.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.39.0.tgz", + "integrity": "sha512-PhxLjrZnHShe431sBAGHaNe6BDdxAASDySgsBCGxcBecVCi8NQWxQZMcizNA4g0pN51bBAn/FUfkWG3SDVcGlA==", + "requires": { + "@typescript-eslint/scope-manager": "5.39.0", + "@typescript-eslint/types": "5.39.0", + "@typescript-eslint/typescript-estree": "5.39.0", "debug": "^4.3.4" } }, "@typescript-eslint/scope-manager": { - "version": "5.38.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.38.0.tgz", - "integrity": "sha512-ByhHIuNyKD9giwkkLqzezZ9y5bALW8VNY6xXcP+VxoH4JBDKjU5WNnsiD4HJdglHECdV+lyaxhvQjTUbRboiTA==", + "version": "5.39.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.39.0.tgz", + "integrity": "sha512-/I13vAqmG3dyqMVSZPjsbuNQlYS082Y7OMkwhCfLXYsmlI0ca4nkL7wJ/4gjX70LD4P8Hnw1JywUVVAwepURBw==", "requires": { - "@typescript-eslint/types": "5.38.0", - "@typescript-eslint/visitor-keys": "5.38.0" + "@typescript-eslint/types": "5.39.0", + "@typescript-eslint/visitor-keys": "5.39.0" + } + }, + "@typescript-eslint/type-utils": { + "version": "5.39.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.39.0.tgz", + "integrity": "sha512-KJHJkOothljQWzR3t/GunL0TPKY+fGJtnpl+pX+sJ0YiKTz3q2Zr87SGTmFqsCMFrLt5E0+o+S6eQY0FAXj9uA==", + "dev": true, + "requires": { + "@typescript-eslint/typescript-estree": "5.39.0", + "@typescript-eslint/utils": "5.39.0", + "debug": "^4.3.4", + "tsutils": "^3.21.0" } }, "@typescript-eslint/types": { - "version": "5.38.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.38.0.tgz", - "integrity": "sha512-HHu4yMjJ7i3Cb+8NUuRCdOGu2VMkfmKyIJsOr9PfkBVYLYrtMCK/Ap50Rpov+iKpxDTfnqvDbuPLgBE5FwUNfA==" + "version": "5.39.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.39.0.tgz", + "integrity": "sha512-gQMZrnfEBFXK38hYqt8Lkwt8f4U6yq+2H5VDSgP/qiTzC8Nw8JO3OuSUOQ2qW37S/dlwdkHDntkZM6SQhKyPhw==" }, "@typescript-eslint/typescript-estree": { - "version": "5.38.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.38.0.tgz", - "integrity": "sha512-6P0RuphkR+UuV7Avv7MU3hFoWaGcrgOdi8eTe1NwhMp2/GjUJoODBTRWzlHpZh6lFOaPmSvgxGlROa0Sg5Zbyg==", + "version": "5.39.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.39.0.tgz", + "integrity": "sha512-qLFQP0f398sdnogJoLtd43pUgB18Q50QSA+BTE5h3sUxySzbWDpTSdgt4UyxNSozY/oDK2ta6HVAzvGgq8JYnA==", "requires": { - "@typescript-eslint/types": "5.38.0", - "@typescript-eslint/visitor-keys": "5.38.0", + "@typescript-eslint/types": "5.39.0", + "@typescript-eslint/visitor-keys": "5.39.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -39229,21 +43781,35 @@ } }, "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", "requires": { "lru-cache": "^6.0.0" } } } }, - "@typescript-eslint/visitor-keys": { - "version": "5.38.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.38.0.tgz", - "integrity": "sha512-MxnrdIyArnTi+XyFLR+kt/uNAcdOnmT+879os7qDRI+EYySR4crXJq9BXPfRzzLGq0wgxkwidrCJ9WCAoacm1w==", + "@typescript-eslint/utils": { + "version": "5.39.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.39.0.tgz", + "integrity": "sha512-+DnY5jkpOpgj+EBtYPyHRjXampJfC0yUZZzfzLuUWVZvCuKqSdJVC8UhdWipIw7VKNTfwfAPiOWzYkAwuIhiAg==", + "dev": true, "requires": { - "@typescript-eslint/types": "5.38.0", + "@types/json-schema": "^7.0.9", + "@typescript-eslint/scope-manager": "5.39.0", + "@typescript-eslint/types": "5.39.0", + "@typescript-eslint/typescript-estree": "5.39.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "5.39.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.39.0.tgz", + "integrity": "sha512-yyE3RPwOG+XJBLrhvsxAidUgybJVQ/hG8BhiJo0k8JSAYfk/CshVcxf0HwP4Jt7WZZ6vLmxdo1p6EyN3tzFTkg==", + "requires": { + "@typescript-eslint/types": "5.39.0", "eslint-visitor-keys": "^3.3.0" } }, @@ -39422,30 +43988,6 @@ "@xtuc/long": "4.2.2" } }, - "@wry/context": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/@wry/context/-/context-0.6.1.tgz", - "integrity": "sha512-LOmVnY1iTU2D8tv4Xf6MVMZZ+juIJ87Kt/plMijjN20NMAXGmH4u8bS1t0uT74cZ5gwpocYueV58YwyI8y+GKw==", - "requires": { - "tslib": "^2.3.0" - } - }, - "@wry/equality": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/@wry/equality/-/equality-0.5.3.tgz", - "integrity": "sha512-avR+UXdSrsF2v8vIqIgmeTY0UR91UT+IyablCyKe/uk22uOJ8fusKZnH9JH9e1/EtLeNJBtagNmL3eJdnOV53g==", - "requires": { - "tslib": "^2.3.0" - } - }, - "@wry/trie": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@wry/trie/-/trie-0.3.2.tgz", - "integrity": "sha512-yRTyhWSls2OY/pYLfwff867r8ekooZ4UI+/gxot5Wj8EFwSf2rG+n+Mo/6LoLQm1TKA4GRj2+LCpbfS937dClQ==", - "requires": { - "tslib": "^2.3.0" - } - }, "@xtuc/ieee754": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", @@ -39461,7 +44003,8 @@ "abab": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", - "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==" + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", + "dev": true }, "accepts": { "version": "1.3.8", @@ -39482,6 +44025,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", + "dev": true, "requires": { "acorn": "^7.1.1", "acorn-walk": "^7.1.1" @@ -39566,13 +44110,6 @@ "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2", "uri-js": "^4.2.2" - }, - "dependencies": { - "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==" - } } }, "ajv-errors": { @@ -39582,6 +44119,31 @@ "devOptional": true, "requires": {} }, + "allure-commandline": { + "version": "2.18.1", + "resolved": "https://registry.npmjs.org/allure-commandline/-/allure-commandline-2.18.1.tgz", + "integrity": "sha512-bB0jY00yXxROgaTkC/PTFzmT0sVuHGiOhm80onO+N/tr5MF3eQrBkwTOdvuefEWJ1NTACutvmzZSYn8o6W2evA==", + "dev": true + }, + "allure-js-commons": { + "version": "2.0.0-beta.19", + "resolved": "https://registry.npmjs.org/allure-js-commons/-/allure-js-commons-2.0.0-beta.19.tgz", + "integrity": "sha512-sgt7TnU7s8QIzEOmLFO0T5ih4W2YbLrcsL1ElO7WN/dPzIww4G1BBJQDK98VCS+cG5qIljBYRuJ+rtzKWgtM8A==", + "dev": true, + "requires": { + "mkdirp": "^1.0.4", + "properties": "^1.2.1", + "uuid": "^8.3.0" + }, + "dependencies": { + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + } + } + }, "analytics-node": { "version": "3.5.0", "resolved": "https://registry.npmjs.org/analytics-node/-/analytics-node-3.5.0.tgz", @@ -39655,11 +44217,11 @@ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" }, "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "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==", "requires": { - "color-convert": "^2.0.1" + "color-convert": "^1.9.0" } }, "ansi-to-html": { @@ -39711,10 +44273,12 @@ "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==" }, "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 + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "requires": { + "sprintf-js": "~1.0.2" + } }, "aria-hidden": { "version": "1.2.1", @@ -39916,6 +44480,11 @@ "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==" }, + "astring": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/astring/-/astring-1.8.3.tgz", + "integrity": "sha512-sRpyiNrx2dEYIMmUXprS8nlpRg2Drs8m9ElX9vVEXaCB4XEAJhKfs7IcX0IwShjuOAjLR6wzIrgoptz1n19i1A==" + }, "async-each": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", @@ -39926,7 +44495,8 @@ "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true }, "at-least-node": { "version": "1.0.0", @@ -40073,6 +44643,46 @@ "@types/yargs-parser": "*" } }, + "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" + } + }, + "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 + }, + "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 + }, "jest-haste-map": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", @@ -40123,6 +44733,15 @@ "graceful-fs": "^4.2.9", "picomatch": "^2.2.3" } + }, + "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" + } } } }, @@ -40178,6 +44797,12 @@ "path-exists": "^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 + }, "locate-path": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", @@ -40262,6 +44887,7 @@ "version": "2.3.3", "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "dev": true, "requires": { "object.assign": "^4.1.0" } @@ -40321,6 +44947,7 @@ "version": "0.3.3", "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz", "integrity": "sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==", + "dev": true, "requires": { "@babel/compat-data": "^7.17.7", "@babel/helper-define-polyfill-provider": "^0.3.3", @@ -40331,6 +44958,7 @@ "version": "0.6.0", "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz", "integrity": "sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==", + "dev": true, "requires": { "@babel/helper-define-polyfill-provider": "^0.3.3", "core-js-compat": "^3.25.1" @@ -40340,6 +44968,7 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz", "integrity": "sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==", + "dev": true, "requires": { "@babel/helper-define-polyfill-provider": "^0.3.3" } @@ -40561,11 +45190,60 @@ "wrap-ansi": "^7.0.0" }, "dependencies": { + "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" + } + }, "camelcase": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "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 + }, + "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 + }, + "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" + } } } }, @@ -40605,7 +45283,8 @@ "browser-process-hrtime": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", - "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==" + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", + "dev": true }, "browserify-aes": { "version": "1.2.0", @@ -40938,9 +45617,9 @@ } }, "caniuse-lite": { - "version": "1.0.30001409", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001409.tgz", - "integrity": "sha512-V0mnJ5dwarmhYv8/MzhJ//aW68UpvnQBXv8lJ2QUsvn2pHcmAuNtu8hQEDz37XnA1iE+lRR9CIfGWWpgJ5QedQ==" + "version": "1.0.30001418", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001418.tgz", + "integrity": "sha512-oIs7+JL3K9JRQ3jPZjlH6qyYDp+nBTCais7hjh0s+fuBwufc7uZ7hPYMXrDOJhV360KGMTcczMRObk0/iMqZRg==" }, "capture-exit": { "version": "2.0.0", @@ -40958,17 +45637,18 @@ "dev": true }, "ccount": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/ccount/-/ccount-1.1.0.tgz", - "integrity": "sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg==" + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", + "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==" }, "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" } }, "char-regex": { @@ -40978,14 +45658,14 @@ "dev": true }, "character-entities": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", - "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==" + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", + "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==" }, "character-entities-html4": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-1.1.4.tgz", - "integrity": "sha512-HRcDxZuZqMx3/a+qrzxdBKBPUpxWEq9xw2OPZ3a/174ihfrQKVsFhqtthBInFy1zZ9GgZyFXOatNujm8M+El3g==" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", + "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==" }, "character-entities-legacy": { "version": "1.1.4", @@ -41264,17 +45944,17 @@ } }, "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==", + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "requires": { - "color-name": "~1.1.4" + "color-name": "1.1.3" } }, "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==" + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" }, "color-support": { "version": "1.1.3", @@ -41291,14 +45971,15 @@ "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, "requires": { "delayed-stream": "~1.0.0" } }, "comma-separated-tokens": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz", - "integrity": "sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw==" + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.2.tgz", + "integrity": "sha512-G5yTt3KQN4Yn7Yk4ed73hlZ1evrFKXeUW3086p3PRFNp7m2vIjI6Pg+Kgb+oyzhd9F2qdcoj67+y3SdxL5XWsg==" }, "commander": { "version": "6.2.1", @@ -41563,23 +46244,24 @@ } }, "core-js": { - "version": "3.25.2", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.25.2.tgz", - "integrity": "sha512-YB4IAT1bjEfxTJ1XYy11hJAKskO+qmhuDBM8/guIfMz4JvdsAQAqvyb97zXX7JgSrfPLG5mRGFWJwJD39ruq2A==", + "version": "3.25.5", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.25.5.tgz", + "integrity": "sha512-nbm6eZSjm+ZuBQxCUPQKQCoUEfFOXjUZ8dTTyikyKaWrTYmAVbykQfwsKE5dBK88u3QCkCrzsx/PPlKfhsvgpw==", "dev": true }, "core-js-compat": { - "version": "3.25.2", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.25.2.tgz", - "integrity": "sha512-TxfyECD4smdn3/CjWxczVtJqVLEEC2up7/82t7vC0AzNogr+4nQ8vyF7abxAuTXWvjTClSbvGhU0RgqA4ToQaQ==", + "version": "3.25.5", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.25.5.tgz", + "integrity": "sha512-ovcyhs2DEBUIE0MGEKHP4olCUW/XYte3Vroyxuh38rD1wAO4dHohsovUC4eAOuzFxE6b+RXvBU3UZ9o0YhUTkA==", + "dev": true, "requires": { "browserslist": "^4.21.4" } }, "core-js-pure": { - "version": "3.25.2", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.25.2.tgz", - "integrity": "sha512-ItD7YpW1cUB4jaqFLZXe1AXkyqIxz6GqPnsDV4uF4hVcWh/WAGIqSqw5p0/WdsILM0Xht9s3Koyw05R3K6RtiA==" + "version": "3.25.5", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.25.5.tgz", + "integrity": "sha512-oml3M22pHM+igfWHDfdLVq2ShWmjM2V4L+dQEBs0DWVIqEm9WHCwGAlZ6BmyBQGy5sFrJmcx+856D9lVKyGWYg==" }, "core-util-is": { "version": "1.0.3", @@ -41911,6 +46593,12 @@ "sha.js": "^2.4.8" } }, + "create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "devOptional": true + }, "cross-fetch": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", @@ -42078,6 +46766,12 @@ "dev": true, "requires": {} }, + "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 + }, "json5": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", @@ -42165,46 +46859,8 @@ "domhandler": "^4.3.1", "domutils": "^2.8.0", "nth-check": "^2.0.1" - }, - "dependencies": { - "dom-serializer": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", - "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", - "dev": true, - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - } - }, - "domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", - "dev": true, - "requires": { - "domelementtype": "^2.2.0" - } - }, - "domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "dev": true, - "requires": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - } - } } }, - "css-selector-parser": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/css-selector-parser/-/css-selector-parser-1.4.1.tgz", - "integrity": "sha512-HYPSb7y/Z7BNDCOrakL4raGO2zltZkbeXyAd6Tg9obzix6QhzxCotdBl6VT0Dv4vZfJGVz3WL/xaEI9Ly3ul0g==" - }, "css-unit-converter": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/css-unit-converter/-/css-unit-converter-1.1.2.tgz", @@ -42236,12 +46892,14 @@ "cssom": { "version": "0.4.4", "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", - "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==" + "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", + "dev": true }, "cssstyle": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "dev": true, "requires": { "cssom": "~0.3.6" }, @@ -42249,7 +46907,8 @@ "cssom": { "version": "0.3.8", "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==" + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true } } }, @@ -42359,6 +47018,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", + "dev": true, "requires": { "abab": "^2.0.3", "whatwg-mimetype": "^2.3.0", @@ -42405,7 +47065,8 @@ "decimal.js": { "version": "10.4.1", "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.1.tgz", - "integrity": "sha512-F29o+vci4DodHYT9UrR5IEbfBw9pE5eSapIJdTqXK5+6hq+t8VRxwQyKlW2i+KDKFkkJQRvFyI/QXD83h8LyQw==" + "integrity": "sha512-F29o+vci4DodHYT9UrR5IEbfBw9pE5eSapIJdTqXK5+6hq+t8VRxwQyKlW2i+KDKFkkJQRvFyI/QXD83h8LyQw==", + "dev": true }, "decimal.js-light": { "version": "2.5.1", @@ -42418,13 +47079,6 @@ "integrity": "sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==", "requires": { "character-entities": "^2.0.0" - }, - "dependencies": { - "character-entities": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", - "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==" - } } }, "decode-uri-component": { @@ -42494,7 +47148,8 @@ "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true }, "delegate": { "version": "3.2.0", @@ -42512,11 +47167,6 @@ "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", "dev": true }, - "deprecation": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", - "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==" - }, "dequal": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.2.tgz", @@ -42597,9 +47247,10 @@ "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==" }, "diff": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz", - "integrity": "sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==" + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "devOptional": true }, "diff-sequences": { "version": "25.2.6", @@ -42682,20 +47333,14 @@ } }, "dom-serializer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", - "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dev": true, "requires": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.2", - "entities": "^4.2.0" - }, - "dependencies": { - "entities": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.4.0.tgz", - "integrity": "sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==" - } + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" } }, "dom-walk": { @@ -42721,12 +47366,14 @@ "domelementtype": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==" + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true }, "domexception": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", + "dev": true, "requires": { "webidl-conversions": "^5.0.0" }, @@ -42734,26 +47381,29 @@ "webidl-conversions": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", - "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==" + "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", + "dev": true } } }, "domhandler": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", - "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dev": true, "requires": { - "domelementtype": "^2.3.0" + "domelementtype": "^2.2.0" } }, "domutils": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.0.1.tgz", - "integrity": "sha512-z08c1l761iKhDFtfXO04C7kTdPBLi41zwOZl00WS8b5eiaebNpY00HKbztwBq+e3vyqWNwWF3mP9YLUeqIrF+Q==", + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, "requires": { - "dom-serializer": "^2.0.0", - "domelementtype": "^2.3.0", - "domhandler": "^5.0.1" + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" } }, "dot-case": { @@ -42802,9 +47452,9 @@ "dev": true }, "electron-to-chromium": { - "version": "1.4.257", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.257.tgz", - "integrity": "sha512-C65sIwHqNnPC2ADMfse/jWTtmhZMII+x6ADI9gENzrOiI7BpxmfKFE84WkIEl5wEg+7+SfIkwChDlsd1Erju2A==" + "version": "1.4.275", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.275.tgz", + "integrity": "sha512-aJeQQ+Hl9Jyyzv4chBqYJwmVRY46N5i2BEX5Cuyk/5gFCUZ5F3i7Hnba6snZftWla7Gglwc5pIgcd+E7cW+rPg==" }, "elliptic": { "version": "6.5.4", @@ -42929,21 +47579,21 @@ } }, "es-abstract": { - "version": "1.20.2", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.2.tgz", - "integrity": "sha512-XxXQuVNrySBNlEkTYJoDNFe5+s2yIOpzq80sUHEdPdQr0S5nTLz4ZPPPswNIpKseDDUS5yghX1gfLIHQZ1iNuQ==", + "version": "1.20.4", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.4.tgz", + "integrity": "sha512-0UtvRN79eMe2L+UNEF1BwRe364sj/DXhQ/k5FmivgoSdpM90b8Jc0mDzKMGo7QS0BVbOP/bTwBKNnDc9rNzaPA==", "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.2", + "get-intrinsic": "^1.1.3", "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-callable": "^1.2.7", "is-negative-zero": "^2.0.2", "is-regex": "^1.1.4", "is-shared-array-buffer": "^1.0.2", @@ -42953,6 +47603,7 @@ "object-keys": "^1.1.1", "object.assign": "^4.1.4", "regexp.prototype.flags": "^1.4.3", + "safe-regex-test": "^1.0.0", "string.prototype.trimend": "^1.0.5", "string.prototype.trimstart": "^1.0.5", "unbox-primitive": "^1.0.2" @@ -43039,11 +47690,6 @@ "ext": "^1.1.2" } }, - "esbuild": { - "version": "0.12.29", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.12.29.tgz", - "integrity": "sha512-w/XuoBCSwepyiZtIRsKsetiLDUVGPVw1E/R3VTFSecIy8UR7Cq3SOtwKHJMFoVqqVG36aGkzh4e8BvpO1Fdc7g==" - }, "escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", @@ -43052,60 +47698,25 @@ "escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "dev": true }, "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==" + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" }, "escodegen": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", + "dev": true, "requires": { "esprima": "^4.0.1", "estraverse": "^5.2.0", "esutils": "^2.0.2", "optionator": "^0.8.1", "source-map": "~0.6.1" - }, - "dependencies": { - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", - "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - } - }, - "optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - } - }, - "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==" - }, - "type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", - "requires": { - "prelude-ls": "~1.1.2" - } - } } }, "eslint": { @@ -43200,23 +47811,41 @@ "uri-js": "^4.2.2" } }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "requires": { - "sprintf-js": "~1.0.2" + "color-convert": "^2.0.1" } }, - "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==", + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" + "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==", + "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==" + }, + "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==" + }, "eslint-utils": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", @@ -43254,11 +47883,6 @@ } } }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" - }, "glob-parent": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", @@ -43267,27 +47891,57 @@ "is-glob": "^4.0.1" } }, + "globals": { + "version": "13.17.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", + "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", + "requires": { + "type-fest": "^0.20.2" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, "ignore": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==" }, - "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==", + "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==" + }, + "optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "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" } }, "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", "requires": { "lru-cache": "^6.0.0" } + }, + "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==", + "requires": { + "has-flag": "^4.0.0" + } } } }, @@ -43536,13 +48190,19 @@ "requires": {} }, "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, + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "requires": { "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" + "estraverse": "^4.1.1" + }, + "dependencies": { + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" + } } }, "eslint-utils": { @@ -43623,11 +48283,53 @@ "c8": "^7.6.0" } }, + "estree-util-attach-comments": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/estree-util-attach-comments/-/estree-util-attach-comments-2.1.0.tgz", + "integrity": "sha512-rJz6I4L0GaXYtHpoMScgDIwM0/Vwbu5shbMeER596rB2D1EWF6+Gj0e0UKzJPZrpoOc87+Q2kgVFHfjAymIqmw==", + "requires": { + "@types/estree": "^1.0.0" + }, + "dependencies": { + "@types/estree": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz", + "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==" + } + } + }, + "estree-util-build-jsx": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/estree-util-build-jsx/-/estree-util-build-jsx-2.2.0.tgz", + "integrity": "sha512-apsfRxF9uLrqosApvHVtYZjISPvTJ+lBiIydpC+9wE6cF6ssbhnjyQLqaIjgzGxvC2Hbmec1M7g91PoBayYoQQ==", + "requires": { + "@types/estree-jsx": "^1.0.0", + "estree-util-is-identifier-name": "^2.0.0", + "estree-walker": "^3.0.0" + } + }, "estree-util-is-identifier-name": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-2.0.1.tgz", "integrity": "sha512-rxZj1GkQhY4x1j/CSnybK9cGuMFQYFPLq0iNyopqf14aOVLFtMv7Esika+ObJWPWiOHuMOAHz3YkWoLYYRnzWQ==" }, + "estree-util-to-js": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/estree-util-to-js/-/estree-util-to-js-1.1.0.tgz", + "integrity": "sha512-490lbfCcpLk+ofK6HCgqDfYs4KAfq6QVvDw3+Bm1YoKRgiOjKiKYGAVQE1uwh7zVxBgWhqp4FDtp5SqunpUk1A==", + "requires": { + "@types/estree-jsx": "^1.0.0", + "astring": "^1.8.0", + "source-map": "^0.7.0" + }, + "dependencies": { + "source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==" + } + } + }, "estree-util-visit": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/estree-util-visit/-/estree-util-visit-1.2.0.tgz", @@ -43637,6 +48339,11 @@ "@types/unist": "^2.0.0" } }, + "estree-walker": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.1.tgz", + "integrity": "sha512-woY0RUD87WzMBUiZLx8NsYr23N5BKsOMZHhu2hoNRVh6NXGfoiT1KOL8G3UHlJAnEDGmfa5ubNA/AacfG+Kb0g==" + }, "esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", @@ -43869,6 +48576,55 @@ "requires": { "@types/yargs-parser": "*" } + }, + "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" + } + }, + "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 + }, + "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 + }, + "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" + } } } }, @@ -44257,6 +49013,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, "requires": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" @@ -44369,6 +49126,40 @@ "dev": true, "requires": {} }, + "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" + } + }, + "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 + }, "cosmiconfig": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", @@ -44382,6 +49173,18 @@ "yaml": "^1.7.2" } }, + "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 + }, + "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 + }, "schema-utils": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz", @@ -44394,13 +49197,22 @@ } }, "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", "dev": true, "requires": { "lru-cache": "^6.0.0" } + }, + "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" + } } } }, @@ -44408,6 +49220,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "dev": true, "requires": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", @@ -44445,26 +49258,6 @@ } } }, - "forum": { - "version": "file:apps/temp-community-forum", - "requires": { - "@octokit/graphql": "^4.8.0", - "@types/node": "^17.0.12", - "@types/react": "17.0.37", - "colorette": "^1.4.0", - "common": "*", - "config": "*", - "eslint": "7.32.0", - "mini-svg-data-uri": "^1.4.4", - "next": "12.0.8", - "next-transpile-modules": "9.0.0", - "react": "17.0.2", - "react-dom": "17.0.2", - "string-hash": "^1.1.3", - "tsconfig": "*", - "typescript": "^4.5.3" - } - }, "forwarded": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", @@ -44742,12 +49535,9 @@ } }, "globals": { - "version": "13.17.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", - "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", - "requires": { - "type-fest": "^0.20.2" - } + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" }, "globalthis": { "version": "1.0.3", @@ -44797,18 +49587,11 @@ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" }, - "graphql": { - "version": "16.6.0", - "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.6.0.tgz", - "integrity": "sha512-KPIBPDlW7NxrbT/eh4qPXz5FiFdL5UbaA0XUNz2Rp3Z3hqBSkbj0GVjwFDztsWVauZUWsbKHgMg++sk8UX0bkw==" - }, - "graphql-tag": { - "version": "2.12.6", - "resolved": "https://registry.npmjs.org/graphql-tag/-/graphql-tag-2.12.6.tgz", - "integrity": "sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==", - "requires": { - "tslib": "^2.1.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 }, "gray-matter": { "version": "4.0.3", @@ -44819,25 +49602,6 @@ "kind-of": "^6.0.2", "section-matter": "^1.0.0", "strip-bom-string": "^1.0.0" - }, - "dependencies": { - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "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==", - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - } } }, "gulp-header": { @@ -44885,9 +49649,9 @@ "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==" }, "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" }, "has-glob": { "version": "1.0.0", @@ -45041,6 +49805,24 @@ "web-namespaces": "^1.0.0" }, "dependencies": { + "comma-separated-tokens": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz", + "integrity": "sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw==" + }, + "property-information": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-5.6.0.tgz", + "integrity": "sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA==", + "requires": { + "xtend": "^4.0.0" + } + }, + "space-separated-tokens": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz", + "integrity": "sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==" + }, "unist-util-is": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", @@ -45059,22 +49841,77 @@ "vfile": "^4.0.0", "vfile-location": "^3.2.0", "web-namespaces": "^1.0.0" + }, + "dependencies": { + "is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==" + }, + "property-information": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-5.6.0.tgz", + "integrity": "sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA==", + "requires": { + "xtend": "^4.0.0" + } + }, + "unist-util-stringify-position": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", + "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==", + "requires": { + "@types/unist": "^2.0.2" + } + }, + "vfile": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz", + "integrity": "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==", + "requires": { + "@types/unist": "^2.0.0", + "is-buffer": "^2.0.0", + "unist-util-stringify-position": "^2.0.0", + "vfile-message": "^2.0.0" + } + }, + "vfile-location": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-3.2.0.tgz", + "integrity": "sha512-aLEIZKv/oxuCDZ8lkJGhuhztf/BW4M+iHdCwglA/eWc+vtuRFJj8EtgceYFX4LRjOhCAAiNHsKGssC6onJ+jbA==" + }, + "vfile-message": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz", + "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==", + "requires": { + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^2.0.0" + } + } } }, "hast-util-has-property": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/hast-util-has-property/-/hast-util-has-property-1.0.4.tgz", - "integrity": "sha512-ghHup2voGfgFoHMGnaLHOjbYFACKrRh9KFttdCzMCbFoBMJXiNi2+XTrPP8+q6cDJM/RSqlCfVWrjp1H201rZg==" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hast-util-has-property/-/hast-util-has-property-2.0.0.tgz", + "integrity": "sha512-4Qf++8o5v14us4Muv3HRj+Er6wTNGA/N9uCaZMty4JWvyFKLdhULrv4KE1b65AthsSO9TXSZnjuxS8ecIyhb0w==" }, "hast-util-heading-rank": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hast-util-heading-rank/-/hast-util-heading-rank-1.0.1.tgz", - "integrity": "sha512-P6Hq7RCky9syMevlrN90QWpqWDXCxwIVOfQR2rK6P4GpY4bqjKEuCzoWSRORZ7vz+VgRpLnXimh+mkwvVFjbyQ==" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/hast-util-heading-rank/-/hast-util-heading-rank-2.1.0.tgz", + "integrity": "sha512-w+Rw20Q/iWp2Bcnr6uTrYU6/ftZLbHKhvc8nM26VIWpDqDMlku2iXUVTeOlsdoih/UKQhY7PHQ+vZ0Aqq8bxtQ==", + "requires": { + "@types/hast": "^2.0.0" + } }, "hast-util-is-element": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-1.1.0.tgz", - "integrity": "sha512-oUmNua0bFbdrD/ELDSSEadRVtWZOf3iF6Lbv81naqsIV99RnSCieTbWuWCY8BAeEfKJTKl0gRdokv+dELutHGQ==" + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-2.1.2.tgz", + "integrity": "sha512-thjnlGAnwP8ef/GSO1Q8BfVk2gundnc2peGQqEg2kUt/IqesiGg/5mSwN2fE7nLzy61pg88NG6xV+UrGOrx9EA==", + "requires": { + "@types/hast": "^2.0.0", + "@types/unist": "^2.0.0" + } }, "hast-util-parse-selector": { "version": "2.2.5", @@ -45096,31 +49933,110 @@ "web-namespaces": "^1.0.0", "xtend": "^4.0.0", "zwitch": "^1.0.0" + }, + "dependencies": { + "html-void-elements": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-1.0.5.tgz", + "integrity": "sha512-uE/TxKuyNIcx44cIWnjr/rfIATDH7ZaOMmstu0CwhFG1Dunhlp4OC6/NMbhiwoq5BpW0ubi303qnEk/PZj614w==" + }, + "is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==" + }, + "unist-util-position": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-3.1.0.tgz", + "integrity": "sha512-w+PkwCbYSFw8vpgWD0v7zRCl1FpY3fjDSQ3/N/wNd9Ffa4gPi8+4keqt99N3XW6F99t/mUzp2xAhNmfKWp95QA==" + }, + "unist-util-stringify-position": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", + "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==", + "requires": { + "@types/unist": "^2.0.2" + } + }, + "vfile": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz", + "integrity": "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==", + "requires": { + "@types/unist": "^2.0.0", + "is-buffer": "^2.0.0", + "unist-util-stringify-position": "^2.0.0", + "vfile-message": "^2.0.0" + } + }, + "vfile-message": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz", + "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==", + "requires": { + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^2.0.0" + } + }, + "zwitch": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz", + "integrity": "sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==" + } } }, "hast-util-sanitize": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/hast-util-sanitize/-/hast-util-sanitize-2.0.3.tgz", - "integrity": "sha512-RILqWHmzU0Anmfw1KEP41LbCsJuJUVM0lQWAbTDk9+0bWqzRFXDaMdqIoRocLlOfR5NfcWyhFfZw/mGsuftwYA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/hast-util-sanitize/-/hast-util-sanitize-4.0.0.tgz", + "integrity": "sha512-pw56+69jq+QSr/coADNvWTmBPDy+XsmwaF5KnUys4/wM1jt/fZdl7GPxhXXXYdXnz3Gj3qMkbUCH2uKjvX0MgQ==", "requires": { - "xtend": "^4.0.0" + "@types/hast": "^2.0.0" + } + }, + "hast-util-to-estree": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/hast-util-to-estree/-/hast-util-to-estree-2.1.0.tgz", + "integrity": "sha512-Vwch1etMRmm89xGgz+voWXvVHba2iiMdGMKmaMfYt35rbVtFDq8JNwwAIvi8zHMkO6Gvqo9oTMwJTmzVRfXh4g==", + "requires": { + "@types/estree": "^1.0.0", + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^2.0.0", + "@types/unist": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "estree-util-attach-comments": "^2.0.0", + "estree-util-is-identifier-name": "^2.0.0", + "hast-util-whitespace": "^2.0.0", + "mdast-util-mdx-expression": "^1.0.0", + "mdast-util-mdxjs-esm": "^1.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0", + "style-to-object": "^0.3.0", + "unist-util-position": "^4.0.0", + "zwitch": "^2.0.0" + }, + "dependencies": { + "@types/estree": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz", + "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==" + } } }, "hast-util-to-html": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-6.1.0.tgz", - "integrity": "sha512-IlC+LG2HGv0Y8js3wqdhg9O2sO4iVpRDbHOPwXd7qgeagpGsnY49i8yyazwqS35RA35WCzrBQE/n0M6GG/ewxA==", + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-8.0.3.tgz", + "integrity": "sha512-/D/E5ymdPYhHpPkuTHOUkSatxr4w1ZKrZsG0Zv/3C2SRVT0JFJG53VS45AMrBtYk0wp5A7ksEhiC8QaOZM95+A==", "requires": { - "ccount": "^1.0.0", - "comma-separated-tokens": "^1.0.1", - "hast-util-is-element": "^1.0.0", - "hast-util-whitespace": "^1.0.0", - "html-void-elements": "^1.0.0", - "property-information": "^5.2.0", - "space-separated-tokens": "^1.0.0", - "stringify-entities": "^2.0.0", - "unist-util-is": "^3.0.0", - "xtend": "^4.0.1" + "@types/hast": "^2.0.0", + "ccount": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-is-element": "^2.0.0", + "hast-util-whitespace": "^2.0.0", + "html-void-elements": "^2.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0", + "stringify-entities": "^4.0.2", + "unist-util-is": "^5.0.0" } }, "hast-util-to-parse5": { @@ -45133,17 +50049,35 @@ "web-namespaces": "^1.0.0", "xtend": "^4.0.0", "zwitch": "^1.0.0" + }, + "dependencies": { + "property-information": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-5.6.0.tgz", + "integrity": "sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA==", + "requires": { + "xtend": "^4.0.0" + } + }, + "zwitch": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz", + "integrity": "sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==" + } } }, "hast-util-to-string": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/hast-util-to-string/-/hast-util-to-string-1.0.4.tgz", - "integrity": "sha512-eK0MxRX47AV2eZ+Lyr18DCpQgodvaS3fAQO2+b9Two9F5HEoRPhiUMNzoXArMJfZi2yieFzUBMRl3HNJ3Jus3w==" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hast-util-to-string/-/hast-util-to-string-2.0.0.tgz", + "integrity": "sha512-02AQ3vLhuH3FisaMM+i/9sm4OXGSq1UhOOCpTLLQtHdL3tZt7qil69r8M8iDkZYyC0HCFylcYoP+8IO7ddta1A==", + "requires": { + "@types/hast": "^2.0.0" + } }, "hast-util-whitespace": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-1.0.4.tgz", - "integrity": "sha512-I5GTdSfhYfAPNztx2xJRQpG8cuDSNt599/7YUn7Gx/WxNMsG+a835k97TDkFgk123cwjfwINaZknkKkphx/f2A==" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-2.0.0.tgz", + "integrity": "sha512-Pkw+xBHuV6xFeJprJe2BBEoDV+AvQySaz3pPDRUs5PNZEMQjpXJJueqrpcHIXxnWTcAGi/UOCgVShlkY6kLoqg==" }, "hastscript": { "version": "6.0.0", @@ -45155,6 +50089,26 @@ "hast-util-parse-selector": "^2.0.0", "property-information": "^5.0.0", "space-separated-tokens": "^1.0.0" + }, + "dependencies": { + "comma-separated-tokens": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz", + "integrity": "sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw==" + }, + "property-information": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-5.6.0.tgz", + "integrity": "sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA==", + "requires": { + "xtend": "^4.0.0" + } + }, + "space-separated-tokens": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz", + "integrity": "sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==" + } } }, "he": { @@ -45197,6 +50151,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", + "dev": true, "requires": { "whatwg-encoding": "^1.0.5" } @@ -45242,20 +50197,15 @@ "integrity": "sha512-vy7ClnArOZwCnqZgvv+ddgHgJiAFXe3Ge9ML5/mBctVJoUoYPCdxVucOywjDARn6CVoh3dRSFdPHy2sX80L0Wg==", "dev": true }, - "html-to-react": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/html-to-react/-/html-to-react-1.5.0.tgz", - "integrity": "sha512-tjihXBgaJZRRYzmkrJZ/Qf9jFayilFYcb+sJxXXE2BVLk2XsNrGeuNCVvhXmvREULZb9dz6NFTBC96DTR/lQCQ==", - "requires": { - "domhandler": "^5.0", - "htmlparser2": "^8.0", - "lodash.camelcase": "^4.3.0" - } + "html-to-image": { + "version": "1.10.8", + "resolved": "https://registry.npmjs.org/html-to-image/-/html-to-image-1.10.8.tgz", + "integrity": "sha512-t+JyFJwKDCp4ZwBp4iC/wqw0meQDDc77Qs8OFl5P7RGlIP3LQMvwpD7VXxqQfC7/TfC+GKYlFP6WDYfXTmXHfw==" }, "html-void-elements": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-1.0.5.tgz", - "integrity": "sha512-uE/TxKuyNIcx44cIWnjr/rfIATDH7ZaOMmstu0CwhFG1Dunhlp4OC6/NMbhiwoq5BpW0ubi303qnEk/PZj614w==" + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-2.0.1.tgz", + "integrity": "sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A==" }, "html-webpack-plugin": { "version": "4.5.2", @@ -45297,21 +50247,15 @@ } }, "htmlparser2": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.1.tgz", - "integrity": "sha512-4lVbmc1diZC7GUJQtRQ5yBAeUCL1exyMwmForWkRLnwyzWBFxN633SALPMGYaWZvKe9j1pRZJpauvmxENSp/EA==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "dev": true, "requires": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.2", - "domutils": "^3.0.1", - "entities": "^4.3.0" - }, - "dependencies": { - "entities": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.4.0.tgz", - "integrity": "sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==" - } + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" } }, "http-errors": { @@ -45331,6 +50275,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "dev": true, "requires": { "@tootallnate/once": "1", "agent-base": "6", @@ -45362,6 +50307,7 @@ "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, "requires": { "safer-buffer": ">= 2.1.2 < 3" } @@ -45658,9 +50604,9 @@ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" }, "is-callable": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.6.tgz", - "integrity": "sha512-krO72EO2NptOGAX2KYyqbP9vYMlNAXdB53rq6f8LXY6RY7JdSR/3BD6wLUlPHSAesmY9vstNrjvqGaCiRK/91Q==" + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==" }, "is-ci": { "version": "2.0.0", @@ -45834,12 +50780,22 @@ "is-plain-object": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", - "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==" + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "dev": true }, "is-potential-custom-element-name": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", - "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==" + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "dev": true + }, + "is-reference": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.0.tgz", + "integrity": "sha512-Eo1W3wUoHWoCoVM4GVl/a+K0IgiqE5aIo4kJABFyMum1ZORlPkC+UC357sSQUL5w5QCE5kCC9upl75b7+7CY/Q==", + "requires": { + "@types/estree": "*" + } }, "is-regex": { "version": "1.1.4", @@ -45975,9 +50931,9 @@ "dev": true }, "istanbul-lib-instrument": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.0.tgz", - "integrity": "sha512-6Lthe1hqXHBNsqvgDzGO6l03XNeu3CrG4RqQ1KM9+l5+jNGpEJfIELx1NS3SEHmJQA8np/u+E4EPRKRiu6m19A==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", "dev": true, "requires": { "@babel/core": "^7.12.3", @@ -45998,6 +50954,12 @@ "supports-color": "^7.1.0" }, "dependencies": { + "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 + }, "make-dir": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", @@ -46006,6 +50968,15 @@ "requires": { "semver": "^6.0.0" } + }, + "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" + } } } }, @@ -46057,6 +51028,28 @@ "jest-cli": "^27.5.1" } }, + "jest-allure2-adapter": { + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/jest-allure2-adapter/-/jest-allure2-adapter-0.3.11.tgz", + "integrity": "sha512-Dz50gtzeZ890Iy1qJ+HAPBx059ZmRiBCqqZeQi38IJgLaXRcN5n2fQ5Al02A2uRoyLHG38Jq/t4m6Xr0z7tkBA==", + "dev": true, + "requires": { + "@types/allure-js-commons": "^0.0.1", + "@types/node": "^10.1.2", + "@types/strip-ansi": "^5.2.0", + "allure-js-commons": "^2.0.0-beta.9", + "strip-ansi": "^6.0.0", + "uuid-by-string": "^3.0.2" + }, + "dependencies": { + "@types/node": { + "version": "10.17.60", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz", + "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==", + "dev": true + } + } + }, "jest-canvas-mock": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/jest-canvas-mock/-/jest-canvas-mock-2.4.0.tgz", @@ -46099,6 +51092,55 @@ "requires": { "@types/yargs-parser": "*" } + }, + "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" + } + }, + "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 + }, + "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 + }, + "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" + } } } }, @@ -46151,6 +51193,46 @@ "@types/yargs-parser": "*" } }, + "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" + } + }, + "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 + }, + "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 + }, "jest-util": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", @@ -46164,6 +51246,15 @@ "graceful-fs": "^4.2.9", "picomatch": "^2.2.3" } + }, + "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" + } } } }, @@ -46209,6 +51300,46 @@ "@types/yargs-parser": "*" } }, + "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" + } + }, + "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 + }, + "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 + }, "jest-util": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", @@ -46222,6 +51353,15 @@ "graceful-fs": "^4.2.9", "picomatch": "^2.2.3" } + }, + "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" + } } } }, @@ -46279,6 +51419,46 @@ "@types/yargs-parser": "*" } }, + "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" + } + }, + "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 + }, + "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 + }, "jest-regex-util": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", @@ -46298,6 +51478,15 @@ "graceful-fs": "^4.2.9", "picomatch": "^2.2.3" } + }, + "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" + } } } }, @@ -46335,6 +51524,15 @@ "@types/istanbul-lib-report": "*" } }, + "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" + } + }, "chalk": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", @@ -46345,6 +51543,27 @@ "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 + }, + "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 + }, "jest-get-type": { "version": "25.2.6", "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-25.2.6.tgz", @@ -46362,6 +51581,15 @@ "ansi-styles": "^4.0.0", "react-is": "^16.12.0" } + }, + "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" + } } } }, @@ -46409,6 +51637,46 @@ "@types/yargs-parser": "*" } }, + "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" + } + }, + "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 + }, + "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 + }, "jest-util": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", @@ -46422,6 +51690,15 @@ "graceful-fs": "^4.2.9", "picomatch": "^2.2.3" } + }, + "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" + } } } }, @@ -46462,6 +51739,46 @@ "@types/yargs-parser": "*" } }, + "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" + } + }, + "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 + }, + "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 + }, "jest-util": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", @@ -46475,6 +51792,15 @@ "graceful-fs": "^4.2.9", "picomatch": "^2.2.3" } + }, + "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" + } } } }, @@ -46514,6 +51840,46 @@ "@types/yargs-parser": "*" } }, + "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" + } + }, + "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 + }, + "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 + }, "jest-util": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", @@ -46527,6 +51893,15 @@ "graceful-fs": "^4.2.9", "picomatch": "^2.2.3" } + }, + "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" + } } } }, @@ -46558,6 +51933,12 @@ "walker": "^1.0.7" }, "dependencies": { + "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 + }, "jest-worker": { "version": "26.6.2", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", @@ -46568,6 +51949,15 @@ "merge-stream": "^2.0.0", "supports-color": "^7.0.0" } + }, + "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" + } } } }, @@ -46618,6 +52008,46 @@ "@types/yargs-parser": "*" } }, + "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" + } + }, + "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 + }, + "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 + }, "jest-util": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", @@ -46631,6 +52061,15 @@ "graceful-fs": "^4.2.9", "picomatch": "^2.2.3" } + }, + "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" + } } } }, @@ -46656,12 +52095,52 @@ "pretty-format": "^27.5.1" }, "dependencies": { + "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" + } + }, + "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 + }, "diff-sequences": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", "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 + }, "jest-diff": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", @@ -46673,6 +52152,15 @@ "jest-get-type": "^27.5.1", "pretty-format": "^27.5.1" } + }, + "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" + } } } }, @@ -46714,6 +52202,55 @@ "requires": { "@types/yargs-parser": "*" } + }, + "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" + } + }, + "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 + }, + "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 + }, + "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" + } } } }, @@ -46748,6 +52285,55 @@ "requires": { "@types/yargs-parser": "*" } + }, + "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" + } + }, + "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 + }, + "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 + }, + "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" + } } } }, @@ -46804,6 +52390,46 @@ "@types/yargs-parser": "*" } }, + "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" + } + }, + "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 + }, + "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 + }, "jest-haste-map": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", @@ -46854,6 +52480,15 @@ "graceful-fs": "^4.2.9", "picomatch": "^2.2.3" } + }, + "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" + } } } }, @@ -46890,11 +52525,60 @@ "@types/yargs-parser": "*" } }, + "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" + } + }, + "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 + }, + "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 + }, "jest-regex-util": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", "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" + } } } }, @@ -46972,6 +52656,46 @@ "@types/yargs-parser": "*" } }, + "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" + } + }, + "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 + }, + "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 + }, "jest-haste-map": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", @@ -47022,6 +52746,15 @@ "graceful-fs": "^4.2.9", "picomatch": "^2.2.3" } + }, + "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" + } } } }, @@ -47100,6 +52833,46 @@ "@types/yargs-parser": "*" } }, + "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" + } + }, + "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 + }, + "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 + }, "jest-haste-map": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", @@ -47150,6 +52923,15 @@ "graceful-fs": "^4.2.9", "picomatch": "^2.2.3" } + }, + "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" + } } } }, @@ -47238,12 +53020,52 @@ "@types/yargs-parser": "*" } }, + "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" + } + }, + "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 + }, "diff-sequences": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", "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 + }, "jest-diff": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", @@ -47308,13 +53130,22 @@ } }, "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", "dev": true, "requires": { "lru-cache": "^6.0.0" } + }, + "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" + } } } }, @@ -47330,6 +53161,57 @@ "graceful-fs": "^4.2.4", "is-ci": "^2.0.0", "micromatch": "^4.0.2" + }, + "dependencies": { + "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" + } + }, + "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 + }, + "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 + }, + "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" + } + } } }, "jest-validate": { @@ -47368,11 +53250,60 @@ "@types/yargs-parser": "*" } }, + "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" + } + }, "camelcase": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "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 + }, + "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 + }, + "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" + } } } }, @@ -47413,6 +53344,46 @@ "@types/yargs-parser": "*" } }, + "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" + } + }, + "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 + }, + "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 + }, "jest-util": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", @@ -47426,6 +53397,15 @@ "graceful-fs": "^4.2.9", "picomatch": "^2.2.3" } + }, + "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" + } } } }, @@ -47440,6 +53420,12 @@ "supports-color": "^8.0.0" }, "dependencies": { + "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 + }, "supports-color": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", @@ -47456,6 +53442,24 @@ "resolved": "https://registry.npmjs.org/join-component/-/join-component-1.1.0.tgz", "integrity": "sha512-bF7vcQxbODoGK1imE2P9GS9aw4zD0Sd+Hni68IMZLj7zRnquH7dXUmMw9hDI5S/Jzt7q+IyTXN0rSg2GI0IKhQ==" }, + "js-md5": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/js-md5/-/js-md5-0.7.3.tgz", + "integrity": "sha512-ZC41vPSTLKGwIRjqDh8DfXoCrdQIyBgspJVPXHBGu4nZlAEvG3nf+jO9avM9RmLiGakg7vz974ms99nEV0tmTQ==", + "dev": true + }, + "js-sdsl": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.1.5.tgz", + "integrity": "sha512-08bOAKweV2NUC1wqTtf3qZlnpOX/R2DU9ikpjOHs0H+ibQv3zpncVQg6um4uYtRtrwIX8M4Nh3ytK4HGlYAq7Q==", + "dev": true + }, + "js-sha1": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/js-sha1/-/js-sha1-0.6.0.tgz", + "integrity": "sha512-01gwBFreYydzmU9BmZxpVk6svJJHrVxEN3IOiGl6VO93bVKYETJ0sIth6DASI6mIFdt7NmfX9UiByRzsYHGU9w==", + "dev": true + }, "js-string-escape": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/js-string-escape/-/js-string-escape-1.0.1.tgz", @@ -47468,18 +53472,19 @@ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, "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, + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "requires": { - "argparse": "^2.0.1" + "argparse": "^1.0.7", + "esprima": "^4.0.0" } }, "jsdom": { "version": "16.7.0", "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", + "dev": true, "requires": { "abab": "^2.0.5", "acorn": "^8.2.4", @@ -47513,12 +53518,14 @@ "acorn": { "version": "8.8.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", - "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==" + "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", + "dev": true }, "ws": { "version": "7.5.9", "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "dev": true, "requires": {} } } @@ -47546,9 +53553,9 @@ "dev": true }, "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==" + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" }, "json-stable-stringify-without-jsonify": { "version": "1.0.1", @@ -47752,6 +53759,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, "requires": { "p-locate": "^5.0.0" } @@ -47771,11 +53779,6 @@ "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", "integrity": "sha512-xYHt68QRoYGjeeM/XOE1uJtvXQAgvszfBhjV4yvsQH0u2i9I6cI6c6/eG4Hh3UAOVn0y/xAXwmTzEay49Q//HA==" }, - "lodash.camelcase": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", - "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==" - }, "lodash.castarray": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/lodash.castarray/-/lodash.castarray-4.4.0.tgz", @@ -47784,7 +53787,8 @@ "lodash.debounce": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==" + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "dev": true }, "lodash.isequal": { "version": "4.5.0", @@ -47840,9 +53844,9 @@ "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==" }, "longest-streak": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.4.tgz", - "integrity": "sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==" + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.0.1.tgz", + "integrity": "sha512-cHlYSUpL2s7Fb3394mYxwTYj8niTaNHUCLr0qdiCXQfSjfuA7CKofpX2uSwEfFDQ0EB7JcnMnm+GjbqqoinYYg==" }, "loose-envify": { "version": "1.4.0", @@ -47935,7 +53939,7 @@ "version": "1.3.6", "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true + "devOptional": true }, "makeerror": { "version": "1.0.12", @@ -47979,6 +53983,11 @@ "resolved": "https://registry.npmjs.org/markdown-escapes/-/markdown-escapes-1.0.4.tgz", "integrity": "sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg==" }, + "markdown-extensions": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/markdown-extensions/-/markdown-extensions-1.1.1.tgz", + "integrity": "sha512-WWC0ZuMzCyDHYCasEGs4IPvLyTGftYwh6wIEOULOF0HXcqZlhwRzrK0w2VUlxWA98xnvb/jszw4ZSkJ6ADpM6Q==" + }, "markdown-link": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/markdown-link/-/markdown-link-0.1.1.tgz", @@ -48011,14 +54020,6 @@ "strip-color": "^0.1.0" }, "dependencies": { - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "requires": { - "sprintf-js": "~1.0.2" - } - }, "gray-matter": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-2.1.1.tgz", @@ -48030,22 +54031,13 @@ "js-yaml": "^3.8.1", "toml": "^2.3.2" } - }, - "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==", - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } } } }, "marked": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/marked/-/marked-4.1.0.tgz", - "integrity": "sha512-+Z6KDjSPa6/723PQYyc1axYZpYYpDnECDaU6hkaf5gqBieBkMKYReL5hteF2QizhlMbgbo8umXl/clZ67+GlsA==" + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/marked/-/marked-4.1.1.tgz", + "integrity": "sha512-0cNMnTcUJPxbA6uWmCmjWz4NJRe/0Xfk2NhXCUHjew9qJzFN20krFnsUe7QynwqOwa5m1fZ4UDg0ycKFVC0ccw==" }, "math-random": { "version": "1.0.4", @@ -48073,14 +54065,6 @@ "safe-buffer": "^5.1.2" } }, - "mdast-add-list-metadata": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mdast-add-list-metadata/-/mdast-add-list-metadata-1.0.1.tgz", - "integrity": "sha512-fB/VP4MJ0LaRsog7hGPxgOrSL3gE/2uEdZyDuSEnKCv/8IkYHiDkIQSbChiJoHyxZZXZ9bzckyRk+vNxFzh8rA==", - "requires": { - "unist-util-visit-parents": "1.1.2" - } - }, "mdast-squeeze-paragraphs": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/mdast-squeeze-paragraphs/-/mdast-squeeze-paragraphs-4.0.0.tgz", @@ -48090,39 +54074,11 @@ } }, "mdast-util-definitions": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-1.2.5.tgz", - "integrity": "sha512-CJXEdoLfiISCDc2JB6QLb79pYfI6+GcIH+W2ox9nMc7od0Pz+bovcHsiq29xAQY6ayqe/9CsK2VzkSJdg1pFYA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-4.0.0.tgz", + "integrity": "sha512-k8AJ6aNnUkB7IE+5azR9h81O5EQ/cTDXtWdMq9Kk5KcEW/8ritU5CeLg/9HhOC++nALHBlaogJ5jz0Ybk3kPMQ==", "requires": { - "unist-util-visit": "^1.0.0" - }, - "dependencies": { - "unist-util-visit": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-1.4.1.tgz", - "integrity": "sha512-AvGNk7Bb//EmJZyhtRUnNMEpId/AZ5Ph/KUpTI09WHQuDZHKovQ1oEv3mfmKpWKtoMzyMC4GLBm1Zy5k12fjIw==", - "requires": { - "unist-util-visit-parents": "^2.0.0" - } - }, - "unist-util-visit-parents": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-2.1.2.tgz", - "integrity": "sha512-DyN5vD4NE3aSeB+PXYNKxzGsfocxp6asDc2XXE3b0ekO2BaRUpBicbbUygfSvYfUz1IkmjFR1YF7dPklraMZ2g==", - "requires": { - "unist-util-is": "^3.0.0" - } - } - } - }, - "mdast-util-find-and-replace": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-1.1.1.tgz", - "integrity": "sha512-9cKl33Y21lyckGzpSmEQnIDjEfeeWelN5s1kUW1LwdB0Fkuq2u+4GdqcGEygYxJE8GVqCl0741bYXHgamfWAZA==", - "requires": { - "escape-string-regexp": "^4.0.0", - "unist-util-is": "^4.0.0", - "unist-util-visit-parents": "^3.0.0" + "unist-util-visit": "^2.0.0" }, "dependencies": { "unist-util-is": { @@ -48130,6 +54086,16 @@ "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==" }, + "unist-util-visit": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz", + "integrity": "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==", + "requires": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0", + "unist-util-visit-parents": "^3.0.0" + } + }, "unist-util-visit-parents": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz", @@ -48141,6 +54107,23 @@ } } }, + "mdast-util-find-and-replace": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-2.2.1.tgz", + "integrity": "sha512-SobxkQXFAdd4b5WmEakmkVoh18icjQRxGy5OWTCzgsLRm1Fu/KCtwD1HIQSsmq5ZRjVH0Ehwg6/Fn3xIUk+nKw==", + "requires": { + "escape-string-regexp": "^5.0.0", + "unist-util-is": "^5.0.0", + "unist-util-visit-parents": "^5.0.0" + }, + "dependencies": { + "escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==" + } + } + }, "mdast-util-from-markdown": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-1.2.0.tgz", @@ -48158,84 +54141,77 @@ "micromark-util-types": "^1.0.0", "unist-util-stringify-position": "^3.0.0", "uvu": "^0.5.0" - }, - "dependencies": { - "mdast-util-to-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-3.1.0.tgz", - "integrity": "sha512-n4Vypz/DZgwo0iMHLQL49dJzlp7YtAJP+N07MZHpjPf/5XJuHUWstviF4Mn2jEiR/GNmtnRRqnwsXExk3igfFA==" - }, - "micromark": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/micromark/-/micromark-3.0.10.tgz", - "integrity": "sha512-ryTDy6UUunOXy2HPjelppgJ2sNfcPz1pLlMdA6Rz9jPzhLikWXv/irpWV/I2jd68Uhmny7hHxAlAhk4+vWggpg==", - "requires": { - "@types/debug": "^4.0.0", - "debug": "^4.0.0", - "decode-named-character-reference": "^1.0.0", - "micromark-core-commonmark": "^1.0.1", - "micromark-factory-space": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-chunked": "^1.0.0", - "micromark-util-combine-extensions": "^1.0.0", - "micromark-util-decode-numeric-character-reference": "^1.0.0", - "micromark-util-encode": "^1.0.0", - "micromark-util-normalize-identifier": "^1.0.0", - "micromark-util-resolve-all": "^1.0.0", - "micromark-util-sanitize-uri": "^1.0.0", - "micromark-util-subtokenize": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.1", - "uvu": "^0.5.0" - } - } } }, "mdast-util-gfm": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-0.1.2.tgz", - "integrity": "sha512-NNkhDx/qYcuOWB7xHUGWZYVXvjPFFd6afg6/e2g+SV4r9q5XUcCbV4Wfa3DLYIiD+xAEZc6K4MGaE/m0KDcPwQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-2.0.1.tgz", + "integrity": "sha512-42yHBbfWIFisaAfV1eixlabbsa6q7vHeSPY+cg+BBjX51M8xhgMacqH9g6TftB/9+YkcI0ooV4ncfrJslzm/RQ==", "requires": { - "mdast-util-gfm-autolink-literal": "^0.1.0", - "mdast-util-gfm-strikethrough": "^0.2.0", - "mdast-util-gfm-table": "^0.1.0", - "mdast-util-gfm-task-list-item": "^0.1.0", - "mdast-util-to-markdown": "^0.6.1" + "mdast-util-from-markdown": "^1.0.0", + "mdast-util-gfm-autolink-literal": "^1.0.0", + "mdast-util-gfm-footnote": "^1.0.0", + "mdast-util-gfm-strikethrough": "^1.0.0", + "mdast-util-gfm-table": "^1.0.0", + "mdast-util-gfm-task-list-item": "^1.0.0", + "mdast-util-to-markdown": "^1.0.0" } }, "mdast-util-gfm-autolink-literal": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-0.1.3.tgz", - "integrity": "sha512-GjmLjWrXg1wqMIO9+ZsRik/s7PLwTaeCHVB7vRxUwLntZc8mzmTsLVr6HW1yLokcnhfURsn5zmSVdi3/xWWu1A==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-1.0.2.tgz", + "integrity": "sha512-FzopkOd4xTTBeGXhXSBU0OCDDh5lUj2rd+HQqG92Ld+jL4lpUfgX2AT2OHAVP9aEeDKp7G92fuooSZcYJA3cRg==", "requires": { - "ccount": "^1.0.0", - "mdast-util-find-and-replace": "^1.1.0", - "micromark": "^2.11.3" + "@types/mdast": "^3.0.0", + "ccount": "^2.0.0", + "mdast-util-find-and-replace": "^2.0.0", + "micromark-util-character": "^1.0.0" + } + }, + "mdast-util-gfm-footnote": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-1.0.1.tgz", + "integrity": "sha512-p+PrYlkw9DeCRkTVw1duWqPRHX6Ywh2BNKJQcZbCwAuP/59B0Lk9kakuAd7KbQprVO4GzdW8eS5++A9PUSqIyw==", + "requires": { + "@types/mdast": "^3.0.0", + "mdast-util-to-markdown": "^1.3.0", + "micromark-util-normalize-identifier": "^1.0.0" } }, "mdast-util-gfm-strikethrough": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-0.2.3.tgz", - "integrity": "sha512-5OQLXpt6qdbttcDG/UxYY7Yjj3e8P7X16LzvpX8pIQPYJ/C2Z1qFGMmcw+1PZMUM3Z8wt8NRfYTvCni93mgsgA==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-1.0.1.tgz", + "integrity": "sha512-zKJbEPe+JP6EUv0mZ0tQUyLQOC+FADt0bARldONot/nefuISkaZFlmVK4tU6JgfyZGrky02m/I6PmehgAgZgqg==", "requires": { - "mdast-util-to-markdown": "^0.6.0" + "@types/mdast": "^3.0.0", + "mdast-util-to-markdown": "^1.3.0" } }, "mdast-util-gfm-table": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-0.1.6.tgz", - "integrity": "sha512-j4yDxQ66AJSBwGkbpFEp9uG/LS1tZV3P33fN1gkyRB2LoRL+RR3f76m0HPHaby6F4Z5xr9Fv1URmATlRRUIpRQ==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-1.0.6.tgz", + "integrity": "sha512-uHR+fqFq3IvB3Rd4+kzXW8dmpxUhvgCQZep6KdjsLK4O6meK5dYZEayLtIxNus1XO3gfjfcIFe8a7L0HZRGgag==", "requires": { - "markdown-table": "^2.0.0", - "mdast-util-to-markdown": "~0.6.0" + "@types/mdast": "^3.0.0", + "markdown-table": "^3.0.0", + "mdast-util-from-markdown": "^1.0.0", + "mdast-util-to-markdown": "^1.3.0" + }, + "dependencies": { + "markdown-table": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.2.tgz", + "integrity": "sha512-y8j3a5/DkJCmS5x4dMCQL+OR0+2EAq3DOtio1COSHsmW2BGXnNCK3v12hJt1LrUz5iZH5g0LmuYOjDdI+czghA==" + } } }, "mdast-util-gfm-task-list-item": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-0.1.6.tgz", - "integrity": "sha512-/d51FFIfPsSmCIRNp7E6pozM9z1GYPIkSy1urQ8s/o4TC22BZ7DqfHFWiqBD23bc7J3vV1Fc9O4QIHBlfuit8A==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-1.0.1.tgz", + "integrity": "sha512-KZ4KLmPdABXOsfnM6JHUIjxEvcx2ulk656Z/4Balw071/5qgnhz+H1uGtf2zIGnrnvDC8xR4Fj9uKbjAFGNIeA==", "requires": { - "mdast-util-to-markdown": "~0.6.0" + "@types/mdast": "^3.0.0", + "mdast-util-to-markdown": "^1.3.0" } }, "mdast-util-mdx": { @@ -48249,70 +54225,15 @@ } }, "mdast-util-mdx-expression": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-1.3.0.tgz", - "integrity": "sha512-9kTO13HaL/ChfzVCIEfDRdp1m5hsvsm6+R8yr67mH+KS2ikzZ0ISGLPTbTswOFpLLlgVHO9id3cul4ajutCvCA==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-1.3.1.tgz", + "integrity": "sha512-TTb6cKyTA1RD+1su1iStZ5PAv3rFfOUKcoU5EstUpv/IZo63uDX03R8+jXjMEhcobXnNOiG6/ccekvVl4eV1zQ==", "requires": { "@types/estree-jsx": "^1.0.0", "@types/hast": "^2.0.0", "@types/mdast": "^3.0.0", "mdast-util-from-markdown": "^1.0.0", "mdast-util-to-markdown": "^1.0.0" - }, - "dependencies": { - "longest-streak": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.0.1.tgz", - "integrity": "sha512-cHlYSUpL2s7Fb3394mYxwTYj8niTaNHUCLr0qdiCXQfSjfuA7CKofpX2uSwEfFDQ0EB7JcnMnm+GjbqqoinYYg==" - }, - "mdast-util-to-markdown": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-1.3.0.tgz", - "integrity": "sha512-6tUSs4r+KK4JGTTiQ7FfHmVOaDrLQJPmpjD6wPMlHGUVXoG9Vjc3jIeP+uyBWRf8clwB2blM+W7+KrlMYQnftA==", - "requires": { - "@types/mdast": "^3.0.0", - "@types/unist": "^2.0.0", - "longest-streak": "^3.0.0", - "mdast-util-to-string": "^3.0.0", - "micromark-util-decode-string": "^1.0.0", - "unist-util-visit": "^4.0.0", - "zwitch": "^2.0.0" - } - }, - "mdast-util-to-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-3.1.0.tgz", - "integrity": "sha512-n4Vypz/DZgwo0iMHLQL49dJzlp7YtAJP+N07MZHpjPf/5XJuHUWstviF4Mn2jEiR/GNmtnRRqnwsXExk3igfFA==" - }, - "unist-util-is": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.1.1.tgz", - "integrity": "sha512-F5CZ68eYzuSvJjGhCLPL3cYx45IxkqXSetCcRgUXtbcm50X2L9oOWQlfUfDdAf+6Pd27YDblBfdtmsThXmwpbQ==" - }, - "unist-util-visit": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.1.tgz", - "integrity": "sha512-n9KN3WV9k4h1DxYR1LoajgN93wpEi/7ZplVe02IoB4gH5ctI1AaF2670BLHQYbwj+pY83gFtyeySFiyMHJklrg==", - "requires": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0", - "unist-util-visit-parents": "^5.1.1" - } - }, - "unist-util-visit-parents": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.1.tgz", - "integrity": "sha512-gks4baapT/kNRaWxuGkl5BIhoanZo7sC/cUT/JToSRNL1dYoXRFl75d++NkjYk4TAu2uv2Px+l8guMajogeuiw==", - "requires": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0" - } - }, - "zwitch": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.2.tgz", - "integrity": "sha512-JZxotl7SxAJH0j7dN4pxsTV6ZLXoLdGME+PsjkL/DaBrVryK9kTGq06GfKrwcSOqypP+fdXGoCHE36b99fWVoA==" - } } }, "mdast-util-mdx-jsx": { @@ -48332,21 +54253,6 @@ "vfile-message": "^3.0.0" }, "dependencies": { - "ccount": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", - "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==" - }, - "character-entities": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", - "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==" - }, - "character-entities-html4": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", - "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==" - }, "character-entities-legacy": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", @@ -48381,30 +54287,6 @@ "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz", "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==" }, - "longest-streak": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.0.1.tgz", - "integrity": "sha512-cHlYSUpL2s7Fb3394mYxwTYj8niTaNHUCLr0qdiCXQfSjfuA7CKofpX2uSwEfFDQ0EB7JcnMnm+GjbqqoinYYg==" - }, - "mdast-util-to-markdown": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-1.3.0.tgz", - "integrity": "sha512-6tUSs4r+KK4JGTTiQ7FfHmVOaDrLQJPmpjD6wPMlHGUVXoG9Vjc3jIeP+uyBWRf8clwB2blM+W7+KrlMYQnftA==", - "requires": { - "@types/mdast": "^3.0.0", - "@types/unist": "^2.0.0", - "longest-streak": "^3.0.0", - "mdast-util-to-string": "^3.0.0", - "micromark-util-decode-string": "^1.0.0", - "unist-util-visit": "^4.0.0", - "zwitch": "^2.0.0" - } - }, - "mdast-util-to-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-3.1.0.tgz", - "integrity": "sha512-n4Vypz/DZgwo0iMHLQL49dJzlp7YtAJP+N07MZHpjPf/5XJuHUWstviF4Mn2jEiR/GNmtnRRqnwsXExk3igfFA==" - }, "parse-entities": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.0.tgz", @@ -48419,44 +54301,6 @@ "is-decimal": "^2.0.0", "is-hexadecimal": "^2.0.0" } - }, - "stringify-entities": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.3.tgz", - "integrity": "sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g==", - "requires": { - "character-entities-html4": "^2.0.0", - "character-entities-legacy": "^3.0.0" - } - }, - "unist-util-is": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.1.1.tgz", - "integrity": "sha512-F5CZ68eYzuSvJjGhCLPL3cYx45IxkqXSetCcRgUXtbcm50X2L9oOWQlfUfDdAf+6Pd27YDblBfdtmsThXmwpbQ==" - }, - "unist-util-visit": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.1.tgz", - "integrity": "sha512-n9KN3WV9k4h1DxYR1LoajgN93wpEi/7ZplVe02IoB4gH5ctI1AaF2670BLHQYbwj+pY83gFtyeySFiyMHJklrg==", - "requires": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0", - "unist-util-visit-parents": "^5.1.1" - } - }, - "unist-util-visit-parents": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.1.tgz", - "integrity": "sha512-gks4baapT/kNRaWxuGkl5BIhoanZo7sC/cUT/JToSRNL1dYoXRFl75d++NkjYk4TAu2uv2Px+l8guMajogeuiw==", - "requires": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0" - } - }, - "zwitch": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.2.tgz", - "integrity": "sha512-JZxotl7SxAJH0j7dN4pxsTV6ZLXoLdGME+PsjkL/DaBrVryK9kTGq06GfKrwcSOqypP+fdXGoCHE36b99fWVoA==" } } }, @@ -48470,124 +54314,54 @@ "@types/mdast": "^3.0.0", "mdast-util-from-markdown": "^1.0.0", "mdast-util-to-markdown": "^1.0.0" - }, - "dependencies": { - "longest-streak": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.0.1.tgz", - "integrity": "sha512-cHlYSUpL2s7Fb3394mYxwTYj8niTaNHUCLr0qdiCXQfSjfuA7CKofpX2uSwEfFDQ0EB7JcnMnm+GjbqqoinYYg==" - }, - "mdast-util-to-markdown": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-1.3.0.tgz", - "integrity": "sha512-6tUSs4r+KK4JGTTiQ7FfHmVOaDrLQJPmpjD6wPMlHGUVXoG9Vjc3jIeP+uyBWRf8clwB2blM+W7+KrlMYQnftA==", - "requires": { - "@types/mdast": "^3.0.0", - "@types/unist": "^2.0.0", - "longest-streak": "^3.0.0", - "mdast-util-to-string": "^3.0.0", - "micromark-util-decode-string": "^1.0.0", - "unist-util-visit": "^4.0.0", - "zwitch": "^2.0.0" - } - }, - "mdast-util-to-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-3.1.0.tgz", - "integrity": "sha512-n4Vypz/DZgwo0iMHLQL49dJzlp7YtAJP+N07MZHpjPf/5XJuHUWstviF4Mn2jEiR/GNmtnRRqnwsXExk3igfFA==" - }, - "unist-util-is": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.1.1.tgz", - "integrity": "sha512-F5CZ68eYzuSvJjGhCLPL3cYx45IxkqXSetCcRgUXtbcm50X2L9oOWQlfUfDdAf+6Pd27YDblBfdtmsThXmwpbQ==" - }, - "unist-util-visit": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.1.tgz", - "integrity": "sha512-n9KN3WV9k4h1DxYR1LoajgN93wpEi/7ZplVe02IoB4gH5ctI1AaF2670BLHQYbwj+pY83gFtyeySFiyMHJklrg==", - "requires": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0", - "unist-util-visit-parents": "^5.1.1" - } - }, - "unist-util-visit-parents": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.1.tgz", - "integrity": "sha512-gks4baapT/kNRaWxuGkl5BIhoanZo7sC/cUT/JToSRNL1dYoXRFl75d++NkjYk4TAu2uv2Px+l8guMajogeuiw==", - "requires": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0" - } - }, - "zwitch": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.2.tgz", - "integrity": "sha512-JZxotl7SxAJH0j7dN4pxsTV6ZLXoLdGME+PsjkL/DaBrVryK9kTGq06GfKrwcSOqypP+fdXGoCHE36b99fWVoA==" - } } }, "mdast-util-to-hast": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-6.0.2.tgz", - "integrity": "sha512-GjcOimC9qHI0yNFAQdBesrZXzUkRdFleQlcoU8+TVNfDW6oLUazUx8MgUoTaUyCJzBOnE5AOgqhpURrSlf0QwQ==", + "version": "12.2.4", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-12.2.4.tgz", + "integrity": "sha512-a21xoxSef1l8VhHxS1Dnyioz6grrJkoaCUgGzMD/7dWHvboYX3VW53esRUfB5tgTyz4Yos1n25SPcj35dJqmAg==", "requires": { - "collapse-white-space": "^1.0.0", - "detab": "^2.0.0", - "mdast-util-definitions": "^1.2.0", - "mdurl": "^1.0.1", - "trim": "0.0.1", - "trim-lines": "^1.0.0", - "unist-builder": "^1.0.1", - "unist-util-generated": "^1.1.0", - "unist-util-position": "^3.0.0", - "unist-util-visit": "^1.1.0", - "xtend": "^4.0.1" + "@types/hast": "^2.0.0", + "@types/mdast": "^3.0.0", + "mdast-util-definitions": "^5.0.0", + "micromark-util-sanitize-uri": "^1.1.0", + "trim-lines": "^3.0.0", + "unist-builder": "^3.0.0", + "unist-util-generated": "^2.0.0", + "unist-util-position": "^4.0.0", + "unist-util-visit": "^4.0.0" }, "dependencies": { - "unist-builder": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unist-builder/-/unist-builder-1.0.4.tgz", - "integrity": "sha512-v6xbUPP7ILrT15fHGrNyHc1Xda8H3xVhP7/HAIotHOhVPjH5dCXA097C3Rry1Q2O+HbOLCao4hfPB+EYEjHgVg==", + "mdast-util-definitions": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-5.1.1.tgz", + "integrity": "sha512-rQ+Gv7mHttxHOBx2dkF4HWTg+EE+UR78ptQWDylzPKaQuVGdG4HIoY3SrS/pCp80nZ04greFvXbVFHT+uf0JVQ==", "requires": { - "object-assign": "^4.1.0" - } - }, - "unist-util-visit": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-1.4.1.tgz", - "integrity": "sha512-AvGNk7Bb//EmJZyhtRUnNMEpId/AZ5Ph/KUpTI09WHQuDZHKovQ1oEv3mfmKpWKtoMzyMC4GLBm1Zy5k12fjIw==", - "requires": { - "unist-util-visit-parents": "^2.0.0" - } - }, - "unist-util-visit-parents": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-2.1.2.tgz", - "integrity": "sha512-DyN5vD4NE3aSeB+PXYNKxzGsfocxp6asDc2XXE3b0ekO2BaRUpBicbbUygfSvYfUz1IkmjFR1YF7dPklraMZ2g==", - "requires": { - "unist-util-is": "^3.0.0" + "@types/mdast": "^3.0.0", + "@types/unist": "^2.0.0", + "unist-util-visit": "^4.0.0" } } } }, "mdast-util-to-markdown": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-0.6.5.tgz", - "integrity": "sha512-XeV9sDE7ZlOQvs45C9UKMtfTcctcaj/pGwH8YLbMHoMOXNNCn2LsqVQOqrF1+/NU8lKDAqozme9SCXWyo9oAcQ==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-1.3.0.tgz", + "integrity": "sha512-6tUSs4r+KK4JGTTiQ7FfHmVOaDrLQJPmpjD6wPMlHGUVXoG9Vjc3jIeP+uyBWRf8clwB2blM+W7+KrlMYQnftA==", "requires": { + "@types/mdast": "^3.0.0", "@types/unist": "^2.0.0", - "longest-streak": "^2.0.0", - "mdast-util-to-string": "^2.0.0", - "parse-entities": "^2.0.0", - "repeat-string": "^1.0.0", - "zwitch": "^1.0.0" + "longest-streak": "^3.0.0", + "mdast-util-to-string": "^3.0.0", + "micromark-util-decode-string": "^1.0.0", + "unist-util-visit": "^4.0.0", + "zwitch": "^2.0.0" } }, "mdast-util-to-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz", - "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==" + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-3.1.0.tgz", + "integrity": "sha512-n4Vypz/DZgwo0iMHLQL49dJzlp7YtAJP+N07MZHpjPf/5XJuHUWstviF4Mn2jEiR/GNmtnRRqnwsXExk3igfFA==" }, "mdurl": { "version": "1.0.1", @@ -48746,12 +54520,27 @@ "dev": true }, "micromark": { - "version": "2.11.4", - "resolved": "https://registry.npmjs.org/micromark/-/micromark-2.11.4.tgz", - "integrity": "sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-3.1.0.tgz", + "integrity": "sha512-6Mj0yHLdUZjHnOPgr5xfWIMqMWS12zDN6iws9SLuSz76W8jTtAv24MN4/CL7gJrl5vtxGInkkqDv/JIoRsQOvA==", "requires": { + "@types/debug": "^4.0.0", "debug": "^4.0.0", - "parse-entities": "^2.0.0" + "decode-named-character-reference": "^1.0.0", + "micromark-core-commonmark": "^1.0.1", + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-chunked": "^1.0.0", + "micromark-util-combine-extensions": "^1.0.0", + "micromark-util-decode-numeric-character-reference": "^1.0.0", + "micromark-util-encode": "^1.0.0", + "micromark-util-normalize-identifier": "^1.0.0", + "micromark-util-resolve-all": "^1.0.0", + "micromark-util-sanitize-uri": "^1.0.0", + "micromark-util-subtokenize": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.1", + "uvu": "^0.5.0" } }, "micromark-core-commonmark": { @@ -48778,53 +54567,90 @@ } }, "micromark-extension-gfm": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-0.3.3.tgz", - "integrity": "sha512-oVN4zv5/tAIA+l3GbMi7lWeYpJ14oQyJ3uEim20ktYFAcfX1x3LNlFGGlmrZHt7u9YlKExmyJdDGaTt6cMSR/A==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-2.0.1.tgz", + "integrity": "sha512-p2sGjajLa0iYiGQdT0oelahRYtMWvLjy8J9LOCxzIQsllMCGLbsLW+Nc+N4vi02jcRJvedVJ68cjelKIO6bpDA==", "requires": { - "micromark": "~2.11.0", - "micromark-extension-gfm-autolink-literal": "~0.5.0", - "micromark-extension-gfm-strikethrough": "~0.6.5", - "micromark-extension-gfm-table": "~0.4.0", - "micromark-extension-gfm-tagfilter": "~0.3.0", - "micromark-extension-gfm-task-list-item": "~0.3.0" + "micromark-extension-gfm-autolink-literal": "^1.0.0", + "micromark-extension-gfm-footnote": "^1.0.0", + "micromark-extension-gfm-strikethrough": "^1.0.0", + "micromark-extension-gfm-table": "^1.0.0", + "micromark-extension-gfm-tagfilter": "^1.0.0", + "micromark-extension-gfm-task-list-item": "^1.0.0", + "micromark-util-combine-extensions": "^1.0.0", + "micromark-util-types": "^1.0.0" } }, "micromark-extension-gfm-autolink-literal": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-0.5.7.tgz", - "integrity": "sha512-ePiDGH0/lhcngCe8FtH4ARFoxKTUelMp4L7Gg2pujYD5CSMb9PbblnyL+AAMud/SNMyusbS2XDSiPIRcQoNFAw==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-1.0.3.tgz", + "integrity": "sha512-i3dmvU0htawfWED8aHMMAzAVp/F0Z+0bPh3YrbTPPL1v4YAlCZpy5rBO5p0LPYiZo0zFVkoYh7vDU7yQSiCMjg==", "requires": { - "micromark": "~2.11.3" + "micromark-util-character": "^1.0.0", + "micromark-util-sanitize-uri": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + } + }, + "micromark-extension-gfm-footnote": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-1.0.4.tgz", + "integrity": "sha512-E/fmPmDqLiMUP8mLJ8NbJWJ4bTw6tS+FEQS8CcuDtZpILuOb2kjLqPEeAePF1djXROHXChM/wPJw0iS4kHCcIg==", + "requires": { + "micromark-core-commonmark": "^1.0.0", + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-normalize-identifier": "^1.0.0", + "micromark-util-sanitize-uri": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" } }, "micromark-extension-gfm-strikethrough": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-0.6.5.tgz", - "integrity": "sha512-PpOKlgokpQRwUesRwWEp+fHjGGkZEejj83k9gU5iXCbDG+XBA92BqnRKYJdfqfkrRcZRgGuPuXb7DaK/DmxOhw==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-1.0.4.tgz", + "integrity": "sha512-/vjHU/lalmjZCT5xt7CcHVJGq8sYRm80z24qAKXzaHzem/xsDYb2yLL+NNVbYvmpLx3O7SYPuGL5pzusL9CLIQ==", "requires": { - "micromark": "~2.11.0" + "micromark-util-chunked": "^1.0.0", + "micromark-util-classify-character": "^1.0.0", + "micromark-util-resolve-all": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" } }, "micromark-extension-gfm-table": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-0.4.3.tgz", - "integrity": "sha512-hVGvESPq0fk6ALWtomcwmgLvH8ZSVpcPjzi0AjPclB9FsVRgMtGZkUcpE0zgjOCFAznKepF4z3hX8z6e3HODdA==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-1.0.5.tgz", + "integrity": "sha512-xAZ8J1X9W9K3JTJTUL7G6wSKhp2ZYHrFk5qJgY/4B33scJzE2kpfRL6oiw/veJTbt7jiM/1rngLlOKPWr1G+vg==", "requires": { - "micromark": "~2.11.0" + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" } }, "micromark-extension-gfm-tagfilter": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-0.3.0.tgz", - "integrity": "sha512-9GU0xBatryXifL//FJH+tAZ6i240xQuFrSL7mYi8f4oZSbc+NvXjkrHemeYP0+L4ZUT+Ptz3b95zhUZnMtoi/Q==" + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-1.0.1.tgz", + "integrity": "sha512-Ty6psLAcAjboRa/UKUbbUcwjVAv5plxmpUTy2XC/3nJFL37eHej8jrHrRzkqcpipJliuBH30DTs7+3wqNcQUVA==", + "requires": { + "micromark-util-types": "^1.0.0" + } }, "micromark-extension-gfm-task-list-item": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-0.3.3.tgz", - "integrity": "sha512-0zvM5iSLKrc/NQl84pZSjGo66aTGd57C1idmlWmE87lkMcXrTxg1uXa/nXomxJytoje9trP0NDLvw4bZ/Z/XCQ==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-1.0.3.tgz", + "integrity": "sha512-PpysK2S1Q/5VXi72IIapbi/jliaiOFzv7THH4amwXeYXLq3l1uo8/2Be0Ac1rEwK20MQEsGH2ltAZLNY2KI/0Q==", "requires": { - "micromark": "~2.11.0" + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" } }, "micromark-extension-mdx-expression": { @@ -49048,31 +54874,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz", "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==" - }, - "is-buffer": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", - "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==" - }, - "vfile": { - "version": "5.3.5", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.5.tgz", - "integrity": "sha512-U1ho2ga33eZ8y8pkbQLH54uKqGhFJ6GYIHnnG5AhRpAh3OWjkrRHKa/KogbmQn8We+c0KVV3rTOgR9V/WowbXQ==", - "requires": { - "@types/unist": "^2.0.0", - "is-buffer": "^2.0.0", - "unist-util-stringify-position": "^3.0.0", - "vfile-message": "^3.0.0" - } - }, - "vfile-location": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-4.0.1.tgz", - "integrity": "sha512-JDxPlTbZrZCQXogGheBHjbRWjESSPEak770XwWPfw5mTc1v1nWGLB/apzZxsx8a0SJVfF8HK8ql8RD308vXRUw==", - "requires": { - "@types/unist": "^2.0.0", - "vfile": "^5.0.0" - } } } }, @@ -49098,9 +54899,9 @@ } }, "micromark-util-sanitize-uri": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-1.0.0.tgz", - "integrity": "sha512-cCxvBKlmac4rxCGx6ejlIviRaMKZc0fWm5HdCHEeDWRSkn44l6NdYVRyU+0nT1XC72EQJMZV8IPHF+jTr56lAg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-1.1.0.tgz", + "integrity": "sha512-RoxtuSCX6sUNtxhbmsEFQfWzs8VN7cTctmBPvYivo98xb/kDEoTCtJQX5wyzIYEmk/lvNFTat4hL8oW0KndFpg==", "requires": { "micromark-util-character": "^1.0.0", "micromark-util-encode": "^1.0.0", @@ -49164,12 +54965,14 @@ "mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true }, "mime-types": { "version": "2.1.35", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, "requires": { "mime-db": "1.52.0" } @@ -49348,6 +55151,14 @@ "dev": true, "requires": { "color-name": "^1.1.4" + }, + "dependencies": { + "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 + } } }, "move-concurrently": { @@ -49508,82 +55319,16 @@ "use-subscription": "1.5.1" }, "dependencies": { - "@next/env": { - "version": "12.0.8", - "resolved": "https://registry.npmjs.org/@next/env/-/env-12.0.8.tgz", - "integrity": "sha512-Wa0gOeioB9PHap9wtZDZEhgOSE3/+qE/UALWjJHuNvH4J3oE+13EjVOiEsr1JcPCXUN8ESQE+phDKlo6qJ8P9g==" - }, "@next/react-refresh-utils": { "version": "12.0.8", "resolved": "https://registry.npmjs.org/@next/react-refresh-utils/-/react-refresh-utils-12.0.8.tgz", "integrity": "sha512-Bq4T/aOOFQUkCF9b8k9x+HpjOevu65ZPxsYJOpgEtBuJyvb+sZREtDDLKb/RtjUeLMrWrsGD0aLteyFFtiS8Og==", "requires": {} }, - "@next/swc-android-arm64": { - "version": "12.0.8", - "resolved": "https://registry.npmjs.org/@next/swc-android-arm64/-/swc-android-arm64-12.0.8.tgz", - "integrity": "sha512-BiXMcOZNnXSIXv+FQvbRgbMb+iYayLX/Sb2MwR0wja+eMs46BY1x/ssXDwUBADP1M8YtrGTlSPHZqUiCU94+Mg==", - "optional": true - }, - "@next/swc-darwin-arm64": { - "version": "12.0.8", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-12.0.8.tgz", - "integrity": "sha512-6EGMmvcIwPpwt0/iqLbXDGx6oKHAXzbowyyVXK8cqmIvhoghRFjqfiNGBs+ar6wEBGt68zhwn/77vE3iQWoFJw==", - "optional": true - }, - "@next/swc-darwin-x64": { - "version": "12.0.8", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-12.0.8.tgz", - "integrity": "sha512-todxgQOGP/ucz5UH2kKR3XGDdkWmWr0VZAAbzgTbiFm45Ol4ih602k2nNR3xSbza9IqNhxNuUVsMpBgeo19CFQ==", - "optional": true - }, - "@next/swc-linux-arm-gnueabihf": { - "version": "12.0.8", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-12.0.8.tgz", - "integrity": "sha512-KULmdrfI+DJxBuhEyV47MQllB/WpC3P2xbwhHezxL/LkC2nkz5SbV4k432qpx2ebjIRf9SjdQ5Oz1FjD8Urayw==", - "optional": true - }, - "@next/swc-linux-arm64-gnu": { - "version": "12.0.8", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-12.0.8.tgz", - "integrity": "sha512-1XO87wgIVPvt5fx5i8CqdhksRdcpqyzCOLW4KrE0f9pUCIT04EbsFiKdmsH9c73aqjNZMnCMXpbV+cn4hN8x1w==", - "optional": true - }, - "@next/swc-linux-arm64-musl": { - "version": "12.0.8", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-12.0.8.tgz", - "integrity": "sha512-NStRZEy/rkk2G18Yhc/Jzi1Q2Dv+zH176oO8479zlDQ5syRfc6AvRHVV4iNRc8Pai58If83r/nOJkwFgGwkKLw==", - "optional": true - }, - "@next/swc-linux-x64-gnu": { - "version": "12.0.8", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-12.0.8.tgz", - "integrity": "sha512-rHxTGtTEDFsdT9/VjewzxE19S7W1NE+aZpm4TwbT1pSNGK9KQxQGcXjqoHMeB+VZCFknzNEoIU/vydbjZMlAuw==", - "optional": true - }, - "@next/swc-linux-x64-musl": { - "version": "12.0.8", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-12.0.8.tgz", - "integrity": "sha512-1F4kuFRQE10GSx7LMSvRmjMXFGpxT30g8rZzq9r/p/WKdErA4WB4uxaKEX0P8AINfuN63i4luKdR+LoacgBhYw==", - "optional": true - }, - "@next/swc-win32-arm64-msvc": { - "version": "12.0.8", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-12.0.8.tgz", - "integrity": "sha512-QuRe49jqCV61TysGopC1P0HPqFAMZMWe1nbIQLyOkDLkULmZR8N2eYZq7fwqvZE5YwhMmJA/grwWFVBqSEh5Kg==", - "optional": true - }, - "@next/swc-win32-ia32-msvc": { - "version": "12.0.8", - "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-12.0.8.tgz", - "integrity": "sha512-0RV3/julybJr1IlPCowIWrJJZyAl+sOakJEM15y1NOOsbwTQ5eKZZXSi+7e23TN4wmy5HwNvn2dKzgOEVJ+jbA==", - "optional": true - }, - "@next/swc-win32-x64-msvc": { - "version": "12.0.8", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-12.0.8.tgz", - "integrity": "sha512-tTga6OFfO2JS+Yt5hdryng259c/tzNgSWkdiU2E+RBHiysAIOta57n4PJ8iPahOSqEqjaToPI76wM+o441GaNQ==", - "optional": 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==" }, "jest-worker": { "version": "27.0.0-next.5", @@ -49635,37 +55380,12 @@ "resolved": "https://registry.npmjs.org/next-compose-plugins/-/next-compose-plugins-2.2.1.tgz", "integrity": "sha512-OjJ+fV15FXO2uQXQagLD4C0abYErBjyjE0I0FHpOEIB8upw0hg1ldFP6cqHTJBH1cZqy96OeR3u1dJ+Ez2D4Bg==" }, - "next-mdx-remote": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/next-mdx-remote/-/next-mdx-remote-3.0.8.tgz", - "integrity": "sha512-WFSxt0crxG5PN/0WvaunzxzqV3wh3dPBZyhkclxwyQfLSRKzsNSArzot/4gYTOOZ/GtyRfNjbI/HtDsW2S4fqQ==", - "requires": { - "@mdx-js/mdx": "^1.6.22", - "@mdx-js/react": "^1.6.22", - "esbuild": "^0.12.9", - "pkg-dir": "^5.0.0" - }, - "dependencies": { - "@mdx-js/react": { - "version": "1.6.22", - "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-1.6.22.tgz", - "integrity": "sha512-TDoPum4SHdfPiGSAaRBw7ECyI8VaHpK8GJugbJIJuqyh6kzw9ZLJZW3HGL3NNrJGxcAixUvqROm+YuQOo5eXtg==", - "requires": {} - } - } - }, "next-seo": { "version": "4.29.0", "resolved": "https://registry.npmjs.org/next-seo/-/next-seo-4.29.0.tgz", "integrity": "sha512-xmwzcz4uHaYJ8glbuhs6FSBQ7z3irmdPYdJJ5saWm72Uy3o+mPKGaPCXQetTCE6/xxVnpoDV4yFtFlEjUcljSg==", "requires": {} }, - "next-themes": { - "version": "0.0.15", - "resolved": "https://registry.npmjs.org/next-themes/-/next-themes-0.0.15.tgz", - "integrity": "sha512-LTmtqYi03c4gMTJmWwVK9XkHL7h0/+XrtR970Ujvtu3s0kZNeJN24aJsi4rkZOI8i19+qq6f8j+8Duwy5jqcrQ==", - "requires": {} - }, "next-tick": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", @@ -49800,9 +55520,9 @@ "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==" }, "nodemailer": { - "version": "6.7.8", - "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.7.8.tgz", - "integrity": "sha512-2zaTFGqZixVmTxpJRCFC+Vk5eGRd/fYtvIR+dl5u9QXLTQWGIf48x/JXvo58g9sa0bU6To04XUv554Paykum3g==" + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.8.0.tgz", + "integrity": "sha512-EjYvSmHzekz6VNkNd12aUqAco+bOkRe3Of5jVhltqKhEsjw/y0PYPJfp83+s9Wzh1dspYAkUW/YNQ350NATbSQ==" }, "normalize-package-data": { "version": "2.5.0", @@ -49877,7 +55597,8 @@ "nwsapi": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.2.tgz", - "integrity": "sha512-90yv+6538zuvUMnN+zCr8LuV6bPFdq50304114vJYJ8RDyK8D5O9Phpbd6SZWgI7PwzmmfN1upeOJlvybDSgCw==" + "integrity": "sha512-90yv+6538zuvUMnN+zCr8LuV6bPFdq50304114vJYJ8RDyK8D5O9Phpbd6SZWgI7PwzmmfN1upeOJlvybDSgCw==", + "dev": true }, "object-assign": { "version": "4.1.1", @@ -50105,26 +55826,45 @@ "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==" }, - "optimism": { - "version": "0.16.1", - "resolved": "https://registry.npmjs.org/optimism/-/optimism-0.16.1.tgz", - "integrity": "sha512-64i+Uw3otrndfq5kaoGNoY7pvOhSsjFEN4bdEFh80MWVk/dbgJfMv7VFDeCT8LxNAlEVhQmdVEbfE7X2nWNIIg==", - "requires": { - "@wry/context": "^0.6.0", - "@wry/trie": "^0.3.0" - } - }, "optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "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" + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + }, + "dependencies": { + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", + "dev": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2" + } + } } }, "os-browserify": { @@ -50192,6 +55932,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, "requires": { "yocto-queue": "^0.1.0" } @@ -50200,6 +55941,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, "requires": { "p-limit": "^3.0.2" } @@ -50305,6 +56047,13 @@ "is-alphanumerical": "^1.0.0", "is-decimal": "^1.0.0", "is-hexadecimal": "^1.0.0" + }, + "dependencies": { + "character-entities": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", + "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==" + } } }, "parse-json": { @@ -50329,14 +56078,6 @@ "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" }, - "parse5-htmlparser2-tree-adapter": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", - "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", - "requires": { - "parse5": "^6.0.1" - } - }, "parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", @@ -50374,7 +56115,8 @@ "path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true }, "path-is-absolute": { "version": "1.0.1", @@ -50414,6 +56156,15 @@ "sha.js": "^2.4.8" } }, + "periscopic": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/periscopic/-/periscopic-3.0.4.tgz", + "integrity": "sha512-SFx68DxCv0Iyo6APZuw/AKewkkThGwssmU0QWtTlvov3VAtPX+QJ4CadwSaz8nrT5jPIuxdvJWB4PnD2KNDxQg==", + "requires": { + "estree-walker": "^3.0.0", + "is-reference": "^3.0.0" + } + }, "pg": { "version": "8.8.0", "resolved": "https://registry.npmjs.org/pg/-/pg-8.8.0.tgz", @@ -50517,6 +56268,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-5.0.0.tgz", "integrity": "sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==", + "dev": true, "requires": { "find-up": "^5.0.0" } @@ -50546,9 +56298,9 @@ "devOptional": true }, "postcss": { - "version": "8.4.16", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.16.tgz", - "integrity": "sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ==", + "version": "8.4.17", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.17.tgz", + "integrity": "sha512-UNxNOLQydcOFi41yHNMcKRZ39NeXlr8AxGuZJsdub8vIb12fHzcq37DTU/QtbI6WLxNg2gF9Z+8qtRwTj1UI1Q==", "requires": { "nanoid": "^3.3.4", "picocolors": "^1.0.0", @@ -51186,9 +56938,9 @@ }, "dependencies": { "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -51711,6 +57463,12 @@ "uniq": "^1.0.1" } }, + "postgres": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postgres/-/postgres-3.3.1.tgz", + "integrity": "sha512-ak/xXToZYwRvQlZIUtLgPUIggz62eIIbPTgxl/Yl4oTu0TgNOd1CrzTCifsvZ89jBwLvnX6+Ky5frp5HzIBoaw==", + "dev": true + }, "postgres-array": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", @@ -51864,18 +57622,21 @@ "react-is": "^16.13.1" } }, + "properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/properties/-/properties-1.2.1.tgz", + "integrity": "sha512-qYNxyMj1JeW54i/EWEFsM1cVwxJbtgPp8+0Wg9XjNaK6VE/c4oRi6PNu5p7w1mNXEIQIjV5Wwn8v8Gz82/QzdQ==", + "dev": true + }, "property-expr": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/property-expr/-/property-expr-2.0.5.tgz", "integrity": "sha512-IJUkICM5dP5znhCckHSv30Q4b5/JA5enCtkRHYaOVOAocnH/1BQEYTC5NMfT3AVl/iXKdr3aqQbQn9DxyWknwA==" }, "property-information": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/property-information/-/property-information-5.6.0.tgz", - "integrity": "sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA==", - "requires": { - "xtend": "^4.0.0" - } + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.1.1.tgz", + "integrity": "sha512-hrzC564QIl0r0vy4l6MvRLhafmUowhO/O3KgVSoXIbbA2Sz4j8HGpJc6T2cubRVwMwpdiG/vKGfhT4IixmKN9w==" }, "proxy-addr": { "version": "2.0.7", @@ -51906,7 +57667,8 @@ "psl": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", - "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==" + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", + "dev": true }, "public-encrypt": { "version": "4.0.3", @@ -51992,7 +57754,8 @@ "querystringify": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "dev": true }, "queue-microtask": { "version": "1.2.3", @@ -52262,6 +58025,14 @@ "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-2.0.4.tgz", "integrity": "sha512-suNP+J1VU1MWFKcyt7RtjiSWUjvidmQSlqu+eHslq+342xCbGTYmC0mEhPCOHxlW0CywylOC1u2DFAT+bv4dBw==" }, + "react-feather": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/react-feather/-/react-feather-2.0.10.tgz", + "integrity": "sha512-BLhukwJ+Z92Nmdcs+EMw6dy1Z/VLiJTzEQACDUEnWMClhYnFykJCGWQx+NmwP/qQHGX/5CzQ+TGi8ofg2+HzVQ==", + "requires": { + "prop-types": "^15.7.2" + } + }, "react-from-dom": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/react-from-dom/-/react-from-dom-0.6.2.tgz", @@ -52358,16 +58129,6 @@ "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==" }, - "comma-separated-tokens": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.2.tgz", - "integrity": "sha512-G5yTt3KQN4Yn7Yk4ed73hlZ1evrFKXeUW3086p3PRFNp7m2vIjI6Pg+Kgb+oyzhd9F2qdcoj67+y3SdxL5XWsg==" - }, - "hast-util-whitespace": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-2.0.0.tgz", - "integrity": "sha512-Pkw+xBHuV6xFeJprJe2BBEoDV+AvQySaz3pPDRUs5PNZEMQjpXJJueqrpcHIXxnWTcAGi/UOCgVShlkY6kLoqg==" - }, "is-buffer": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", @@ -52378,11 +58139,6 @@ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==" }, - "property-information": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.1.1.tgz", - "integrity": "sha512-hrzC564QIl0r0vy4l6MvRLhafmUowhO/O3KgVSoXIbbA2Sz4j8HGpJc6T2cubRVwMwpdiG/vKGfhT4IixmKN9w==" - }, "react-is": { "version": "18.2.0", "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", @@ -52398,11 +58154,6 @@ "unified": "^10.0.0" } }, - "space-separated-tokens": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.1.tgz", - "integrity": "sha512-ekwEbFp5aqSPKaqeY1PGrlGQxPNaq+Cnx4+bE2D8sciBQrHpbwoBbawqTN2+6jPs9IdWxxiUcN0K2pkczD3zmw==" - }, "trough": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/trough/-/trough-2.1.0.tgz", @@ -52421,41 +58172,6 @@ "trough": "^2.0.0", "vfile": "^5.0.0" } - }, - "unist-util-is": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.1.1.tgz", - "integrity": "sha512-F5CZ68eYzuSvJjGhCLPL3cYx45IxkqXSetCcRgUXtbcm50X2L9oOWQlfUfDdAf+6Pd27YDblBfdtmsThXmwpbQ==" - }, - "unist-util-visit": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.1.tgz", - "integrity": "sha512-n9KN3WV9k4h1DxYR1LoajgN93wpEi/7ZplVe02IoB4gH5ctI1AaF2670BLHQYbwj+pY83gFtyeySFiyMHJklrg==", - "requires": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0", - "unist-util-visit-parents": "^5.1.1" - } - }, - "unist-util-visit-parents": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.1.tgz", - "integrity": "sha512-gks4baapT/kNRaWxuGkl5BIhoanZo7sC/cUT/JToSRNL1dYoXRFl75d++NkjYk4TAu2uv2Px+l8guMajogeuiw==", - "requires": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0" - } - }, - "vfile": { - "version": "5.3.5", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.5.tgz", - "integrity": "sha512-U1ho2ga33eZ8y8pkbQLH54uKqGhFJ6GYIHnnG5AhRpAh3OWjkrRHKa/KogbmQn8We+c0KVV3rTOgR9V/WowbXQ==", - "requires": { - "@types/unist": "^2.0.0", - "is-buffer": "^2.0.0", - "unist-util-stringify-position": "^3.0.0", - "vfile-message": "^3.0.0" - } } } }, @@ -52488,9 +58204,9 @@ } }, "react-redux": { - "version": "7.2.8", - "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-7.2.8.tgz", - "integrity": "sha512-6+uDjhs3PSIclqoCk0kd6iX74gzrGc3W5zcAjbrFgEdIjRSQObdIwfx80unTkVUYvbQ95Y8Av3OvFHq1w5EOUw==", + "version": "7.2.9", + "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-7.2.9.tgz", + "integrity": "sha512-Gx4L3uM182jEEayZfRbI/G11ZpYdNAnBs70lFVMNdHJI76XYtR+7m0MN+eAs7UHBPhWXcnFPaS+9owSCJQHNpQ==", "requires": { "@babel/runtime": "^7.15.4", "@types/react-redux": "^7.1.20", @@ -52905,12 +58621,14 @@ "regenerate": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", - "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==" + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true }, "regenerate-unicode-properties": { "version": "10.1.0", "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz", "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==", + "dev": true, "requires": { "regenerate": "^1.4.2" } @@ -52924,6 +58642,7 @@ "version": "0.15.0", "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.0.tgz", "integrity": "sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==", + "dev": true, "requires": { "@babel/runtime": "^7.8.4" } @@ -52987,6 +58706,7 @@ "version": "5.2.1", "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.2.1.tgz", "integrity": "sha512-HrnlNtpvqP1Xkb28tMhBUO2EbyUHdQlsnlAhzWcwHy8WJR53UWr7/MAvqrsQKMbV4qdpv03oTMG8iIhfsPFktQ==", + "dev": true, "requires": { "regenerate": "^1.4.2", "regenerate-unicode-properties": "^10.1.0", @@ -52999,12 +58719,14 @@ "regjsgen": { "version": "0.7.1", "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.7.1.tgz", - "integrity": "sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA==" + "integrity": "sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA==", + "dev": true }, "regjsparser": { "version": "0.9.1", "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "dev": true, "requires": { "jsesc": "~0.5.0" }, @@ -53012,37 +58734,23 @@ "jsesc": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==" + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "dev": true } } }, "rehype-slug": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/rehype-slug/-/rehype-slug-4.0.1.tgz", - "integrity": "sha512-KIlJALf9WfHFF21icwTd2yI2IP+RQRweaxH9ChVGQwRYy36+hiomG4ZSe0yQRyCt+D/vE39LbAcOI/h4O4GPhA==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/rehype-slug/-/rehype-slug-5.0.1.tgz", + "integrity": "sha512-X5v3wV/meuOX9NFcGhJvUpEjIvQl2gDvjg3z40RVprYFt7q3th4qMmYLULiu3gXvbNX1ppx+oaa6JyY1W67pTA==", "requires": { + "@types/hast": "^2.0.0", "github-slugger": "^1.1.1", - "hast-util-has-property": "^1.0.0", - "hast-util-heading-rank": "^1.0.0", - "hast-util-to-string": "^1.0.0", - "unist-util-visit": "^2.0.0" - } - }, - "relateurl": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", - "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", - "dev": true - }, - "remark": { - "version": "14.0.2", - "resolved": "https://registry.npmjs.org/remark/-/remark-14.0.2.tgz", - "integrity": "sha512-A3ARm2V4BgiRXaUo5K0dRvJ1lbogrbXnhkJRmD0yw092/Yl0kOCZt1k9ZeElEwkZsWGsMumz6qL5MfNJH9nOBA==", - "requires": { - "@types/mdast": "^3.0.0", - "remark-parse": "^10.0.0", - "remark-stringify": "^10.0.0", - "unified": "^10.0.0" + "hast-util-has-property": "^2.0.0", + "hast-util-heading-rank": "^2.0.0", + "hast-util-to-string": "^2.0.0", + "unified": "^10.0.0", + "unist-util-visit": "^4.0.0" }, "dependencies": { "bail": { @@ -53060,50 +58768,6 @@ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==" }, - "longest-streak": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.0.1.tgz", - "integrity": "sha512-cHlYSUpL2s7Fb3394mYxwTYj8niTaNHUCLr0qdiCXQfSjfuA7CKofpX2uSwEfFDQ0EB7JcnMnm+GjbqqoinYYg==" - }, - "mdast-util-to-markdown": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-1.3.0.tgz", - "integrity": "sha512-6tUSs4r+KK4JGTTiQ7FfHmVOaDrLQJPmpjD6wPMlHGUVXoG9Vjc3jIeP+uyBWRf8clwB2blM+W7+KrlMYQnftA==", - "requires": { - "@types/mdast": "^3.0.0", - "@types/unist": "^2.0.0", - "longest-streak": "^3.0.0", - "mdast-util-to-string": "^3.0.0", - "micromark-util-decode-string": "^1.0.0", - "unist-util-visit": "^4.0.0", - "zwitch": "^2.0.0" - } - }, - "mdast-util-to-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-3.1.0.tgz", - "integrity": "sha512-n4Vypz/DZgwo0iMHLQL49dJzlp7YtAJP+N07MZHpjPf/5XJuHUWstviF4Mn2jEiR/GNmtnRRqnwsXExk3igfFA==" - }, - "remark-parse": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-10.0.1.tgz", - "integrity": "sha512-1fUyHr2jLsVOkhbvPRBJ5zTKZZyD6yZzYaWCS6BPBdQ8vEMBCH+9zNCDA6tET/zHCi/jLqjCWtlJZUPk+DbnFw==", - "requires": { - "@types/mdast": "^3.0.0", - "mdast-util-from-markdown": "^1.0.0", - "unified": "^10.0.0" - } - }, - "remark-stringify": { - "version": "10.0.2", - "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-10.0.2.tgz", - "integrity": "sha512-6wV3pvbPvHkbNnWB0wdDvVFHOe1hBRAx1Q/5g/EpH4RppAII6J8Gnwe7VbHuXaoKIF6LAg6ExTel/+kNqSQ7lw==", - "requires": { - "@types/mdast": "^3.0.0", - "mdast-util-to-markdown": "^1.0.0", - "unified": "^10.0.0" - } - }, "trough": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/trough/-/trough-2.1.0.tgz", @@ -53122,49 +58786,15 @@ "trough": "^2.0.0", "vfile": "^5.0.0" } - }, - "unist-util-is": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.1.1.tgz", - "integrity": "sha512-F5CZ68eYzuSvJjGhCLPL3cYx45IxkqXSetCcRgUXtbcm50X2L9oOWQlfUfDdAf+6Pd27YDblBfdtmsThXmwpbQ==" - }, - "unist-util-visit": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.1.tgz", - "integrity": "sha512-n9KN3WV9k4h1DxYR1LoajgN93wpEi/7ZplVe02IoB4gH5ctI1AaF2670BLHQYbwj+pY83gFtyeySFiyMHJklrg==", - "requires": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0", - "unist-util-visit-parents": "^5.1.1" - } - }, - "unist-util-visit-parents": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.1.tgz", - "integrity": "sha512-gks4baapT/kNRaWxuGkl5BIhoanZo7sC/cUT/JToSRNL1dYoXRFl75d++NkjYk4TAu2uv2Px+l8guMajogeuiw==", - "requires": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0" - } - }, - "vfile": { - "version": "5.3.5", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.5.tgz", - "integrity": "sha512-U1ho2ga33eZ8y8pkbQLH54uKqGhFJ6GYIHnnG5AhRpAh3OWjkrRHKa/KogbmQn8We+c0KVV3rTOgR9V/WowbXQ==", - "requires": { - "@types/unist": "^2.0.0", - "is-buffer": "^2.0.0", - "unist-util-stringify-position": "^3.0.0", - "vfile-message": "^3.0.0" - } - }, - "zwitch": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.2.tgz", - "integrity": "sha512-JZxotl7SxAJH0j7dN4pxsTV6ZLXoLdGME+PsjkL/DaBrVryK9kTGq06GfKrwcSOqypP+fdXGoCHE36b99fWVoA==" } } }, + "relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", + "dev": true + }, "remark-external-links": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/remark-external-links/-/remark-external-links-8.0.0.tgz", @@ -53178,13 +58808,37 @@ "unist-util-visit": "^2.0.0" }, "dependencies": { - "mdast-util-definitions": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-4.0.0.tgz", - "integrity": "sha512-k8AJ6aNnUkB7IE+5azR9h81O5EQ/cTDXtWdMq9Kk5KcEW/8ritU5CeLg/9HhOC++nALHBlaogJ5jz0Ybk3kPMQ==", + "space-separated-tokens": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz", + "integrity": "sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==", + "dev": true + }, + "unist-util-is": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", + "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==", + "dev": true + }, + "unist-util-visit": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz", + "integrity": "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==", "dev": true, "requires": { - "unist-util-visit": "^2.0.0" + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0", + "unist-util-visit-parents": "^3.0.0" + } + }, + "unist-util-visit-parents": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz", + "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0" } } } @@ -53195,12 +58849,50 @@ "integrity": "sha512-3Clt8ZMH75Ayjp9q4CorNeyjwIxHFcTkaektplKGl2A1jNGEUey8cKL0ZC5vJwfcD5GFGsNLImLG/NGzWIzoMQ==" }, "remark-gfm": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-1.0.0.tgz", - "integrity": "sha512-KfexHJCiqvrdBZVbQ6RopMZGwaXz6wFJEfByIuEwGf0arvITHjiKKZ1dpXujjH9KZdm1//XJQwgfnJ3lmXaDPA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-3.0.1.tgz", + "integrity": "sha512-lEFDoi2PICJyNrACFOfDD3JlLkuSbOa5Wd8EPt06HUdptv8Gn0bxYTdbU/XXQ3swAPkEaGxxPN9cbnMHvVu1Ig==", "requires": { - "mdast-util-gfm": "^0.1.0", - "micromark-extension-gfm": "^0.3.0" + "@types/mdast": "^3.0.0", + "mdast-util-gfm": "^2.0.0", + "micromark-extension-gfm": "^2.0.0", + "unified": "^10.0.0" + }, + "dependencies": { + "bail": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", + "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==" + }, + "is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==" + }, + "is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==" + }, + "trough": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/trough/-/trough-2.1.0.tgz", + "integrity": "sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==" + }, + "unified": { + "version": "10.1.2", + "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz", + "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==", + "requires": { + "@types/unist": "^2.0.0", + "bail": "^2.0.0", + "extend": "^3.0.0", + "is-buffer": "^2.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^5.0.0" + } + } } }, "remark-html": { @@ -53220,70 +58912,6 @@ "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==" }, - "ccount": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", - "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==" - }, - "character-entities-html4": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", - "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==" - }, - "character-entities-legacy": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", - "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==" - }, - "comma-separated-tokens": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.2.tgz", - "integrity": "sha512-G5yTt3KQN4Yn7Yk4ed73hlZ1evrFKXeUW3086p3PRFNp7m2vIjI6Pg+Kgb+oyzhd9F2qdcoj67+y3SdxL5XWsg==" - }, - "hast-util-is-element": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-2.1.2.tgz", - "integrity": "sha512-thjnlGAnwP8ef/GSO1Q8BfVk2gundnc2peGQqEg2kUt/IqesiGg/5mSwN2fE7nLzy61pg88NG6xV+UrGOrx9EA==", - "requires": { - "@types/hast": "^2.0.0", - "@types/unist": "^2.0.0" - } - }, - "hast-util-sanitize": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/hast-util-sanitize/-/hast-util-sanitize-4.0.0.tgz", - "integrity": "sha512-pw56+69jq+QSr/coADNvWTmBPDy+XsmwaF5KnUys4/wM1jt/fZdl7GPxhXXXYdXnz3Gj3qMkbUCH2uKjvX0MgQ==", - "requires": { - "@types/hast": "^2.0.0" - } - }, - "hast-util-to-html": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-8.0.3.tgz", - "integrity": "sha512-/D/E5ymdPYhHpPkuTHOUkSatxr4w1ZKrZsG0Zv/3C2SRVT0JFJG53VS45AMrBtYk0wp5A7ksEhiC8QaOZM95+A==", - "requires": { - "@types/hast": "^2.0.0", - "ccount": "^2.0.0", - "comma-separated-tokens": "^2.0.0", - "hast-util-is-element": "^2.0.0", - "hast-util-whitespace": "^2.0.0", - "html-void-elements": "^2.0.0", - "property-information": "^6.0.0", - "space-separated-tokens": "^2.0.0", - "stringify-entities": "^4.0.2", - "unist-util-is": "^5.0.0" - } - }, - "hast-util-whitespace": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-2.0.0.tgz", - "integrity": "sha512-Pkw+xBHuV6xFeJprJe2BBEoDV+AvQySaz3pPDRUs5PNZEMQjpXJJueqrpcHIXxnWTcAGi/UOCgVShlkY6kLoqg==" - }, - "html-void-elements": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-2.0.1.tgz", - "integrity": "sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A==" - }, "is-buffer": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", @@ -53294,58 +58922,6 @@ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==" }, - "mdast-util-definitions": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-5.1.1.tgz", - "integrity": "sha512-rQ+Gv7mHttxHOBx2dkF4HWTg+EE+UR78ptQWDylzPKaQuVGdG4HIoY3SrS/pCp80nZ04greFvXbVFHT+uf0JVQ==", - "requires": { - "@types/mdast": "^3.0.0", - "@types/unist": "^2.0.0", - "unist-util-visit": "^4.0.0" - } - }, - "mdast-util-to-hast": { - "version": "12.2.2", - "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-12.2.2.tgz", - "integrity": "sha512-lVkUttV9wqmdXFtEBXKcepvU/zfwbhjbkM5rxrquLW55dS1DfOrnAXCk5mg1be1sfY/WfMmayGy1NsbK1GLCYQ==", - "requires": { - "@types/hast": "^2.0.0", - "@types/mdast": "^3.0.0", - "@types/mdurl": "^1.0.0", - "mdast-util-definitions": "^5.0.0", - "mdurl": "^1.0.0", - "micromark-util-sanitize-uri": "^1.0.0", - "trim-lines": "^3.0.0", - "unist-builder": "^3.0.0", - "unist-util-generated": "^2.0.0", - "unist-util-position": "^4.0.0", - "unist-util-visit": "^4.0.0" - } - }, - "property-information": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.1.1.tgz", - "integrity": "sha512-hrzC564QIl0r0vy4l6MvRLhafmUowhO/O3KgVSoXIbbA2Sz4j8HGpJc6T2cubRVwMwpdiG/vKGfhT4IixmKN9w==" - }, - "space-separated-tokens": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.1.tgz", - "integrity": "sha512-ekwEbFp5aqSPKaqeY1PGrlGQxPNaq+Cnx4+bE2D8sciBQrHpbwoBbawqTN2+6jPs9IdWxxiUcN0K2pkczD3zmw==" - }, - "stringify-entities": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.3.tgz", - "integrity": "sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g==", - "requires": { - "character-entities-html4": "^2.0.0", - "character-entities-legacy": "^3.0.0" - } - }, - "trim-lines": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", - "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==" - }, "trough": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/trough/-/trough-2.1.0.tgz", @@ -53364,69 +58940,13 @@ "trough": "^2.0.0", "vfile": "^5.0.0" } - }, - "unist-builder": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unist-builder/-/unist-builder-3.0.0.tgz", - "integrity": "sha512-GFxmfEAa0vi9i5sd0R2kcrI9ks0r82NasRq5QHh2ysGngrc6GiqD5CDf1FjPenY4vApmFASBIIlk/jj5J5YbmQ==", - "requires": { - "@types/unist": "^2.0.0" - } - }, - "unist-util-generated": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-2.0.0.tgz", - "integrity": "sha512-TiWE6DVtVe7Ye2QxOVW9kqybs6cZexNwTwSMVgkfjEReqy/xwGpAXb99OxktoWwmL+Z+Epb0Dn8/GNDYP1wnUw==" - }, - "unist-util-is": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.1.1.tgz", - "integrity": "sha512-F5CZ68eYzuSvJjGhCLPL3cYx45IxkqXSetCcRgUXtbcm50X2L9oOWQlfUfDdAf+6Pd27YDblBfdtmsThXmwpbQ==" - }, - "unist-util-position": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-4.0.3.tgz", - "integrity": "sha512-p/5EMGIa1qwbXjA+QgcBXaPWjSnZfQ2Sc3yBEEfgPwsEmJd8Qh+DSk3LGnmOM4S1bY2C0AjmMnB8RuEYxpPwXQ==", - "requires": { - "@types/unist": "^2.0.0" - } - }, - "unist-util-visit": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.1.tgz", - "integrity": "sha512-n9KN3WV9k4h1DxYR1LoajgN93wpEi/7ZplVe02IoB4gH5ctI1AaF2670BLHQYbwj+pY83gFtyeySFiyMHJklrg==", - "requires": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0", - "unist-util-visit-parents": "^5.1.1" - } - }, - "unist-util-visit-parents": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.1.tgz", - "integrity": "sha512-gks4baapT/kNRaWxuGkl5BIhoanZo7sC/cUT/JToSRNL1dYoXRFl75d++NkjYk4TAu2uv2Px+l8guMajogeuiw==", - "requires": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0" - } - }, - "vfile": { - "version": "5.3.5", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.5.tgz", - "integrity": "sha512-U1ho2ga33eZ8y8pkbQLH54uKqGhFJ6GYIHnnG5AhRpAh3OWjkrRHKa/KogbmQn8We+c0KVV3rTOgR9V/WowbXQ==", - "requires": { - "@types/unist": "^2.0.0", - "is-buffer": "^2.0.0", - "unist-util-stringify-position": "^3.0.0", - "vfile-message": "^3.0.0" - } } } }, "remark-mdx": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-2.1.3.tgz", - "integrity": "sha512-3SmtXOy9+jIaVctL8Cs3VAQInjRLGOwNXfrBB9KCT+EpJpKD3PQiy0x8hUNGyjQmdyOs40BqgPU7kYtH9uoR6w==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-2.1.4.tgz", + "integrity": "sha512-zZxHdd0s8xfMmIKcxhFoUT4x54VOJTUJ+lPys7ZR2Vcgb4xwuAwxvUfkVrsCTdo/lBVxLQv43bXVNu3ZIbahnA==", "requires": { "mdast-util-mdx": "^2.0.0", "micromark-extension-mdxjs": "^1.0.0" @@ -53452,6 +58972,20 @@ "unist-util-stringify-position": "^2.0.0" } }, + "mdast-util-to-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz", + "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==" + }, + "micromark": { + "version": "2.11.4", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-2.11.4.tgz", + "integrity": "sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==", + "requires": { + "debug": "^4.0.0", + "parse-entities": "^2.0.0" + } + }, "unist-util-stringify-position": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", @@ -53462,22 +58996,6 @@ } } }, - "remark-prism": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/remark-prism/-/remark-prism-1.3.6.tgz", - "integrity": "sha512-yYSXJ2MEK2DeD9UKDKFkQPcVqRx6aX2FYD1kE27ScogpZ/BBO8MoOO6gf/AKqfXvKGnP51wqvDEBmPseypgaug==", - "requires": { - "classnames": "^2.3.1", - "css-selector-parser": "^1.4.1", - "escape-html": "^1.0.3", - "jsdom": "^16.5.3", - "parse-numeric-range": "^1.2.0", - "parse5": "^6.0.1", - "parse5-htmlparser2-tree-adapter": "^6.0.1", - "prismjs": "^1.23.0", - "unist-util-map": "^2.0.1" - } - }, "remark-rehype": { "version": "10.1.0", "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-10.1.0.tgz", @@ -53504,39 +59022,6 @@ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==" }, - "mdast-util-definitions": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-5.1.1.tgz", - "integrity": "sha512-rQ+Gv7mHttxHOBx2dkF4HWTg+EE+UR78ptQWDylzPKaQuVGdG4HIoY3SrS/pCp80nZ04greFvXbVFHT+uf0JVQ==", - "requires": { - "@types/mdast": "^3.0.0", - "@types/unist": "^2.0.0", - "unist-util-visit": "^4.0.0" - } - }, - "mdast-util-to-hast": { - "version": "12.2.2", - "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-12.2.2.tgz", - "integrity": "sha512-lVkUttV9wqmdXFtEBXKcepvU/zfwbhjbkM5rxrquLW55dS1DfOrnAXCk5mg1be1sfY/WfMmayGy1NsbK1GLCYQ==", - "requires": { - "@types/hast": "^2.0.0", - "@types/mdast": "^3.0.0", - "@types/mdurl": "^1.0.0", - "mdast-util-definitions": "^5.0.0", - "mdurl": "^1.0.0", - "micromark-util-sanitize-uri": "^1.0.0", - "trim-lines": "^3.0.0", - "unist-builder": "^3.0.0", - "unist-util-generated": "^2.0.0", - "unist-util-position": "^4.0.0", - "unist-util-visit": "^4.0.0" - } - }, - "trim-lines": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", - "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==" - }, "trough": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/trough/-/trough-2.1.0.tgz", @@ -53555,62 +59040,6 @@ "trough": "^2.0.0", "vfile": "^5.0.0" } - }, - "unist-builder": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unist-builder/-/unist-builder-3.0.0.tgz", - "integrity": "sha512-GFxmfEAa0vi9i5sd0R2kcrI9ks0r82NasRq5QHh2ysGngrc6GiqD5CDf1FjPenY4vApmFASBIIlk/jj5J5YbmQ==", - "requires": { - "@types/unist": "^2.0.0" - } - }, - "unist-util-generated": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-2.0.0.tgz", - "integrity": "sha512-TiWE6DVtVe7Ye2QxOVW9kqybs6cZexNwTwSMVgkfjEReqy/xwGpAXb99OxktoWwmL+Z+Epb0Dn8/GNDYP1wnUw==" - }, - "unist-util-is": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.1.1.tgz", - "integrity": "sha512-F5CZ68eYzuSvJjGhCLPL3cYx45IxkqXSetCcRgUXtbcm50X2L9oOWQlfUfDdAf+6Pd27YDblBfdtmsThXmwpbQ==" - }, - "unist-util-position": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-4.0.3.tgz", - "integrity": "sha512-p/5EMGIa1qwbXjA+QgcBXaPWjSnZfQ2Sc3yBEEfgPwsEmJd8Qh+DSk3LGnmOM4S1bY2C0AjmMnB8RuEYxpPwXQ==", - "requires": { - "@types/unist": "^2.0.0" - } - }, - "unist-util-visit": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.1.tgz", - "integrity": "sha512-n9KN3WV9k4h1DxYR1LoajgN93wpEi/7ZplVe02IoB4gH5ctI1AaF2670BLHQYbwj+pY83gFtyeySFiyMHJklrg==", - "requires": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0", - "unist-util-visit-parents": "^5.1.1" - } - }, - "unist-util-visit-parents": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.1.tgz", - "integrity": "sha512-gks4baapT/kNRaWxuGkl5BIhoanZo7sC/cUT/JToSRNL1dYoXRFl75d++NkjYk4TAu2uv2Px+l8guMajogeuiw==", - "requires": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0" - } - }, - "vfile": { - "version": "5.3.5", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.5.tgz", - "integrity": "sha512-U1ho2ga33eZ8y8pkbQLH54uKqGhFJ6GYIHnnG5AhRpAh3OWjkrRHKa/KogbmQn8We+c0KVV3rTOgR9V/WowbXQ==", - "requires": { - "@types/unist": "^2.0.0", - "is-buffer": "^2.0.0", - "unist-util-stringify-position": "^3.0.0", - "vfile-message": "^3.0.0" - } } } }, @@ -53630,6 +59059,33 @@ "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-1.1.0.tgz", "integrity": "sha512-jVU0Nr2B9X3MU4tSK7JP1CMkSvOj7X5l/GboG1tKRw52lLF1x2Ju92Ms9tNetCcbfX3hzlM73zYo2NKkWSfF/A==", "dev": true + }, + "unist-util-is": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", + "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==", + "dev": true + }, + "unist-util-visit": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz", + "integrity": "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0", + "unist-util-visit-parents": "^3.0.0" + } + }, + "unist-util-visit-parents": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz", + "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0" + } } } }, @@ -53647,6 +59103,36 @@ "integrity": "sha512-mWmNg3ZtESvZS8fv5PTvaPckdL4iNlCHTt8/e/8oN08nArHRHjNZMKzA/YW3+p7/lYqIw4nx1XsjCBo/AxNChg==", "requires": { "mdast-util-to-markdown": "^0.6.0" + }, + "dependencies": { + "longest-streak": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.4.tgz", + "integrity": "sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==" + }, + "mdast-util-to-markdown": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-0.6.5.tgz", + "integrity": "sha512-XeV9sDE7ZlOQvs45C9UKMtfTcctcaj/pGwH8YLbMHoMOXNNCn2LsqVQOqrF1+/NU8lKDAqozme9SCXWyo9oAcQ==", + "requires": { + "@types/unist": "^2.0.0", + "longest-streak": "^2.0.0", + "mdast-util-to-string": "^2.0.0", + "parse-entities": "^2.0.0", + "repeat-string": "^1.0.0", + "zwitch": "^1.0.0" + } + }, + "mdast-util-to-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz", + "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==" + }, + "zwitch": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz", + "integrity": "sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==" + } } }, "remarkable": { @@ -53656,16 +59142,6 @@ "requires": { "argparse": "^1.0.10", "autolinker": "~0.28.0" - }, - "dependencies": { - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "requires": { - "sprintf-js": "~1.0.2" - } - } } }, "remove-trailing-separator": { @@ -53698,49 +59174,6 @@ "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", "dev": true }, - "dom-serializer": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", - "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", - "dev": true, - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - } - }, - "domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", - "dev": true, - "requires": { - "domelementtype": "^2.2.0" - } - }, - "domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "dev": true, - "requires": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - } - }, - "htmlparser2": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", - "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", - "dev": true, - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^4.0.0", - "domutils": "^2.5.2", - "entities": "^2.0.0" - } - }, "strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", @@ -53786,7 +59219,8 @@ "requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true }, "resize-observer-polyfill": { "version": "1.5.1", @@ -53904,10 +59338,21 @@ "ret": "~0.1.10" } }, + "safe-regex-test": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", + "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-regex": "^1.1.4" + } + }, "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "devOptional": true }, "sane": { "version": "4.1.0", @@ -54160,6 +59605,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "dev": true, "requires": { "xmlchars": "^2.2.0" } @@ -54202,6 +59648,12 @@ "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", "dev": true, "requires": {} + }, + "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 } } }, @@ -54436,6 +59888,29 @@ "ansi-styles": "^4.0.0", "astral-regex": "^2.0.0", "is-fullwidth-code-point": "^3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "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==", + "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==" + } } }, "snapdragon": { @@ -54631,9 +60106,9 @@ "devOptional": true }, "space-separated-tokens": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz", - "integrity": "sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==" + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.1.tgz", + "integrity": "sha512-ekwEbFp5aqSPKaqeY1PGrlGQxPNaq+Cnx4+bE2D8sciBQrHpbwoBbawqTN2+6jPs9IdWxxiUcN0K2pkczD3zmw==" }, "spdx-correct": { "version": "3.1.1", @@ -55033,15 +60508,19 @@ } }, "stringify-entities": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-2.0.0.tgz", - "integrity": "sha512-fqqhZzXyAM6pGD9lky/GOPq6V4X0SeTAFBl0iXb/BzOegl40gpf/bV3QQP7zULNYvjr6+Dx8SCaDULjVoOru0A==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.3.tgz", + "integrity": "sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g==", "requires": { - "character-entities-html4": "^1.0.0", - "character-entities-legacy": "^1.0.0", - "is-alphanumerical": "^1.0.0", - "is-decimal": "^1.0.2", - "is-hexadecimal": "^1.0.0" + "character-entities-html4": "^2.0.0", + "character-entities-legacy": "^3.0.0" + }, + "dependencies": { + "character-entities-legacy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", + "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==" + } } }, "strip-ansi": { @@ -55116,9 +60595,8 @@ "@stripe/stripe-js": "^1.25.0", "@supabase/postgres-meta": "^0.26.1", "@supabase/react-data-grid": "^7.1.0-beta.7", - "@supabase/shared-types": "^0.1.25", - "@supabase/supabase-js": "^2.0.0-rc.2", - "@supabase/ui": "0.37.0-alpha.80", + "@supabase/shared-types": "^0.1.29", + "@supabase/supabase-js": "^2.0.0", "@tailwindcss/typography": "^0.5.2", "@testing-library/dom": "^8.11.1", "@testing-library/react": "^12.1.2", @@ -55155,6 +60633,7 @@ "dayjs": "^1.11.0", "file-saver": "^2.0.5", "generate-password": "^1.7.0", + "html-to-image": "^1.10.8", "immutability-helper": "^3.1.1", "jest": "^27.4.0", "jest-canvas-mock": "^2.3.1", @@ -55179,7 +60658,7 @@ "react-beautiful-dnd": "^13.1.0", "react-contexify": "^5.0.0", "react-csv": "^2.0.3", - "react-datepicker": "^4.6.0", + "react-datepicker": "^4.8.0", "react-dnd": "^14.0.3", "react-dnd-html5-backend": "^14.0.1", "react-dom": "^17.0.2", @@ -55202,6 +60681,7 @@ "tailwindcss": "^3.0.22", "ts-jest": "^27.0.7", "typescript": "4.3.4", + "ui": "*", "uniforms-bootstrap4": "^3.6.2", "uniforms-bridge-json-schema": "^3.6.2", "uuid": "^8.3.2", @@ -55209,23 +60689,8 @@ "zxcvbn": "^4.4.2" }, "dependencies": { - "@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, "@next/env": { - "version": "12.0.9", - "resolved": "https://registry.npmjs.org/@next/env/-/env-12.0.9.tgz", - "integrity": "sha512-oBlkyDop0Stf7MPIzETGv5r0YT/G/weBrknoPOUTaa5qwOeGjuy6gsOVc/SBtrBkOoBmRpD+fFhQJPvmo1mS+g==" + "version": "12.0.9" }, "@next/swc-android-arm64": { "version": "12.0.9", @@ -55235,8 +60700,6 @@ }, "@next/swc-darwin-arm64": { "version": "12.0.9", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-12.0.9.tgz", - "integrity": "sha512-uAgRKm4a2nVdyBiPPJokvmDD1saugOvxljz9ld2ih0CCg5S9vBhqaj3kPGCQBj9hSu3q+Lng2CHnQqG3ga1jzA==", "optional": true }, "@next/swc-darwin-x64": { @@ -55293,93 +60756,9 @@ "integrity": "sha512-1c/sxp/4Qz4F6rCxiYqAnrmghCOFt5hHZ9Kd+rXFW5Mqev4C4XDOUMHdBH55HgnJZqngYhOE0r/XNkCtsIojig==", "optional": true }, - "@supabase/functions-js": { - "version": "2.0.0-rc.2", - "resolved": "https://registry.npmjs.org/@supabase/functions-js/-/functions-js-2.0.0-rc.2.tgz", - "integrity": "sha512-SSgqdL9NKRwEEEHMRnou0rYdYLdu1e7hsEwsaDr6cycmt5YS002ia8sGnj02ytPmgDk/wv+Y8DMdGd4QfZHAOA==", - "requires": { - "cross-fetch": "^3.1.5" - } - }, - "@supabase/gotrue-js": { - "version": "2.0.0-rc.5", - "resolved": "https://registry.npmjs.org/@supabase/gotrue-js/-/gotrue-js-2.0.0-rc.5.tgz", - "integrity": "sha512-7oeQKkphuLNtCusXirckTCrmF7tu0mR/EM/j5rUwobBIc84gDJ6efcTdYoSLdGm7G30oNeoUmtOSidOUePRgPA==", - "requires": { - "cross-fetch": "^3.1.5" - } - }, - "@supabase/postgrest-js": { - "version": "1.0.0-rc.5", - "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-1.0.0-rc.5.tgz", - "integrity": "sha512-rBOyhK+qLd2fdX6WbCW3e9gY9qbwC5Zeso6QWM+00RlRz3k156lxnreVpe4KKGXNT3JMqJwAHXjQ2lbxmtBJqg==", - "requires": { - "cross-fetch": "^3.1.5" - } - }, - "@supabase/realtime-js": { - "version": "2.0.0-rc.5", - "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-2.0.0-rc.5.tgz", - "integrity": "sha512-0JiSJjoTmwleufGzBQwEVamI047jnAiemBk8qOkgwyoLOlfGTQk8XSA7aT023BsGVgRNKZqp/jJJAVBht/Rd2w==", - "requires": { - "@types/phoenix": "^1.5.4", - "websocket": "^1.0.34" - } - }, - "@supabase/storage-js": { - "version": "2.0.0-rc.2", - "resolved": "https://registry.npmjs.org/@supabase/storage-js/-/storage-js-2.0.0-rc.2.tgz", - "integrity": "sha512-KovBS7+uJYu8KSvwWPFB6ZPAFFZFnj6s72GvDqhkWpGHIC1OLijYQ9/sRWq2Y+G6HofB8szz4+KLvtyxrgX6AQ==", - "requires": { - "cross-fetch": "^3.1.5" - } - }, - "@supabase/supabase-js": { - "version": "2.0.0-rc.10", - "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.0.0-rc.10.tgz", - "integrity": "sha512-0yjcWm7YnyPcuHl4OOhUkWzyyvFpGeuKdK0x5HKVROApadVcUZEz5/Zng8J32TbmD0nSMhU/IDBYhVfjZrLSYw==", - "requires": { - "@supabase/functions-js": "^2.0.0-rc.1", - "@supabase/gotrue-js": "^2.0.0-rc.4", - "@supabase/postgrest-js": "^1.0.0-rc.5", - "@supabase/realtime-js": "^2.0.0-rc.5", - "@supabase/storage-js": "^2.0.0-rc.1", - "cross-fetch": "^3.1.5" - } - }, - "@supabase/ui": { - "version": "0.37.0-alpha.80", - "resolved": "https://registry.npmjs.org/@supabase/ui/-/ui-0.37.0-alpha.80.tgz", - "integrity": "sha512-oTBX43SipvCOmdG4UTt2yM//Meqfof4j7Fgmdi6rAn2EGpqo9xVqWxqlCLLvcbaK94Sl0i5R43zZEWz6RJoUIg==", - "requires": { - "@headlessui/react": "^1.0.0", - "@mertasan/tailwindcss-variables": "^2.0.1", - "@radix-ui/colors": "^0.1.8", - "@radix-ui/react-accordion": "^0.1.5", - "@radix-ui/react-collapsible": "^0.1.5", - "@radix-ui/react-context-menu": "^0.1.0", - "@radix-ui/react-dialog": "^0.1.5", - "@radix-ui/react-dropdown-menu": "^0.1.4", - "@radix-ui/react-popover": "^0.1.0", - "@radix-ui/react-portal": "^0.1.3", - "@radix-ui/react-tabs": "^0.1.0", - "@tailwindcss/forms": "^0.4.0", - "@tailwindcss/typography": "^0.5.0", - "autoprefixer": "^10.4.2", - "deepmerge": "^4.2.2", - "formik": "^2.2.9", - "fsevents": "^2.3.2", - "lodash": "^4.17.20", - "postcss": "^8.4.5", - "prop-types": "^15.7.2", - "tailwindcss": "^3.0.15", - "tailwindcss-radix": "^1.6.0" - } - }, "@tailwindcss/typography": { "version": "0.5.7", - "resolved": "https://registry.npmjs.org/@tailwindcss/typography/-/typography-0.5.7.tgz", - "integrity": "sha512-JTTSTrgZfp6Ki4svhPA4mkd9nmQ/j9EfE7SbHJ1cLtthKkpW2OxsFXzSmxbhYbEkfNIyAyhle5p4SYyKRbz/jg==", + "dev": true, "requires": { "lodash.castarray": "^4.4.0", "lodash.isplainobject": "^4.0.6", @@ -55387,22 +60766,8 @@ "postcss-selector-parser": "6.0.10" } }, - "@types/jest": { - "version": "27.5.2", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.5.2.tgz", - "integrity": "sha512-mpT8LJJ4CMeeahobofYWIjFo0xonRS/HfxnVEPMPFSQdGUt1uHCnoPT7Zhb+sjDU2wz0oKV0OLUR0WzrHNgfeA==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "jest-matcher-utils": "^27.0.0", - "pretty-format": "^27.0.0" - } - }, "@types/react": { "version": "17.0.11", - "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.11.tgz", - "integrity": "sha512-yFRQbD+whVonItSk7ZzP/L+gPTJVBkL/7shLEF+i9GC/1cV3JmUxEQz6+9ylhUpWSDuqo1N9qEvqS6vTj4USUA==", "dev": true, "requires": { "@types/prop-types": "*", @@ -55410,19 +60775,9 @@ "csstype": "^3.0.2" } }, - "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, "autoprefixer": { "version": "10.4.2", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.2.tgz", - "integrity": "sha512-9fOPpHKuDW1w/0EKfRmVnxTDt8166MAnLI3mgZ1JCnhNtYWxcJ6Ud5CO/AVOZi/AvFa8DY9RTy3h3+tFBlrrdQ==", + "dev": true, "requires": { "browserslist": "^4.19.1", "caniuse-lite": "^1.0.30001297", @@ -55432,24 +60787,8 @@ "postcss-value-parser": "^4.2.0" } }, - "jest-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", - "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", - "dev": true, - "requires": { - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - } - }, "next": { "version": "12.0.9", - "resolved": "https://registry.npmjs.org/next/-/next-12.0.9.tgz", - "integrity": "sha512-omfYqoR/DvbdOIJ6SS1unKJ4mGIxUPs0RPa7wr/Mft22OCKgJhuG+aI9KFYi5ZJBwoFQk1vqaMKpWz5qr+dN0Q==", "requires": { "@next/env": "12.0.9", "@next/swc-android-arm64": "12.0.9", @@ -55471,8 +60810,6 @@ "dependencies": { "postcss": { "version": "8.4.5", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.5.tgz", - "integrity": "sha512-jBDboWM8qpaqwkMwItqTQTiFikhs/67OYVvblFFTM7MrZjt6yMKd6r2kgXizEbTTljacm4NldIlZnhbjr84QYg==", "requires": { "nanoid": "^3.1.30", "picocolors": "^1.0.0", @@ -55481,49 +60818,16 @@ }, "styled-jsx": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.0.0.tgz", - "integrity": "sha512-qUqsWoBquEdERe10EW8vLp3jT25s/ssG1/qX5gZ4wu15OZpmSMFI2v+fWlRhLfykA5rFtlJ1ME8A8pm/peV4WA==", "requires": {} } } }, "swr": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/swr/-/swr-1.3.0.tgz", - "integrity": "sha512-dkghQrOl2ORX9HYrMDtPa7LTVHJjCTeZoB1dqTbnnEDlSvN8JEKpYIYurDfvbQFUUS8Cg8PceFVZNkW0KNNYPw==", "requires": {} }, - "ts-jest": { - "version": "27.1.5", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.1.5.tgz", - "integrity": "sha512-Xv6jBQPoBEvBq/5i2TeSG9tt/nqkbpcurrEG1b+2yfBrcJelOZF9Ml6dmyMh7bcW9JyFbRYpR5rxROSlBLTZHA==", - "dev": true, - "requires": { - "bs-logger": "0.x", - "fast-json-stable-stringify": "2.x", - "jest-util": "^27.0.0", - "json5": "2.x", - "lodash.memoize": "4.x", - "make-error": "1.x", - "semver": "7.x", - "yargs-parser": "20.x" - }, - "dependencies": { - "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" - } - } - } - }, "typescript": { "version": "4.3.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.3.4.tgz", - "integrity": "sha512-uauPG7XZn9F/mo+7MrsRjyvbxFpzemRjKEZXS4AK83oP2KKOJPvb+9cO/gmnv8arWZvhnjVOXz7B49m1l0e9Ew==", "dev": true } } @@ -55557,6 +60861,12 @@ "dev": true, "requires": {} }, + "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 + }, "schema-utils": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", @@ -55659,12 +60969,203 @@ "integrity": "sha512-nTbZoaqoBnmK+ptANthb10ZRZOGC+EmTLLUxeYIuHNkEKcmKgXX1XWKkUBT2Ac4es3NybooPe0SmvKdhKJZAuw==", "requires": {} }, - "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==", + "supabase-tests": { + "version": "file:tests", "requires": { - "has-flag": "^4.0.0" + "@faker-js/faker": "^6.1.2", + "@supabase/supabase-js": "^2.0.0", + "@testdeck/jest": "^0.2.0", + "@types/jest": "^27.4.0", + "@types/node": "^17.0.24", + "@typescript-eslint/eslint-plugin": "^5.10.0", + "@typescript-eslint/parser": "^5.10.0", + "allure-commandline": "^2.17.2", + "allure-js-commons": "^2.0.0-beta.14", + "cross-fetch": "^3.1.5", + "eslint": "^8.7.0", + "jest": "^27.4.7", + "jest-allure2-adapter": "^0.3.11", + "postgres": "^3.0.5", + "ts-jest": "^27.1.3", + "ts-node": "^10.7.0", + "typescript": "^4.6.3" + }, + "dependencies": { + "@humanwhocodes/config-array": { + "version": "0.10.7", + "dev": true, + "requires": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + } + }, + "ajv": { + "version": "6.12.6", + "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-styles": { + "version": "4.3.0", + "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-union": { + "version": "2.1.0", + "dev": true + }, + "chalk": { + "version": "4.1.2", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "dev": true + }, + "escape-string-regexp": { + "version": "4.0.0", + "dev": true + }, + "eslint": { + "version": "8.24.0", + "dev": true, + "requires": { + "@eslint/eslintrc": "^1.3.2", + "@humanwhocodes/config-array": "^0.10.5", + "@humanwhocodes/gitignore-to-minimatch": "^1.0.2", + "@humanwhocodes/module-importer": "^1.0.1", + "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.4.0", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.1", + "globals": "^13.15.0", + "globby": "^11.1.0", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-sdsl": "^4.1.4", + "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" + } + }, + "eslint-scope": { + "version": "7.1.1", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + } + }, + "globals": { + "version": "13.17.0", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "globby": { + "version": "11.1.0", + "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-flag": { + "version": "4.0.0", + "dev": true + }, + "js-yaml": { + "version": "4.1.0", + "dev": true, + "requires": { + "argparse": "^2.0.1" + } + }, + "json-schema-traverse": { + "version": "0.4.1", + "dev": true + }, + "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" + } + }, + "supports-color": { + "version": "7.2.0", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" } }, "supports-hyperlinks": { @@ -55675,6 +61176,23 @@ "requires": { "has-flag": "^4.0.0", "supports-color": "^7.0.0" + }, + "dependencies": { + "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 + }, + "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": { @@ -55699,15 +61217,11 @@ "dequal": "2.0.2" } }, - "symbol-observable": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz", - "integrity": "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==" - }, "symbol-tree": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==" + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true }, "symbol.prototype.description": { "version": "1.0.5", @@ -55766,6 +61280,13 @@ "postcss-value-parser": "^4.2.0", "quick-lru": "^5.1.1", "resolve": "^1.22.1" + }, + "dependencies": { + "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==" + } } }, "tailwindcss-radix": { @@ -55825,155 +61346,6 @@ } } }, - "temp-docs": { - "version": "file:apps/temp-docs", - "requires": { - "@apollo/client": "^3.6.6", - "@mdx-js/loader": "^1.6.22", - "@mdx-js/react": "^1.6.22", - "@next/mdx": "^12.0.4", - "@supabase/ui": "v0.37.0-alpha.50", - "@tailwindcss/typography": "^0.4.1", - "@types/node": "^17.0.12", - "@types/react": "17.0.39", - "common": "*", - "config": "*", - "eslint": "8.9.0", - "graphql": "^16.5.0", - "gray-matter": "^4.0.3", - "markdown-toc": "^1.2.0", - "next": "12.1.0", - "next-mdx-remote": "^3.0.8", - "next-themes": "0.0.15", - "next-transpile-modules": "9.0.0", - "react": "17.0.2", - "react-copy-to-clipboard": "^5.0.2", - "react-dom": "17.0.2", - "react-markdown": "^8.0.3", - "react-syntax-highlighter": "^15.3.1", - "remark": "^14.0.2", - "remark-html": "^15.0.0", - "remark-mdx": "^2.0.0-rc.2", - "remark-prism": "^1.3.6", - "tsconfig": "*", - "typescript": "^4.5.3" - }, - "dependencies": { - "@mdx-js/react": { - "version": "1.6.22", - "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-1.6.22.tgz", - "integrity": "sha512-TDoPum4SHdfPiGSAaRBw7ECyI8VaHpK8GJugbJIJuqyh6kzw9ZLJZW3HGL3NNrJGxcAixUvqROm+YuQOo5eXtg==", - "requires": {} - }, - "@types/react": { - "version": "17.0.39", - "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.39.tgz", - "integrity": "sha512-UVavlfAxDd/AgAacMa60Azl7ygyQNRwC/DsHZmKgNvPmRR5p70AJ5Q9EAmL2NWOJmeV+vVUI4IAP7GZrN8h8Ug==", - "dev": true, - "requires": { - "@types/prop-types": "*", - "@types/scheduler": "*", - "csstype": "^3.0.2" - } - }, - "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" - } - }, - "eslint": { - "version": "8.9.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.9.0.tgz", - "integrity": "sha512-PB09IGwv4F4b0/atrbcMFboF/giawbBLVC7fyDamk5Wtey4Jh2K+rYaBhCAbUyEI4QzB1ly09Uglc9iCtFaG2Q==", - "dev": true, - "requires": { - "@eslint/eslintrc": "^1.1.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.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": "^6.0.1", - "globals": "^13.6.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.0.4", - "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" - } - }, - "next": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/next/-/next-12.1.0.tgz", - "integrity": "sha512-s885kWvnIlxsUFHq9UGyIyLiuD0G3BUC/xrH0CEnH5lHEWkwQcHOORgbDF0hbrW9vr/7am4ETfX4A7M6DjrE7Q==", - "requires": { - "@next/env": "12.1.0", - "@next/swc-android-arm64": "12.1.0", - "@next/swc-darwin-arm64": "12.1.0", - "@next/swc-darwin-x64": "12.1.0", - "@next/swc-linux-arm-gnueabihf": "12.1.0", - "@next/swc-linux-arm64-gnu": "12.1.0", - "@next/swc-linux-arm64-musl": "12.1.0", - "@next/swc-linux-x64-gnu": "12.1.0", - "@next/swc-linux-x64-musl": "12.1.0", - "@next/swc-win32-arm64-msvc": "12.1.0", - "@next/swc-win32-ia32-msvc": "12.1.0", - "@next/swc-win32-x64-msvc": "12.1.0", - "caniuse-lite": "^1.0.30001283", - "postcss": "8.4.5", - "styled-jsx": "5.0.0", - "use-subscription": "1.5.1" - }, - "dependencies": { - "styled-jsx": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.0.0.tgz", - "integrity": "sha512-qUqsWoBquEdERe10EW8vLp3jT25s/ssG1/qX5gZ4wu15OZpmSMFI2v+fWlRhLfykA5rFtlJ1ME8A8pm/peV4WA==", - "requires": {} - } - } - }, - "postcss": { - "version": "8.4.5", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.5.tgz", - "integrity": "sha512-jBDboWM8qpaqwkMwItqTQTiFikhs/67OYVvblFFTM7MrZjt6yMKd6r2kgXizEbTTljacm4NldIlZnhbjr84QYg==", - "requires": { - "nanoid": "^3.1.30", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.1" - } - } - } - }, "terminal-link": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", @@ -56053,6 +61425,12 @@ "path-exists": "^4.0.0" } }, + "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 + }, "jest-worker": { "version": "26.6.2", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", @@ -56111,10 +61489,19 @@ "find-up": "^4.0.0" } }, + "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" + } + }, "terser": { - "version": "5.15.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.15.0.tgz", - "integrity": "sha512-L1BJiXVmheAQQy+as0oF3Pwtlo4s3Wi1X2zNZ2NxOB4wx9bdS9Vk67XQENLFdLYGCK/Z2di53mTj/hBafR+dTA==", + "version": "5.15.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.15.1.tgz", + "integrity": "sha512-K1faMUvpm/FBxjBXud0LWVAGxmvoPbZbfTCYbSgaaYQaIXI3/TdI7a7ZGA73Zrou6Q8Zmz3oeUTsp/dj+ag2Xw==", "dev": true, "requires": { "@jridgewell/source-map": "^0.3.2", @@ -56171,9 +61558,9 @@ "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==" }, "tiny-invariant": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.2.0.tgz", - "integrity": "sha512-1Uhn/aqw5C6RI4KejVeTg6mIS7IqxnLJ8Mv2tV5rTc0qWobay7pDUz6Wi392Cnc8ak1H0F2cjoRzb2/AW4+Fvg==" + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.1.tgz", + "integrity": "sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==" }, "tiny-warning": { "version": "1.0.3", @@ -56302,6 +61689,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.2.tgz", "integrity": "sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==", + "dev": true, "requires": { "psl": "^1.1.33", "punycode": "^2.1.1", @@ -56312,7 +61700,8 @@ "universalify": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", - "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==" + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "dev": true } } }, @@ -56320,6 +61709,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", + "dev": true, "requires": { "punycode": "^2.1.1" } @@ -56330,9 +61720,9 @@ "integrity": "sha512-YzQV+TZg4AxpKxaTHK3c3D+kRDCGVEE7LemdlQZoQXn0iennk10RsIoY6ikzAqJTc9Xjl9C1/waHom/J86ziAQ==" }, "trim-lines": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-1.1.3.tgz", - "integrity": "sha512-E0ZosSWYK2mkSu+KEtQ9/KqarVjA9HztOSX+9FDdNacRAq29RRV6ZQNgob3iuW8Htar9vAfEa6yyt5qBAHZDBA==" + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", + "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==" }, "trim-newlines": { "version": "1.0.0", @@ -56357,12 +61747,157 @@ "integrity": "sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==", "dev": true }, - "ts-invariant": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.10.3.tgz", - "integrity": "sha512-uivwYcQaxAucv1CzRp2n/QdYPo4ILf9VXgH19zEIjFx2EJufV16P0JtJVpYHy89DItG6Kwj2oIUjrcK5au+4tQ==", + "ts-jest": { + "version": "27.1.5", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.1.5.tgz", + "integrity": "sha512-Xv6jBQPoBEvBq/5i2TeSG9tt/nqkbpcurrEG1b+2yfBrcJelOZF9Ml6dmyMh7bcW9JyFbRYpR5rxROSlBLTZHA==", + "dev": true, "requires": { - "tslib": "^2.1.0" + "bs-logger": "0.x", + "fast-json-stable-stringify": "2.x", + "jest-util": "^27.0.0", + "json5": "2.x", + "lodash.memoize": "4.x", + "make-error": "1.x", + "semver": "7.x", + "yargs-parser": "20.x" + }, + "dependencies": { + "@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "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" + } + }, + "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 + }, + "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 + }, + "jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + } + }, + "semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "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" + } + } + } + }, + "ts-node": { + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", + "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", + "devOptional": true, + "requires": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + }, + "dependencies": { + "acorn": { + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", + "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", + "devOptional": true + }, + "acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "devOptional": true + }, + "arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "devOptional": true + } } }, "ts-pnp": { @@ -56546,23 +62081,6 @@ "dev": true, "optional": true }, - "tutorials": { - "version": "file:apps/temp-community-tutorials", - "requires": { - "@types/node": "^17.0.12", - "@types/react": "17.0.37", - "colorette": "^1.4.0", - "common": "*", - "config": "*", - "eslint": "7.32.0", - "next": "12.0.8", - "next-transpile-modules": "9.0.0", - "react": "17.0.2", - "react-dom": "17.0.2", - "tsconfig": "*", - "typescript": "^4.5.3" - } - }, "type": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", @@ -56611,17 +62129,62 @@ } }, "typescript": { - "version": "4.8.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.3.tgz", - "integrity": "sha512-goMHfm00nWPa8UvR/CPSvykqf6dVV8x/dp0c5mFTMTIu0u0FlGWRioyy7Nn0PGAdHxpJZnuO/ut+PpQ8UiHAig==" + "version": "4.8.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.4.tgz", + "integrity": "sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==" }, "uglify-js": { - "version": "3.17.1", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.1.tgz", - "integrity": "sha512-+juFBsLLw7AqMaqJ0GFvlsGZwdQfI2ooKQB39PSBgMnMakcFosi9O8jCwE+2/2nMNcc0z63r9mwjoDG8zr+q0Q==", + "version": "3.17.3", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.3.tgz", + "integrity": "sha512-JmMFDME3iufZnBpyKL+uS78LRiC+mK55zWfM5f/pWBJfpOttXAqYfdDGRukYhJuyRinvPVAtUhvy7rlDybNtFg==", "dev": true, "optional": true }, + "ui": { + "version": "file:packages/ui", + "requires": { + "@headlessui/react": "^1.0.0", + "@mertasan/tailwindcss-variables": "^2.0.1", + "@radix-ui/colors": "^0.1.8", + "@radix-ui/react-accordion": "^0.1.5", + "@radix-ui/react-collapsible": "^0.1.5", + "@radix-ui/react-context-menu": "^0.1.0", + "@radix-ui/react-dialog": "^0.1.5", + "@radix-ui/react-dropdown-menu": "^0.1.4", + "@radix-ui/react-popover": "^0.1.0", + "@radix-ui/react-portal": "^0.1.3", + "@radix-ui/react-tabs": "^0.1.0", + "@tailwindcss/forms": "^0.4.0", + "@tailwindcss/typography": "^0.5.0", + "@types/react": "^17.0.37", + "@types/react-dom": "^17.0.11", + "autoprefixer": "^10.4.2", + "deepmerge": "^4.2.2", + "formik": "^2.2.9", + "lodash": "^4.17.20", + "postcss": "^8.4.5", + "prop-types": "^15.7.2", + "react-feather": "^2.0.10", + "tailwindcss": "^3.0.15", + "tailwindcss-radix": "^1.6.0", + "typescript": "4.3.4" + }, + "dependencies": { + "@tailwindcss/typography": { + "version": "0.5.7", + "requires": { + "lodash.castarray": "^4.4.0", + "lodash.isplainobject": "^4.0.6", + "lodash.merge": "^4.6.2", + "postcss-selector-parser": "6.0.10" + } + }, + "typescript": { + "version": "4.3.4", + "dev": true + } + } + }, "unbox-primitive": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", @@ -56651,12 +62214,14 @@ "unicode-canonical-property-names-ecmascript": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", - "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==" + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "dev": true }, "unicode-match-property-ecmascript": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, "requires": { "unicode-canonical-property-names-ecmascript": "^2.0.0", "unicode-property-aliases-ecmascript": "^2.0.0" @@ -56665,12 +62230,14 @@ "unicode-match-property-value-ecmascript": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", - "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==" + "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", + "dev": true }, "unicode-property-aliases-ecmascript": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", - "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==" + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "dev": true }, "unified": { "version": "9.2.2", @@ -56689,13 +62256,41 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==" + }, + "unist-util-stringify-position": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", + "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==", + "requires": { + "@types/unist": "^2.0.2" + } + }, + "vfile": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz", + "integrity": "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==", + "requires": { + "@types/unist": "^2.0.0", + "is-buffer": "^2.0.0", + "unist-util-stringify-position": "^2.0.0", + "vfile-message": "^2.0.0" + } + }, + "vfile-message": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz", + "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==", + "requires": { + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^2.0.0" + } } } }, "uniforms": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/uniforms/-/uniforms-3.10.0.tgz", - "integrity": "sha512-wp8mnm5DqRzGUQwbEIG6sfpnu5H+gCncL5g3Cmohax9E1bmn4PattsBRI88gSMLckZNZdpA79LX1f8QdQFub/g==", + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/uniforms/-/uniforms-3.10.1.tgz", + "integrity": "sha512-R2FBzYVv9KbgsYaVloL13Cw+eoF9q1DeSZOePBf28WWDtHFWNrziUZBPgmd4UVbk+6oQuwkbomX7BnNJ/jdtqw==", "requires": { "invariant": "^2.0.0", "lodash": "^4.0.0", @@ -56703,27 +62298,27 @@ } }, "uniforms-bootstrap4": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/uniforms-bootstrap4/-/uniforms-bootstrap4-3.10.0.tgz", - "integrity": "sha512-0C/kp1Uo7W7Y/PFJm39iWyCUhWuCEQ5q3tjVL7Kmf/gpBG05Rmyp0OiWl1hY2csYQvzzid6uusYRmq1H6pSivw==", + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/uniforms-bootstrap4/-/uniforms-bootstrap4-3.10.1.tgz", + "integrity": "sha512-zxSNc3rViHhKF2P2uyak566+F66MOPoj3dAdf2S9xt44zCVvLtSAg+LVV8MMsL6USqVg5oSQeMEHp277bPSAnw==", "requires": { "classnames": "^2.0.0", "invariant": "^2.0.0", "lodash": "^4.0.0", "tslib": "^2.2.0", - "uniforms": "^3.10.0", + "uniforms": "^3.10.1", "warning": "^4.0.0" } }, "uniforms-bridge-json-schema": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/uniforms-bridge-json-schema/-/uniforms-bridge-json-schema-3.10.0.tgz", - "integrity": "sha512-MGGV9w+Y9ZMNQq9KI58ll3Bb0wAJyQvilg2j4mLnmtJi/10zW2JNL+88QZjELlfHPO8UZxT2LZkKUQyG8SGDbQ==", + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/uniforms-bridge-json-schema/-/uniforms-bridge-json-schema-3.10.1.tgz", + "integrity": "sha512-AVC+HSTQplF28o7f7Cvc+ezTr07dO+OkRSYaG7Ip8VyGi7BSmORYOKCU8LMkKlLm3Ez3QhHCGnDdLwy9d9Vqgw==", "requires": { "invariant": "^2.0.0", "lodash": "^4.0.0", "tslib": "^2.2.0", - "uniforms": "^3.10.0" + "uniforms": "^3.10.1" } }, "union-value": { @@ -56763,33 +62358,30 @@ } }, "unist-builder": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/unist-builder/-/unist-builder-2.0.3.tgz", - "integrity": "sha512-f98yt5pnlMWlzP539tPc4grGMsFaQQlP/vM396b00jngsiINumNmsY8rkXjfoi1c6QaM8nQ3vaGDuoKWbe/1Uw==" - }, - "unist-util-generated": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-1.1.6.tgz", - "integrity": "sha512-cln2Mm1/CZzN5ttGK7vkoGw+RZ8VcUH6BtGbq98DDtRGquAAOXig1mrBQYelOwMXYS8rK+vZDyyojSjp7JX+Lg==" - }, - "unist-util-is": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-3.0.0.tgz", - "integrity": "sha512-sVZZX3+kspVNmLWBPAB6r+7D9ZgAFPNWm66f7YNb420RlQSbn+n8rG8dGZSkrER7ZIXGQYNm5pqC3v3HopH24A==" - }, - "unist-util-map": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/unist-util-map/-/unist-util-map-2.0.1.tgz", - "integrity": "sha512-VdNvk4BQUUU9Rgr8iUOvclHa/iN9O+6Dt66FKij8l9OVezGG37gGWCPU5KSax1R2degqXFvl3kWTkvzL79e9tQ==", + "resolved": "https://registry.npmjs.org/unist-builder/-/unist-builder-3.0.0.tgz", + "integrity": "sha512-GFxmfEAa0vi9i5sd0R2kcrI9ks0r82NasRq5QHh2ysGngrc6GiqD5CDf1FjPenY4vApmFASBIIlk/jj5J5YbmQ==", "requires": { - "@types/mdast": "^3.0.0", - "object-assign": "^4.0.0" + "@types/unist": "^2.0.0" } }, + "unist-util-generated": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-2.0.0.tgz", + "integrity": "sha512-TiWE6DVtVe7Ye2QxOVW9kqybs6cZexNwTwSMVgkfjEReqy/xwGpAXb99OxktoWwmL+Z+Epb0Dn8/GNDYP1wnUw==" + }, + "unist-util-is": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.1.1.tgz", + "integrity": "sha512-F5CZ68eYzuSvJjGhCLPL3cYx45IxkqXSetCcRgUXtbcm50X2L9oOWQlfUfDdAf+6Pd27YDblBfdtmsThXmwpbQ==" + }, "unist-util-position": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-3.1.0.tgz", - "integrity": "sha512-w+PkwCbYSFw8vpgWD0v7zRCl1FpY3fjDSQ3/N/wNd9Ffa4gPi8+4keqt99N3XW6F99t/mUzp2xAhNmfKWp95QA==" + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-4.0.3.tgz", + "integrity": "sha512-p/5EMGIa1qwbXjA+QgcBXaPWjSnZfQ2Sc3yBEEfgPwsEmJd8Qh+DSk3LGnmOM4S1bY2C0AjmMnB8RuEYxpPwXQ==", + "requires": { + "@types/unist": "^2.0.0" + } }, "unist-util-position-from-estree": { "version": "1.1.1", @@ -56821,32 +62413,6 @@ "requires": { "@types/unist": "^2.0.0", "unist-util-visit": "^4.0.0" - }, - "dependencies": { - "unist-util-is": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.1.1.tgz", - "integrity": "sha512-F5CZ68eYzuSvJjGhCLPL3cYx45IxkqXSetCcRgUXtbcm50X2L9oOWQlfUfDdAf+6Pd27YDblBfdtmsThXmwpbQ==" - }, - "unist-util-visit": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.1.tgz", - "integrity": "sha512-n9KN3WV9k4h1DxYR1LoajgN93wpEi/7ZplVe02IoB4gH5ctI1AaF2670BLHQYbwj+pY83gFtyeySFiyMHJklrg==", - "requires": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0", - "unist-util-visit-parents": "^5.1.1" - } - }, - "unist-util-visit-parents": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.1.tgz", - "integrity": "sha512-gks4baapT/kNRaWxuGkl5BIhoanZo7sC/cUT/JToSRNL1dYoXRFl75d++NkjYk4TAu2uv2Px+l8guMajogeuiw==", - "requires": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0" - } - } } }, "unist-util-stringify-position": { @@ -56858,40 +62424,23 @@ } }, "unist-util-visit": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz", - "integrity": "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.1.tgz", + "integrity": "sha512-n9KN3WV9k4h1DxYR1LoajgN93wpEi/7ZplVe02IoB4gH5ctI1AaF2670BLHQYbwj+pY83gFtyeySFiyMHJklrg==", "requires": { "@types/unist": "^2.0.0", - "unist-util-is": "^4.0.0", - "unist-util-visit-parents": "^3.0.0" - }, - "dependencies": { - "unist-util-is": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", - "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==" - }, - "unist-util-visit-parents": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz", - "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==", - "requires": { - "@types/unist": "^2.0.0", - "unist-util-is": "^4.0.0" - } - } + "unist-util-is": "^5.0.0", + "unist-util-visit-parents": "^5.1.1" } }, "unist-util-visit-parents": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-1.1.2.tgz", - "integrity": "sha512-yvo+MMLjEwdc3RhhPYSximset7rwjMrdt9E41Smmvg25UQIenzrN83cRnF1JMzoMi9zZOQeYXHSDf7p+IQkW3Q==" - }, - "universal-user-agent": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", - "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==" + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.1.tgz", + "integrity": "sha512-gks4baapT/kNRaWxuGkl5BIhoanZo7sC/cUT/JToSRNL1dYoXRFl75d++NkjYk4TAu2uv2Px+l8guMajogeuiw==", + "requires": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0" + } }, "universalify": { "version": "2.0.0", @@ -56969,9 +62518,9 @@ "optional": true }, "update-browserslist-db": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.9.tgz", - "integrity": "sha512-/xsqn21EGVdXI3EXSum1Yckj3ZVZugqyOZQ/CxYPBD/R+ko9NSUScf8tFF4dOKY+2pvSSJA/S+5B8s4Zr4kyvg==", + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", + "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", "requires": { "escalade": "^3.1.1", "picocolors": "^1.0.0" @@ -57024,6 +62573,7 @@ "version": "1.5.10", "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dev": true, "requires": { "querystringify": "^2.1.1", "requires-port": "^1.0.0" @@ -57135,6 +62685,16 @@ "integrity": "sha512-dsNgbLaTrd6l3MMxTtouOCFw4CBFc/3a+GgYA2YyrJvyQ1u6q4pcu3ktLoUZ/VN/Aw9WsauazbgsgdfVWgAKQg==", "dev": true }, + "uuid-by-string": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/uuid-by-string/-/uuid-by-string-3.0.7.tgz", + "integrity": "sha512-9xf+GAcwzLLGL2Z2Vb7hmi7jWIAKSiuaI5cLFsKw1IIlm7S5VpqvdJ5S7N36hqdy0v7DAwnnENJVAeev57/H1A==", + "dev": true, + "requires": { + "js-md5": "^0.7.3", + "js-sha1": "^0.6.0" + } + }, "uvu": { "version": "0.5.6", "resolved": "https://registry.npmjs.org/uvu/-/uvu-0.5.6.tgz", @@ -57146,6 +62706,11 @@ "sade": "^1.7.3" }, "dependencies": { + "diff": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz", + "integrity": "sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==" + }, "kleur": { "version": "4.1.5", "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", @@ -57158,6 +62723,12 @@ "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==" }, + "v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "devOptional": true + }, "v8-to-istanbul": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz", @@ -57194,44 +62765,61 @@ "dev": true }, "vfile": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz", - "integrity": "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==", + "version": "5.3.5", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.5.tgz", + "integrity": "sha512-U1ho2ga33eZ8y8pkbQLH54uKqGhFJ6GYIHnnG5AhRpAh3OWjkrRHKa/KogbmQn8We+c0KVV3rTOgR9V/WowbXQ==", "requires": { "@types/unist": "^2.0.0", "is-buffer": "^2.0.0", - "unist-util-stringify-position": "^2.0.0", - "vfile-message": "^2.0.0" + "unist-util-stringify-position": "^3.0.0", + "vfile-message": "^3.0.0" }, "dependencies": { "is-buffer": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==" - }, - "unist-util-stringify-position": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", - "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==", - "requires": { - "@types/unist": "^2.0.2" - } - }, - "vfile-message": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz", - "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==", - "requires": { - "@types/unist": "^2.0.0", - "unist-util-stringify-position": "^2.0.0" - } } } }, "vfile-location": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-3.2.0.tgz", - "integrity": "sha512-aLEIZKv/oxuCDZ8lkJGhuhztf/BW4M+iHdCwglA/eWc+vtuRFJj8EtgceYFX4LRjOhCAAiNHsKGssC6onJ+jbA==" + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-4.0.1.tgz", + "integrity": "sha512-JDxPlTbZrZCQXogGheBHjbRWjESSPEak770XwWPfw5mTc1v1nWGLB/apzZxsx8a0SJVfF8HK8ql8RD308vXRUw==", + "requires": { + "@types/unist": "^2.0.0", + "vfile": "^5.0.0" + } + }, + "vfile-matter": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/vfile-matter/-/vfile-matter-3.0.1.tgz", + "integrity": "sha512-CAAIDwnh6ZdtrqAuxdElUqQRQDQgbbIrYtDYI8gCjXS1qQ+1XdLoK8FIZWxJwn0/I+BkSSZpar3SOgjemQz4fg==", + "requires": { + "@types/js-yaml": "^4.0.0", + "is-buffer": "^2.0.0", + "js-yaml": "^4.0.0" + }, + "dependencies": { + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==" + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "requires": { + "argparse": "^2.0.1" + } + } + } }, "vfile-message": { "version": "3.1.2", @@ -57252,6 +62840,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "dev": true, "requires": { "browser-process-hrtime": "^1.0.0" } @@ -57260,6 +62849,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", + "dev": true, "requires": { "xml-name-validator": "^3.0.0" } @@ -57538,7 +63128,8 @@ "webidl-conversions": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", - "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==" + "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", + "dev": true }, "webpack": { "version": "4.46.0", @@ -57738,6 +63329,12 @@ "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==", "devOptional": true }, + "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==", + "devOptional": true + }, "json5": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", @@ -57917,6 +63514,49 @@ "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==" }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "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==", + "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==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "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==", + "requires": { + "has-flag": "^4.0.0" + } + }, "ws": { "version": "7.5.9", "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", @@ -58050,6 +63690,7 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "dev": true, "requires": { "iconv-lite": "0.4.24" } @@ -58057,12 +63698,14 @@ "whatwg-mimetype": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", - "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==" + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", + "dev": true }, "whatwg-url": { "version": "8.7.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", + "dev": true, "requires": { "lodash": "^4.7.0", "tr46": "^2.1.0", @@ -58144,6 +63787,32 @@ "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" + }, + "dependencies": { + "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" + } + }, + "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 + } } }, "wrappy": { @@ -58164,9 +63833,9 @@ } }, "ws": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.8.1.tgz", - "integrity": "sha512-bGy2JzvzkPowEJV++hF07hAD6niYSr0JzBNo/J29WsB57A2r7Wlc1UFcTR9IzrPvuNVO4B8LGqF8qcpsVOhJCA==", + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.9.0.tgz", + "integrity": "sha512-Ja7nszREasGaYUYCI2k4lCKIRTt+y7XuqVoHR44YpI49TtryyqbqvDMn5eqfW7e6HzTukDRIsXqzVHScqRcafg==", "dev": true, "requires": {} }, @@ -58178,7 +63847,7 @@ "@mdx-js/react": "^1.6.22", "@next/mdx": "^10.0.7", "@supabase/auth-ui-react": "^0.1.6", - "@supabase/supabase-js": "^1.6.0", + "@supabase/supabase-js": "^2.0.0", "@supabase/ui": "v0.37.0-alpha.80", "@tailwindcss/typography": "^0.5.2", "@types/classnames": "^2.3.1", @@ -58202,7 +63871,7 @@ "markdown-toc": "^1.2.0", "marked": "^4.0.12", "next": "latest", - "next-mdx-remote": "^2.1.3", + "next-mdx-remote": "^4.1.0", "next-seo": "^4.20.0", "nodemailer": "^6.7.3", "parse-numeric-range": "^1.3.0", @@ -58213,14 +63882,15 @@ "react-copy-to-clipboard": "^5.0.2", "react-dom": "^17.0.2", "react-ga": "^3.3.0", - "react-markdown": "^5.0.3", + "react-markdown": "^8.0.3", "react-syntax-highlighter": "^15.5.0", "react-tooltip": "^4.2.17", "react-transition-group": "^4.4.1", - "rehype-slug": "^4.0.1", + "recharts": "^2.1.15", + "rehype-slug": "^5.0.1", "remark": "^13.0.0", - "remark-gfm": "^1.0.0", - "remark-html": "10.0.0", + "remark-gfm": "^3.0.1", + "remark-html": "^15.0.1", "swiper": "^6.5.0", "swr": "^0.5.4", "tailwindcss": "^3.1.8", @@ -58229,6 +63899,18 @@ "uuid": "^8.3.2" }, "dependencies": { + "@jest/types": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-25.5.0.tgz", + "integrity": "sha512-OXD0RgQ86Tu3MazKo8bnrkDRaDXXMGUqd+kTtLtK1Zb7CRzQcaSRPPPV37SvYTdevXEBVxe0HXylEjs8ibkmCw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^15.0.0", + "chalk": "^3.0.0" + } + }, "@mdx-js/react": { "version": "1.6.22", "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-1.6.22.tgz", @@ -58281,10 +63963,30 @@ "postcss-selector-parser": "6.0.10" } }, + "@types/istanbul-reports": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz", + "integrity": "sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*", + "@types/istanbul-lib-report": "*" + } + }, + "@types/jest": { + "version": "25.2.3", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-25.2.3.tgz", + "integrity": "sha512-JXc1nK/tXHiDhV55dvfzqtmP4S3sy3T3ouV2tkViZgxY/zeUkcpQcQPGRlgF4KmWzWW5oiWYSZwtCB+2RsE4Fw==", + "dev": true, + "requires": { + "jest-diff": "^25.2.1", + "pretty-format": "^25.2.1" + } + }, "@types/node": { - "version": "14.18.29", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.29.tgz", - "integrity": "sha512-LhF+9fbIX4iPzhsRLpK5H7iPdvW8L4IwGciXQIOEcuF62+9nw/VQVsOViAOOGxY3OlOKGLFv0sWwJXdwQeTn6A==", + "version": "14.18.31", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.31.tgz", + "integrity": "sha512-vQAnaReSQkEDa8uwAyQby8bYGKu84R/deEc6mg5T8fX6gzCn8QW6rziSgsti1fNvsrswKUKPnVTi7uoB+u62Mw==", "dev": true }, "@types/react": { @@ -58297,34 +63999,109 @@ "csstype": "^3.0.2" } }, - "next-mdx-remote": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/next-mdx-remote/-/next-mdx-remote-2.1.4.tgz", - "integrity": "sha512-HHJasFVgPGjWXW3tWC37NCvHcQUOjJgVUMdwxgVbshwgtDLrGmupNkist/iamDLlvVibU52B9rqM9VAWofq7cA==", + "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": { - "@babel/core": "^7.12.10", - "@babel/preset-env": "^7.12.11", - "@babel/preset-react": "^7.12.10", - "@babel/preset-typescript": "^7.12.7", - "@mdx-js/mdx": "^1.6.22", - "@mdx-js/react": "^1.6.22" + "color-convert": "^2.0.1" } }, - "react-markdown": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/react-markdown/-/react-markdown-5.0.3.tgz", - "integrity": "sha512-jDWOc1AvWn0WahpjW6NK64mtx6cwjM4iSsLHJPNBqoAgGOVoIdJMqaKX4++plhOtdd4JksdqzlDibgPx6B/M2w==", + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, "requires": { - "@types/mdast": "^3.0.3", - "@types/unist": "^2.0.3", - "html-to-react": "^1.3.4", - "mdast-add-list-metadata": "1.0.1", - "prop-types": "^15.7.2", - "react-is": "^16.8.6", - "remark-parse": "^9.0.0", - "unified": "^9.0.0", - "unist-util-visit": "^2.0.0", - "xtend": "^4.0.1" + "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 + }, + "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 + }, + "next-mdx-remote": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/next-mdx-remote/-/next-mdx-remote-4.1.0.tgz", + "integrity": "sha512-ZdL5AFJcEqvInGkYYRKda930D6AJt1GOLX/OXFE/vTwaqV/Mw+l3/njZ4kWqvYSAkl89Z6W7WZrTtN0fd0XwPg==", + "requires": { + "@mdx-js/mdx": "^2.0.0", + "@mdx-js/react": "^2.0.0", + "vfile": "^5.3.0", + "vfile-matter": "^3.0.1" + }, + "dependencies": { + "@mdx-js/react": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-2.1.4.tgz", + "integrity": "sha512-PRwLjoAxhSA6xTB2+FA5CPGUCOsIK3bJD0RYsoju+nUIyOpIZUSw6SJChfILByLizzxqslE0R+l8IjARo0N+hA==", + "requires": { + "@types/mdx": "^2.0.0", + "@types/react": ">=16" + } + } + } + }, + "pretty-format": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-25.5.0.tgz", + "integrity": "sha512-kbo/kq2LQ/A/is0PQwsEHM7Ca6//bGPPvU6UnsdDRSKTWxT/ru/xb88v4BJf6a69H+uTytOEsTusT9ksd/1iWQ==", + "dev": true, + "requires": { + "@jest/types": "^25.5.0", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^16.12.0" + } + }, + "recharts": { + "version": "2.1.15", + "resolved": "https://registry.npmjs.org/recharts/-/recharts-2.1.15.tgz", + "integrity": "sha512-16VMAvrsdqkEe7sT9uyJ1F+OZzrC6+5eW+pVSU04SVO6O5Nr5lY78h/uKMjsZJTN0nfOfgV7YfHZcivtqgPU9g==", + "requires": { + "@types/d3-interpolate": "^2.0.0", + "@types/d3-scale": "^3.0.0", + "@types/d3-shape": "^2.0.0", + "classnames": "^2.2.5", + "d3-interpolate": "^2.0.0", + "d3-scale": "^3.0.0", + "d3-shape": "^2.0.0", + "eventemitter3": "^4.0.1", + "lodash": "^4.17.19", + "react-is": "^16.10.2", + "react-resize-detector": "^7.1.2", + "react-smooth": "^2.0.1", + "recharts-scale": "^0.4.4", + "reduce-css-calc": "^2.1.8" + }, + "dependencies": { + "react-resize-detector": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/react-resize-detector/-/react-resize-detector-7.1.2.tgz", + "integrity": "sha512-zXnPJ2m8+6oq9Nn8zsep/orts9vQv3elrpA+R8XTcW7DVVUJ9vwDwMXaBtykAYjMnkCIaOoK9vObyR7ZgFNlOw==", + "requires": { + "lodash": "^4.17.21" + } + } } }, "remark": { @@ -58337,15 +64114,13 @@ "unified": "^9.1.0" } }, - "remark-html": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/remark-html/-/remark-html-10.0.0.tgz", - "integrity": "sha512-TbSQuedRFjAhXSk1NAbfaTqDK0jKAjfgn82D2ZYFFT8XpJ80uwXc8yVwK/Tl2eqboTMPxzNzCIss4kIucE5M8w==", + "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": { - "hast-util-sanitize": "^2.0.0", - "hast-util-to-html": "^6.0.0", - "mdast-util-to-hast": "^6.0.0", - "xtend": "^4.0.1" + "has-flag": "^4.0.0" } } } @@ -58362,12 +64137,14 @@ "xml-name-validator": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", - "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==" + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", + "dev": true }, "xmlchars": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==" + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true }, "xtend": { "version": "4.0.2", @@ -58416,10 +64193,17 @@ "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", "dev": true }, + "yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "devOptional": true + }, "yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==" + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true }, "yup": { "version": "0.32.11", @@ -58435,23 +64219,10 @@ "toposort": "^2.0.2" } }, - "zen-observable": { - "version": "0.8.15", - "resolved": "https://registry.npmjs.org/zen-observable/-/zen-observable-0.8.15.tgz", - "integrity": "sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ==" - }, - "zen-observable-ts": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/zen-observable-ts/-/zen-observable-ts-1.2.5.tgz", - "integrity": "sha512-QZWQekv6iB72Naeake9hS1KxHlotfRpe+WGNbNx5/ta+R3DNjVO2bswf63gXlWDcs+EMd7XY8HfVQyP1X6T4Zg==", - "requires": { - "zen-observable": "0.8.15" - } - }, "zwitch": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz", - "integrity": "sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==" + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.2.tgz", + "integrity": "sha512-JZxotl7SxAJH0j7dN4pxsTV6ZLXoLdGME+PsjkL/DaBrVryK9kTGq06GfKrwcSOqypP+fdXGoCHE36b99fWVoA==" }, "zxcvbn": { "version": "4.4.2", diff --git a/package.json b/package.json index 67a574936b2..2c6c7e75b18 100644 --- a/package.json +++ b/package.json @@ -6,11 +6,9 @@ "license": "Apache-2.0", "private": true, "workspaces": [ - "apps/temp-community-forum", - "apps/temp-community-tutorials", - "apps/temp-docs", "apps/www", "studio", + "tests", "packages/*" ], "scripts": { @@ -25,6 +23,7 @@ "docker:down": "cd docker && docker-compose -f docker-compose.yml -f ./dev/docker-compose.dev.yml down --remove-orphans", "docker:remove": "cd docker && docker-compose -f docker-compose.yml -f ./dev/docker-compose.dev.yml rm -vfs", "test": "jest", + "test:studio": "turbo run test --filter=studio", "perf:kong": "ab -t 5 -c 20 -T application/json http://localhost:8000/", "perf:meta": "ab -t 5 -c 20 -T application/json http://localhost:5555/tables" }, @@ -32,7 +31,8 @@ "eslint": "^7.32.0", "eslint-config-custom": "*", "prettier": "^2.5.1", - "turbo": "1.4.7" + "turbo": "1.4.7", + "ts-jest": "^27.0.7" }, "repository": { "type": "git", diff --git a/packages/config/tailwind.config.js b/packages/config/tailwind.config.js index 9aa9601e9e1..7032d04e011 100644 --- a/packages/config/tailwind.config.js +++ b/packages/config/tailwind.config.js @@ -102,6 +102,9 @@ module.exports = ui({ border: '1px solid ' + theme('borderColor.DEFAULT'), borderRadius: theme('borderRadius.lg'), }, + td: { + borderBottom: '1px solid ' + theme('colors.scale[400]'), + }, code: { fontWeight: '400', padding: '0.2rem 0.4rem', diff --git a/packages/ui/config.js b/packages/ui/config.js new file mode 100644 index 00000000000..e760ba29c43 --- /dev/null +++ b/packages/ui/config.js @@ -0,0 +1,221 @@ +const deepMerge = require('deepmerge') +const customFormsPlugin = require('@tailwindcss/forms') + +const colors = { + transparent: 'transparent', + white: '#ffffff', + black: '#000000', + gray: { + '50': '#f9fafb', + '100': '#f4f5f7', + '200': '#e5e7eb', + '300': '#d5d6d7', + '400': '#9e9e9e', + '500': '#707275', + '600': '#4c4f52', + '700': '#24262d', + '800': '#1a1c23', + '900': '#121317', + // default values from Tailwind UI palette + // '300': '#d2d6dc', + // '400': '#9fa6b2', + // '500': '#6b7280', + // '600': '#4b5563', + // '700': '#374151', + // '800': '#252f3f', + // '900': '#161e2e', + }, + 'cool-gray': { + '50': '#fbfdfe', + '100': '#f1f5f9', + '200': '#e2e8f0', + '300': '#cfd8e3', + '400': '#97a6ba', + '500': '#64748b', + '600': '#475569', + '700': '#364152', + '800': '#27303f', + '900': '#1a202e', + }, + red: { + '50': '#fdf2f2', + '100': '#fde8e8', + '200': '#fbd5d5', + '300': '#f8b4b4', + '400': '#f98080', + '500': '#f05252', + '600': '#e02424', + '700': '#c81e1e', + '800': '#9b1c1c', + '900': '#771d1d', + }, + orange: { + '50': '#fff8f1', + '100': '#feecdc', + '200': '#fcd9bd', + '300': '#fdba8c', + '400': '#ff8a4c', + '500': '#ff5a1f', + '600': '#d03801', + '700': '#b43403', + '800': '#8a2c0d', + '900': '#771d1d', + }, + yellow: { + '50': '#fdfdea', + '100': '#fdf6b2', + '200': '#fce96a', + '300': '#faca15', + '400': '#e3a008', + '500': '#c27803', + '600': '#9f580a', + '700': '#8e4b10', + '800': '#723b13', + '900': '#633112', + }, + green: { + '50': '#f3faf7', + '100': '#def7ec', + '200': '#bcf0da', + '300': '#84e1bc', + '400': '#31c48d', + '500': '#0e9f6e', + '600': '#057a55', + '700': '#046c4e', + '800': '#03543f', + '900': '#014737', + }, + teal: { + '50': '#edfafa', + '100': '#d5f5f6', + '200': '#afecef', + '300': '#7edce2', + '400': '#16bdca', + '500': '#0694a2', + '600': '#047481', + '700': '#036672', + '800': '#05505c', + '900': '#014451', + }, + blue: { + '50': '#ebf5ff', + '100': '#e1effe', + '200': '#c3ddfd', + '300': '#a4cafe', + '400': '#76a9fa', + '500': '#3f83f8', + '600': '#1c64f2', + '700': '#1a56db', + '800': '#1e429f', + '900': '#233876', + }, + indigo: { + '50': '#f0f5ff', + '100': '#e5edff', + '200': '#cddbfe', + '300': '#b4c6fc', + '400': '#8da2fb', + '500': '#6875f5', + '600': '#5850ec', + '700': '#5145cd', + '800': '#42389d', + '900': '#362f78', + }, + purple: { + '50': '#f6f5ff', + '100': '#edebfe', + '200': '#dcd7fe', + '300': '#cabffd', + '400': '#ac94fa', + '500': '#9061f9', + '600': '#7e3af2', + '700': '#6c2bd9', + '800': '#5521b5', + '900': '#4a1d96', + }, + pink: { + '50': '#fdf2f8', + '100': '#fce8f3', + '200': '#fad1e8', + '300': '#f8b4d9', + '400': '#f17eb8', + '500': '#e74694', + '600': '#d61f69', + '700': '#bf125d', + '800': '#99154b', + '900': '#751a3d', + }, +} + +const backgroundOpacity = (theme) => ({ + '10': '0.1', + ...theme('opacity'), +}) + +const maxHeight = (theme) => ({ + '0': '0', + xl: '36rem', + ...theme('spacing'), +}) + +const windmillConfig = { + darkMode: 'class', + purge: { + content: [ + 'node_modules/@supabase/ui/theme/defaultTheme.js', + // 'node_modules/@supabase/ui/dist/index.js', + ], + }, + theme: { + colors, + backgroundOpacity, + maxHeight, + }, + variants: { + backgroundOpacity: ['responsive', 'hover', 'focus', 'dark'], + backgroundColor: ['responsive', 'hover', 'focus', 'active', 'odd', 'dark'], + display: ['responsive', 'dark'], + textColor: [ + 'responsive', + 'focus', + 'focus-within', + 'hover', + 'active', + 'dark', + ], + placeholderColor: ['responsive', 'focus', 'dark'], + borderColor: ['responsive', 'hover', 'focus', 'dark'], + divideColor: ['responsive', 'dark'], + boxShadow: ['responsive', 'hover', 'focus', 'dark'], + margin: ['responsive', 'last'], + }, + plugins: [customFormsPlugin], +} + +function arrayMergeFn(destinationArray, sourceArray) { + return destinationArray.concat(sourceArray).reduce((acc, cur) => { + if (acc.includes(cur)) return acc + return [...acc, cur] + }, []) +} + +/** + * Merge Windmill and Tailwind CSS configurations + * @param {object} tailwindConfig - Tailwind config object + * @return {object} new config object + */ +export function wrapper(tailwindConfig) { + let purge + if (Array.isArray(tailwindConfig.purge)) { + purge = { + content: tailwindConfig.purge, + } + } else { + purge = tailwindConfig.purge + } + return deepMerge({ ...tailwindConfig, purge }, windmillConfig, { + arrayMerge: arrayMergeFn, + }) +} + +// module.exports = wrapper diff --git a/packages/ui/default-colors.js b/packages/ui/default-colors.js new file mode 100644 index 00000000000..16352a83344 --- /dev/null +++ b/packages/ui/default-colors.js @@ -0,0 +1,90 @@ +module.exports = { + brand: { + brand1: 'hsla(153, 80%, 99%, 1)', + brand2: 'hsla(148, 88%, 97%, 1)', + brand3: 'hsla(148, 76%, 95%, 1)', + brand4: 'hsla(148, 68%, 92%, 1)', + brand5: 'hsla(148, 59%, 88%, 1)', + brand6: 'hsla(149, 43%, 82%, 1)', + brand7: 'hsla(149, 43%, 69%, 1)', + brand8: 'hsla(154, 55%, 45%, 1)', + brand9: 'hsla(153, 60%, 53%, 1)', + brand10: 'hsla(153, 50%, 50%, 1)', + brand11: 'hsla(153, 50%, 34%, 1)', + brand12: 'hsla(153, 40%, 12%, 1)', + }, + brandDark: { + brand1: 'hsla(153, 75%, 6%, 1)', + brand2: 'hsla(153, 73%, 7%, 1)', + brand3: 'hsla(154, 69%, 9%, 1)', + brand4: 'hsla(154, 67%, 11%, 1)', + brand5: 'hsla(154, 66%, 13%, 1)', + brand6: 'hsla(154, 64%, 17%, 1)', + brand7: 'hsla(154, 62%, 22%, 1)', + brand8: 'hsla(153, 60%, 28%, 1)', + brand9: 'hsla(153, 60%, 53%, 1)', + brand10: 'hsla(153, 60%, 70%, 1)', + brand11: 'hsla(153, 60%, 50%, 1)', + brand12: 'hsla(153, 60%, 95%, 1)', + }, + contrast: { + 'brand-hiContrast': 'var(--colors-brand-9)', + 'brand-loContrast': 'var(--colors-brand-4)', + }, + scale: { + scale1: 'var(--colors-slate1)', + scale2: 'var(--colors-slate2)', + scale3: 'var(--colors-slate3)', + scale4: 'var(--colors-slate4)', + scale5: 'var(--colors-slate5)', + scale6: 'var(--colors-slate6)', + scale7: 'var(--colors-slate7)', + scale8: 'var(--colors-slate8)', + scale9: 'var(--colors-slate9)', + scale10: 'var(--colors-slate10)', + scale11: 'var(--colors-slate11)', + scale12: 'var(--colors-slate12)', + }, + scaleA: { + scaleA1: 'var(--colors-slatea1)', + scaleA2: 'var(--colors-slatea2)', + scaleA3: 'var(--colors-slatea3)', + scaleA4: 'var(--colors-slatea4)', + scaleA5: 'var(--colors-slatea5)', + scaleA6: 'var(--colors-slatea6)', + scaleA7: 'var(--colors-slatea7)', + scaleA8: 'var(--colors-slatea8)', + scaleA9: 'var(--colors-slatea9)', + scaleA10: 'var(--colors-slatea10)', + scaleA11: 'var(--colors-slatea11)', + scaleA12: 'var(--colors-slatea12)', + }, + scaleDark: { + scale1: 'var(--colors-gray1)', + scale2: 'var(--colors-gray2)', + scale3: 'var(--colors-gray3)', + scale4: 'var(--colors-gray4)', + scale5: 'var(--colors-gray5)', + scale6: 'var(--colors-gray6)', + scale7: 'var(--colors-gray7)', + scale8: 'var(--colors-gray8)', + scale9: 'var(--colors-gray9)', + scale10: 'var(--colors-gray10)', + scale11: 'var(--colors-gray11)', + scale12: 'var(--colors-gray12)', + }, + scaleADark: { + scaleA1: 'var(--colors-graya1)', + scaleA2: 'var(--colors-graya2)', + scaleA3: 'var(--colors-graya3)', + scaleA4: 'var(--colors-graya4)', + scaleA5: 'var(--colors-graya5)', + scaleA6: 'var(--colors-graya6)', + scaleA7: 'var(--colors-graya7)', + scaleA8: 'var(--colors-graya8)', + scaleA9: 'var(--colors-graya9)', + scaleA10: 'var(--colors-graya10)', + scaleA11: 'var(--colors-graya11)', + scaleA12: 'var(--colors-graya12)', + }, +} diff --git a/packages/ui/index.tsx b/packages/ui/index.tsx new file mode 100644 index 00000000000..1bf276ae8d8 --- /dev/null +++ b/packages/ui/index.tsx @@ -0,0 +1,352 @@ +import * as React from 'react' + +// // GENERAL + +export * from './src/components/Button' +export * from './src/components/Icon' +export * from './src/components/Icon/IconContext' +// export * from './src/components/Image' + +// DISPLAYS + +export * from './src/components/Card' +export * from './src/components/Badge' +export * from './src/components/Tabs' +export * from './src/components/Alert' +export * from './src/components/Accordion' +export * from './src/components/Collapsible' +// export * from './src/components/Breadcrumb' + +// NAV + +export * from './src/components/Menu' + +// OVERLAYS + +export * from './src/components/Modal' +export * from './src/components/SidePanel' +export * from './src/components/Dropdown' +export * from './src/components/ContextMenu' +export * from './src/components/Popover' +// export * from './src/components/Toast' + +// UTILITIES + +export * from './src/components/Space' +export * from './src/components/Loading' +export * from './src/components/Divider' +export * from './src/components/ThemeProvider' + +// DATA ENTRY + +export * from './src/components/Select' +export * from './src/components/Listbox' +export * from './src/components/Checkbox' +export * from './src/components/Input' +export * from './src/components/InputNumber' +export * from './src/components/Radio' +export * from './src/components/Toggle' +export * from './src/components/Upload' +export * from './src/components/Form' + +// config + +// export { default as Config } from './../ui.config' + +// ARCHIVE + +// export * from './src/components/Textarea' + +// AUTH + +// export * from './src/components/Auth' + +// ICONS + +// export icons +export * from './src/components/Icon/icons/IconActivity' +export * from './src/components/Icon/icons/IconAirplay' +export * from './src/components/Icon/icons/IconAlertCircle' +export * from './src/components/Icon/icons/IconAlertOctagon' +export * from './src/components/Icon/icons/IconAlertTriangle' +export * from './src/components/Icon/icons/IconAlignCenter' +export * from './src/components/Icon/icons/IconAlignJustify' +export * from './src/components/Icon/icons/IconAlignLeft' +export * from './src/components/Icon/icons/IconAlignRight' +export * from './src/components/Icon/icons/IconAnchor' +export * from './src/components/Icon/icons/IconAperture' +export * from './src/components/Icon/icons/IconArchive' +export * from './src/components/Icon/icons/IconArrowDownCircle' +export * from './src/components/Icon/icons/IconArrowDownLeft' +export * from './src/components/Icon/icons/IconArrowDownRight' +export * from './src/components/Icon/icons/IconArrowDown' +export * from './src/components/Icon/icons/IconArrowLeftCircle' +export * from './src/components/Icon/icons/IconArrowLeft' +export * from './src/components/Icon/icons/IconArrowRightCircle' +export * from './src/components/Icon/icons/IconArrowRight' +export * from './src/components/Icon/icons/IconArrowUpCircle' +export * from './src/components/Icon/icons/IconArrowUpLeft' +export * from './src/components/Icon/icons/IconArrowUpRight' +export * from './src/components/Icon/icons/IconArrowUp' +export * from './src/components/Icon/icons/IconAtSign' +export * from './src/components/Icon/icons/IconAward' +export * from './src/components/Icon/icons/IconBarChart2' +export * from './src/components/Icon/icons/IconBarChart' +export * from './src/components/Icon/icons/IconBatteryCharging' +export * from './src/components/Icon/icons/IconBattery' +export * from './src/components/Icon/icons/IconBellOff' +export * from './src/components/Icon/icons/IconBell' +export * from './src/components/Icon/icons/IconBluetooth' +export * from './src/components/Icon/icons/IconBold' +export * from './src/components/Icon/icons/IconBookOpen' +export * from './src/components/Icon/icons/IconBook' +export * from './src/components/Icon/icons/IconBookmark' +export * from './src/components/Icon/icons/IconBox' +export * from './src/components/Icon/icons/IconBriefcase' +export * from './src/components/Icon/icons/IconCalendar' +export * from './src/components/Icon/icons/IconCameraOff' +export * from './src/components/Icon/icons/IconCamera' +export * from './src/components/Icon/icons/IconCast' +export * from './src/components/Icon/icons/IconCheckCircle' +export * from './src/components/Icon/icons/IconCheckSquare' +export * from './src/components/Icon/icons/IconCheck' +export * from './src/components/Icon/icons/IconChevronDown' +export * from './src/components/Icon/icons/IconChevronLeft' +export * from './src/components/Icon/icons/IconChevronRight' +export * from './src/components/Icon/icons/IconChevronUp' +export * from './src/components/Icon/icons/IconChevronsDown' +export * from './src/components/Icon/icons/IconChevronsLeft' +export * from './src/components/Icon/icons/IconChevronsRight' +export * from './src/components/Icon/icons/IconChevronsUp' +export * from './src/components/Icon/icons/IconChrome' +export * from './src/components/Icon/icons/IconCircle' +export * from './src/components/Icon/icons/IconClipboard' +export * from './src/components/Icon/icons/IconClock' +export * from './src/components/Icon/icons/IconCloudDrizzle' +export * from './src/components/Icon/icons/IconCloudLightning' +export * from './src/components/Icon/icons/IconCloudOff' +export * from './src/components/Icon/icons/IconCloudRain' +export * from './src/components/Icon/icons/IconCloudSnow' +export * from './src/components/Icon/icons/IconCloud' +export * from './src/components/Icon/icons/IconCode' +export * from './src/components/Icon/icons/IconCodepen' +export * from './src/components/Icon/icons/IconCodesandbox' +export * from './src/components/Icon/icons/IconCoffee' +export * from './src/components/Icon/icons/IconColumns' +export * from './src/components/Icon/icons/IconCommand' +export * from './src/components/Icon/icons/IconCompass' +export * from './src/components/Icon/icons/IconCopy' +export * from './src/components/Icon/icons/IconCornerDownLeft' +export * from './src/components/Icon/icons/IconCornerDownRight' +export * from './src/components/Icon/icons/IconCornerLeftDown' +export * from './src/components/Icon/icons/IconCornerLeftUp' +export * from './src/components/Icon/icons/IconCornerRightDown' +export * from './src/components/Icon/icons/IconCornerRightUp' +export * from './src/components/Icon/icons/IconCornerUpLeft' +export * from './src/components/Icon/icons/IconCornerUpRight' +export * from './src/components/Icon/icons/IconCpu' +export * from './src/components/Icon/icons/IconCreditCard' +export * from './src/components/Icon/icons/IconCrop' +export * from './src/components/Icon/icons/IconCrosshair' +export * from './src/components/Icon/icons/IconDatabase' +export * from './src/components/Icon/icons/IconDelete' +export * from './src/components/Icon/icons/IconDisc' +export * from './src/components/Icon/icons/IconDivideCircle' +export * from './src/components/Icon/icons/IconDivideSquare' +export * from './src/components/Icon/icons/IconDivide' +export * from './src/components/Icon/icons/IconDollarSign' +export * from './src/components/Icon/icons/IconDownloadCloud' +export * from './src/components/Icon/icons/IconDownload' +export * from './src/components/Icon/icons/IconDribbble' +export * from './src/components/Icon/icons/IconDroplet' +export * from './src/components/Icon/icons/IconEdit2' +export * from './src/components/Icon/icons/IconEdit3' +export * from './src/components/Icon/icons/IconEdit' +export * from './src/components/Icon/icons/IconExternalLink' +export * from './src/components/Icon/icons/IconEyeOff' +export * from './src/components/Icon/icons/IconEye' +export * from './src/components/Icon/icons/IconFacebook' +export * from './src/components/Icon/icons/IconFastForward' +export * from './src/components/Icon/icons/IconFeather' +export * from './src/components/Icon/icons/IconFigma' +export * from './src/components/Icon/icons/IconFileMinus' +export * from './src/components/Icon/icons/IconFilePlus' +export * from './src/components/Icon/icons/IconFileText' +export * from './src/components/Icon/icons/IconFile' +export * from './src/components/Icon/icons/IconFilm' +export * from './src/components/Icon/icons/IconFilter' +export * from './src/components/Icon/icons/IconFlag' +export * from './src/components/Icon/icons/IconFolderMinus' +export * from './src/components/Icon/icons/IconFolderPlus' +export * from './src/components/Icon/icons/IconFolder' +export * from './src/components/Icon/icons/IconFramer' +export * from './src/components/Icon/icons/IconFrown' +export * from './src/components/Icon/icons/IconGift' +export * from './src/components/Icon/icons/IconGitBranch' +export * from './src/components/Icon/icons/IconGitCommit' +export * from './src/components/Icon/icons/IconGitMerge' +export * from './src/components/Icon/icons/IconGitPullRequest' +export * from './src/components/Icon/icons/IconGitHub' +export * from './src/components/Icon/icons/IconGitlab' +export * from './src/components/Icon/icons/IconGlobe' +export * from './src/components/Icon/icons/IconGrid' +export * from './src/components/Icon/icons/IconHardDrive' +export * from './src/components/Icon/icons/IconHash' +export * from './src/components/Icon/icons/IconHeadphones' +export * from './src/components/Icon/icons/IconHeart' +export * from './src/components/Icon/icons/IconHelpCircle' +export * from './src/components/Icon/icons/IconHexagon' +export * from './src/components/Icon/icons/IconHome' +export * from './src/components/Icon/icons/IconImage' +export * from './src/components/Icon/icons/IconInbox' +export * from './src/components/Icon/icons/IconInfo' +export * from './src/components/Icon/icons/IconInstagram' +export * from './src/components/Icon/icons/IconItalic' +export * from './src/components/Icon/icons/IconKey' +export * from './src/components/Icon/icons/IconLayers' +export * from './src/components/Icon/icons/IconLayout' +export * from './src/components/Icon/icons/IconLifeBuoy' +export * from './src/components/Icon/icons/IconLink2' +export * from './src/components/Icon/icons/IconLink' +export * from './src/components/Icon/icons/IconLinkedin' +export * from './src/components/Icon/icons/IconList' +export * from './src/components/Icon/icons/IconLoader' +export * from './src/components/Icon/icons/IconLock' +export * from './src/components/Icon/icons/IconLogIn' +export * from './src/components/Icon/icons/IconLogOut' +export * from './src/components/Icon/icons/IconMail' +export * from './src/components/Icon/icons/IconMapPin' +export * from './src/components/Icon/icons/IconMap' +export * from './src/components/Icon/icons/IconMaximize2' +export * from './src/components/Icon/icons/IconMaximize' +export * from './src/components/Icon/icons/IconMeh' +export * from './src/components/Icon/icons/IconMenu' +export * from './src/components/Icon/icons/IconMessageCircle' +export * from './src/components/Icon/icons/IconMessageSquare' +export * from './src/components/Icon/icons/IconMicOff' +export * from './src/components/Icon/icons/IconMic' +export * from './src/components/Icon/icons/IconMinimize2' +export * from './src/components/Icon/icons/IconMinimize' +export * from './src/components/Icon/icons/IconMinusCircle' +export * from './src/components/Icon/icons/IconMinusSquare' +export * from './src/components/Icon/icons/IconMinus' +export * from './src/components/Icon/icons/IconMonitor' +export * from './src/components/Icon/icons/IconMoon' +export * from './src/components/Icon/icons/IconMoreHorizontal' +export * from './src/components/Icon/icons/IconMoreVertical' +export * from './src/components/Icon/icons/IconMousePointer' +export * from './src/components/Icon/icons/IconMove' +export * from './src/components/Icon/icons/IconMusic' +export * from './src/components/Icon/icons/IconNavigation2' +export * from './src/components/Icon/icons/IconNavigation' +export * from './src/components/Icon/icons/IconOctagon' +export * from './src/components/Icon/icons/IconPackage' +export * from './src/components/Icon/icons/IconPaperclip' +export * from './src/components/Icon/icons/IconPauseCircle' +export * from './src/components/Icon/icons/IconPause' +export * from './src/components/Icon/icons/IconPenTool' +export * from './src/components/Icon/icons/IconPercent' +export * from './src/components/Icon/icons/IconPhoneCall' +export * from './src/components/Icon/icons/IconPhoneForwarded' +export * from './src/components/Icon/icons/IconPhoneIncoming' +export * from './src/components/Icon/icons/IconPhoneMissed' +export * from './src/components/Icon/icons/IconPhoneOff' +export * from './src/components/Icon/icons/IconPhoneOutgoing' +export * from './src/components/Icon/icons/IconPhone' +export * from './src/components/Icon/icons/IconPieChart' +export * from './src/components/Icon/icons/IconPlayCircle' +export * from './src/components/Icon/icons/IconPlay' +export * from './src/components/Icon/icons/IconPlusCircle' +export * from './src/components/Icon/icons/IconPlusSquare' +export * from './src/components/Icon/icons/IconPlus' +export * from './src/components/Icon/icons/IconPocket' +export * from './src/components/Icon/icons/IconPower' +export * from './src/components/Icon/icons/IconPrinter' +export * from './src/components/Icon/icons/IconRadio' +export * from './src/components/Icon/icons/IconRefreshCcw' +export * from './src/components/Icon/icons/IconRefreshCw' +export * from './src/components/Icon/icons/IconRepeat' +export * from './src/components/Icon/icons/IconRewind' +export * from './src/components/Icon/icons/IconRotateCcw' +export * from './src/components/Icon/icons/IconRotateCw' +export * from './src/components/Icon/icons/IconRss' +export * from './src/components/Icon/icons/IconSave' +export * from './src/components/Icon/icons/IconScissors' +export * from './src/components/Icon/icons/IconSearch' +export * from './src/components/Icon/icons/IconSend' +export * from './src/components/Icon/icons/IconServer' +export * from './src/components/Icon/icons/IconSettings' +export * from './src/components/Icon/icons/IconShare2' +export * from './src/components/Icon/icons/IconShare' +export * from './src/components/Icon/icons/IconShieldOff' +export * from './src/components/Icon/icons/IconShield' +export * from './src/components/Icon/icons/IconShoppingBag' +export * from './src/components/Icon/icons/IconShoppingCart' +export * from './src/components/Icon/icons/IconShuffle' +export * from './src/components/Icon/icons/IconSidebar' +export * from './src/components/Icon/icons/IconSkipBack' +export * from './src/components/Icon/icons/IconSkipForward' +export * from './src/components/Icon/icons/IconSlack' +export * from './src/components/Icon/icons/IconSlash' +export * from './src/components/Icon/icons/IconSliders' +export * from './src/components/Icon/icons/IconSmartphone' +export * from './src/components/Icon/icons/IconSmile' +export * from './src/components/Icon/icons/IconSpeaker' +export * from './src/components/Icon/icons/IconSquare' +export * from './src/components/Icon/icons/IconStar' +export * from './src/components/Icon/icons/IconStopCircle' +export * from './src/components/Icon/icons/IconSun' +export * from './src/components/Icon/icons/IconSunrise' +export * from './src/components/Icon/icons/IconSunset' +export * from './src/components/Icon/icons/IconTablet' +export * from './src/components/Icon/icons/IconTag' +export * from './src/components/Icon/icons/IconTarget' +export * from './src/components/Icon/icons/IconTerminal' +export * from './src/components/Icon/icons/IconThermometer' +export * from './src/components/Icon/icons/IconThumbsDown' +export * from './src/components/Icon/icons/IconThumbsUp' +export * from './src/components/Icon/icons/IconToggleLeft' +export * from './src/components/Icon/icons/IconToggleRight' +export * from './src/components/Icon/icons/IconTool' +export * from './src/components/Icon/icons/IconTrash2' +export * from './src/components/Icon/icons/IconTrash' +export * from './src/components/Icon/icons/IconTrello' +export * from './src/components/Icon/icons/IconTrendingDown' +export * from './src/components/Icon/icons/IconTrendingUp' +export * from './src/components/Icon/icons/IconTriangle' +export * from './src/components/Icon/icons/IconTruck' +export * from './src/components/Icon/icons/IconTv' +export * from './src/components/Icon/icons/IconTwitch' +export * from './src/components/Icon/icons/IconTwitter' +export * from './src/components/Icon/icons/IconType' +export * from './src/components/Icon/icons/IconUmbrella' +export * from './src/components/Icon/icons/IconUnderline' +export * from './src/components/Icon/icons/IconUnlock' +export * from './src/components/Icon/icons/IconUploadCloud' +export * from './src/components/Icon/icons/IconUpload' +export * from './src/components/Icon/icons/IconUserCheck' +export * from './src/components/Icon/icons/IconUserMinus' +export * from './src/components/Icon/icons/IconUserPlus' +export * from './src/components/Icon/icons/IconUserX' +export * from './src/components/Icon/icons/IconUser' +export * from './src/components/Icon/icons/IconUsers' +export * from './src/components/Icon/icons/IconVideoOff' +export * from './src/components/Icon/icons/IconVideo' +export * from './src/components/Icon/icons/IconVoicemail' +export * from './src/components/Icon/icons/IconVolume1' +export * from './src/components/Icon/icons/IconVolume2' +export * from './src/components/Icon/icons/IconVolumeX' +export * from './src/components/Icon/icons/IconVolume' +export * from './src/components/Icon/icons/IconWatch' +export * from './src/components/Icon/icons/IconWifiOff' +export * from './src/components/Icon/icons/IconWifi' +export * from './src/components/Icon/icons/IconWind' +export * from './src/components/Icon/icons/IconXCircle' +export * from './src/components/Icon/icons/IconXOctagon' +export * from './src/components/Icon/icons/IconXSquare' +export * from './src/components/Icon/icons/IconX' +export * from './src/components/Icon/icons/IconYoutube' +export * from './src/components/Icon/icons/IconZapOff' +export * from './src/components/Icon/icons/IconZap' +export * from './src/components/Icon/icons/IconZoomIn' +export * from './src/components/Icon/icons/IconZoomOut' diff --git a/packages/ui/internals/icons.js b/packages/ui/internals/icons.js new file mode 100644 index 00000000000..07a7f0e5539 --- /dev/null +++ b/packages/ui/internals/icons.js @@ -0,0 +1,288 @@ +export default { + IconActivity: 'src/components/Icon/icons/IconActivity/index.tsx', + IconAirplay: 'src/components/Icon/icons/IconAirplay/index.tsx', + IconAlertCircle: 'src/components/Icon/icons/IconAlertCircle/index.tsx', + IconAlertOctagon: 'src/components/Icon/icons/IconAlertOctagon/index.tsx', + IconAlertTriangle: 'src/components/Icon/icons/IconAlertTriangle/index.tsx', + IconAlignCenter: 'src/components/Icon/icons/IconAlignCenter/index.tsx', + IconAlignJustify: 'src/components/Icon/icons/IconAlignJustify/index.tsx', + IconAlignLeft: 'src/components/Icon/icons/IconAlignLeft/index.tsx', + IconAlignRight: 'src/components/Icon/icons/IconAlignRight/index.tsx', + IconAnchor: 'src/components/Icon/icons/IconAnchor/index.tsx', + IconAperture: 'src/components/Icon/icons/IconAperture/index.tsx', + IconArchive: 'src/components/Icon/icons/IconArchive/index.tsx', + IconArrowDownCircle: 'src/components/Icon/icons/IconArrowDownCircle/index.tsx', + IconArrowDownLeft: 'src/components/Icon/icons/IconArrowDownLeft/index.tsx', + IconArrowDownRight: 'src/components/Icon/icons/IconArrowDownRight/index.tsx', + IconArrowDown: 'src/components/Icon/icons/IconArrowDown/index.tsx', + IconArrowLeftCircle: 'src/components/Icon/icons/IconArrowLeftCircle/index.tsx', + IconArrowLeft: 'src/components/Icon/icons/IconArrowLeft/index.tsx', + IconArrowRightCircle: 'src/components/Icon/icons/IconArrowRightCircle/index.tsx', + IconArrowRight: 'src/components/Icon/icons/IconArrowRight/index.tsx', + IconArrowUpCircle: 'src/components/Icon/icons/IconArrowUpCircle/index.tsx', + IconArrowUpLeft: 'src/components/Icon/icons/IconArrowUpLeft/index.tsx', + IconArrowUpRight: 'src/components/Icon/icons/IconArrowUpRight/index.tsx', + IconArrowUp: 'src/components/Icon/icons/IconArrowUp/index.tsx', + IconAtSign: 'src/components/Icon/icons/IconAtSign/index.tsx', + IconAward: 'src/components/Icon/icons/IconAward/index.tsx', + IconBarChart2: 'src/components/Icon/icons/IconBarChart2/index.tsx', + IconBarChart: 'src/components/Icon/icons/IconBarChart/index.tsx', + IconBatteryCharging: 'src/components/Icon/icons/IconBatteryCharging/index.tsx', + IconBattery: 'src/components/Icon/icons/IconBattery/index.tsx', + IconBellOff: 'src/components/Icon/icons/IconBellOff/index.tsx', + IconBell: 'src/components/Icon/icons/IconBell/index.tsx', + IconBluetooth: 'src/components/Icon/icons/IconBluetooth/index.tsx', + IconBold: 'src/components/Icon/icons/IconBold/index.tsx', + IconBookOpen: 'src/components/Icon/icons/IconBookOpen/index.tsx', + IconBook: 'src/components/Icon/icons/IconBook/index.tsx', + IconBookmark: 'src/components/Icon/icons/IconBookmark/index.tsx', + IconBox: 'src/components/Icon/icons/IconBox/index.tsx', + IconBriefcase: 'src/components/Icon/icons/IconBriefcase/index.tsx', + IconCalendar: 'src/components/Icon/icons/IconCalendar/index.tsx', + IconCameraOff: 'src/components/Icon/icons/IconCameraOff/index.tsx', + IconCamera: 'src/components/Icon/icons/IconCamera/index.tsx', + IconCast: 'src/components/Icon/icons/IconCast/index.tsx', + IconCheckCircle: 'src/components/Icon/icons/IconCheckCircle/index.tsx', + IconCheckSquare: 'src/components/Icon/icons/IconCheckSquare/index.tsx', + IconCheck: 'src/components/Icon/icons/IconCheck/index.tsx', + IconChevronDown: 'src/components/Icon/icons/IconChevronDown/index.tsx', + IconChevronLeft: 'src/components/Icon/icons/IconChevronLeft/index.tsx', + IconChevronRight: 'src/components/Icon/icons/IconChevronRight/index.tsx', + IconChevronUp: 'src/components/Icon/icons/IconChevronUp/index.tsx', + IconChevronsDown: 'src/components/Icon/icons/IconChevronsDown/index.tsx', + IconChevronsLeft: 'src/components/Icon/icons/IconChevronsLeft/index.tsx', + IconChevronsRight: 'src/components/Icon/icons/IconChevronsRight/index.tsx', + IconChevronsUp: 'src/components/Icon/icons/IconChevronsUp/index.tsx', + IconChrome: 'src/components/Icon/icons/IconChrome/index.tsx', + IconCircle: 'src/components/Icon/icons/IconCircle/index.tsx', + IconClipboard: 'src/components/Icon/icons/IconClipboard/index.tsx', + IconClock: 'src/components/Icon/icons/IconClock/index.tsx', + IconCloudDrizzle: 'src/components/Icon/icons/IconCloudDrizzle/index.tsx', + IconCloudLightning: 'src/components/Icon/icons/IconCloudLightning/index.tsx', + IconCloudOff: 'src/components/Icon/icons/IconCloudOff/index.tsx', + IconCloudRain: 'src/components/Icon/icons/IconCloudRain/index.tsx', + IconCloudSnow: 'src/components/Icon/icons/IconCloudSnow/index.tsx', + IconCloud: 'src/components/Icon/icons/IconCloud/index.tsx', + IconCode: 'src/components/Icon/icons/IconCode/index.tsx', + IconCodepen: 'src/components/Icon/icons/IconCodepen/index.tsx', + IconCodesandbox: 'src/components/Icon/icons/IconCodesandbox/index.tsx', + IconCoffee: 'src/components/Icon/icons/IconCoffee/index.tsx', + IconColumns: 'src/components/Icon/icons/IconColumns/index.tsx', + IconCommand: 'src/components/Icon/icons/IconCommand/index.tsx', + IconCompass: 'src/components/Icon/icons/IconCompass/index.tsx', + IconCopy: 'src/components/Icon/icons/IconCopy/index.tsx', + IconCornerDownLeft: 'src/components/Icon/icons/IconCornerDownLeft/index.tsx', + IconCornerDownRight: 'src/components/Icon/icons/IconCornerDownRight/index.tsx', + IconCornerLeftDown: 'src/components/Icon/icons/IconCornerLeftDown/index.tsx', + IconCornerLeftUp: 'src/components/Icon/icons/IconCornerLeftUp/index.tsx', + IconCornerRightDown: 'src/components/Icon/icons/IconCornerRightDown/index.tsx', + IconCornerRightUp: 'src/components/Icon/icons/IconCornerRightUp/index.tsx', + IconCornerUpLeft: 'src/components/Icon/icons/IconCornerUpLeft/index.tsx', + IconCornerUpRight: 'src/components/Icon/icons/IconCornerUpRight/index.tsx', + IconCpu: 'src/components/Icon/icons/IconCpu/index.tsx', + IconCreditCard: 'src/components/Icon/icons/IconCreditCard/index.tsx', + IconCrop: 'src/components/Icon/icons/IconCrop/index.tsx', + IconCrosshair: 'src/components/Icon/icons/IconCrosshair/index.tsx', + IconDatabase: 'src/components/Icon/icons/IconDatabase/index.tsx', + IconDelete: 'src/components/Icon/icons/IconDelete/index.tsx', + IconDisc: 'src/components/Icon/icons/IconDisc/index.tsx', + IconDivideCircle: 'src/components/Icon/icons/IconDivideCircle/index.tsx', + IconDivideSquare: 'src/components/Icon/icons/IconDivideSquare/index.tsx', + IconDivide: 'src/components/Icon/icons/IconDivide/index.tsx', + IconDollarSign: 'src/components/Icon/icons/IconDollarSign/index.tsx', + IconDownloadCloud: 'src/components/Icon/icons/IconDownloadCloud/index.tsx', + IconDownload: 'src/components/Icon/icons/IconDownload/index.tsx', + IconDribbble: 'src/components/Icon/icons/IconDribbble/index.tsx', + IconDroplet: 'src/components/Icon/icons/IconDroplet/index.tsx', + IconEdit2: 'src/components/Icon/icons/IconEdit2/index.tsx', + IconEdit3: 'src/components/Icon/icons/IconEdit3/index.tsx', + IconEdit: 'src/components/Icon/icons/IconEdit/index.tsx', + IconExternalLink: 'src/components/Icon/icons/IconExternalLink/index.tsx', + IconEyeOff: 'src/components/Icon/icons/IconEyeOff/index.tsx', + IconEye: 'src/components/Icon/icons/IconEye/index.tsx', + IconFacebook: 'src/components/Icon/icons/IconFacebook/index.tsx', + IconFastForward: 'src/components/Icon/icons/IconFastForward/index.tsx', + IconFeather: 'src/components/Icon/icons/IconFeather/index.tsx', + IconFigma: 'src/components/Icon/icons/IconFigma/index.tsx', + IconFileMinus: 'src/components/Icon/icons/IconFileMinus/index.tsx', + IconFilePlus: 'src/components/Icon/icons/IconFilePlus/index.tsx', + IconFileText: 'src/components/Icon/icons/IconFileText/index.tsx', + IconFile: 'src/components/Icon/icons/IconFile/index.tsx', + IconFilm: 'src/components/Icon/icons/IconFilm/index.tsx', + IconFilter: 'src/components/Icon/icons/IconFilter/index.tsx', + IconFlag: 'src/components/Icon/icons/IconFlag/index.tsx', + IconFolderMinus: 'src/components/Icon/icons/IconFolderMinus/index.tsx', + IconFolderPlus: 'src/components/Icon/icons/IconFolderPlus/index.tsx', + IconFolder: 'src/components/Icon/icons/IconFolder/index.tsx', + IconFramer: 'src/components/Icon/icons/IconFramer/index.tsx', + IconFrown: 'src/components/Icon/icons/IconFrown/index.tsx', + IconGift: 'src/components/Icon/icons/IconGift/index.tsx', + IconGitBranch: 'src/components/Icon/icons/IconGitBranch/index.tsx', + IconGitCommit: 'src/components/Icon/icons/IconGitCommit/index.tsx', + IconGitMerge: 'src/components/Icon/icons/IconGitMerge/index.tsx', + IconGitPullRequest: 'src/components/Icon/icons/IconGitPullRequest/index.tsx', + IconGitHub: 'src/components/Icon/icons/IconGitHub/index.tsx', + IconGitlab: 'src/components/Icon/icons/IconGitlab/index.tsx', + IconGlobe: 'src/components/Icon/icons/IconGlobe/index.tsx', + IconGrid: 'src/components/Icon/icons/IconGrid/index.tsx', + IconHardDrive: 'src/components/Icon/icons/IconHardDrive/index.tsx', + IconHash: 'src/components/Icon/icons/IconHash/index.tsx', + IconHeadphones: 'src/components/Icon/icons/IconHeadphones/index.tsx', + IconHeart: 'src/components/Icon/icons/IconHeart/index.tsx', + IconHelpCircle: 'src/components/Icon/icons/IconHelpCircle/index.tsx', + IconHexagon: 'src/components/Icon/icons/IconHexagon/index.tsx', + IconHome: 'src/components/Icon/icons/IconHome/index.tsx', + IconImage: 'src/components/Icon/icons/IconImage/index.tsx', + IconInbox: 'src/components/Icon/icons/IconInbox/index.tsx', + IconInfo: 'src/components/Icon/icons/IconInfo/index.tsx', + IconInstagram: 'src/components/Icon/icons/IconInstagram/index.tsx', + IconItalic: 'src/components/Icon/icons/IconItalic/index.tsx', + IconKey: 'src/components/Icon/icons/IconKey/index.tsx', + IconLayers: 'src/components/Icon/icons/IconLayers/index.tsx', + IconLayout: 'src/components/Icon/icons/IconLayout/index.tsx', + IconLifeBuoy: 'src/components/Icon/icons/IconLifeBuoy/index.tsx', + IconLink2: 'src/components/Icon/icons/IconLink2/index.tsx', + IconLink: 'src/components/Icon/icons/IconLink/index.tsx', + IconLinkedin: 'src/components/Icon/icons/IconLinkedin/index.tsx', + IconList: 'src/components/Icon/icons/IconList/index.tsx', + IconLoader: 'src/components/Icon/icons/IconLoader/index.tsx', + IconLock: 'src/components/Icon/icons/IconLock/index.tsx', + IconLogIn: 'src/components/Icon/icons/IconLogIn/index.tsx', + IconLogOut: 'src/components/Icon/icons/IconLogOut/index.tsx', + IconMail: 'src/components/Icon/icons/IconMail/index.tsx', + IconMapPin: 'src/components/Icon/icons/IconMapPin/index.tsx', + IconMap: 'src/components/Icon/icons/IconMap/index.tsx', + IconMaximize2: 'src/components/Icon/icons/IconMaximize2/index.tsx', + IconMaximize: 'src/components/Icon/icons/IconMaximize/index.tsx', + IconMeh: 'src/components/Icon/icons/IconMeh/index.tsx', + IconMenu: 'src/components/Icon/icons/IconMenu/index.tsx', + IconMessageCircle: 'src/components/Icon/icons/IconMessageCircle/index.tsx', + IconMessageSquare: 'src/components/Icon/icons/IconMessageSquare/index.tsx', + IconMicOff: 'src/components/Icon/icons/IconMicOff/index.tsx', + IconMic: 'src/components/Icon/icons/IconMic/index.tsx', + IconMinimize2: 'src/components/Icon/icons/IconMinimize2/index.tsx', + IconMinimize: 'src/components/Icon/icons/IconMinimize/index.tsx', + IconMinusCircle: 'src/components/Icon/icons/IconMinusCircle/index.tsx', + IconMinusSquare: 'src/components/Icon/icons/IconMinusSquare/index.tsx', + IconMinus: 'src/components/Icon/icons/IconMinus/index.tsx', + IconMonitor: 'src/components/Icon/icons/IconMonitor/index.tsx', + IconMoon: 'src/components/Icon/icons/IconMoon/index.tsx', + IconMoreHorizontal: 'src/components/Icon/icons/IconMoreHorizontal/index.tsx', + IconMoreVertical: 'src/components/Icon/icons/IconMoreVertical/index.tsx', + IconMousePointer: 'src/components/Icon/icons/IconMousePointer/index.tsx', + IconMove: 'src/components/Icon/icons/IconMove/index.tsx', + IconMusic: 'src/components/Icon/icons/IconMusic/index.tsx', + IconNavigation2: 'src/components/Icon/icons/IconNavigation2/index.tsx', + IconNavigation: 'src/components/Icon/icons/IconNavigation/index.tsx', + IconOctagon: 'src/components/Icon/icons/IconOctagon/index.tsx', + IconPackage: 'src/components/Icon/icons/IconPackage/index.tsx', + IconPaperclip: 'src/components/Icon/icons/IconPaperclip/index.tsx', + IconPauseCircle: 'src/components/Icon/icons/IconPauseCircle/index.tsx', + IconPause: 'src/components/Icon/icons/IconPause/index.tsx', + IconPenTool: 'src/components/Icon/icons/IconPenTool/index.tsx', + IconPercent: 'src/components/Icon/icons/IconPercent/index.tsx', + IconPhoneCall: 'src/components/Icon/icons/IconPhoneCall/index.tsx', + IconPhoneForwarded: 'src/components/Icon/icons/IconPhoneForwarded/index.tsx', + IconPhoneIncoming: 'src/components/Icon/icons/IconPhoneIncoming/index.tsx', + IconPhoneMissed: 'src/components/Icon/icons/IconPhoneMissed/index.tsx', + IconPhoneOff: 'src/components/Icon/icons/IconPhoneOff/index.tsx', + IconPhoneOutgoing: 'src/components/Icon/icons/IconPhoneOutgoing/index.tsx', + IconPhone: 'src/components/Icon/icons/IconPhone/index.tsx', + IconPieChart: 'src/components/Icon/icons/IconPieChart/index.tsx', + IconPlayCircle: 'src/components/Icon/icons/IconPlayCircle/index.tsx', + IconPlay: 'src/components/Icon/icons/IconPlay/index.tsx', + IconPlusCircle: 'src/components/Icon/icons/IconPlusCircle/index.tsx', + IconPlusSquare: 'src/components/Icon/icons/IconPlusSquare/index.tsx', + IconPlus: 'src/components/Icon/icons/IconPlus/index.tsx', + IconPocket: 'src/components/Icon/icons/IconPocket/index.tsx', + IconPower: 'src/components/Icon/icons/IconPower/index.tsx', + IconPrinter: 'src/components/Icon/icons/IconPrinter/index.tsx', + IconRadio: 'src/components/Icon/icons/IconRadio/index.tsx', + IconRefreshCcw: 'src/components/Icon/icons/IconRefreshCcw/index.tsx', + IconRefreshCw: 'src/components/Icon/icons/IconRefreshCw/index.tsx', + IconRepeat: 'src/components/Icon/icons/IconRepeat/index.tsx', + IconRewind: 'src/components/Icon/icons/IconRewind/index.tsx', + IconRotateCcw: 'src/components/Icon/icons/IconRotateCcw/index.tsx', + IconRotateCw: 'src/components/Icon/icons/IconRotateCw/index.tsx', + IconRss: 'src/components/Icon/icons/IconRss/index.tsx', + IconSave: 'src/components/Icon/icons/IconSave/index.tsx', + IconScissors: 'src/components/Icon/icons/IconScissors/index.tsx', + IconSearch: 'src/components/Icon/icons/IconSearch/index.tsx', + IconSend: 'src/components/Icon/icons/IconSend/index.tsx', + IconServer: 'src/components/Icon/icons/IconServer/index.tsx', + IconSettings: 'src/components/Icon/icons/IconSettings/index.tsx', + IconShare2: 'src/components/Icon/icons/IconShare2/index.tsx', + IconShare: 'src/components/Icon/icons/IconShare/index.tsx', + IconShieldOff: 'src/components/Icon/icons/IconShieldOff/index.tsx', + IconShield: 'src/components/Icon/icons/IconShield/index.tsx', + IconShoppingBag: 'src/components/Icon/icons/IconShoppingBag/index.tsx', + IconShoppingCart: 'src/components/Icon/icons/IconShoppingCart/index.tsx', + IconShuffle: 'src/components/Icon/icons/IconShuffle/index.tsx', + IconSidebar: 'src/components/Icon/icons/IconSidebar/index.tsx', + IconSkipBack: 'src/components/Icon/icons/IconSkipBack/index.tsx', + IconSkipForward: 'src/components/Icon/icons/IconSkipForward/index.tsx', + IconSlack: 'src/components/Icon/icons/IconSlack/index.tsx', + IconSlash: 'src/components/Icon/icons/IconSlash/index.tsx', + IconSliders: 'src/components/Icon/icons/IconSliders/index.tsx', + IconSmartphone: 'src/components/Icon/icons/IconSmartphone/index.tsx', + IconSmile: 'src/components/Icon/icons/IconSmile/index.tsx', + IconSpeaker: 'src/components/Icon/icons/IconSpeaker/index.tsx', + IconSquare: 'src/components/Icon/icons/IconSquare/index.tsx', + IconStar: 'src/components/Icon/icons/IconStar/index.tsx', + IconStopCircle: 'src/components/Icon/icons/IconStopCircle/index.tsx', + IconSun: 'src/components/Icon/icons/IconSun/index.tsx', + IconSunrise: 'src/components/Icon/icons/IconSunrise/index.tsx', + IconSunset: 'src/components/Icon/icons/IconSunset/index.tsx', + IconTablet: 'src/components/Icon/icons/IconTablet/index.tsx', + IconTag: 'src/components/Icon/icons/IconTag/index.tsx', + IconTarget: 'src/components/Icon/icons/IconTarget/index.tsx', + IconTerminal: 'src/components/Icon/icons/IconTerminal/index.tsx', + IconThermometer: 'src/components/Icon/icons/IconThermometer/index.tsx', + IconThumbsDown: 'src/components/Icon/icons/IconThumbsDown/index.tsx', + IconThumbsUp: 'src/components/Icon/icons/IconThumbsUp/index.tsx', + IconToggleLeft: 'src/components/Icon/icons/IconToggleLeft/index.tsx', + IconToggleRight: 'src/components/Icon/icons/IconToggleRight/index.tsx', + IconTool: 'src/components/Icon/icons/IconTool/index.tsx', + IconTrash2: 'src/components/Icon/icons/IconTrash2/index.tsx', + IconTrash: 'src/components/Icon/icons/IconTrash/index.tsx', + IconTrello: 'src/components/Icon/icons/IconTrello/index.tsx', + IconTrendingDown: 'src/components/Icon/icons/IconTrendingDown/index.tsx', + IconTrendingUp: 'src/components/Icon/icons/IconTrendingUp/index.tsx', + IconTriangle: 'src/components/Icon/icons/IconTriangle/index.tsx', + IconTruck: 'src/components/Icon/icons/IconTruck/index.tsx', + IconTv: 'src/components/Icon/icons/IconTv/index.tsx', + IconTwitch: 'src/components/Icon/icons/IconTwitch/index.tsx', + IconTwitter: 'src/components/Icon/icons/IconTwitter/index.tsx', + IconType: 'src/components/Icon/icons/IconType/index.tsx', + IconUmbrella: 'src/components/Icon/icons/IconUmbrella/index.tsx', + IconUnderline: 'src/components/Icon/icons/IconUnderline/index.tsx', + IconUnlock: 'src/components/Icon/icons/IconUnlock/index.tsx', + IconUploadCloud: 'src/components/Icon/icons/IconUploadCloud/index.tsx', + IconUpload: 'src/components/Icon/icons/IconUpload/index.tsx', + IconUserCheck: 'src/components/Icon/icons/IconUserCheck/index.tsx', + IconUserMinus: 'src/components/Icon/icons/IconUserMinus/index.tsx', + IconUserPlus: 'src/components/Icon/icons/IconUserPlus/index.tsx', + IconUserX: 'src/components/Icon/icons/IconUserX/index.tsx', + IconUser: 'src/components/Icon/icons/IconUser/index.tsx', + IconUsers: 'src/components/Icon/icons/IconUsers/index.tsx', + IconVideoOff: 'src/components/Icon/icons/IconVideoOff/index.tsx', + IconVideo: 'src/components/Icon/icons/IconVideo/index.tsx', + IconVoicemail: 'src/components/Icon/icons/IconVoicemail/index.tsx', + IconVolume1: 'src/components/Icon/icons/IconVolume1/index.tsx', + IconVolume2: 'src/components/Icon/icons/IconVolume2/index.tsx', + IconVolumeX: 'src/components/Icon/icons/IconVolumeX/index.tsx', + IconVolume: 'src/components/Icon/icons/IconVolume/index.tsx', + IconWatch: 'src/components/Icon/icons/IconWatch/index.tsx', + IconWifiOff: 'src/components/Icon/icons/IconWifiOff/index.tsx', + IconWifi: 'src/components/Icon/icons/IconWifi/index.tsx', + IconWind: 'src/components/Icon/icons/IconWind/index.tsx', + IconXCircle: 'src/components/Icon/icons/IconXCircle/index.tsx', + IconXOctagon: 'src/components/Icon/icons/IconXOctagon/index.tsx', + IconXSquare: 'src/components/Icon/icons/IconXSquare/index.tsx', + IconX: 'src/components/Icon/icons/IconX/index.tsx', + IconYoutube: 'src/components/Icon/icons/IconYoutube/index.tsx', + IconZapOff: 'src/components/Icon/icons/IconZapOff/index.tsx', + IconZap: 'src/components/Icon/icons/IconZap/index.tsx', + IconZoomIn: 'src/components/Icon/icons/IconZoomIn/index.tsx', + IconZoomOut: 'src/components/Icon/icons/IconZoomOut/index.tsx' +} \ No newline at end of file diff --git a/packages/ui/internals/icons.json b/packages/ui/internals/icons.json new file mode 100644 index 00000000000..992be561d20 --- /dev/null +++ b/packages/ui/internals/icons.json @@ -0,0 +1,1146 @@ +{ + "Activity": { + "name": "Activity", + "path": "react-feather/dist/icons/activity" + }, + "Airplay": { + "name": "Airplay", + "path": "react-feather/dist/icons/airplay" + }, + "AlertCircle": { + "name": "AlertCircle", + "path": "react-feather/dist/icons/alert-circle" + }, + "AlertOctagon": { + "name": "AlertOctagon", + "path": "react-feather/dist/icons/alert-octagon" + }, + "AlertTriangle": { + "name": "AlertTriangle", + "path": "react-feather/dist/icons/alert-triangle" + }, + "AlignCenter": { + "name": "AlignCenter", + "path": "react-feather/dist/icons/align-center" + }, + "AlignJustify": { + "name": "AlignJustify", + "path": "react-feather/dist/icons/align-justify" + }, + "AlignLeft": { + "name": "AlignLeft", + "path": "react-feather/dist/icons/align-left" + }, + "AlignRight": { + "name": "AlignRight", + "path": "react-feather/dist/icons/align-right" + }, + "Anchor": { + "name": "Anchor", + "path": "react-feather/dist/icons/anchor" + }, + "Aperture": { + "name": "Aperture", + "path": "react-feather/dist/icons/aperture" + }, + "Archive": { + "name": "Archive", + "path": "react-feather/dist/icons/archive" + }, + "ArrowDownCircle": { + "name": "ArrowDownCircle", + "path": "react-feather/dist/icons/arrow-down-circle" + }, + "ArrowDownLeft": { + "name": "ArrowDownLeft", + "path": "react-feather/dist/icons/arrow-down-left" + }, + "ArrowDownRight": { + "name": "ArrowDownRight", + "path": "react-feather/dist/icons/arrow-down-right" + }, + "ArrowDown": { + "name": "ArrowDown", + "path": "react-feather/dist/icons/arrow-down" + }, + "ArrowLeftCircle": { + "name": "ArrowLeftCircle", + "path": "react-feather/dist/icons/arrow-left-circle" + }, + "ArrowLeft": { + "name": "ArrowLeft", + "path": "react-feather/dist/icons/arrow-left" + }, + "ArrowRightCircle": { + "name": "ArrowRightCircle", + "path": "react-feather/dist/icons/arrow-right-circle" + }, + "ArrowRight": { + "name": "ArrowRight", + "path": "react-feather/dist/icons/arrow-right" + }, + "ArrowUpCircle": { + "name": "ArrowUpCircle", + "path": "react-feather/dist/icons/arrow-up-circle" + }, + "ArrowUpLeft": { + "name": "ArrowUpLeft", + "path": "react-feather/dist/icons/arrow-up-left" + }, + "ArrowUpRight": { + "name": "ArrowUpRight", + "path": "react-feather/dist/icons/arrow-up-right" + }, + "ArrowUp": { + "name": "ArrowUp", + "path": "react-feather/dist/icons/arrow-up" + }, + "AtSign": { + "name": "AtSign", + "path": "react-feather/dist/icons/at-sign" + }, + "Award": { + "name": "Award", + "path": "react-feather/dist/icons/award" + }, + "BarChart2": { + "name": "BarChart2", + "path": "react-feather/dist/icons/bar-chart-2" + }, + "BarChart": { + "name": "BarChart", + "path": "react-feather/dist/icons/bar-chart" + }, + "BatteryCharging": { + "name": "BatteryCharging", + "path": "react-feather/dist/icons/battery-charging" + }, + "Battery": { + "name": "Battery", + "path": "react-feather/dist/icons/battery" + }, + "BellOff": { + "name": "BellOff", + "path": "react-feather/dist/icons/bell-off" + }, + "Bell": { + "name": "Bell", + "path": "react-feather/dist/icons/bell" + }, + "Bluetooth": { + "name": "Bluetooth", + "path": "react-feather/dist/icons/bluetooth" + }, + "Bold": { + "name": "Bold", + "path": "react-feather/dist/icons/bold" + }, + "BookOpen": { + "name": "BookOpen", + "path": "react-feather/dist/icons/book-open" + }, + "Book": { + "name": "Book", + "path": "react-feather/dist/icons/book" + }, + "Bookmark": { + "name": "Bookmark", + "path": "react-feather/dist/icons/bookmark" + }, + "Box": { + "name": "Box", + "path": "react-feather/dist/icons/box" + }, + "Briefcase": { + "name": "Briefcase", + "path": "react-feather/dist/icons/briefcase" + }, + "Calendar": { + "name": "Calendar", + "path": "react-feather/dist/icons/calendar" + }, + "CameraOff": { + "name": "CameraOff", + "path": "react-feather/dist/icons/camera-off" + }, + "Camera": { + "name": "Camera", + "path": "react-feather/dist/icons/camera" + }, + "Cast": { + "name": "Cast", + "path": "react-feather/dist/icons/cast" + }, + "CheckCircle": { + "name": "CheckCircle", + "path": "react-feather/dist/icons/check-circle" + }, + "CheckSquare": { + "name": "CheckSquare", + "path": "react-feather/dist/icons/check-square" + }, + "Check": { + "name": "Check", + "path": "react-feather/dist/icons/check" + }, + "ChevronDown": { + "name": "ChevronDown", + "path": "react-feather/dist/icons/chevron-down" + }, + "ChevronLeft": { + "name": "ChevronLeft", + "path": "react-feather/dist/icons/chevron-left" + }, + "ChevronRight": { + "name": "ChevronRight", + "path": "react-feather/dist/icons/chevron-right" + }, + "ChevronUp": { + "name": "ChevronUp", + "path": "react-feather/dist/icons/chevron-up" + }, + "ChevronsDown": { + "name": "ChevronsDown", + "path": "react-feather/dist/icons/chevrons-down" + }, + "ChevronsLeft": { + "name": "ChevronsLeft", + "path": "react-feather/dist/icons/chevrons-left" + }, + "ChevronsRight": { + "name": "ChevronsRight", + "path": "react-feather/dist/icons/chevrons-right" + }, + "ChevronsUp": { + "name": "ChevronsUp", + "path": "react-feather/dist/icons/chevrons-up" + }, + "Chrome": { + "name": "Chrome", + "path": "react-feather/dist/icons/chrome" + }, + "Circle": { + "name": "Circle", + "path": "react-feather/dist/icons/circle" + }, + "Clipboard": { + "name": "Clipboard", + "path": "react-feather/dist/icons/clipboard" + }, + "Clock": { + "name": "Clock", + "path": "react-feather/dist/icons/clock" + }, + "CloudDrizzle": { + "name": "CloudDrizzle", + "path": "react-feather/dist/icons/cloud-drizzle" + }, + "CloudLightning": { + "name": "CloudLightning", + "path": "react-feather/dist/icons/cloud-lightning" + }, + "CloudOff": { + "name": "CloudOff", + "path": "react-feather/dist/icons/cloud-off" + }, + "CloudRain": { + "name": "CloudRain", + "path": "react-feather/dist/icons/cloud-rain" + }, + "CloudSnow": { + "name": "CloudSnow", + "path": "react-feather/dist/icons/cloud-snow" + }, + "Cloud": { + "name": "Cloud", + "path": "react-feather/dist/icons/cloud" + }, + "Code": { + "name": "Code", + "path": "react-feather/dist/icons/code" + }, + "Codepen": { + "name": "Codepen", + "path": "react-feather/dist/icons/codepen" + }, + "Codesandbox": { + "name": "Codesandbox", + "path": "react-feather/dist/icons/codesandbox" + }, + "Coffee": { + "name": "Coffee", + "path": "react-feather/dist/icons/coffee" + }, + "Columns": { + "name": "Columns", + "path": "react-feather/dist/icons/columns" + }, + "Command": { + "name": "Command", + "path": "react-feather/dist/icons/command" + }, + "Compass": { + "name": "Compass", + "path": "react-feather/dist/icons/compass" + }, + "Copy": { + "name": "Copy", + "path": "react-feather/dist/icons/copy" + }, + "CornerDownLeft": { + "name": "CornerDownLeft", + "path": "react-feather/dist/icons/corner-down-left" + }, + "CornerDownRight": { + "name": "CornerDownRight", + "path": "react-feather/dist/icons/corner-down-right" + }, + "CornerLeftDown": { + "name": "CornerLeftDown", + "path": "react-feather/dist/icons/corner-left-down" + }, + "CornerLeftUp": { + "name": "CornerLeftUp", + "path": "react-feather/dist/icons/corner-left-up" + }, + "CornerRightDown": { + "name": "CornerRightDown", + "path": "react-feather/dist/icons/corner-right-down" + }, + "CornerRightUp": { + "name": "CornerRightUp", + "path": "react-feather/dist/icons/corner-right-up" + }, + "CornerUpLeft": { + "name": "CornerUpLeft", + "path": "react-feather/dist/icons/corner-up-left" + }, + "CornerUpRight": { + "name": "CornerUpRight", + "path": "react-feather/dist/icons/corner-up-right" + }, + "Cpu": { + "name": "Cpu", + "path": "react-feather/dist/icons/cpu" + }, + "CreditCard": { + "name": "CreditCard", + "path": "react-feather/dist/icons/credit-card" + }, + "Crop": { + "name": "Crop", + "path": "react-feather/dist/icons/crop" + }, + "Crosshair": { + "name": "Crosshair", + "path": "react-feather/dist/icons/crosshair" + }, + "Database": { + "name": "Database", + "path": "react-feather/dist/icons/database" + }, + "Delete": { + "name": "Delete", + "path": "react-feather/dist/icons/delete" + }, + "Disc": { + "name": "Disc", + "path": "react-feather/dist/icons/disc" + }, + "DivideCircle": { + "name": "DivideCircle", + "path": "react-feather/dist/icons/divide-circle" + }, + "DivideSquare": { + "name": "DivideSquare", + "path": "react-feather/dist/icons/divide-square" + }, + "Divide": { + "name": "Divide", + "path": "react-feather/dist/icons/divide" + }, + "DollarSign": { + "name": "DollarSign", + "path": "react-feather/dist/icons/dollar-sign" + }, + "DownloadCloud": { + "name": "DownloadCloud", + "path": "react-feather/dist/icons/download-cloud" + }, + "Download": { + "name": "Download", + "path": "react-feather/dist/icons/download" + }, + "Dribbble": { + "name": "Dribbble", + "path": "react-feather/dist/icons/dribbble" + }, + "Droplet": { + "name": "Droplet", + "path": "react-feather/dist/icons/droplet" + }, + "Edit2": { + "name": "Edit2", + "path": "react-feather/dist/icons/edit-2" + }, + "Edit3": { + "name": "Edit3", + "path": "react-feather/dist/icons/edit-3" + }, + "Edit": { + "name": "Edit", + "path": "react-feather/dist/icons/edit" + }, + "ExternalLink": { + "name": "ExternalLink", + "path": "react-feather/dist/icons/external-link" + }, + "EyeOff": { + "name": "EyeOff", + "path": "react-feather/dist/icons/eye-off" + }, + "Eye": { + "name": "Eye", + "path": "react-feather/dist/icons/eye" + }, + "Facebook": { + "name": "Facebook", + "path": "react-feather/dist/icons/facebook" + }, + "FastForward": { + "name": "FastForward", + "path": "react-feather/dist/icons/fast-forward" + }, + "Feather": { + "name": "Feather", + "path": "react-feather/dist/icons/feather" + }, + "Figma": { + "name": "Figma", + "path": "react-feather/dist/icons/figma" + }, + "FileMinus": { + "name": "FileMinus", + "path": "react-feather/dist/icons/file-minus" + }, + "FilePlus": { + "name": "FilePlus", + "path": "react-feather/dist/icons/file-plus" + }, + "FileText": { + "name": "FileText", + "path": "react-feather/dist/icons/file-text" + }, + "File": { + "name": "File", + "path": "react-feather/dist/icons/file" + }, + "Film": { + "name": "Film", + "path": "react-feather/dist/icons/film" + }, + "Filter": { + "name": "Filter", + "path": "react-feather/dist/icons/filter" + }, + "Flag": { + "name": "Flag", + "path": "react-feather/dist/icons/flag" + }, + "FolderMinus": { + "name": "FolderMinus", + "path": "react-feather/dist/icons/folder-minus" + }, + "FolderPlus": { + "name": "FolderPlus", + "path": "react-feather/dist/icons/folder-plus" + }, + "Folder": { + "name": "Folder", + "path": "react-feather/dist/icons/folder" + }, + "Framer": { + "name": "Framer", + "path": "react-feather/dist/icons/framer" + }, + "Frown": { + "name": "Frown", + "path": "react-feather/dist/icons/frown" + }, + "Gift": { + "name": "Gift", + "path": "react-feather/dist/icons/gift" + }, + "GitBranch": { + "name": "GitBranch", + "path": "react-feather/dist/icons/git-branch" + }, + "GitCommit": { + "name": "GitCommit", + "path": "react-feather/dist/icons/git-commit" + }, + "GitMerge": { + "name": "GitMerge", + "path": "react-feather/dist/icons/git-merge" + }, + "GitPullRequest": { + "name": "GitPullRequest", + "path": "react-feather/dist/icons/git-pull-request" + }, + "GitHub": { + "name": "GitHub", + "path": "react-feather/dist/icons/github" + }, + "Gitlab": { + "name": "Gitlab", + "path": "react-feather/dist/icons/gitlab" + }, + "Globe": { + "name": "Globe", + "path": "react-feather/dist/icons/globe" + }, + "Grid": { + "name": "Grid", + "path": "react-feather/dist/icons/grid" + }, + "HardDrive": { + "name": "HardDrive", + "path": "react-feather/dist/icons/hard-drive" + }, + "Hash": { + "name": "Hash", + "path": "react-feather/dist/icons/hash" + }, + "Headphones": { + "name": "Headphones", + "path": "react-feather/dist/icons/headphones" + }, + "Heart": { + "name": "Heart", + "path": "react-feather/dist/icons/heart" + }, + "HelpCircle": { + "name": "HelpCircle", + "path": "react-feather/dist/icons/help-circle" + }, + "Hexagon": { + "name": "Hexagon", + "path": "react-feather/dist/icons/hexagon" + }, + "Home": { + "name": "Home", + "path": "react-feather/dist/icons/home" + }, + "Image": { + "name": "Image", + "path": "react-feather/dist/icons/image" + }, + "Inbox": { + "name": "Inbox", + "path": "react-feather/dist/icons/inbox" + }, + "Info": { + "name": "Info", + "path": "react-feather/dist/icons/info" + }, + "Instagram": { + "name": "Instagram", + "path": "react-feather/dist/icons/instagram" + }, + "Italic": { + "name": "Italic", + "path": "react-feather/dist/icons/italic" + }, + "Key": { + "name": "Key", + "path": "react-feather/dist/icons/key" + }, + "Layers": { + "name": "Layers", + "path": "react-feather/dist/icons/layers" + }, + "Layout": { + "name": "Layout", + "path": "react-feather/dist/icons/layout" + }, + "LifeBuoy": { + "name": "LifeBuoy", + "path": "react-feather/dist/icons/life-buoy" + }, + "Link2": { + "name": "Link2", + "path": "react-feather/dist/icons/link-2" + }, + "Link": { + "name": "Link", + "path": "react-feather/dist/icons/link" + }, + "Linkedin": { + "name": "Linkedin", + "path": "react-feather/dist/icons/linkedin" + }, + "List": { + "name": "List", + "path": "react-feather/dist/icons/list" + }, + "Loader": { + "name": "Loader", + "path": "react-feather/dist/icons/loader" + }, + "Lock": { + "name": "Lock", + "path": "react-feather/dist/icons/lock" + }, + "LogIn": { + "name": "LogIn", + "path": "react-feather/dist/icons/log-in" + }, + "LogOut": { + "name": "LogOut", + "path": "react-feather/dist/icons/log-out" + }, + "Mail": { + "name": "Mail", + "path": "react-feather/dist/icons/mail" + }, + "MapPin": { + "name": "MapPin", + "path": "react-feather/dist/icons/map-pin" + }, + "Map": { + "name": "Map", + "path": "react-feather/dist/icons/map" + }, + "Maximize2": { + "name": "Maximize2", + "path": "react-feather/dist/icons/maximize-2" + }, + "Maximize": { + "name": "Maximize", + "path": "react-feather/dist/icons/maximize" + }, + "Meh": { + "name": "Meh", + "path": "react-feather/dist/icons/meh" + }, + "Menu": { + "name": "Menu", + "path": "react-feather/dist/icons/menu" + }, + "MessageCircle": { + "name": "MessageCircle", + "path": "react-feather/dist/icons/message-circle" + }, + "MessageSquare": { + "name": "MessageSquare", + "path": "react-feather/dist/icons/message-square" + }, + "MicOff": { + "name": "MicOff", + "path": "react-feather/dist/icons/mic-off" + }, + "Mic": { + "name": "Mic", + "path": "react-feather/dist/icons/mic" + }, + "Minimize2": { + "name": "Minimize2", + "path": "react-feather/dist/icons/minimize-2" + }, + "Minimize": { + "name": "Minimize", + "path": "react-feather/dist/icons/minimize" + }, + "MinusCircle": { + "name": "MinusCircle", + "path": "react-feather/dist/icons/minus-circle" + }, + "MinusSquare": { + "name": "MinusSquare", + "path": "react-feather/dist/icons/minus-square" + }, + "Minus": { + "name": "Minus", + "path": "react-feather/dist/icons/minus" + }, + "Monitor": { + "name": "Monitor", + "path": "react-feather/dist/icons/monitor" + }, + "Moon": { + "name": "Moon", + "path": "react-feather/dist/icons/moon" + }, + "MoreHorizontal": { + "name": "MoreHorizontal", + "path": "react-feather/dist/icons/more-horizontal" + }, + "MoreVertical": { + "name": "MoreVertical", + "path": "react-feather/dist/icons/more-vertical" + }, + "MousePointer": { + "name": "MousePointer", + "path": "react-feather/dist/icons/mouse-pointer" + }, + "Move": { + "name": "Move", + "path": "react-feather/dist/icons/move" + }, + "Music": { + "name": "Music", + "path": "react-feather/dist/icons/music" + }, + "Navigation2": { + "name": "Navigation2", + "path": "react-feather/dist/icons/navigation-2" + }, + "Navigation": { + "name": "Navigation", + "path": "react-feather/dist/icons/navigation" + }, + "Octagon": { + "name": "Octagon", + "path": "react-feather/dist/icons/octagon" + }, + "Package": { + "name": "Package", + "path": "react-feather/dist/icons/package" + }, + "Paperclip": { + "name": "Paperclip", + "path": "react-feather/dist/icons/paperclip" + }, + "PauseCircle": { + "name": "PauseCircle", + "path": "react-feather/dist/icons/pause-circle" + }, + "Pause": { + "name": "Pause", + "path": "react-feather/dist/icons/pause" + }, + "PenTool": { + "name": "PenTool", + "path": "react-feather/dist/icons/pen-tool" + }, + "Percent": { + "name": "Percent", + "path": "react-feather/dist/icons/percent" + }, + "PhoneCall": { + "name": "PhoneCall", + "path": "react-feather/dist/icons/phone-call" + }, + "PhoneForwarded": { + "name": "PhoneForwarded", + "path": "react-feather/dist/icons/phone-forwarded" + }, + "PhoneIncoming": { + "name": "PhoneIncoming", + "path": "react-feather/dist/icons/phone-incoming" + }, + "PhoneMissed": { + "name": "PhoneMissed", + "path": "react-feather/dist/icons/phone-missed" + }, + "PhoneOff": { + "name": "PhoneOff", + "path": "react-feather/dist/icons/phone-off" + }, + "PhoneOutgoing": { + "name": "PhoneOutgoing", + "path": "react-feather/dist/icons/phone-outgoing" + }, + "Phone": { + "name": "Phone", + "path": "react-feather/dist/icons/phone" + }, + "PieChart": { + "name": "PieChart", + "path": "react-feather/dist/icons/pie-chart" + }, + "PlayCircle": { + "name": "PlayCircle", + "path": "react-feather/dist/icons/play-circle" + }, + "Play": { + "name": "Play", + "path": "react-feather/dist/icons/play" + }, + "PlusCircle": { + "name": "PlusCircle", + "path": "react-feather/dist/icons/plus-circle" + }, + "PlusSquare": { + "name": "PlusSquare", + "path": "react-feather/dist/icons/plus-square" + }, + "Plus": { + "name": "Plus", + "path": "react-feather/dist/icons/plus" + }, + "Pocket": { + "name": "Pocket", + "path": "react-feather/dist/icons/pocket" + }, + "Power": { + "name": "Power", + "path": "react-feather/dist/icons/power" + }, + "Printer": { + "name": "Printer", + "path": "react-feather/dist/icons/printer" + }, + "Radio": { + "name": "Radio", + "path": "react-feather/dist/icons/radio" + }, + "RefreshCcw": { + "name": "RefreshCcw", + "path": "react-feather/dist/icons/refresh-ccw" + }, + "RefreshCw": { + "name": "RefreshCw", + "path": "react-feather/dist/icons/refresh-cw" + }, + "Repeat": { + "name": "Repeat", + "path": "react-feather/dist/icons/repeat" + }, + "Rewind": { + "name": "Rewind", + "path": "react-feather/dist/icons/rewind" + }, + "RotateCcw": { + "name": "RotateCcw", + "path": "react-feather/dist/icons/rotate-ccw" + }, + "RotateCw": { + "name": "RotateCw", + "path": "react-feather/dist/icons/rotate-cw" + }, + "Rss": { + "name": "Rss", + "path": "react-feather/dist/icons/rss" + }, + "Save": { + "name": "Save", + "path": "react-feather/dist/icons/save" + }, + "Scissors": { + "name": "Scissors", + "path": "react-feather/dist/icons/scissors" + }, + "Search": { + "name": "Search", + "path": "react-feather/dist/icons/search" + }, + "Send": { + "name": "Send", + "path": "react-feather/dist/icons/send" + }, + "Server": { + "name": "Server", + "path": "react-feather/dist/icons/server" + }, + "Settings": { + "name": "Settings", + "path": "react-feather/dist/icons/settings" + }, + "Share2": { + "name": "Share2", + "path": "react-feather/dist/icons/share-2" + }, + "Share": { + "name": "Share", + "path": "react-feather/dist/icons/share" + }, + "ShieldOff": { + "name": "ShieldOff", + "path": "react-feather/dist/icons/shield-off" + }, + "Shield": { + "name": "Shield", + "path": "react-feather/dist/icons/shield" + }, + "ShoppingBag": { + "name": "ShoppingBag", + "path": "react-feather/dist/icons/shopping-bag" + }, + "ShoppingCart": { + "name": "ShoppingCart", + "path": "react-feather/dist/icons/shopping-cart" + }, + "Shuffle": { + "name": "Shuffle", + "path": "react-feather/dist/icons/shuffle" + }, + "Sidebar": { + "name": "Sidebar", + "path": "react-feather/dist/icons/sidebar" + }, + "SkipBack": { + "name": "SkipBack", + "path": "react-feather/dist/icons/skip-back" + }, + "SkipForward": { + "name": "SkipForward", + "path": "react-feather/dist/icons/skip-forward" + }, + "Slack": { + "name": "Slack", + "path": "react-feather/dist/icons/slack" + }, + "Slash": { + "name": "Slash", + "path": "react-feather/dist/icons/slash" + }, + "Sliders": { + "name": "Sliders", + "path": "react-feather/dist/icons/sliders" + }, + "Smartphone": { + "name": "Smartphone", + "path": "react-feather/dist/icons/smartphone" + }, + "Smile": { + "name": "Smile", + "path": "react-feather/dist/icons/smile" + }, + "Speaker": { + "name": "Speaker", + "path": "react-feather/dist/icons/speaker" + }, + "Square": { + "name": "Square", + "path": "react-feather/dist/icons/square" + }, + "Star": { + "name": "Star", + "path": "react-feather/dist/icons/star" + }, + "StopCircle": { + "name": "StopCircle", + "path": "react-feather/dist/icons/stop-circle" + }, + "Sun": { + "name": "Sun", + "path": "react-feather/dist/icons/sun" + }, + "Sunrise": { + "name": "Sunrise", + "path": "react-feather/dist/icons/sunrise" + }, + "Sunset": { + "name": "Sunset", + "path": "react-feather/dist/icons/sunset" + }, + "Tablet": { + "name": "Tablet", + "path": "react-feather/dist/icons/tablet" + }, + "Tag": { + "name": "Tag", + "path": "react-feather/dist/icons/tag" + }, + "Target": { + "name": "Target", + "path": "react-feather/dist/icons/target" + }, + "Terminal": { + "name": "Terminal", + "path": "react-feather/dist/icons/terminal" + }, + "Thermometer": { + "name": "Thermometer", + "path": "react-feather/dist/icons/thermometer" + }, + "ThumbsDown": { + "name": "ThumbsDown", + "path": "react-feather/dist/icons/thumbs-down" + }, + "ThumbsUp": { + "name": "ThumbsUp", + "path": "react-feather/dist/icons/thumbs-up" + }, + "ToggleLeft": { + "name": "ToggleLeft", + "path": "react-feather/dist/icons/toggle-left" + }, + "ToggleRight": { + "name": "ToggleRight", + "path": "react-feather/dist/icons/toggle-right" + }, + "Tool": { + "name": "Tool", + "path": "react-feather/dist/icons/tool" + }, + "Trash2": { + "name": "Trash2", + "path": "react-feather/dist/icons/trash-2" + }, + "Trash": { + "name": "Trash", + "path": "react-feather/dist/icons/trash" + }, + "Trello": { + "name": "Trello", + "path": "react-feather/dist/icons/trello" + }, + "TrendingDown": { + "name": "TrendingDown", + "path": "react-feather/dist/icons/trending-down" + }, + "TrendingUp": { + "name": "TrendingUp", + "path": "react-feather/dist/icons/trending-up" + }, + "Triangle": { + "name": "Triangle", + "path": "react-feather/dist/icons/triangle" + }, + "Truck": { + "name": "Truck", + "path": "react-feather/dist/icons/truck" + }, + "Tv": { + "name": "Tv", + "path": "react-feather/dist/icons/tv" + }, + "Twitch": { + "name": "Twitch", + "path": "react-feather/dist/icons/twitch" + }, + "Twitter": { + "name": "Twitter", + "path": "react-feather/dist/icons/twitter" + }, + "Type": { + "name": "Type", + "path": "react-feather/dist/icons/type" + }, + "Umbrella": { + "name": "Umbrella", + "path": "react-feather/dist/icons/umbrella" + }, + "Underline": { + "name": "Underline", + "path": "react-feather/dist/icons/underline" + }, + "Unlock": { + "name": "Unlock", + "path": "react-feather/dist/icons/unlock" + }, + "UploadCloud": { + "name": "UploadCloud", + "path": "react-feather/dist/icons/upload-cloud" + }, + "Upload": { + "name": "Upload", + "path": "react-feather/dist/icons/upload" + }, + "UserCheck": { + "name": "UserCheck", + "path": "react-feather/dist/icons/user-check" + }, + "UserMinus": { + "name": "UserMinus", + "path": "react-feather/dist/icons/user-minus" + }, + "UserPlus": { + "name": "UserPlus", + "path": "react-feather/dist/icons/user-plus" + }, + "UserX": { + "name": "UserX", + "path": "react-feather/dist/icons/user-x" + }, + "User": { + "name": "User", + "path": "react-feather/dist/icons/user" + }, + "Users": { + "name": "Users", + "path": "react-feather/dist/icons/users" + }, + "VideoOff": { + "name": "VideoOff", + "path": "react-feather/dist/icons/video-off" + }, + "Video": { + "name": "Video", + "path": "react-feather/dist/icons/video" + }, + "Voicemail": { + "name": "Voicemail", + "path": "react-feather/dist/icons/voicemail" + }, + "Volume1": { + "name": "Volume1", + "path": "react-feather/dist/icons/volume-1" + }, + "Volume2": { + "name": "Volume2", + "path": "react-feather/dist/icons/volume-2" + }, + "VolumeX": { + "name": "VolumeX", + "path": "react-feather/dist/icons/volume-x" + }, + "Volume": { + "name": "Volume", + "path": "react-feather/dist/icons/volume" + }, + "Watch": { + "name": "Watch", + "path": "react-feather/dist/icons/watch" + }, + "WifiOff": { + "name": "WifiOff", + "path": "react-feather/dist/icons/wifi-off" + }, + "Wifi": { + "name": "Wifi", + "path": "react-feather/dist/icons/wifi" + }, + "Wind": { + "name": "Wind", + "path": "react-feather/dist/icons/wind" + }, + "XCircle": { + "name": "XCircle", + "path": "react-feather/dist/icons/x-circle" + }, + "XOctagon": { + "name": "XOctagon", + "path": "react-feather/dist/icons/x-octagon" + }, + "XSquare": { + "name": "XSquare", + "path": "react-feather/dist/icons/x-square" + }, + "X": { + "name": "X", + "path": "react-feather/dist/icons/x" + }, + "Youtube": { + "name": "Youtube", + "path": "react-feather/dist/icons/youtube" + }, + "ZapOff": { + "name": "ZapOff", + "path": "react-feather/dist/icons/zap-off" + }, + "Zap": { + "name": "Zap", + "path": "react-feather/dist/icons/zap" + }, + "ZoomIn": { + "name": "ZoomIn", + "path": "react-feather/dist/icons/zoom-in" + }, + "ZoomOut": { + "name": "ZoomOut", + "path": "react-feather/dist/icons/zoom-out" + } +} diff --git a/packages/ui/internals/populate-icons.js b/packages/ui/internals/populate-icons.js new file mode 100644 index 00000000000..aaf6be2da22 --- /dev/null +++ b/packages/ui/internals/populate-icons.js @@ -0,0 +1,77 @@ +const fs = require('fs') +const util = require('util') +var icons = require('./icons.json') //with path + +let iconList = {} +let importList = [] + +// +// create icon .tsx files +// + +Object.values(icons).map((icon) => { + iconList[`Icon${icon.name}`] = `src/components/Icon/icons/Icon${icon.name}/index.tsx` + importList.push(`export * as Icon${icon.name} from './Icon${icon.name}'`) + + var dir = `src/components/Icon/icons/Icon${icon.name}` + + fs.mkdir(dir, { recursive: true }, (err) => { + if (err) throw err + }) + + fs.writeFile( + `${dir}/index.tsx`, + `export { default as Icon${icon.name} } from './Icon${icon.name}'`, + function (err) { + if (err) return console.log(err) + } + ) + + fs.writeFile( + `${dir}/Icon${icon.name}.tsx`, + `// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { ${icon.name} } from 'react-feather' + import IconBase from './../../IconBase' + + function Icon${icon.name}(props: any) { + return + } + + export default Icon${icon.name} + `, + function (err) { + if (err) return console.log(err) + // console.log(`${icon.name} > ${icon.path}`) + } + ) +}) + +// +// create export file for icons +// + +fs.writeFile( + `src/components/Icon/icons/index.tsx`, + `// export icons +${importList + .map((icon) => { + return `${icon}\n` + }) + .join('')}`, + function (err) { + if (err) return console.log(err) + // console.log(`wrote file for rollup`) + } +) + +// +// create input destinations for rollup +// + +fs.writeFile(`internals/icons.js`, `export default ${util.inspect(iconList)}`, function (err) { + if (err) return console.log(err) + // console.log(`wrote file for rollup`) +}) diff --git a/packages/ui/package.json b/packages/ui/package.json new file mode 100644 index 00000000000..1e1490587d6 --- /dev/null +++ b/packages/ui/package.json @@ -0,0 +1,39 @@ +{ + "name": "ui", + "version": "0.0.0", + "main": "./index.tsx", + "types": "./index.tsx", + "license": "MIT", + "scripts": { + "build:icons": "node --experimental-modules internals/populate-icons.js" + }, + "dependencies": { + "@headlessui/react": "^1.0.0", + "@mertasan/tailwindcss-variables": "^2.0.1", + "@radix-ui/colors": "^0.1.8", + "@radix-ui/react-accordion": "^0.1.5", + "@radix-ui/react-collapsible": "^0.1.5", + "@radix-ui/react-context-menu": "^0.1.0", + "@radix-ui/react-dialog": "^0.1.5", + "@radix-ui/react-dropdown-menu": "^0.1.4", + "@radix-ui/react-popover": "^0.1.0", + "@radix-ui/react-portal": "^0.1.3", + "@radix-ui/react-tabs": "^0.1.0", + "@tailwindcss/forms": "^0.4.0", + "@tailwindcss/typography": "^0.5.0", + "autoprefixer": "^10.4.2", + "deepmerge": "^4.2.2", + "formik": "^2.2.9", + "lodash": "^4.17.20", + "postcss": "^8.4.5", + "prop-types": "^15.7.2", + "react-feather": "^2.0.10", + "tailwindcss": "^3.0.15", + "tailwindcss-radix": "^1.6.0" + }, + "devDependencies": { + "@types/react": "^17.0.37", + "@types/react-dom": "^17.0.11", + "typescript": "4.3.4" + } +} diff --git a/packages/ui/postcss.config.js b/packages/ui/postcss.config.js new file mode 100644 index 00000000000..29c447cb54b --- /dev/null +++ b/packages/ui/postcss.config.js @@ -0,0 +1 @@ +module.exports = require('config/postcss.config') diff --git a/packages/ui/radix-colors.js b/packages/ui/radix-colors.js new file mode 100644 index 00000000000..51e5115c33c --- /dev/null +++ b/packages/ui/radix-colors.js @@ -0,0 +1,1349 @@ +export const radix_light = { + '--colors-gray1': 'hsl(0 0% 99%)', + '--colors-gray2': 'hsl(0 0% 97.3%)', + '--colors-gray3': 'hsl(0 0% 95.1%)', + '--colors-gray4': 'hsl(0 0% 93%)', + '--colors-gray5': 'hsl(0 0% 90.9%)', + '--colors-gray6': 'hsl(0 0% 88.7%)', + '--colors-gray7': 'hsl(0 0% 85.8%)', + '--colors-gray8': 'hsl(0 0% 78%)', + '--colors-gray9': 'hsl(0 0% 56.1%)', + '--colors-gray10': 'hsl(0 0% 52.3%)', + '--colors-gray11': 'hsl(0 0% 43.5%)', + '--colors-gray12': 'hsl(0 0% 9%)', + '--colors-mauve1': 'hsl(300 20% 99%)', + '--colors-mauve2': 'hsl(300 7.7% 97.5%)', + '--colors-mauve3': 'hsl(294 5.5% 95.3%)', + '--colors-mauve4': 'hsl(289 4.7% 93.3%)', + '--colors-mauve5': 'hsl(283 4.4% 91.3%)', + '--colors-mauve6': 'hsl(278 4.1% 89.1%)', + '--colors-mauve7': 'hsl(271 3.9% 86.3%)', + '--colors-mauve8': 'hsl(255 3.7% 78.8%)', + '--colors-mauve9': 'hsl(252 4% 57.3%)', + '--colors-mauve10': 'hsl(253 3.5% 53.5%)', + '--colors-mauve11': 'hsl(252 4% 44.8%)', + '--colors-mauve12': 'hsl(260 25% 11%)', + '--colors-slate1': 'hsl(206 30% 98.8%)', + '--colors-slate2': 'hsl(210 16.7% 97.6%)', + '--colors-slate3': 'hsl(209 13.3% 95.3%)', + '--colors-slate4': 'hsl(209 12.2% 93.2%)', + '--colors-slate5': 'hsl(208 11.7% 91.1%)', + '--colors-slate6': 'hsl(208 11.3% 88.9%)', + '--colors-slate7': 'hsl(207 11.1% 85.9%)', + '--colors-slate8': 'hsl(205 10.7% 78%)', + '--colors-slate9': 'hsl(206 6% 56.1%)', + '--colors-slate10': 'hsl(206 5.8% 52.3%)', + '--colors-slate11': 'hsl(206 6% 43.5%)', + '--colors-slate12': 'hsl(206 24% 9%)', + '--colors-sage1': 'hsl(155 30% 98.8%)', + '--colors-sage2': 'hsl(150 16.7% 97.6%)', + '--colors-sage3': 'hsl(151 10.6% 95.2%)', + '--colors-sage4': 'hsl(151 8.8% 93%)', + '--colors-sage5': 'hsl(151 7.8% 90.8%)', + '--colors-sage6': 'hsl(152 7.2% 88.4%)', + '--colors-sage7': 'hsl(153 6.7% 85.3%)', + '--colors-sage8': 'hsl(154 6.1% 77.5%)', + '--colors-sage9': 'hsl(155 3.5% 55.5%)', + '--colors-sage10': 'hsl(154 2.8% 51.7%)', + '--colors-sage11': 'hsl(155 3% 43%)', + '--colors-sage12': 'hsl(155 24% 9%)', + '--colors-olive1': 'hsl(110 20% 99%)', + '--colors-olive2': 'hsl(120 16.7% 97.6%)', + '--colors-olive3': 'hsl(119 10.1% 95.2%)', + '--colors-olive4': 'hsl(118 8.1% 93%)', + '--colors-olive5': 'hsl(117 7.1% 90.8%)', + '--colors-olive6': 'hsl(115 6.4% 88.5%)', + '--colors-olive7': 'hsl(114 5.9% 85.4%)', + '--colors-olive8': 'hsl(110 5.2% 77.3%)', + '--colors-olive9': 'hsl(110 3.5% 55.5%)', + '--colors-olive10': 'hsl(111 2.8% 51.7%)', + '--colors-olive11': 'hsl(110 3% 43%)', + '--colors-olive12': 'hsl(110 25% 9.5%)', + '--colors-sand1': 'hsl(50 20% 99%)', + '--colors-sand2': 'hsl(60 7.7% 97.5%)', + '--colors-sand3': 'hsl(59 6.5% 95.1%)', + '--colors-sand4': 'hsl(58 6.1% 92.9%)', + '--colors-sand5': 'hsl(57 6% 90.7%)', + '--colors-sand6': 'hsl(56 5.9% 88.4%)', + '--colors-sand7': 'hsl(55 5.9% 85.2%)', + '--colors-sand8': 'hsl(51 6% 77.1%)', + '--colors-sand9': 'hsl(50 2% 55.7%)', + '--colors-sand10': 'hsl(55 1.7% 51.9%)', + '--colors-sand11': 'hsl(50 2% 43.1%)', + '--colors-sand12': 'hsl(50 6% 10%)', + '--colors-tomato1': 'hsl(10 100% 99.4%)', + '--colors-tomato2': 'hsl(8 100% 98.4%)', + '--colors-tomato3': 'hsl(8 100% 96.6%)', + '--colors-tomato4': 'hsl(8 100% 94.3%)', + '--colors-tomato5': 'hsl(8 92.8% 91%)', + '--colors-tomato6': 'hsl(9 84.7% 86.3%)', + '--colors-tomato7': 'hsl(10 77.3% 79.5%)', + '--colors-tomato8': 'hsl(10 71.6% 71%)', + '--colors-tomato9': 'hsl(10 78% 54%)', + '--colors-tomato10': 'hsl(10 71.5% 50%)', + '--colors-tomato11': 'hsl(10 82% 43.5%)', + '--colors-tomato12': 'hsl(10 50% 13.5%)', + '--colors-red1': 'hsl(359 100% 99.4%)', + '--colors-red2': 'hsl(359 100% 98.6%)', + '--colors-red3': 'hsl(360 100% 96.8%)', + '--colors-red4': 'hsl(360 97.9% 94.8%)', + '--colors-red5': 'hsl(360 90.2% 91.9%)', + '--colors-red6': 'hsl(360 81.7% 87.8%)', + '--colors-red7': 'hsl(359 74.2% 81.7%)', + '--colors-red8': 'hsl(359 69.5% 74.3%)', + '--colors-red9': 'hsl(358 75% 59%)', + '--colors-red10': 'hsl(358 69.4% 55.2%)', + '--colors-red11': 'hsl(358 65% 48.7%)', + '--colors-red12': 'hsl(354 50% 14.6%)', + '--colors-crimson1': 'hsl(332 100% 99.4%)', + '--colors-crimson2': 'hsl(330 100% 98.4%)', + '--colors-crimson3': 'hsl(331 85.6% 96.6%)', + '--colors-crimson4': 'hsl(331 78.1% 94.2%)', + '--colors-crimson5': 'hsl(332 72.1% 91.1%)', + '--colors-crimson6': 'hsl(333 67% 86.7%)', + '--colors-crimson7': 'hsl(335 63.5% 80.4%)', + '--colors-crimson8': 'hsl(336 62.3% 72.9%)', + '--colors-crimson9': 'hsl(336 80% 57.8%)', + '--colors-crimson10': 'hsl(336 73.7% 53.5%)', + '--colors-crimson11': 'hsl(336 75% 47.2%)', + '--colors-crimson12': 'hsl(340 65% 14.5%)', + '--colors-pink1': 'hsl(322 100% 99.4%)', + '--colors-pink2': 'hsl(323 100% 98.4%)', + '--colors-pink3': 'hsl(323 86.3% 96.5%)', + '--colors-pink4': 'hsl(323 78.7% 94.2%)', + '--colors-pink5': 'hsl(323 72.2% 91.1%)', + '--colors-pink6': 'hsl(323 66.3% 86.6%)', + '--colors-pink7': 'hsl(323 62% 80.1%)', + '--colors-pink8': 'hsl(323 60.3% 72.4%)', + '--colors-pink9': 'hsl(322 65% 54.5%)', + '--colors-pink10': 'hsl(322 63.9% 50.7%)', + '--colors-pink11': 'hsl(322 75% 46%)', + '--colors-pink12': 'hsl(320 70% 13.5%)', + '--colors-plum1': 'hsl(292 90% 99.4%)', + '--colors-plum2': 'hsl(300 100% 98.6%)', + '--colors-plum3': 'hsl(299 71.2% 96.4%)', + '--colors-plum4': 'hsl(299 62% 93.8%)', + '--colors-plum5': 'hsl(298 56.1% 90.5%)', + '--colors-plum6': 'hsl(296 51.3% 85.8%)', + '--colors-plum7': 'hsl(295 48.2% 78.9%)', + '--colors-plum8': 'hsl(292 47.7% 70.8%)', + '--colors-plum9': 'hsl(292 45% 51%)', + '--colors-plum10': 'hsl(292 50.2% 46.9%)', + '--colors-plum11': 'hsl(292 60% 42.5%)', + '--colors-plum12': 'hsl(291 66% 14%)', + '--colors-purple1': 'hsl(280 65% 99.4%)', + '--colors-purple2': 'hsl(276 100% 99%)', + '--colors-purple3': 'hsl(276 83.1% 97%)', + '--colors-purple4': 'hsl(275 76.4% 94.7%)', + '--colors-purple5': 'hsl(275 70.8% 91.8%)', + '--colors-purple6': 'hsl(274 65.4% 87.8%)', + '--colors-purple7': 'hsl(273 61% 81.7%)', + '--colors-purple8': 'hsl(272 60% 73.5%)', + '--colors-purple9': 'hsl(272 51% 54%)', + '--colors-purple10': 'hsl(272 46.8% 50.3%)', + '--colors-purple11': 'hsl(272 50% 45.8%)', + '--colors-purple12': 'hsl(272 66% 16%)', + '--colors-violet1': 'hsl(255 65% 99.4%)', + '--colors-violet2': 'hsl(252 100% 99%)', + '--colors-violet3': 'hsl(252 96.9% 97.4%)', + '--colors-violet4': 'hsl(252 91.5% 95.5%)', + '--colors-violet5': 'hsl(252 85.1% 93%)', + '--colors-violet6': 'hsl(252 77.8% 89.4%)', + '--colors-violet7': 'hsl(252 71% 83.7%)', + '--colors-violet8': 'hsl(252 68.6% 76.3%)', + '--colors-violet9': 'hsl(252 56% 57.5%)', + '--colors-violet10': 'hsl(251 48.1% 53.5%)', + '--colors-violet11': 'hsl(250 43% 48%)', + '--colors-violet12': 'hsl(254 60% 18.5%)', + '--colors-indigo1': 'hsl(225 60% 99.4%)', + '--colors-indigo2': 'hsl(223 100% 98.6%)', + '--colors-indigo3': 'hsl(223 98.4% 97.1%)', + '--colors-indigo4': 'hsl(223 92.9% 95%)', + '--colors-indigo5': 'hsl(224 87.1% 92%)', + '--colors-indigo6': 'hsl(224 81.9% 87.8%)', + '--colors-indigo7': 'hsl(225 77.4% 82.1%)', + '--colors-indigo8': 'hsl(226 75.4% 74.5%)', + '--colors-indigo9': 'hsl(226 70% 55.5%)', + '--colors-indigo10': 'hsl(226 58.6% 51.3%)', + '--colors-indigo11': 'hsl(226 55% 45%)', + '--colors-indigo12': 'hsl(226 62% 17%)', + '--colors-blue1': 'hsl(206 100% 99.2%)', + '--colors-blue2': 'hsl(210 100% 98%)', + '--colors-blue3': 'hsl(209 100% 96.5%)', + '--colors-blue4': 'hsl(210 98.8% 94%)', + '--colors-blue5': 'hsl(209 95% 90.1%)', + '--colors-blue6': 'hsl(209 81.2% 84.5%)', + '--colors-blue7': 'hsl(208 77.5% 76.9%)', + '--colors-blue8': 'hsl(206 81.9% 65.3%)', + '--colors-blue9': 'hsl(206 100% 50%)', + '--colors-blue10': 'hsl(208 100% 47.3%)', + '--colors-blue11': 'hsl(211 100% 43.2%)', + '--colors-blue12': 'hsl(211 100% 15%)', + '--colors-sky1': 'hsl(193 100% 98.8%)', + '--colors-sky2': 'hsl(193 100% 97.3%)', + '--colors-sky3': 'hsl(193 99% 94.7%)', + '--colors-sky4': 'hsl(193 91.4% 91.4%)', + '--colors-sky5': 'hsl(194 82% 86.6%)', + '--colors-sky6': 'hsl(194 74.1% 79.5%)', + '--colors-sky7': 'hsl(194 72.3% 69.6%)', + '--colors-sky8': 'hsl(193 77.9% 53.9%)', + '--colors-sky9': 'hsl(193 98% 70%)', + '--colors-sky10': 'hsl(193 87% 66.5%)', + '--colors-sky11': 'hsl(195 100% 31.5%)', + '--colors-sky12': 'hsl(195 100% 13%)', + '--colors-mint1': 'hsl(165 80% 98.8%)', + '--colors-mint2': 'hsl(164 88.2% 96.7%)', + '--colors-mint3': 'hsl(164 76.6% 93.3%)', + '--colors-mint4': 'hsl(165 68.8% 89.5%)', + '--colors-mint5': 'hsl(165 60.6% 84.5%)', + '--colors-mint6': 'hsl(165 53.5% 76.9%)', + '--colors-mint7': 'hsl(166 50.7% 66.1%)', + '--colors-mint8': 'hsl(168 52.8% 51%)', + '--colors-mint9': 'hsl(167 65% 66%)', + '--colors-mint10': 'hsl(167 59.3% 63.1%)', + '--colors-mint11': 'hsl(172 72% 28.5%)', + '--colors-mint12': 'hsl(172 70% 12%)', + '--colors-cyan1': 'hsl(185 60% 98.7%)', + '--colors-cyan2': 'hsl(185 73.3% 97.1%)', + '--colors-cyan3': 'hsl(186 70.2% 94.4%)', + '--colors-cyan4': 'hsl(186 63.8% 90.6%)', + '--colors-cyan5': 'hsl(187 58.3% 85.4%)', + '--colors-cyan6': 'hsl(188 54.6% 78.4%)', + '--colors-cyan7': 'hsl(189 53.7% 68.7%)', + '--colors-cyan8': 'hsl(189 60.3% 52.5%)', + '--colors-cyan9': 'hsl(190 95% 39%)', + '--colors-cyan10': 'hsl(191 91.2% 36.8%)', + '--colors-cyan11': 'hsl(192 85% 31%)', + '--colors-cyan12': 'hsl(192 88% 12.5%)', + '--colors-teal1': 'hsl(165 60% 98.8%)', + '--colors-teal2': 'hsl(169 64.7% 96.7%)', + '--colors-teal3': 'hsl(169 59.8% 94%)', + '--colors-teal4': 'hsl(169 53.1% 90.2%)', + '--colors-teal5': 'hsl(170 47.1% 85%)', + '--colors-teal6': 'hsl(170 42.6% 77.9%)', + '--colors-teal7': 'hsl(170 39.9% 68.1%)', + '--colors-teal8': 'hsl(172 42.1% 52.5%)', + '--colors-teal9': 'hsl(173 80% 36%)', + '--colors-teal10': 'hsl(173 83.4% 32.5%)', + '--colors-teal11': 'hsl(174 90% 25.2%)', + '--colors-teal12': 'hsl(170 50% 12.5%)', + '--colors-green1': 'hsl(136 50% 98.9%)', + '--colors-green2': 'hsl(138 62.5% 96.9%)', + '--colors-green3': 'hsl(139 55.2% 94.5%)', + '--colors-green4': 'hsl(140 48.7% 91%)', + '--colors-green5': 'hsl(141 43.7% 86%)', + '--colors-green6': 'hsl(143 40.3% 79%)', + '--colors-green7': 'hsl(146 38.5% 69%)', + '--colors-green8': 'hsl(151 40.2% 54.1%)', + '--colors-green9': 'hsl(151 55% 41.5%)', + '--colors-green10': 'hsl(152 57.5% 37.6%)', + '--colors-green11': 'hsl(153 67% 28.5%)', + '--colors-green12': 'hsl(155 40% 14%)', + '--colors-grass1': 'hsl(116 50% 98.9%)', + '--colors-grass2': 'hsl(120 60% 97.1%)', + '--colors-grass3': 'hsl(120 53.6% 94.8%)', + '--colors-grass4': 'hsl(121 47.5% 91.4%)', + '--colors-grass5': 'hsl(122 42.6% 86.5%)', + '--colors-grass6': 'hsl(124 39% 79.7%)', + '--colors-grass7': 'hsl(126 37.1% 70.2%)', + '--colors-grass8': 'hsl(131 38.1% 56.3%)', + '--colors-grass9': 'hsl(131 41% 46.5%)', + '--colors-grass10': 'hsl(132 43.1% 42.2%)', + '--colors-grass11': 'hsl(133 50% 32.5%)', + '--colors-grass12': 'hsl(130 30% 14.9%)', + '--colors-lime1': 'hsl(85 50% 98.7%)', + '--colors-lime2': 'hsl(85 66.7% 96.5%)', + '--colors-lime3': 'hsl(85 76% 92.3%)', + '--colors-lime4': 'hsl(84 75.3% 87.5%)', + '--colors-lime5': 'hsl(84 71.5% 81.9%)', + '--colors-lime6': 'hsl(82 65% 74.6%)', + '--colors-lime7': 'hsl(79 53.2% 61.8%)', + '--colors-lime8': 'hsl(76 61.7% 45.1%)', + '--colors-lime9': 'hsl(81 67% 50%)', + '--colors-lime10': 'hsl(80 68.3% 46.9%)', + '--colors-lime11': 'hsl(75 80% 26%)', + '--colors-lime12': 'hsl(78 70% 11.5%)', + '--colors-yellow1': 'hsl(60 54% 98.5%)', + '--colors-yellow2': 'hsl(52 100% 95.5%)', + '--colors-yellow3': 'hsl(55 100% 90.9%)', + '--colors-yellow4': 'hsl(54 100% 86.6%)', + '--colors-yellow5': 'hsl(52 97.9% 82%)', + '--colors-yellow6': 'hsl(50 89.4% 76.1%)', + '--colors-yellow7': 'hsl(47 80.4% 68%)', + '--colors-yellow8': 'hsl(48 100% 46.1%)', + '--colors-yellow9': 'hsl(53 92% 50%)', + '--colors-yellow10': 'hsl(50 100% 48.5%)', + '--colors-yellow11': 'hsl(42 100% 29%)', + '--colors-yellow12': 'hsl(40 55% 13.5%)', + '--colors-amber1': 'hsl(39 70% 99%)', + '--colors-amber2': 'hsl(40 100% 96.5%)', + '--colors-amber3': 'hsl(44 100% 91.7%)', + '--colors-amber4': 'hsl(43 100% 86.8%)', + '--colors-amber5': 'hsl(42 100% 81.8%)', + '--colors-amber6': 'hsl(38 99.7% 76.3%)', + '--colors-amber7': 'hsl(36 86.1% 67.1%)', + '--colors-amber8': 'hsl(35 85.2% 55.1%)', + '--colors-amber9': 'hsl(39 100% 57%)', + '--colors-amber10': 'hsl(35 100% 55.5%)', + '--colors-amber11': 'hsl(30 100% 34%)', + '--colors-amber12': 'hsl(20 80% 17%)', + '--colors-orange1': 'hsl(24 70% 99%)', + '--colors-orange2': 'hsl(24 83.3% 97.6%)', + '--colors-orange3': 'hsl(24 100% 95.3%)', + '--colors-orange4': 'hsl(25 100% 92.2%)', + '--colors-orange5': 'hsl(25 100% 88.2%)', + '--colors-orange6': 'hsl(25 100% 82.8%)', + '--colors-orange7': 'hsl(24 100% 75.3%)', + '--colors-orange8': 'hsl(24 94.5% 64.3%)', + '--colors-orange9': 'hsl(24 94% 50%)', + '--colors-orange10': 'hsl(24 100% 46.5%)', + '--colors-orange11': 'hsl(24 100% 37%)', + '--colors-orange12': 'hsl(15 60% 17%)', + '--colors-brown1': 'hsl(30 40% 99.1%)', + '--colors-brown2': 'hsl(30 50% 97.6%)', + '--colors-brown3': 'hsl(30 52.5% 94.6%)', + '--colors-brown4': 'hsl(30 53% 91.2%)', + '--colors-brown5': 'hsl(29 52.9% 86.8%)', + '--colors-brown6': 'hsl(29 52.5% 80.9%)', + '--colors-brown7': 'hsl(29 51.5% 72.8%)', + '--colors-brown8': 'hsl(28 50% 63.1%)', + '--colors-brown9': 'hsl(28 34% 51%)', + '--colors-brown10': 'hsl(27 31.8% 47.6%)', + '--colors-brown11': 'hsl(25 30% 41%)', + '--colors-brown12': 'hsl(20 30% 19%)', + '--colors-bronze1': 'hsl(15 30% 99.1%)', + '--colors-bronze2': 'hsl(17 63.6% 97.8%)', + '--colors-bronze3': 'hsl(17 42.1% 95.2%)', + '--colors-bronze4': 'hsl(17 35.2% 92.1%)', + '--colors-bronze5': 'hsl(17 31.5% 88.2%)', + '--colors-bronze6': 'hsl(17 29% 83%)', + '--colors-bronze7': 'hsl(17 26.9% 75.6%)', + '--colors-bronze8': 'hsl(17 25.1% 66.5%)', + '--colors-bronze9': 'hsl(17 20% 54%)', + '--colors-bronze10': 'hsl(17 18.1% 50.1%)', + '--colors-bronze11': 'hsl(15 20% 43.1%)', + '--colors-bronze12': 'hsl(12 22% 21.5%)', + '--colors-gold1': 'hsl(50 20% 99.1%)', + '--colors-gold2': 'hsl(47 52.9% 96.7%)', + '--colors-gold3': 'hsl(46 38.2% 93.7%)', + '--colors-gold4': 'hsl(44 32.7% 90.1%)', + '--colors-gold5': 'hsl(43 29.9% 85.7%)', + '--colors-gold6': 'hsl(41 28.3% 79.8%)', + '--colors-gold7': 'hsl(39 27.6% 71.9%)', + '--colors-gold8': 'hsl(36 27.2% 61.8%)', + '--colors-gold9': 'hsl(36 20% 49.5%)', + '--colors-gold10': 'hsl(36 19.8% 45.7%)', + '--colors-gold11': 'hsl(36 20% 39%)', + '--colors-gold12': 'hsl(36 16% 20%)', + '--colors-grayA1': 'hsl(0 0% 0% / 0.012)', + '--colors-grayA2': 'hsl(0 0% 0% / 0.027)', + '--colors-grayA3': 'hsl(0 0% 0% / 0.047)', + '--colors-grayA4': 'hsl(0 0% 0% / 0.071)', + '--colors-grayA5': 'hsl(0 0% 0% / 0.09)', + '--colors-grayA6': 'hsl(0 0% 0% / 0.114)', + '--colors-grayA7': 'hsl(0 0% 0% / 0.141)', + '--colors-grayA8': 'hsl(0 0% 0% / 0.22)', + '--colors-grayA9': 'hsl(0 0% 0% / 0.439)', + '--colors-grayA10': 'hsl(0 0% 0% / 0.478)', + '--colors-grayA11': 'hsl(0 0% 0% / 0.565)', + '--colors-grayA12': 'hsl(0 0% 0% / 0.91)', + '--colors-mauveA1': 'hsl(300 89.3% 18.3% / 0.012)', + '--colors-mauveA2': 'hsl(300 78.1% 9% / 0.028)', + '--colors-mauveA3': 'hsl(300 99.5% 7.7% / 0.051)', + '--colors-mauveA4': 'hsl(270 90.5% 6.1% / 0.071)', + '--colors-mauveA5': 'hsl(270 83% 5.2% / 0.091)', + '--colors-mauveA6': 'hsl(300 93.5% 3.7% / 0.114)', + '--colors-mauveA7': 'hsl(270 82.6% 3.3% / 0.142)', + '--colors-mauveA8': 'hsl(255 95.2% 3.7% / 0.22)', + '--colors-mauveA9': 'hsl(255 94.8% 3.7% / 0.444)', + '--colors-mauveA10': 'hsl(253 96.5% 3.8% / 0.483)', + '--colors-mauveA11': 'hsl(247 97.9% 3.2% / 0.569)', + '--colors-mauveA12': 'hsl(261 98.7% 3% / 0.918)', + '--colors-slateA1': 'hsl(210 92.6% 26.5% / 0.016)', + '--colors-slateA2': 'hsl(210 87.7% 16% / 0.028)', + '--colors-slateA3': 'hsl(210 98.8% 14.4% / 0.055)', + '--colors-slateA4': 'hsl(210 94.1% 11.1% / 0.075)', + '--colors-slateA5': 'hsl(216 91.1% 10.9% / 0.099)', + '--colors-slateA6': 'hsl(206 96.4% 11.3% / 0.126)', + '--colors-slateA7': 'hsl(210 99.1% 10.1% / 0.157)', + '--colors-slateA8': 'hsl(205 96.5% 10% / 0.244)', + '--colors-slateA9': 'hsl(206 98.8% 5.9% / 0.467)', + '--colors-slateA10': 'hsl(206 99.6% 5.4% / 0.506)', + '--colors-slateA11': 'hsl(206 97% 4.8% / 0.593)', + '--colors-slateA12': 'hsl(202 97% 2.4% / 0.934)', + '--colors-sageA1': 'hsl(150 92.6% 26.5% / 0.016)', + '--colors-sageA2': 'hsl(150 87.7% 16% / 0.028)', + '--colors-sageA3': 'hsl(160 98.4% 10.9% / 0.055)', + '--colors-sageA4': 'hsl(140 92.3% 8.5% / 0.075)', + '--colors-sageA5': 'hsl(160 86% 6.9% / 0.099)', + '--colors-sageA6': 'hsl(156 95.1% 8.2% / 0.126)', + '--colors-sageA7': 'hsl(156 98.6% 6.3% / 0.157)', + '--colors-sageA8': 'hsl(154 94.6% 6% / 0.24)', + '--colors-sageA9': 'hsl(154 98.7% 3% / 0.459)', + '--colors-sageA10': 'hsl(154 93.5% 2.9% / 0.499)', + '--colors-sageA11': 'hsl(154 95.2% 2.5% / 0.585)', + '--colors-sageA12': 'hsl(158 97% 2.4% / 0.934)', + '--colors-oliveA1': 'hsl(120 89.3% 18.3% / 0.012)', + '--colors-oliveA2': 'hsl(120 87.7% 16% / 0.028)', + '--colors-oliveA3': 'hsl(120 99.5% 7.7% / 0.051)', + '--colors-oliveA4': 'hsl(120 92.3% 8.5% / 0.075)', + '--colors-oliveA5': 'hsl(120 86% 6.9% / 0.099)', + '--colors-oliveA6': 'hsl(120 94.8% 6.8% / 0.122)', + '--colors-oliveA7': 'hsl(120 99.3% 5.2% / 0.153)', + '--colors-oliveA8': 'hsl(110 93.8% 5.2% / 0.24)', + '--colors-oliveA9': 'hsl(111 98.7% 3% / 0.459)', + '--colors-oliveA10': 'hsl(111 93.5% 2.9% / 0.499)', + '--colors-oliveA11': 'hsl(111 95.2% 2.5% / 0.585)', + '--colors-oliveA12': 'hsl(110 97.6% 2.6% / 0.93)', + '--colors-sandA1': 'hsl(60 89.3% 18.3% / 0.012)', + '--colors-sandA2': 'hsl(60 78.1% 9% / 0.028)', + '--colors-sandA3': 'hsl(60 99% 3.9% / 0.051)', + '--colors-sandA4': 'hsl(60 88.9% 5.9% / 0.075)', + '--colors-sandA5': 'hsl(60 86% 6.9% / 0.099)', + '--colors-sandA6': 'hsl(60 93.2% 5.2% / 0.122)', + '--colors-sandA7': 'hsl(60 98.3% 5.1% / 0.157)', + '--colors-sandA8': 'hsl(51 94.1% 6% / 0.244)', + '--colors-sandA9': 'hsl(60 99.8% 1.7% / 0.451)', + '--colors-sandA10': 'hsl(60 90.7% 1.8% / 0.491)', + '--colors-sandA11': 'hsl(45 93.7% 1.5% / 0.577)', + '--colors-sandA12': 'hsl(60 98% 0.7% / 0.906)', + '--colors-tomatoA1': 'hsl(0 100% 51% / 0.012)', + '--colors-tomatoA2': 'hsl(8 100% 51% / 0.032)', + '--colors-tomatoA3': 'hsl(7 100% 50.2% / 0.067)', + '--colors-tomatoA4': 'hsl(8 100% 50.1% / 0.114)', + '--colors-tomatoA5': 'hsl(7 99.5% 47.9% / 0.173)', + '--colors-tomatoA6': 'hsl(9 99.9% 46.2% / 0.255)', + '--colors-tomatoA7': 'hsl(10 99.8% 43.6% / 0.365)', + '--colors-tomatoA8': 'hsl(10 99.5% 41.8% / 0.499)', + '--colors-tomatoA9': 'hsl(10 99.9% 43.8% / 0.82)', + '--colors-tomatoA10': 'hsl(10 100% 41.8% / 0.859)', + '--colors-tomatoA11': 'hsl(10 99.9% 38.8% / 0.922)', + '--colors-tomatoA12': 'hsl(10 99% 7.4% / 0.934)', + '--colors-redA1': 'hsl(0 100% 51% / 0.012)', + '--colors-redA2': 'hsl(0 100% 51% / 0.032)', + '--colors-redA3': 'hsl(0 100% 50.2% / 0.063)', + '--colors-redA4': 'hsl(0 100% 50% / 0.102)', + '--colors-redA5': 'hsl(0 99.9% 47.5% / 0.153)', + '--colors-redA6': 'hsl(0 99.5% 44.9% / 0.224)', + '--colors-redA7': 'hsl(359 99.7% 42.7% / 0.318)', + '--colors-redA8': 'hsl(359 99.6% 41.1% / 0.436)', + '--colors-redA9': 'hsl(358 99.9% 42.9% / 0.718)', + '--colors-redA10': 'hsl(358 99.9% 41% / 0.761)', + '--colors-redA11': 'hsl(358 99.8% 38.3% / 0.832)', + '--colors-redA12': 'hsl(355 99.3% 7.9% / 0.926)', + '--colors-crimsonA1': 'hsl(340 100% 51% / 0.012)', + '--colors-crimsonA2': 'hsl(330 100% 51% / 0.032)', + '--colors-crimsonA3': 'hsl(332 99.1% 47.1% / 0.063)', + '--colors-crimsonA4': 'hsl(331 99.9% 44.3% / 0.102)', + '--colors-crimsonA5': 'hsl(333 99.9% 42.3% / 0.153)', + '--colors-crimsonA6': 'hsl(333 99.5% 40.5% / 0.224)', + '--colors-crimsonA7': 'hsl(335 99.7% 39.1% / 0.322)', + '--colors-crimsonA8': 'hsl(336 99.5% 38.5% / 0.44)', + '--colors-crimsonA9': 'hsl(336 99.9% 44.3% / 0.761)', + '--colors-crimsonA10': 'hsl(336 100% 42.5% / 0.808)', + '--colors-crimsonA11': 'hsl(336 99.8% 40.3% / 0.883)', + '--colors-crimsonA12': 'hsl(340 99% 10% / 0.95)', + '--colors-pinkA1': 'hsl(320 100% 51% / 0.012)', + '--colors-pinkA2': 'hsl(323 100% 51% / 0.032)', + '--colors-pinkA3': 'hsl(323 98.9% 47.3% / 0.067)', + '--colors-pinkA4': 'hsl(323 99.9% 44.3% / 0.102)', + '--colors-pinkA5': 'hsl(324 99.9% 42.3% / 0.153)', + '--colors-pinkA6': 'hsl(323 99.5% 39.6% / 0.224)', + '--colors-pinkA7': 'hsl(323 99.7% 38.5% / 0.322)', + '--colors-pinkA8': 'hsl(323 99.5% 37.7% / 0.444)', + '--colors-pinkA9': 'hsl(322 99.7% 39.3% / 0.75)', + '--colors-pinkA10': 'hsl(322 100% 39.1% / 0.808)', + '--colors-pinkA11': 'hsl(322 99.8% 39% / 0.887)', + '--colors-pinkA12': 'hsl(321 99.8% 10% / 0.961)', + '--colors-plumA1': 'hsl(280 100% 51% / 0.012)', + '--colors-plumA2': 'hsl(300 100% 51% / 0.028)', + '--colors-plumA3': 'hsl(300 99% 40.9% / 0.063)', + '--colors-plumA4': 'hsl(300 99.9% 38.5% / 0.102)', + '--colors-plumA5': 'hsl(298 98.2% 35.9% / 0.15)', + '--colors-plumA6': 'hsl(297 99.6% 33.7% / 0.216)', + '--colors-plumA7': 'hsl(295 99.7% 32.6% / 0.314)', + '--colors-plumA8': 'hsl(292 99.6% 32.4% / 0.432)', + '--colors-plumA9': 'hsl(292 99.9% 31% / 0.71)', + '--colors-plumA10': 'hsl(292 99.9% 30.8% / 0.765)', + '--colors-plumA11': 'hsl(292 99.8% 30.7% / 0.832)', + '--colors-plumA12': 'hsl(291 99.9% 9.7% / 0.953)', + '--colors-purpleA1': 'hsl(300 94.3% 34.6% / 0.012)', + '--colors-purpleA2': 'hsl(276 100% 51% / 0.02)', + '--colors-purpleA3': 'hsl(277 99.6% 46.5% / 0.055)', + '--colors-purpleA4': 'hsl(274 97.9% 44.3% / 0.095)', + '--colors-purpleA5': 'hsl(276 98.6% 42% / 0.142)', + '--colors-purpleA6': 'hsl(275 100% 39.2% / 0.2)', + '--colors-purpleA7': 'hsl(273 99.2% 38.2% / 0.295)', + '--colors-purpleA8': 'hsl(272 99.7% 37.6% / 0.424)', + '--colors-purpleA9': 'hsl(272 99.6% 34% / 0.695)', + '--colors-purpleA10': 'hsl(272 99.7% 32% / 0.73)', + '--colors-purpleA11': 'hsl(272 99.8% 29.7% / 0.773)', + '--colors-purpleA12': 'hsl(272 99.2% 11.3% / 0.946)', + '--colors-violetA1': 'hsl(270 94.3% 34.6% / 0.012)', + '--colors-violetA2': 'hsl(252 100% 51% / 0.02)', + '--colors-violetA3': 'hsl(254 100% 50% / 0.051)', + '--colors-violetA4': 'hsl(251 98.3% 48.2% / 0.087)', + '--colors-violetA5': 'hsl(252 99% 45.7% / 0.13)', + '--colors-violetA6': 'hsl(251 99.1% 44% / 0.189)', + '--colors-violetA7': 'hsl(252 99.5% 41.7% / 0.279)', + '--colors-violetA8': 'hsl(252 100% 40.7% / 0.4)', + '--colors-violetA9': 'hsl(252 99.9% 35.8% / 0.663)', + '--colors-violetA10': 'hsl(251 99.6% 32.5% / 0.691)', + '--colors-violetA11': 'hsl(250 99.8% 28.4% / 0.726)', + '--colors-violetA12': 'hsl(254 99.5% 11.9% / 0.926)', + '--colors-indigoA1': 'hsl(240 92.6% 26.5% / 0.008)', + '--colors-indigoA2': 'hsl(223 100% 51% / 0.028)', + '--colors-indigoA3': 'hsl(224 100% 50.1% / 0.059)', + '--colors-indigoA4': 'hsl(223 98% 48.5% / 0.099)', + '--colors-indigoA5': 'hsl(225 98.6% 46.4% / 0.15)', + '--colors-indigoA6': 'hsl(224 99.5% 44.9% / 0.224)', + '--colors-indigoA7': 'hsl(225 99.7% 43.9% / 0.318)', + '--colors-indigoA8': 'hsl(226 99.5% 43.1% / 0.448)', + '--colors-indigoA9': 'hsl(226 100% 41.2% / 0.757)', + '--colors-indigoA10': 'hsl(226 99.8% 37.1% / 0.773)', + '--colors-indigoA11': 'hsl(226 99.6% 31.1% / 0.797)', + '--colors-indigoA12': 'hsl(226 99.3% 11.4% / 0.938)', + '--colors-blueA1': 'hsl(210 100% 51% / 0.016)', + '--colors-blueA2': 'hsl(210 100% 51% / 0.04)', + '--colors-blueA3': 'hsl(210 100% 50.3% / 0.071)', + '--colors-blueA4': 'hsl(210 100% 50.1% / 0.118)', + '--colors-blueA5': 'hsl(208 99.1% 47.1% / 0.189)', + '--colors-blueA6': 'hsl(209 99.5% 45.3% / 0.283)', + '--colors-blueA7': 'hsl(208 99.9% 43.8% / 0.412)', + '--colors-blueA8': 'hsl(206 99.8% 45.1% / 0.632)', + '--colors-blueA9': 'hsl(206 100% 50% / 0.98)', + '--colors-blueA10': 'hsl(208 100% 47.2% / 0.98)', + '--colors-blueA11': 'hsl(212 100% 43% / 0.98)', + '--colors-blueA12': 'hsl(213 100% 14.4% / 0.98)', + '--colors-skyA1': 'hsl(190 100% 51% / 0.024)', + '--colors-skyA2': 'hsl(193 100% 50.1% / 0.055)', + '--colors-skyA3': 'hsl(193 100% 50.1% / 0.106)', + '--colors-skyA4': 'hsl(194 99.6% 47.7% / 0.165)', + '--colors-skyA5': 'hsl(194 99.2% 45.4% / 0.244)', + '--colors-skyA6': 'hsl(194 99.9% 42.3% / 0.357)', + '--colors-skyA7': 'hsl(194 99.8% 42.2% / 0.526)', + '--colors-skyA8': 'hsl(193 99.9% 43.8% / 0.82)', + '--colors-skyA9': 'hsl(193 99.7% 49.4% / 0.593)', + '--colors-skyA10': 'hsl(193 99.8% 46.6% / 0.628)', + '--colors-skyA11': 'hsl(196 100% 31.2% / 0.98)', + '--colors-skyA12': 'hsl(196 100% 12.2% / 0.98)', + '--colors-mintA1': 'hsl(168 95.4% 42.8% / 0.024)', + '--colors-mintA2': 'hsl(164 99.1% 47.1% / 0.063)', + '--colors-mintA3': 'hsl(164 99.3% 43.5% / 0.118)', + '--colors-mintA4': 'hsl(164 99.3% 41.3% / 0.177)', + '--colors-mintA5': 'hsl(165 99% 37.5% / 0.248)', + '--colors-mintA6': 'hsl(165 100% 35% / 0.353)', + '--colors-mintA7': 'hsl(166 99.9% 33.5% / 0.51)', + '--colors-mintA8': 'hsl(168 99.6% 34.6% / 0.75)', + '--colors-mintA9': 'hsl(167 99.9% 39.5% / 0.561)', + '--colors-mintA10': 'hsl(167 99.7% 37.4% / 0.589)', + '--colors-mintA11': 'hsl(172 99.8% 22.4% / 0.922)', + '--colors-mintA12': 'hsl(172 99.7% 8.8% / 0.965)', + '--colors-cyanA1': 'hsl(195 95.2% 41.2% / 0.02)', + '--colors-cyanA2': 'hsl(185 99.9% 42.3% / 0.051)', + '--colors-cyanA3': 'hsl(186 97.8% 42.2% / 0.095)', + '--colors-cyanA4': 'hsl(186 99.9% 38.5% / 0.153)', + '--colors-cyanA5': 'hsl(187 99.3% 36.6% / 0.232)', + '--colors-cyanA6': 'hsl(188 99.4% 35.4% / 0.334)', + '--colors-cyanA7': 'hsl(189 99.6% 35% / 0.483)', + '--colors-cyanA8': 'hsl(189 99.9% 37.6% / 0.761)', + '--colors-cyanA9': 'hsl(190 100% 37.8% / 0.98)', + '--colors-cyanA10': 'hsl(191 99.9% 34.6% / 0.969)', + '--colors-cyanA11': 'hsl(192 100% 27.6% / 0.953)', + '--colors-cyanA12': 'hsl(192 100% 11% / 0.98)', + '--colors-tealA1': 'hsl(165 95.2% 41.2% / 0.02)', + '--colors-tealA2': 'hsl(169 99.5% 39.4% / 0.055)', + '--colors-tealA3': 'hsl(167 97.6% 38.1% / 0.095)', + '--colors-tealA4': 'hsl(168 98.1% 34.6% / 0.15)', + '--colors-tealA5': 'hsl(170 99.4% 32.3% / 0.22)', + '--colors-tealA6': 'hsl(170 99.7% 30.1% / 0.314)', + '--colors-tealA7': 'hsl(170 99.3% 28.7% / 0.448)', + '--colors-tealA8': 'hsl(172 99.8% 29.7% / 0.675)', + '--colors-tealA9': 'hsl(173 99.8% 31.1% / 0.93)', + '--colors-tealA10': 'hsl(173 99.7% 28.7% / 0.946)', + '--colors-tealA11': 'hsl(174 99.8% 23.3% / 0.977)', + '--colors-tealA12': 'hsl(171 98.8% 6.8% / 0.938)', + '--colors-greenA1': 'hsl(140 94.9% 38.7% / 0.016)', + '--colors-greenA2': 'hsl(138 99.9% 38.5% / 0.051)', + '--colors-greenA3': 'hsl(139 97.7% 36.9% / 0.087)', + '--colors-greenA4': 'hsl(139 98.5% 32.7% / 0.134)', + '--colors-greenA5': 'hsl(141 100% 30.4% / 0.2)', + '--colors-greenA6': 'hsl(142 99% 28.9% / 0.295)', + '--colors-greenA7': 'hsl(146 99.5% 27.6% / 0.428)', + '--colors-greenA8': 'hsl(151 99.5% 28.8% / 0.644)', + '--colors-greenA9': 'hsl(151 99.9% 28% / 0.812)', + '--colors-greenA10': 'hsl(152 99.6% 25.8% / 0.84)', + '--colors-greenA11': 'hsl(153 99.9% 21% / 0.906)', + '--colors-greenA12': 'hsl(155 99.4% 6.2% / 0.918)', + '--colors-grassA1': 'hsl(120 94.9% 38.7% / 0.016)', + '--colors-grassA2': 'hsl(120 94.9% 38.7% / 0.048)', + '--colors-grassA3': 'hsl(120 98% 35.5% / 0.079)', + '--colors-grassA4': 'hsl(120 98.7% 31.5% / 0.126)', + '--colors-grassA5': 'hsl(122 98.5% 29.9% / 0.193)', + '--colors-grassA6': 'hsl(125 99.2% 27.9% / 0.283)', + '--colors-grassA7': 'hsl(125 99.9% 27% / 0.408)', + '--colors-grassA8': 'hsl(131 100% 27.6% / 0.604)', + '--colors-grassA9': 'hsl(131 99.7% 26.3% / 0.726)', + '--colors-grassA10': 'hsl(132 99.9% 24% / 0.761)', + '--colors-grassA11': 'hsl(133 99.5% 19.5% / 0.84)', + '--colors-grassA12': 'hsl(128 98% 4.9% / 0.895)', + '--colors-limeA1': 'hsl(80 93.8% 31.4% / 0.02)', + '--colors-limeA2': 'hsl(85 99.3% 40.2% / 0.059)', + '--colors-limeA3': 'hsl(84 98.7% 43.2% / 0.138)', + '--colors-limeA4': 'hsl(84 99.6% 43% / 0.22)', + '--colors-limeA5': 'hsl(85 99.8% 41.8% / 0.31)', + '--colors-limeA6': 'hsl(82 99.8% 39.3% / 0.42)', + '--colors-limeA7': 'hsl(79 99.7% 34.6% / 0.585)', + '--colors-limeA8': 'hsl(76 99.8% 33.7% / 0.828)', + '--colors-limeA9': 'hsl(81 99.8% 40.2% / 0.836)', + '--colors-limeA10': 'hsl(80 100% 37.6% / 0.851)', + '--colors-limeA11': 'hsl(75 99.5% 22% / 0.95)', + '--colors-limeA12': 'hsl(78 99.6% 8.4% / 0.965)', + '--colors-yellowA1': 'hsl(60 94.3% 34.6% / 0.024)', + '--colors-yellowA2': 'hsl(52 100% 50.4% / 0.091)', + '--colors-yellowA3': 'hsl(55 100% 50.2% / 0.181)', + '--colors-yellowA4': 'hsl(54 100% 50.1% / 0.267)', + '--colors-yellowA5': 'hsl(52 99.9% 49.5% / 0.357)', + '--colors-yellowA6': 'hsl(50 100% 47.4% / 0.451)', + '--colors-yellowA7': 'hsl(47 99.8% 44.6% / 0.577)', + '--colors-yellowA8': 'hsl(48 100% 46% / 0.98)', + '--colors-yellowA9': 'hsl(53 100% 48% / 0.961)', + '--colors-yellowA10': 'hsl(50 100% 48.4% / 0.98)', + '--colors-yellowA11': 'hsl(42 100% 28.6% / 0.98)', + '--colors-yellowA12': 'hsl(41 98.9% 8% / 0.942)', + '--colors-amberA1': 'hsl(40 94.9% 38.7% / 0.016)', + '--colors-amberA2': 'hsl(40 100% 50.3% / 0.071)', + '--colors-amberA3': 'hsl(44 100% 50.1% / 0.165)', + '--colors-amberA4': 'hsl(43 100% 50% / 0.263)', + '--colors-amberA5': 'hsl(42 100% 50% / 0.365)', + '--colors-amberA6': 'hsl(38 100% 50.1% / 0.475)', + '--colors-amberA7': 'hsl(36 99.9% 46.2% / 0.612)', + '--colors-amberA8': 'hsl(35 99.8% 46% / 0.832)', + '--colors-amberA9': 'hsl(39 100% 50% / 0.859)', + '--colors-amberA10': 'hsl(35 100% 50% / 0.891)', + '--colors-amberA11': 'hsl(29 100% 33.6% / 0.98)', + '--colors-amberA12': 'hsl(20 99.8% 14.1% / 0.965)', + '--colors-orangeA1': 'hsl(20 94.9% 38.7% / 0.016)', + '--colors-orangeA2': 'hsl(24 95.8% 46.5% / 0.044)', + '--colors-orangeA3': 'hsl(25 100% 50.5% / 0.095)', + '--colors-orangeA4': 'hsl(26 100% 50% / 0.157)', + '--colors-orangeA5': 'hsl(25 100% 50.1% / 0.236)', + '--colors-orangeA6': 'hsl(25 100% 50.1% / 0.346)', + '--colors-orangeA7': 'hsl(24 100% 50.1% / 0.495)', + '--colors-orangeA8': 'hsl(24 99.7% 48.7% / 0.695)', + '--colors-orangeA9': 'hsl(24 99.9% 48.4% / 0.969)', + '--colors-orangeA10': 'hsl(23 100% 46.4% / 0.98)', + '--colors-orangeA11': 'hsl(23 100% 36.8% / 0.98)', + '--colors-orangeA12': 'hsl(15 99.4% 11% / 0.934)', + '--colors-brownA1': 'hsl(30 94.3% 34.6% / 0.012)', + '--colors-brownA2': 'hsl(30 94.3% 34.6% / 0.036)', + '--colors-brownA3': 'hsl(30 97.7% 33.9% / 0.083)', + '--colors-brownA4': 'hsl(31 98.5% 34.2% / 0.134)', + '--colors-brownA5': 'hsl(29 100% 34.3% / 0.2)', + '--colors-brownA6': 'hsl(28 99.2% 34.6% / 0.291)', + '--colors-brownA7': 'hsl(29 99.8% 33.8% / 0.412)', + '--colors-brownA8': 'hsl(28 100% 33.3% / 0.553)', + '--colors-brownA9': 'hsl(28 99.9% 25.5% / 0.655)', + '--colors-brownA10': 'hsl(27 99.7% 22.4% / 0.675)', + '--colors-brownA11': 'hsl(25 99.8% 17.3% / 0.714)', + '--colors-brownA12': 'hsl(21 99.4% 6.6% / 0.867)', + '--colors-bronzeA1': 'hsl(0 89.3% 18.3% / 0.012)', + '--colors-bronzeA2': 'hsl(17 95.1% 40.1% / 0.036)', + '--colors-bronzeA3': 'hsl(18 98.3% 29.8% / 0.067)', + '--colors-bronzeA4': 'hsl(17 99.6% 26% / 0.106)', + '--colors-bronzeA5': 'hsl(19 99.6% 23.8% / 0.157)', + '--colors-bronzeA6': 'hsl(17 99.2% 22.5% / 0.22)', + '--colors-bronzeA7': 'hsl(18 99.7% 21.6% / 0.31)', + '--colors-bronzeA8': 'hsl(17 99.5% 20.2% / 0.42)', + '--colors-bronzeA9': 'hsl(18 99.9% 16.7% / 0.553)', + '--colors-bronzeA10': 'hsl(17 99.2% 15.4% / 0.589)', + '--colors-bronzeA11': 'hsl(15 99.9% 13.2% / 0.655)', + '--colors-bronzeA12': 'hsl(12 98.7% 5.7% / 0.832)', + '--colors-goldA1': 'hsl(60 89.3% 18.3% / 0.012)', + '--colors-goldA2': 'hsl(47 99.9% 34.6% / 0.051)', + '--colors-goldA3': 'hsl(45 97% 27.9% / 0.087)', + '--colors-goldA4': 'hsl(46 98% 25.4% / 0.134)', + '--colors-goldA5': 'hsl(43 98.4% 22.6% / 0.185)', + '--colors-goldA6': 'hsl(41 99.7% 22% / 0.259)', + '--colors-goldA7': 'hsl(38 99.8% 21.5% / 0.357)', + '--colors-goldA8': 'hsl(36 99.3% 21.5% / 0.487)', + '--colors-goldA9': 'hsl(36 99.9% 16.2% / 0.604)', + '--colors-goldA10': 'hsl(36 99.2% 14.6% / 0.636)', + '--colors-goldA11': 'hsl(35 99.1% 11.2% / 0.687)', + '--colors-goldA12': 'hsl(38 98% 3.8% / 0.832)', +} + +export const radix_dark = { + '--colors-gray1': 'hsl(0 0% 8.5%)', + '--colors-gray2': 'hsl(0 0% 11%)', + '--colors-gray3': 'hsl(0 0% 13.6%)', + '--colors-gray4': 'hsl(0 0% 15.8%)', + '--colors-gray5': 'hsl(0 0% 17.9%)', + '--colors-gray6': 'hsl(0 0% 20.5%)', + '--colors-gray7': 'hsl(0 0% 24.3%)', + '--colors-gray8': 'hsl(0 0% 31.2%)', + '--colors-gray9': 'hsl(0 0% 43.9%)', + '--colors-gray10': 'hsl(0 0% 49.4%)', + '--colors-gray11': 'hsl(0 0% 62.8%)', + '--colors-gray12': 'hsl(0 0% 93%)', + '--colors-mauve1': 'hsl(246 6% 9%)', + '--colors-mauve2': 'hsl(240 5.1% 11.6%)', + '--colors-mauve3': 'hsl(241 5% 14.3%)', + '--colors-mauve4': 'hsl(242 4.9% 16.5%)', + '--colors-mauve5': 'hsl(243 4.9% 18.8%)', + '--colors-mauve6': 'hsl(244 4.9% 21.5%)', + '--colors-mauve7': 'hsl(245 4.9% 25.4%)', + '--colors-mauve8': 'hsl(247 4.8% 32.5%)', + '--colors-mauve9': 'hsl(252 4% 45.2%)', + '--colors-mauve10': 'hsl(247 3.4% 50.7%)', + '--colors-mauve11': 'hsl(253 4% 63.7%)', + '--colors-mauve12': 'hsl(256 6% 93.2%)', + '--colors-slate1': 'hsl(200 7% 8.8%)', + '--colors-slate2': 'hsl(195 7.1% 11%)', + '--colors-slate3': 'hsl(197 6.8% 13.6%)', + '--colors-slate4': 'hsl(198 6.6% 15.8%)', + '--colors-slate5': 'hsl(199 6.4% 17.9%)', + '--colors-slate6': 'hsl(201 6.2% 20.5%)', + '--colors-slate7': 'hsl(203 6% 24.3%)', + '--colors-slate8': 'hsl(207 5.6% 31.6%)', + '--colors-slate9': 'hsl(206 6% 43.9%)', + '--colors-slate10': 'hsl(206 5.2% 49.5%)', + '--colors-slate11': 'hsl(206 6% 63%)', + '--colors-slate12': 'hsl(210 6% 93%)', + '--colors-sage1': 'hsl(155 7% 8.4%)', + '--colors-sage2': 'hsl(150 7.4% 10.6%)', + '--colors-sage3': 'hsl(150 6.7% 13.1%)', + '--colors-sage4': 'hsl(150 6.4% 15.3%)', + '--colors-sage5': 'hsl(150 6.1% 17.4%)', + '--colors-sage6': 'hsl(150 5.8% 19.9%)', + '--colors-sage7': 'hsl(150 5.5% 23.6%)', + '--colors-sage8': 'hsl(150 5.1% 30.6%)', + '--colors-sage9': 'hsl(155 6% 42.5%)', + '--colors-sage10': 'hsl(153 4.8% 48.2%)', + '--colors-sage11': 'hsl(155 5% 61.8%)', + '--colors-sage12': 'hsl(155 6% 93%)', + '--colors-olive1': 'hsl(110 5% 8.6%)', + '--colors-olive2': 'hsl(105 7.4% 10.6%)', + '--colors-olive3': 'hsl(106 6.4% 13.1%)', + '--colors-olive4': 'hsl(106 5.8% 15.3%)', + '--colors-olive5': 'hsl(107 5.3% 17.4%)', + '--colors-olive6': 'hsl(107 4.9% 19.9%)', + '--colors-olive7': 'hsl(108 4.4% 23.6%)', + '--colors-olive8': 'hsl(110 3.8% 30.6%)', + '--colors-olive9': 'hsl(110 6% 42.5%)', + '--colors-olive10': 'hsl(111 4.8% 48.2%)', + '--colors-olive11': 'hsl(110 5% 61.8%)', + '--colors-olive12': 'hsl(110 6% 93%)', + '--colors-sand1': 'hsl(61 2% 8.3%)', + '--colors-sand2': 'hsl(60 3.7% 10.6%)', + '--colors-sand3': 'hsl(58 3.7% 13.1%)', + '--colors-sand4': 'hsl(57 3.6% 15.3%)', + '--colors-sand5': 'hsl(56 3.7% 17.4%)', + '--colors-sand6': 'hsl(55 3.7% 19.9%)', + '--colors-sand7': 'hsl(53 3.7% 23.6%)', + '--colors-sand8': 'hsl(50 3.8% 30.6%)', + '--colors-sand9': 'hsl(50 4% 42.7%)', + '--colors-sand10': 'hsl(52 3.1% 48.3%)', + '--colors-sand11': 'hsl(50 4% 61.8%)', + '--colors-sand12': 'hsl(56 4% 92.8%)', + '--colors-tomato1': 'hsl(10 23% 9.4%)', + '--colors-tomato2': 'hsl(9 44.8% 11.4%)', + '--colors-tomato3': 'hsl(8 52% 15.3%)', + '--colors-tomato4': 'hsl(7 56.3% 18%)', + '--colors-tomato5': 'hsl(7 60.1% 20.6%)', + '--colors-tomato6': 'hsl(8 64.8% 24%)', + '--colors-tomato7': 'hsl(8 71.2% 29.1%)', + '--colors-tomato8': 'hsl(10 80.2% 35.7%)', + '--colors-tomato9': 'hsl(10 78% 54%)', + '--colors-tomato10': 'hsl(10 81.7% 59%)', + '--colors-tomato11': 'hsl(10 85% 62.8%)', + '--colors-tomato12': 'hsl(10 89% 96%)', + '--colors-red1': 'hsl(353 23% 9.8%)', + '--colors-red2': 'hsl(357 34.4% 12%)', + '--colors-red3': 'hsl(356 43.4% 16.4%)', + '--colors-red4': 'hsl(356 47.6% 19.2%)', + '--colors-red5': 'hsl(356 51.1% 21.9%)', + '--colors-red6': 'hsl(356 55.2% 25.9%)', + '--colors-red7': 'hsl(357 60.2% 31.8%)', + '--colors-red8': 'hsl(358 65% 40.4%)', + '--colors-red9': 'hsl(358 75% 59%)', + '--colors-red10': 'hsl(358 85.3% 64%)', + '--colors-red11': 'hsl(358 100% 69.5%)', + '--colors-red12': 'hsl(351 89% 96%)', + '--colors-crimson1': 'hsl(335 20% 9.6%)', + '--colors-crimson2': 'hsl(335 32.2% 11.6%)', + '--colors-crimson3': 'hsl(335 42.5% 16.5%)', + '--colors-crimson4': 'hsl(335 47.2% 19.3%)', + '--colors-crimson5': 'hsl(335 50.9% 21.8%)', + '--colors-crimson6': 'hsl(335 55.7% 25.3%)', + '--colors-crimson7': 'hsl(336 62.9% 30.8%)', + '--colors-crimson8': 'hsl(336 74.9% 39%)', + '--colors-crimson9': 'hsl(336 80% 57.8%)', + '--colors-crimson10': 'hsl(339 84.1% 62.6%)', + '--colors-crimson11': 'hsl(341 90% 67.3%)', + '--colors-crimson12': 'hsl(332 87% 96%)', + '--colors-pink1': 'hsl(318 25% 9.6%)', + '--colors-pink2': 'hsl(319 32.2% 11.6%)', + '--colors-pink3': 'hsl(319 41% 16%)', + '--colors-pink4': 'hsl(320 45.4% 18.7%)', + '--colors-pink5': 'hsl(320 49% 21.1%)', + '--colors-pink6': 'hsl(321 53.6% 24.4%)', + '--colors-pink7': 'hsl(321 61.1% 29.7%)', + '--colors-pink8': 'hsl(322 74.9% 37.5%)', + '--colors-pink9': 'hsl(322 65% 54.5%)', + '--colors-pink10': 'hsl(323 72.8% 59.2%)', + '--colors-pink11': 'hsl(325 90% 66.4%)', + '--colors-pink12': 'hsl(322 90% 95.8%)', + '--colors-plum1': 'hsl(301 20% 9.4%)', + '--colors-plum2': 'hsl(300 29.8% 11.2%)', + '--colors-plum3': 'hsl(298 34.4% 15.3%)', + '--colors-plum4': 'hsl(297 36.8% 18.3%)', + '--colors-plum5': 'hsl(296 38.5% 21.1%)', + '--colors-plum6': 'hsl(295 40.4% 24.7%)', + '--colors-plum7': 'hsl(294 42.7% 30.6%)', + '--colors-plum8': 'hsl(292 45.1% 40%)', + '--colors-plum9': 'hsl(292 45% 51%)', + '--colors-plum10': 'hsl(295 50% 55.4%)', + '--colors-plum11': 'hsl(300 60% 62%)', + '--colors-plum12': 'hsl(296 74% 95.7%)', + '--colors-purple1': 'hsl(284 20% 9.6%)', + '--colors-purple2': 'hsl(283 30% 11.8%)', + '--colors-purple3': 'hsl(281 37.5% 16.5%)', + '--colors-purple4': 'hsl(280 41.2% 20%)', + '--colors-purple5': 'hsl(279 43.8% 23.3%)', + '--colors-purple6': 'hsl(277 46.4% 27.5%)', + '--colors-purple7': 'hsl(275 49.3% 34.6%)', + '--colors-purple8': 'hsl(272 52.1% 45.9%)', + '--colors-purple9': 'hsl(272 51% 54%)', + '--colors-purple10': 'hsl(273 57.3% 59.1%)', + '--colors-purple11': 'hsl(275 80% 71%)', + '--colors-purple12': 'hsl(279 75% 95.7%)', + '--colors-violet1': 'hsl(250 20% 10.2%)', + '--colors-violet2': 'hsl(255 30.3% 12.9%)', + '--colors-violet3': 'hsl(253 37% 18.4%)', + '--colors-violet4': 'hsl(252 40.1% 22.5%)', + '--colors-violet5': 'hsl(252 42.2% 26.2%)', + '--colors-violet6': 'hsl(251 44.3% 31.1%)', + '--colors-violet7': 'hsl(250 46.8% 38.9%)', + '--colors-violet8': 'hsl(250 51.8% 51.2%)', + '--colors-violet9': 'hsl(252 56% 57.5%)', + '--colors-violet10': 'hsl(251 63.2% 63.2%)', + '--colors-violet11': 'hsl(250 95% 76.8%)', + '--colors-violet12': 'hsl(252 87% 96.4%)', + '--colors-indigo1': 'hsl(229 24% 10%)', + '--colors-indigo2': 'hsl(230 36.4% 12.9%)', + '--colors-indigo3': 'hsl(228 43.3% 17.5%)', + '--colors-indigo4': 'hsl(227 47.2% 21%)', + '--colors-indigo5': 'hsl(227 50% 24.1%)', + '--colors-indigo6': 'hsl(226 52.9% 28.2%)', + '--colors-indigo7': 'hsl(226 56% 34.5%)', + '--colors-indigo8': 'hsl(226 58.2% 44.1%)', + '--colors-indigo9': 'hsl(226 70% 55.5%)', + '--colors-indigo10': 'hsl(227 75.2% 61.6%)', + '--colors-indigo11': 'hsl(228 100% 75.9%)', + '--colors-indigo12': 'hsl(226 83% 96.3%)', + '--colors-blue1': 'hsl(212 35% 9.2%)', + '--colors-blue2': 'hsl(216 50% 11.8%)', + '--colors-blue3': 'hsl(214 59.4% 15.3%)', + '--colors-blue4': 'hsl(214 65.8% 17.9%)', + '--colors-blue5': 'hsl(213 71.2% 20.2%)', + '--colors-blue6': 'hsl(212 77.4% 23.1%)', + '--colors-blue7': 'hsl(211 85.1% 27.4%)', + '--colors-blue8': 'hsl(211 89.7% 34.1%)', + '--colors-blue9': 'hsl(206 100% 50%)', + '--colors-blue10': 'hsl(209 100% 60.6%)', + '--colors-blue11': 'hsl(210 100% 66.1%)', + '--colors-blue12': 'hsl(206 98% 95.8%)', + '--colors-sky1': 'hsl(205 45% 8.6%)', + '--colors-sky2': 'hsl(202 71.4% 9.6%)', + '--colors-sky3': 'hsl(201 74.6% 12.2%)', + '--colors-sky4': 'hsl(201 77.4% 14.4%)', + '--colors-sky5': 'hsl(200 80.3% 16.5%)', + '--colors-sky6': 'hsl(200 84.1% 18.9%)', + '--colors-sky7': 'hsl(199 90.2% 22.1%)', + '--colors-sky8': 'hsl(198 100% 26.1%)', + '--colors-sky9': 'hsl(193 98% 70%)', + '--colors-sky10': 'hsl(192 100% 77%)', + '--colors-sky11': 'hsl(192 85% 55.8%)', + '--colors-sky12': 'hsl(198 98% 95.8%)', + '--colors-mint1': 'hsl(173 50% 6.6%)', + '--colors-mint2': 'hsl(176 73% 7.3%)', + '--colors-mint3': 'hsl(175 79.3% 8.9%)', + '--colors-mint4': 'hsl(174 84.8% 10.3%)', + '--colors-mint5': 'hsl(174 90.2% 11.9%)', + '--colors-mint6': 'hsl(173 96% 13.8%)', + '--colors-mint7': 'hsl(172 100% 16.8%)', + '--colors-mint8': 'hsl(170 100% 21.4%)', + '--colors-mint9': 'hsl(167 65% 66%)', + '--colors-mint10': 'hsl(163 80% 77%)', + '--colors-mint11': 'hsl(167 70% 48%)', + '--colors-mint12': 'hsl(165 80% 94.8%)', + '--colors-cyan1': 'hsl(192 60% 7.2%)', + '--colors-cyan2': 'hsl(192 71.4% 8.2%)', + '--colors-cyan3': 'hsl(192 75.9% 10.8%)', + '--colors-cyan4': 'hsl(192 79.3% 12.8%)', + '--colors-cyan5': 'hsl(192 82.5% 14.6%)', + '--colors-cyan6': 'hsl(192 86.6% 16.9%)', + '--colors-cyan7': 'hsl(192 92.6% 20.1%)', + '--colors-cyan8': 'hsl(192 100% 24.5%)', + '--colors-cyan9': 'hsl(190 95% 39%)', + '--colors-cyan10': 'hsl(188 100% 40%)', + '--colors-cyan11': 'hsl(186 100% 42.2%)', + '--colors-cyan12': 'hsl(185 73% 93.2%)', + '--colors-teal1': 'hsl(168 48% 6.5%)', + '--colors-teal2': 'hsl(169 77.8% 7.1%)', + '--colors-teal3': 'hsl(170 76.1% 9.2%)', + '--colors-teal4': 'hsl(171 75.8% 11%)', + '--colors-teal5': 'hsl(171 75.7% 12.8%)', + '--colors-teal6': 'hsl(172 75.8% 15.1%)', + '--colors-teal7': 'hsl(172 76.7% 18.6%)', + '--colors-teal8': 'hsl(173 80.2% 23.7%)', + '--colors-teal9': 'hsl(173 80% 36%)', + '--colors-teal10': 'hsl(174 83.9% 38.2%)', + '--colors-teal11': 'hsl(174 90% 40.7%)', + '--colors-teal12': 'hsl(166 73% 93.1%)', + '--colors-green1': 'hsl(146 30% 7.4%)', + '--colors-green2': 'hsl(155 44.2% 8.4%)', + '--colors-green3': 'hsl(155 46.7% 10.9%)', + '--colors-green4': 'hsl(154 48.4% 12.9%)', + '--colors-green5': 'hsl(154 49.7% 14.9%)', + '--colors-green6': 'hsl(154 50.9% 17.6%)', + '--colors-green7': 'hsl(153 51.8% 21.8%)', + '--colors-green8': 'hsl(151 51.7% 28.4%)', + '--colors-green9': 'hsl(151 55% 41.5%)', + '--colors-green10': 'hsl(151 49.3% 46.5%)', + '--colors-green11': 'hsl(151 50% 53.2%)', + '--colors-green12': 'hsl(137 72% 94%)', + '--colors-grass1': 'hsl(146 30% 7.4%)', + '--colors-grass2': 'hsl(136 33.3% 8.8%)', + '--colors-grass3': 'hsl(137 36% 11.4%)', + '--colors-grass4': 'hsl(137 37.6% 13.7%)', + '--colors-grass5': 'hsl(136 38.7% 16%)', + '--colors-grass6': 'hsl(135 39.6% 19.1%)', + '--colors-grass7': 'hsl(134 40.3% 23.8%)', + '--colors-grass8': 'hsl(131 40.1% 30.8%)', + '--colors-grass9': 'hsl(131 41% 46.5%)', + '--colors-grass10': 'hsl(131 39% 52.1%)', + '--colors-grass11': 'hsl(131 43% 57.2%)', + '--colors-grass12': 'hsl(137 72% 94%)', + '--colors-lime1': 'hsl(75 55% 6%)', + '--colors-lime2': 'hsl(74 56.8% 7.3%)', + '--colors-lime3': 'hsl(78 50.2% 9.9%)', + '--colors-lime4': 'hsl(79 50.3% 12.1%)', + '--colors-lime5': 'hsl(79 52.6% 14.2%)', + '--colors-lime6': 'hsl(78 55.7% 16.7%)', + '--colors-lime7': 'hsl(77 59.7% 20.1%)', + '--colors-lime8': 'hsl(75 64.8% 24.5%)', + '--colors-lime9': 'hsl(81 67% 50%)', + '--colors-lime10': 'hsl(75 85% 60%)', + '--colors-lime11': 'hsl(81 70% 43.8%)', + '--colors-lime12': 'hsl(84 79% 92.6%)', + '--colors-yellow1': 'hsl(45 100% 5.5%)', + '--colors-yellow2': 'hsl(46 100% 6.7%)', + '--colors-yellow3': 'hsl(45 100% 8.7%)', + '--colors-yellow4': 'hsl(45 100% 10.4%)', + '--colors-yellow5': 'hsl(47 100% 12.1%)', + '--colors-yellow6': 'hsl(49 100% 14.3%)', + '--colors-yellow7': 'hsl(49 90.3% 18.4%)', + '--colors-yellow8': 'hsl(50 100% 22%)', + '--colors-yellow9': 'hsl(53 92% 50%)', + '--colors-yellow10': 'hsl(54 100% 68%)', + '--colors-yellow11': 'hsl(48 100% 47%)', + '--colors-yellow12': 'hsl(53 100% 91%)', + '--colors-amber1': 'hsl(36 100% 6.1%)', + '--colors-amber2': 'hsl(35 100% 7.6%)', + '--colors-amber3': 'hsl(32 100% 10.2%)', + '--colors-amber4': 'hsl(32 100% 12.4%)', + '--colors-amber5': 'hsl(33 100% 14.6%)', + '--colors-amber6': 'hsl(35 100% 17.1%)', + '--colors-amber7': 'hsl(35 91% 21.6%)', + '--colors-amber8': 'hsl(36 100% 25.5%)', + '--colors-amber9': 'hsl(39 100% 57%)', + '--colors-amber10': 'hsl(43 100% 64%)', + '--colors-amber11': 'hsl(39 90% 49.8%)', + '--colors-amber12': 'hsl(39 97% 93.2%)', + '--colors-orange1': 'hsl(30 70% 7.2%)', + '--colors-orange2': 'hsl(28 100% 8.4%)', + '--colors-orange3': 'hsl(26 91.1% 11.6%)', + '--colors-orange4': 'hsl(25 88.3% 14.1%)', + '--colors-orange5': 'hsl(24 87.6% 16.6%)', + '--colors-orange6': 'hsl(24 88.6% 19.8%)', + '--colors-orange7': 'hsl(24 92.4% 24%)', + '--colors-orange8': 'hsl(25 100% 29%)', + '--colors-orange9': 'hsl(24 94% 50%)', + '--colors-orange10': 'hsl(24 100% 58.5%)', + '--colors-orange11': 'hsl(24 100% 62.2%)', + '--colors-orange12': 'hsl(24 97% 93.2%)', + '--colors-brown1': 'hsl(22 15% 8.7%)', + '--colors-brown2': 'hsl(20 28.3% 10.4%)', + '--colors-brown3': 'hsl(20 28% 14%)', + '--colors-brown4': 'hsl(21 28.4% 16.5%)', + '--colors-brown5': 'hsl(22 28.7% 18.9%)', + '--colors-brown6': 'hsl(23 29% 22.3%)', + '--colors-brown7': 'hsl(25 29.5% 27.8%)', + '--colors-brown8': 'hsl(27 30.1% 35.9%)', + '--colors-brown9': 'hsl(28 34% 51%)', + '--colors-brown10': 'hsl(28 41.4% 55.8%)', + '--colors-brown11': 'hsl(28 60% 64.5%)', + '--colors-brown12': 'hsl(30 67% 94%)', + '--colors-bronze1': 'hsl(17 10% 8.8%)', + '--colors-bronze2': 'hsl(15 14.8% 10.6%)', + '--colors-bronze3': 'hsl(15 16.3% 14.3%)', + '--colors-bronze4': 'hsl(16 17.1% 17.2%)', + '--colors-bronze5': 'hsl(16 17.6% 19.6%)', + '--colors-bronze6': 'hsl(16 18.1% 22.9%)', + '--colors-bronze7': 'hsl(17 18.8% 28.8%)', + '--colors-bronze8': 'hsl(17 19.6% 38%)', + '--colors-bronze9': 'hsl(17 20% 54%)', + '--colors-bronze10': 'hsl(18 24% 59%)', + '--colors-bronze11': 'hsl(18 35% 68.5%)', + '--colors-bronze12': 'hsl(18 57% 94.1%)', + '--colors-gold1': 'hsl(44 9% 8.3%)', + '--colors-gold2': 'hsl(43 14.3% 9.6%)', + '--colors-gold3': 'hsl(42 15.5% 13%)', + '--colors-gold4': 'hsl(41 16.4% 15.6%)', + '--colors-gold5': 'hsl(41 16.9% 17.8%)', + '--colors-gold6': 'hsl(40 17.6% 20.8%)', + '--colors-gold7': 'hsl(38 18.5% 26.4%)', + '--colors-gold8': 'hsl(36 19.6% 35.1%)', + '--colors-gold9': 'hsl(36 20% 49.5%)', + '--colors-gold10': 'hsl(36 22.3% 54.5%)', + '--colors-gold11': 'hsl(35 30% 64%)', + '--colors-gold12': 'hsl(49 52% 93.8%)', + '--colors-grayA1': 'hsl(0 0% 100% / 0)', + '--colors-grayA2': 'hsl(0 0% 100% / 0.026)', + '--colors-grayA3': 'hsl(0 0% 100% / 0.056)', + '--colors-grayA4': 'hsl(0 0% 100% / 0.077)', + '--colors-grayA5': 'hsl(0 0% 100% / 0.103)', + '--colors-grayA6': 'hsl(0 0% 100% / 0.129)', + '--colors-grayA7': 'hsl(0 0% 100% / 0.172)', + '--colors-grayA8': 'hsl(0 0% 100% / 0.249)', + '--colors-grayA9': 'hsl(0 0% 100% / 0.386)', + '--colors-grayA10': 'hsl(0 0% 100% / 0.446)', + '--colors-grayA11': 'hsl(0 0% 100% / 0.592)', + '--colors-grayA12': 'hsl(0 0% 100% / 0.923)', + '--colors-mauveA1': 'hsl(0 0% 0% / 0)', + '--colors-mauveA2': 'hsl(240 76.7% 91.2% / 0.031)', + '--colors-mauveA3': 'hsl(240 86% 95.8% / 0.061)', + '--colors-mauveA4': 'hsl(240 91.8% 94.7% / 0.087)', + '--colors-mauveA5': 'hsl(240 91.5% 95.8% / 0.113)', + '--colors-mauveA6': 'hsl(240 92% 93.8% / 0.148)', + '--colors-mauveA7': 'hsl(240 94.8% 95.3% / 0.191)', + '--colors-mauveA8': 'hsl(249 98.1% 95.2% / 0.273)', + '--colors-mauveA9': 'hsl(248 97.6% 96.2% / 0.416)', + '--colors-mauveA10': 'hsl(248 95.5% 96.6% / 0.477)', + '--colors-mauveA11': 'hsl(250 98% 98% / 0.615)', + '--colors-mauveA12': 'hsl(240 93.9% 99.6% / 0.931)', + '--colors-slateA1': 'hsl(0 0% 0% / 0)', + '--colors-slateA2': 'hsl(181 98.9% 91.8% / 0.026)', + '--colors-slateA3': 'hsl(182 86.7% 91.4% / 0.057)', + '--colors-slateA4': 'hsl(209 86.7% 93.9% / 0.083)', + '--colors-slateA5': 'hsl(200 90.3% 93.4% / 0.109)', + '--colors-slateA6': 'hsl(209 95.3% 93.5% / 0.139)', + '--colors-slateA7': 'hsl(204 98.5% 93.9% / 0.182)', + '--colors-slateA8': 'hsl(209 94% 94.7% / 0.265)', + '--colors-slateA9': 'hsl(207 97.3% 94% / 0.412)', + '--colors-slateA10': 'hsl(209 99.4% 95.2% / 0.472)', + '--colors-slateA11': 'hsl(208 98.7% 96.8% / 0.615)', + '--colors-slateA12': 'hsl(211 86.7% 99.6% / 0.927)', + '--colors-sageA1': 'hsl(0 0% 0% / 0)', + '--colors-sageA2': 'hsl(123 94.4% 91.4% / 0.026)', + '--colors-sageA3': 'hsl(123 82.9% 91% / 0.057)', + '--colors-sageA4': 'hsl(124 97.9% 94.5% / 0.082)', + '--colors-sageA5': 'hsl(125 90% 95.2% / 0.104)', + '--colors-sageA6': 'hsl(142 95.1% 94.8% / 0.134)', + '--colors-sageA7': 'hsl(143 92.8% 95.7% / 0.173)', + '--colors-sageA8': 'hsl(146 94.7% 95.3% / 0.255)', + '--colors-sageA9': 'hsl(151 98.2% 94.4% / 0.397)', + '--colors-sageA10': 'hsl(148 99.5% 95.5% / 0.457)', + '--colors-sageA11': 'hsl(152 95.1% 97.3% / 0.6)', + '--colors-sageA12': 'hsl(149 93.3% 99.6% / 0.927)', + '--colors-oliveA1': 'hsl(0 0% 0% / 0)', + '--colors-oliveA2': 'hsl(91 97% 84% / 0.026)', + '--colors-oliveA3': 'hsl(101 87.4% 87.7% / 0.057)', + '--colors-oliveA4': 'hsl(92 91.8% 94.1% / 0.078)', + '--colors-oliveA5': 'hsl(101 92.6% 93.5% / 0.104)', + '--colors-oliveA6': 'hsl(102 91.1% 94.6% / 0.13)', + '--colors-oliveA7': 'hsl(102 92.5% 95.9% / 0.173)', + '--colors-oliveA8': 'hsl(107 100% 96.5% / 0.25)', + '--colors-oliveA9': 'hsl(110 98.3% 94.1% / 0.397)', + '--colors-oliveA10': 'hsl(109 99.6% 95.3% / 0.457)', + '--colors-oliveA11': 'hsl(113 95.3% 97.2% / 0.6)', + '--colors-oliveA12': 'hsl(120 93.5% 99.6% / 0.927)', + '--colors-sandA1': 'hsl(0 0% 0% / 0)', + '--colors-sandA2': 'hsl(60 89.8% 91.4% / 0.026)', + '--colors-sandA3': 'hsl(60 95.5% 92.5% / 0.056)', + '--colors-sandA4': 'hsl(60 75.6% 96.4% / 0.078)', + '--colors-sandA5': 'hsl(60 81.9% 95.2% / 0.104)', + '--colors-sandA6': 'hsl(41 87.6% 94.8% / 0.134)', + '--colors-sandA7': 'hsl(60 95.4% 96.2% / 0.172)', + '--colors-sandA8': 'hsl(49 93.5% 95.7% / 0.254)', + '--colors-sandA9': 'hsl(52 97.3% 96.2% / 0.391)', + '--colors-sandA10': 'hsl(52 97.8% 96.7% / 0.451)', + '--colors-sandA11': 'hsl(51 97% 97.8% / 0.597)', + '--colors-sandA12': 'hsl(60 88.7% 99.8% / 0.923)', + '--colors-tomatoA1': 'hsl(0 0% 0% / 0)', + '--colors-tomatoA2': 'hsl(5 100% 49.6% / 0.058)', + '--colors-tomatoA3': 'hsl(6 99.6% 54.9% / 0.133)', + '--colors-tomatoA4': 'hsl(6 99.2% 55.4% / 0.191)', + '--colors-tomatoA5': 'hsl(6 99.5% 55.8% / 0.244)', + '--colors-tomatoA6': 'hsl(7 99.7% 55.9% / 0.319)', + '--colors-tomatoA7': 'hsl(8 99.8% 54.8% / 0.434)', + '--colors-tomatoA8': 'hsl(10 99.8% 53.5% / 0.598)', + '--colors-tomatoA9': 'hsl(10 100% 59.7% / 0.885)', + '--colors-tomatoA10': 'hsl(10 100% 63.6% / 0.916)', + '--colors-tomatoA11': 'hsl(10 99.7% 66.4% / 0.939)', + '--colors-tomatoA12': 'hsl(12 100% 97.1% / 0.98)', + '--colors-redA1': 'hsl(0 0% 0% / 0)', + '--colors-redA2': 'hsl(5 98.5% 53.8% / 0.045)', + '--colors-redA3': 'hsl(359 99.1% 61.1% / 0.13)', + '--colors-redA4': 'hsl(358 98.8% 61% / 0.184)', + '--colors-redA5': 'hsl(357 99.6% 60.3% / 0.237)', + '--colors-redA6': 'hsl(358 99.6% 60.3% / 0.322)', + '--colors-redA7': 'hsl(357 100% 59.5% / 0.442)', + '--colors-redA8': 'hsl(358 99.8% 59.1% / 0.621)', + '--colors-redA9': 'hsl(358 100% 65.5% / 0.884)', + '--colors-redA10': 'hsl(358 100% 67.5% / 0.942)', + '--colors-redA11': 'hsl(358 100% 69.7% / 0.98)', + '--colors-redA12': 'hsl(352 100% 97.1% / 0.98)', + '--colors-crimsonA1': 'hsl(0 0% 0% / 0)', + '--colors-crimsonA2': 'hsl(336 96.8% 53.2% / 0.045)', + '--colors-crimsonA3': 'hsl(335 98.7% 59.3% / 0.138)', + '--colors-crimsonA4': 'hsl(336 99.1% 59.9% / 0.191)', + '--colors-crimsonA5': 'hsl(335 99.4% 59.4% / 0.244)', + '--colors-crimsonA6': 'hsl(335 99.4% 59.4% / 0.315)', + '--colors-crimsonA7': 'hsl(336 99.5% 57.8% / 0.439)', + '--colors-crimsonA8': 'hsl(336 99.9% 55.4% / 0.642)', + '--colors-crimsonA9': 'hsl(336 99.9% 62.8% / 0.903)', + '--colors-crimsonA10': 'hsl(339 99.9% 66.3% / 0.934)', + '--colors-crimsonA11': 'hsl(341 99.9% 69.5% / 0.965)', + '--colors-crimsonA12': 'hsl(327 100% 97.1% / 0.98)', + '--colors-pinkA1': 'hsl(0 0% 0% / 0)', + '--colors-pinkA2': 'hsl(320 98.1% 64.1% / 0.036)', + '--colors-pinkA3': 'hsl(320 99.1% 63.1% / 0.121)', + '--colors-pinkA4': 'hsl(320 99.5% 62.7% / 0.17)', + '--colors-pinkA5': 'hsl(319 99.7% 61.5% / 0.219)', + '--colors-pinkA6': 'hsl(322 99.4% 60.8% / 0.291)', + '--colors-pinkA7': 'hsl(321 99.6% 58.7% / 0.407)', + '--colors-pinkA8': 'hsl(322 99.7% 55.4% / 0.608)', + '--colors-pinkA9': 'hsl(322 100% 64.6% / 0.817)', + '--colors-pinkA10': 'hsl(323 100% 66.3% / 0.875)', + '--colors-pinkA11': 'hsl(325 99.9% 68.6% / 0.96)', + '--colors-pinkA12': 'hsl(314 100% 96.9% / 0.98)', + '--colors-plumA1': 'hsl(0 0% 0% / 0)', + '--colors-plumA2': 'hsl(300 96.4% 58.4% / 0.036)', + '--colors-plumA3': 'hsl(300 99.4% 67.1% / 0.102)', + '--colors-plumA4': 'hsl(295 99.8% 66.3% / 0.155)', + '--colors-plumA5': 'hsl(295 99.4% 67.1% / 0.204)', + '--colors-plumA6': 'hsl(294 99% 67.8% / 0.262)', + '--colors-plumA7': 'hsl(294 99.9% 67.7% / 0.363)', + '--colors-plumA8': 'hsl(292 99.8% 67.5% / 0.527)', + '--colors-plumA9': 'hsl(292 99.9% 69.2% / 0.695)', + '--colors-plumA10': 'hsl(295 99.9% 70.8% / 0.748)', + '--colors-plumA11': 'hsl(300 99.8% 72.9% / 0.828)', + '--colors-plumA12': 'hsl(300 100% 97.1% / 0.98)', + '--colors-purpleA1': 'hsl(0 0% 0% / 0)', + '--colors-purpleA2': 'hsl(280 96.5% 57.5% / 0.045)', + '--colors-purpleA3': 'hsl(279 98.7% 62.8% / 0.129)', + '--colors-purpleA4': 'hsl(279 99.1% 64% / 0.191)', + '--colors-purpleA5': 'hsl(278 99.8% 64.2% / 0.248)', + '--colors-purpleA6': 'hsl(276 99.6% 64.6% / 0.328)', + '--colors-purpleA7': 'hsl(274 99.9% 64.6% / 0.456)', + '--colors-purpleA8': 'hsl(272 99.7% 64.6% / 0.66)', + '--colors-purpleA9': 'hsl(272 99.9% 69.1% / 0.748)', + '--colors-purpleA10': 'hsl(273 100% 71.3% / 0.801)', + '--colors-purpleA11': 'hsl(275 99.9% 75.3% / 0.934)', + '--colors-purpleA12': 'hsl(286 100% 97.1% / 0.98)', + '--colors-violetA1': 'hsl(0 0% 0% / 0)', + '--colors-violetA2': 'hsl(258 98.2% 61% / 0.054)', + '--colors-violetA3': 'hsl(252 98.8% 65.8% / 0.148)', + '--colors-violetA4': 'hsl(253 99.7% 65.7% / 0.219)', + '--colors-violetA5': 'hsl(252 99.7% 66.4% / 0.286)', + '--colors-violetA6': 'hsl(251 99.7% 66.2% / 0.371)', + '--colors-violetA7': 'hsl(250 99.7% 66.3% / 0.514)', + '--colors-violetA8': 'hsl(250 99.7% 66.1% / 0.733)', + '--colors-violetA9': 'hsl(252 99.9% 70.3% / 0.786)', + '--colors-violetA10': 'hsl(251 99.9% 72.9% / 0.844)', + '--colors-violetA11': 'hsl(250 100% 77.9% / 0.98)', + '--colors-violetA12': 'hsl(254 100% 97.5% / 0.98)', + '--colors-indigoA1': 'hsl(0 0% 0% / 0)', + '--colors-indigoA2': 'hsl(234 97.4% 59.9% / 0.059)', + '--colors-indigoA3': 'hsl(228 99.2% 61.7% / 0.144)', + '--colors-indigoA4': 'hsl(227 99.7% 62% / 0.211)', + '--colors-indigoA5': 'hsl(227 99.2% 62.3% / 0.27)', + '--colors-indigoA6': 'hsl(226 99.9% 62.1% / 0.35)', + '--colors-indigoA7': 'hsl(226 99.9% 62% / 0.471)', + '--colors-indigoA8': 'hsl(226 99.9% 62.1% / 0.655)', + '--colors-indigoA9': 'hsl(226 99.9% 63.6% / 0.848)', + '--colors-indigoA10': 'hsl(227 99.8% 67.7% / 0.893)', + '--colors-indigoA11': 'hsl(227 100% 76.3% / 0.98)', + '--colors-indigoA12': 'hsl(226 100% 97.5% / 0.98)', + '--colors-blueA1': 'hsl(0 0% 0% / 0)', + '--colors-blueA2': 'hsl(221 97.8% 52.4% / 0.059)', + '--colors-blueA3': 'hsl(215 99.3% 54.2% / 0.135)', + '--colors-blueA4': 'hsl(215 99.3% 53.8% / 0.198)', + '--colors-blueA5': 'hsl(213 99.4% 52.8% / 0.252)', + '--colors-blueA6': 'hsl(212 99.9% 51.7% / 0.323)', + '--colors-blueA7': 'hsl(211 100% 50.7% / 0.435)', + '--colors-blueA8': 'hsl(211 99.8% 50.9% / 0.597)', + '--colors-blueA9': 'hsl(205 100% 50% / 0.98)', + '--colors-blueA10': 'hsl(208 100% 60.7% / 0.98)', + '--colors-blueA11': 'hsl(209 100% 66.3% / 0.98)', + '--colors-blueA12': 'hsl(196 100% 96.8% / 0.98)', + '--colors-skyA1': 'hsl(0 0% 0% / 0)', + '--colors-skyA2': 'hsl(208 100% 49.8% / 0.045)', + '--colors-skyA3': 'hsl(201 100% 49.8% / 0.099)', + '--colors-skyA4': 'hsl(201 100% 50% / 0.148)', + '--colors-skyA5': 'hsl(200 100% 49.8% / 0.198)', + '--colors-skyA6': 'hsl(199 100% 49.9% / 0.256)', + '--colors-skyA7': 'hsl(199 100% 49.9% / 0.337)', + '--colors-skyA8': 'hsl(199 100% 50% / 0.453)', + '--colors-skyA9': 'hsl(192 100% 70.8% / 0.98)', + '--colors-skyA10': 'hsl(190 100% 77.6% / 0.98)', + '--colors-skyA11': 'hsl(192 99.9% 59.6% / 0.924)', + '--colors-skyA12': 'hsl(189 100% 96.8% / 0.98)', + '--colors-mintA1': 'hsl(0 0% 0% / 0)', + '--colors-mintA2': 'hsl(180 100% 49.2% / 0.031)', + '--colors-mintA3': 'hsl(176 100% 49.7% / 0.07)', + '--colors-mintA4': 'hsl(173 100% 49.7% / 0.105)', + '--colors-mintA5': 'hsl(173 100% 49.8% / 0.144)', + '--colors-mintA6': 'hsl(172 100% 49.8% / 0.192)', + '--colors-mintA7': 'hsl(171 100% 49.9% / 0.266)', + '--colors-mintA8': 'hsl(169 100% 49.9% / 0.366)', + '--colors-mintA9': 'hsl(167 99.8% 75% / 0.87)', + '--colors-mintA10': 'hsl(163 99.9% 80.7% / 0.948)', + '--colors-mintA11': 'hsl(167 99.9% 58.7% / 0.796)', + '--colors-mintA12': 'hsl(169 100% 96.2% / 0.98)', + '--colors-cyanA1': 'hsl(0 0% 0% / 0)', + '--colors-cyanA2': 'hsl(196 100% 50% / 0.031)', + '--colors-cyanA3': 'hsl(192 98% 50.9% / 0.085)', + '--colors-cyanA4': 'hsl(194 99.6% 51.3% / 0.133)', + '--colors-cyanA5': 'hsl(192 99.5% 51.3% / 0.173)', + '--colors-cyanA6': 'hsl(193 99.7% 50.4% / 0.226)', + '--colors-cyanA7': 'hsl(192 100% 50% / 0.31)', + '--colors-cyanA8': 'hsl(193 100% 50% / 0.425)', + '--colors-cyanA9': 'hsl(190 99.8% 50.8% / 0.731)', + '--colors-cyanA10': 'hsl(188 100% 50% / 0.775)', + '--colors-cyanA11': 'hsl(186 100% 49.9% / 0.824)', + '--colors-cyanA12': 'hsl(185 99.8% 95.1% / 0.978)', + '--colors-tealA1': 'hsl(0 0% 0% / 0)', + '--colors-tealA2': 'hsl(171 100% 49.2% / 0.031)', + '--colors-tealA3': 'hsl(172 100% 49.7% / 0.07)', + '--colors-tealA4': 'hsl(175 100% 49.7% / 0.105)', + '--colors-tealA5': 'hsl(174 98.9% 50.1% / 0.14)', + '--colors-tealA6': 'hsl(174 100% 51.8% / 0.187)', + '--colors-tealA7': 'hsl(173 99.6% 53.2% / 0.257)', + '--colors-tealA8': 'hsl(174 99.6% 53.3% / 0.366)', + '--colors-tealA9': 'hsl(173 99.9% 54.6% / 0.609)', + '--colors-tealA10': 'hsl(174 99.9% 53.8% / 0.67)', + '--colors-tealA11': 'hsl(174 100% 52% / 0.748)', + '--colors-tealA12': 'hsl(166 98.6% 95% / 0.979)', + '--colors-greenA1': 'hsl(0 0% 0% / 0)', + '--colors-greenA2': 'hsl(169 100% 48.5% / 0.027)', + '--colors-greenA3': 'hsl(162 98.7% 57.9% / 0.07)', + '--colors-greenA4': 'hsl(158 98.6% 59.7% / 0.105)', + '--colors-greenA5': 'hsl(158 98.6% 60.7% / 0.14)', + '--colors-greenA6': 'hsl(156 99.9% 62% / 0.187)', + '--colors-greenA7': 'hsl(154 99.5% 63.1% / 0.257)', + '--colors-greenA8': 'hsl(152 99.7% 64.2% / 0.37)', + '--colors-greenA9': 'hsl(151 99.7% 63.8% / 0.605)', + '--colors-greenA10': 'hsl(152 99.9% 66.5% / 0.661)', + '--colors-greenA11': 'hsl(151 99.7% 69.2% / 0.74)', + '--colors-greenA12': 'hsl(137 100% 95.8% / 0.98)', + '--colors-grassA1': 'hsl(0 0% 0% / 0)', + '--colors-grassA2': 'hsl(107 97.2% 61.9% / 0.022)', + '--colors-grassA3': 'hsl(128 96.5% 69.8% / 0.066)', + '--colors-grassA4': 'hsl(130 100% 70.2% / 0.1)', + '--colors-grassA5': 'hsl(130 98.2% 69.1% / 0.14)', + '--colors-grassA6': 'hsl(132 99.9% 69.3% / 0.187)', + '--colors-grassA7': 'hsl(132 99.9% 69.8% / 0.261)', + '--colors-grassA8': 'hsl(130 99.6% 70.5% / 0.37)', + '--colors-grassA9': 'hsl(130 99.7% 70.6% / 0.618)', + '--colors-grassA10': 'hsl(131 100% 73.5% / 0.674)', + '--colors-grassA11': 'hsl(130 99.7% 75.6% / 0.731)', + '--colors-grassA12': 'hsl(137 100% 95.8% / 0.98)', + '--colors-limeA1': 'hsl(0 0% 0% / 0)', + '--colors-limeA2': 'hsl(75 96.4% 59.6% / 0.022)', + '--colors-limeA3': 'hsl(88 98% 70.4% / 0.061)', + '--colors-limeA4': 'hsl(81 97.8% 67.4% / 0.096)', + '--colors-limeA5': 'hsl(82 98.4% 65.6% / 0.135)', + '--colors-limeA6': 'hsl(79 99.7% 64.3% / 0.182)', + '--colors-limeA7': 'hsl(77 99.1% 62.1% / 0.252)', + '--colors-limeA8': 'hsl(75 100% 60% / 0.342)', + '--colors-limeA9': 'hsl(81 99.8% 59.7% / 0.819)', + '--colors-limeA10': 'hsl(75 99.8% 63.7% / 0.936)', + '--colors-limeA11': 'hsl(81 99.9% 58.7% / 0.719)', + '--colors-limeA12': 'hsl(83 100% 94.2% / 0.98)', + '--colors-yellowA1': 'hsl(0 0% 0% / 0)', + '--colors-yellowA2': 'hsl(49 100% 49.1% / 0.027)', + '--colors-yellowA3': 'hsl(45 100% 49.7% / 0.071)', + '--colors-yellowA4': 'hsl(46 100% 49.7% / 0.111)', + '--colors-yellowA5': 'hsl(47 100% 49.9% / 0.15)', + '--colors-yellowA6': 'hsl(51 100% 49.8% / 0.199)', + '--colors-yellowA7': 'hsl(51 99.8% 53.6% / 0.269)', + '--colors-yellowA8': 'hsl(51 100% 49.9% / 0.371)', + '--colors-yellowA9': 'hsl(53 100% 52% / 0.956)', + '--colors-yellowA10': 'hsl(56 100% 68.4% / 0.98)', + '--colors-yellowA11': 'hsl(48 100% 50% / 0.934)', + '--colors-yellowA12': 'hsl(60 100% 91.8% / 0.98)', + '--colors-amberA1': 'hsl(0 0% 0% / 0)', + '--colors-amberA2': 'hsl(31 100% 49.7% / 0.036)', + '--colors-amberA3': 'hsl(27 100% 49.9% / 0.094)', + '--colors-amberA4': 'hsl(29 100% 50% / 0.143)', + '--colors-amberA5': 'hsl(31 100% 50% / 0.192)', + '--colors-amberA6': 'hsl(35 100% 50% / 0.25)', + '--colors-amberA7': 'hsl(34 99.6% 52.9% / 0.331)', + '--colors-amberA8': 'hsl(36 100% 50% / 0.442)', + '--colors-amberA9': 'hsl(40 100% 57.2% / 0.98)', + '--colors-amberA10': 'hsl(44 100% 64.2% / 0.98)', + '--colors-amberA11': 'hsl(39 99.9% 52.7% / 0.938)', + '--colors-amberA12': 'hsl(45 100% 94.2% / 0.98)', + '--colors-orangeA1': 'hsl(0 0% 0% / 0)', + '--colors-orangeA2': 'hsl(13 100% 49.7% / 0.054)', + '--colors-orangeA3': 'hsl(20 100% 49.7% / 0.117)', + '--colors-orangeA4': 'hsl(23 100% 49.8% / 0.166)', + '--colors-orangeA5': 'hsl(23 99.4% 50.1% / 0.215)', + '--colors-orangeA6': 'hsl(23 99.8% 51.1% / 0.286)', + '--colors-orangeA7': 'hsl(23 99.7% 50.6% / 0.389)', + '--colors-orangeA8': 'hsl(24 100% 49.9% / 0.523)', + '--colors-orangeA9': 'hsl(24 99.9% 51.6% / 0.965)', + '--colors-orangeA10': 'hsl(25 100% 58.6% / 0.98)', + '--colors-orangeA11': 'hsl(24 100% 62.4% / 0.98)', + '--colors-orangeA12': 'hsl(26 100% 94.2% / 0.98)', + '--colors-brownA1': 'hsl(0 0% 0% / 0)', + '--colors-brownA2': 'hsl(22 99.6% 53.6% / 0.035)', + '--colors-brownA3': 'hsl(18 97.8% 69% / 0.088)', + '--colors-brownA4': 'hsl(21 98.2% 71% / 0.123)', + '--colors-brownA5': 'hsl(25 98.4% 72.1% / 0.158)', + '--colors-brownA6': 'hsl(25 98.7% 73.5% / 0.206)', + '--colors-brownA7': 'hsl(25 99% 74.6% / 0.289)', + '--colors-brownA8': 'hsl(28 99.2% 75.3% / 0.407)', + '--colors-brownA9': 'hsl(28 100% 74.8% / 0.642)', + '--colors-brownA10': 'hsl(28 99.9% 74.9% / 0.712)', + '--colors-brownA11': 'hsl(28 99.9% 74.9% / 0.843)', + '--colors-brownA12': 'hsl(32 98.2% 95.7% / 0.979)', + '--colors-bronzeA1': 'hsl(0 0% 0% / 0)', + '--colors-bronzeA2': 'hsl(20 88.2% 74.2% / 0.027)', + '--colors-bronzeA3': 'hsl(10 99.4% 83% / 0.074)', + '--colors-bronzeA4': 'hsl(18 96% 81.1% / 0.114)', + '--colors-bronzeA5': 'hsl(18 99.4% 81.7% / 0.148)', + '--colors-bronzeA6': 'hsl(15 98.1% 82.4% / 0.192)', + '--colors-bronzeA7': 'hsl(16 99.2% 82.9% / 0.27)', + '--colors-bronzeA8': 'hsl(18 99.5% 82.6% / 0.396)', + '--colors-bronzeA9': 'hsl(18 99.3% 85% / 0.592)', + '--colors-bronzeA10': 'hsl(18 99.6% 85.2% / 0.657)', + '--colors-bronzeA11': 'hsl(17 99.9% 86.1% / 0.774)', + '--colors-bronzeA12': 'hsl(20 99.8% 96.4% / 0.974)', + '--colors-goldA1': 'hsl(0 0% 0% / 0)', + '--colors-goldA2': 'hsl(40 93.7% 70.6% / 0.022)', + '--colors-goldA3': 'hsl(40 97.5% 80.6% / 0.065)', + '--colors-goldA4': 'hsl(40 95.9% 80.8% / 0.1)', + '--colors-goldA5': 'hsl(38 97.3% 82.1% / 0.13)', + '--colors-goldA6': 'hsl(39 97.2% 82.5% / 0.169)', + '--colors-goldA7': 'hsl(37 99.3% 82.4% / 0.246)', + '--colors-goldA8': 'hsl(35 98.7% 82.2% / 0.363)', + '--colors-goldA9': 'hsl(36 99.7% 82.8% / 0.552)', + '--colors-goldA10': 'hsl(35 99.2% 83.7% / 0.613)', + '--colors-goldA11': 'hsl(35 99.3% 85.3% / 0.725)', + '--colors-goldA12': 'hsl(49 98.6% 96.7% / 0.966)', +} diff --git a/packages/ui/src/components/Accordion/Accordion.module.css b/packages/ui/src/components/Accordion/Accordion.module.css new file mode 100644 index 00000000000..06c6163983b --- /dev/null +++ b/packages/ui/src/components/Accordion/Accordion.module.css @@ -0,0 +1,72 @@ +/* .sbui-accordion-container { + @apply flex flex-col rounded-md; +} + +.sbui-accordion-container--bordered { + @apply border border-solid; + @apply bg-white border-gray-200; + @apply dark:bg-dark-700 dark:border-darkmode; +} */ + +/* .sbui-accordion-item { + @apply w-full; +} */ + +/* .sbui-accordion-item__button { + @apply flex justify-between w-full text-left cursor-pointer px-6 py-4 border-0 border-solid font-medium text-base rounded-t-md bg-transparent; + + @apply border-gray-200 text-gray-500 hover:text-gray-600; + @apply dark:border-darkmode dark:text-dark-200 dark:hover:text-white; + + font-family: inherit; + font-weight: inherit; +} */ + +/* .sbui-accordion-item__button .sbui-typography-text { + @apply w-full max-w-none; +} */ + +/* .sbui-accordion-item__button .sbui-typography-text:last-child { + @apply pl-2; +} */ + +/* .sbui-accordion-item__button .sbui-icon { + @apply mt-px; +} */ + +/* .sbui-accordion-item__button--open .sbui-icon { + @apply transform rotate-180; +} */ +/* +.sbui-accordion-container--bordered + .sbui-accordion-item__button:not(:first-child) { + @apply rounded-none border-t border-gray-200 dark:border-darkmode; +} */ + +/* .sbui-accordion-item__panel { + @apply px-6 py-4; +} */ + +/* .sbui-accordion-item__panel--enter { + @apply transition-max-height ease-in-out duration-700 overflow-hidden; +} + +.sbui-accordion-item__panel--enterFrom { + @apply max-h-0; +} + +.sbui-accordion-item__panel--enterTo { + @apply max-h-screen; +} + +.sbui-accordion-item__panel--leave { + @apply transition-max-height ease-in-out duration-300 overflow-hidden; +} + +.sbui-accordion-item__panel--leaveFrom { + @apply max-h-screen; +} + +.sbui-accordion-item__panel--leaveTo { + @apply max-h-0; +} */ diff --git a/packages/ui/src/components/Accordion/Accordion.stories.tsx b/packages/ui/src/components/Accordion/Accordion.stories.tsx new file mode 100644 index 00000000000..4dcc3d56483 --- /dev/null +++ b/packages/ui/src/components/Accordion/Accordion.stories.tsx @@ -0,0 +1,201 @@ +import React from 'react' + +import { Accordion } from '.' +import { Typography } from '../Typography' +import { IconArrowUp } from '../Icon/icons/IconArrowUp' +import { Badge } from '../Badge' + +export default { + title: 'Displays/Accordion', + component: Accordion, +} + +export const OneItem = (args: any) => ( + + + + Title of the thing + + Test badge + + } + id="first" + > + + Lorem ipsum dolor sit amet consectetur adipisicing elit. Consequatur + amet labore. + + + +) + +export const MultipleItems = (args: any) => ( + + + Title of the thing + + } + id={'1'} + > + + Lorem ipsum dolor sit amet consectetur adipisicing elit. Consequatur + amet labore. + + + + Title of the thing + + } + id={'2'} + > + + Lorem ipsum dolor sit amet consectetur adipisicing elit. Consequatur + amet labore. + + + + Title of the thing + + } + id={'3'} + > + + Lorem ipsum dolor sit amet consectetur adipisicing elit. Consequatur + amet labore. + + + + Title of the thing + + } + id={'4'} + > + + Lorem ipsum dolor sit amet consectetur adipisicing elit. Consequatur + amet labore. + + + +) + +export const Bordered = (args: any) => ( + + + Title of the thing + + } + id={'1'} + > + + Lorem ipsum dolor sit amet consectetur adipisicing elit. Consequatur + amet labore. + + + + Title of the thing + + } + id={'2'} + > + + Lorem ipsum dolor sit amet consectetur adipisicing elit. Consequatur + amet labore. + + + + Title of the thing + + } + id={'3'} + > + + Lorem ipsum dolor sit amet consectetur adipisicing elit. Consequatur + amet labore. + + + + Title of the thing + + } + id={'4'} + > + + Lorem ipsum dolor sit amet consectetur adipisicing elit. Consequatur + amet labore. + + + +) + +Bordered.args = { + type: 'bordered', +} + +export const LeftAlignedChevron = (args: any) => ( + + + + First item + + Test badge + + } + id="first" + > + + Lorem ipsum dolor sit amet consectetur adipisicing elit. Consequatur + amet labore. + + + + + Second item + + + } + id="second" + > + + Lorem ipsum dolor sit amet consectetur adipisicing elit. Consequatur + amet labore. + + + +) + +// export const withDefaultActive = Multiple.bind({}) +// withDefaultActive.args = { +// defaultActiveId: [1], +// } + +// export const withIconLeft = Multiple.bind({}) +// withIconLeft.args = { +// iconPosition: 'left', +// } + +// export const withCustomIcon = Multiple.bind({}) +// withCustomIcon.args = { +// icon: , +// } diff --git a/packages/ui/src/components/Accordion/Accordion.tsx b/packages/ui/src/components/Accordion/Accordion.tsx new file mode 100644 index 00000000000..3b40089684a --- /dev/null +++ b/packages/ui/src/components/Accordion/Accordion.tsx @@ -0,0 +1,152 @@ +import React, { createContext, useContext, useState } from 'react' + +import { IconChevronUp } from '../Icon/icons/IconChevronUp' +import styleHandler from '../../lib/theme/styleHandler' + +import * as RadixAccordion from '@radix-ui/react-accordion' +import { IconChevronDown } from '../Icon/icons/IconChevronDown' +import { Transition } from '@headlessui/react' + +// type ContextValue = Required< +// Pick +// > & +// Pick + +type Type = 'default' | 'bordered' +type Size = 'tiny' | 'small' | 'medium' | 'large' | 'xlarge' +type Align = 'left' | 'right' + +interface ContextValue { + bordered?: boolean + type: Type + justified: Boolean + chevronAlign: Align + // currentItems: string[] +} + +const AccordionContext = createContext({ + chevronAlign: 'left', + justified: true, + type: 'default', + // currentItems: [], +}) + +interface AccordionProps { + children?: React.ReactNode + className?: string + defaultActiveId?: (string | number)[] + icon?: React.ReactNode + iconPosition?: Align + bordered: boolean + onChange?: (item: string | string[]) => void + openBehaviour: 'single' | 'multiple' + type: Type + size: Size + defaultValue?: string | string[] | undefined + justified: Boolean + chevronAlign: Align +} + +function Accordion({ + children, + className, + defaultActiveId = [], + icon = , + iconPosition = 'right', + onChange, + openBehaviour = 'multiple', + type = 'default', + // size, // TO DO + defaultValue = undefined, + justified = true, + chevronAlign, +}: AccordionProps) { + // const [currentItems, setCurrentItems] = useState(defaultValue || []) + + const __styles = styleHandler('accordion') + + let containerClasses = [__styles.variants[type].base] + + if (className) { + containerClasses.push(className) + } + + // let currentItems = defaultValue || [] + + const contextValue = { + chevronAlign, + justified, + type, + defaultValue, + } + + function handleOnChange(e: string | string[]) { + if (onChange) onChange(e) + const value = e == typeof String ? e.split(' ') : e + // setCurrentItems(e) + console.log('about to change state') + // currentItems = e + // console.log('currentItems', currentItems) + } + + return ( + <> + {/* @ts-ignore */} + +
{children}
+ + } + >
+ + ) +} + +interface ItemProps { + children?: React.ReactNode + className?: string + header: React.ReactNode + id: string + icon?: React.ReactNode +} + +export function Item({ children, className, header, id, icon }: ItemProps) { + const __styles = styleHandler('accordion') + // const [open, setOpen] = useState(false) + + const { + type, + justified, + chevronAlign, + // currentItems, + // defaultActiveId, iconPosition, onChange + } = useContext(AccordionContext) + + let triggerClasses = [__styles.variants[type].trigger] + if (justified) triggerClasses.push(__styles.justified) + if (className) triggerClasses.push(className) + + let chevronClasses = [__styles.chevron.base, __styles.chevron.align[chevronAlign]] + + // console.log('currentItems', currentItems) + + return ( + + + {header} + + + +
{children}
+
+
+ ) +} + +Accordion.Item = Item +export default Accordion diff --git a/packages/ui/src/components/Accordion/index.tsx b/packages/ui/src/components/Accordion/index.tsx new file mode 100644 index 00000000000..971fd8afcd7 --- /dev/null +++ b/packages/ui/src/components/Accordion/index.tsx @@ -0,0 +1 @@ +export { default as Accordion } from './Accordion' diff --git a/packages/ui/src/components/Alert/Alert.module.css b/packages/ui/src/components/Alert/Alert.module.css new file mode 100644 index 00000000000..4a061f9123c --- /dev/null +++ b/packages/ui/src/components/Alert/Alert.module.css @@ -0,0 +1,63 @@ +/* .sbui-alert-container { + @apply rounded-md p-4; +} + +.sbui-alert-container--danger { + @apply bg-red-600 bg-opacity-10 text-red-600; +} + +.sbui-alert-container--warning { + @apply bg-yellow-600 bg-opacity-10 text-yellow-600; +} + +.sbui-alert-container--info { + @apply bg-blue-600 bg-opacity-10 text-blue-600; +} + +.sbui-alert-container--success { + @apply bg-green-600 bg-opacity-10 text-green-600; +} */ + +/* .sbui-alert-title { + @apply m-0 text-sm font-medium; +} + +.sbui-alert-description { + @apply mt-2 text-sm; +} + +.sbui-alert-description--danger { + @apply text-red-500; +} + +.sbui-alert-description--warning { + @apply text-yellow-500; +} + +.sbui-alert-description--info { + @apply text-blue-500; +} + +.sbui-alert-description--success { + @apply text-green-500; +} + +.sbui-close-button { + @apply cursor-pointer inline-flex transition ease-in-out duration-200 bg-transparent border-transparent rounded-md p-1.5 focus:outline-none; +} + +.sbui-close-button--success { + @apply text-green-500 hover:bg-green-600 hover:bg-opacity-10; +} + +.sbui-close-button--danger { + @apply text-red-500 hover:bg-red-600 hover:bg-opacity-10; +} + +.sbui-close-button--warning { + @apply text-yellow-500 hover:bg-yellow-600 hover:bg-opacity-10; +} + +.sbui-close-button--info { + @apply text-blue-500 hover:bg-blue-600 hover:bg-opacity-10; +} */ diff --git a/packages/ui/src/components/Alert/Alert.stories.tsx b/packages/ui/src/components/Alert/Alert.stories.tsx new file mode 100644 index 00000000000..a38962de054 --- /dev/null +++ b/packages/ui/src/components/Alert/Alert.stories.tsx @@ -0,0 +1,137 @@ +import React from 'react' + +import { Alert } from './../../../' + +// import ThemeProvider from '../../theme/themeContext' + +export default { + title: 'Displays/Alerts', + component: Alert, +} + +export const Neutral = (args: any) => ( + + Lorem ipsum dolor sit amet consectetur adipisicing elit. Consequatur amet labore. + +) + +export const Success = (args: any) => ( + + Lorem ipsum dolor sit amet consectetur adipisicing elit. Consequatur amet labore. + +) + +export const SuccessWithIcon = (args: any) => ( + + Lorem ipsum dolor sit amet consectetur adipisicing elit. Consequatur amet labore. + +) + +export const Danger = (args: any) => ( + + Lorem ipsum dolor sit amet consectetur adipisicing elit. Consequatur amet labore. + +) + +export const DangerWithIcon = (args: any) => ( + + Lorem ipsum dolor sit amet consectetur adipisicing elit. Consequatur amet labore. + +) + +export const Info = (args: any) => ( + + Lorem ipsum dolor sit amet consectetur adipisicing elit. Consequatur amet labore. + +) + +export const InfoWithIcon = (args: any) => ( + + Lorem ipsum dolor sit amet consectetur adipisicing elit. Consequatur amet labore. + +) + +export const Warning = (args: any) => ( + + Lorem ipsum dolor sit amet consectetur adipisicing elit. Consequatur amet labore. + +) + +export const WarningWithIcon = (args: any) => ( + + Lorem ipsum dolor sit amet consectetur adipisicing elit. Consequatur amet labore. + +) + +export const Closable = (args: any) => ( + + Lorem ipsum dolor sit amet consectetur adipisicing elit. Consequatur amet labore. + +) + +export const WithAction = (args: any) => ( + + Lorem ipsum dolor sit amet consectetur adipisicing elit. Consequatur amet labore. + +) + +Neutral.args = { + title: 'Success alert with icon', + withIcon: true, +} + +Success.args = { + title: 'Success alert', + variant: 'success', +} + +SuccessWithIcon.args = { + title: 'Success alert with icon', + variant: 'success', + withIcon: true, +} + +Danger.args = { + title: 'Danger alert', + variant: 'danger', +} + +DangerWithIcon.args = { + title: 'Danger alert with icon', + variant: 'danger', + withIcon: true, +} + +Info.args = { + title: 'Info alert', + variant: 'info', +} + +InfoWithIcon.args = { + title: 'Info alert with icon', + variant: 'info', + withIcon: true, +} + +Warning.args = { + title: 'Warning alert', + variant: 'warning', +} + +WarningWithIcon.args = { + title: 'Warning alert with icon', + variant: 'warning', + withIcon: true, +} + +Closable.args = { + title: 'Closable alert', + closable: true, +} + +WithAction.args = { + title: 'Alert with action', + variant: 'warning', + withIcon: true, + actions:
Hello
, +} diff --git a/packages/ui/src/components/Alert/Alert.test.js b/packages/ui/src/components/Alert/Alert.test.js new file mode 100644 index 00000000000..e6fdee11169 --- /dev/null +++ b/packages/ui/src/components/Alert/Alert.test.js @@ -0,0 +1,67 @@ +import { fireEvent, render, screen } from '@testing-library/react' +import Alert from './Alert' + +const VARIANTS = ['success', 'danger', 'warning', 'info'] + +describe('#Alert', () => { + it('should render elements correctly', () => { + render({'Description'}) + expect(screen.queryByText('Required Title')).toBeInTheDocument() + expect(screen.queryByText('Description')).toBeInTheDocument() + }) + + it('should add custom classes to container div', () => { + const { container } = render( + + {'Description'} + + ) + expect(container.querySelector('div')).toHaveClass( + `sbui-alert-container sbui-alert-container--success custom classes` + ) + }) + + it('should close alert when close button clicked', () => { + render( + + {'Description'} + + ) + + const closeButton = screen.getByRole('button') + + fireEvent.click(closeButton) + + expect(screen.queryByText('Description')).not.toBeInTheDocument() + }) + + it('should render an icon when passed withIcon', () => { + const { container } = render( + + {'Description'} + + ) + + expect( + container.querySelector('div.flex-shrink-0 > svg') + ).toBeInTheDocument() + }) + + it.each(VARIANTS)( + 'should have "sbui-alert-[container|description]--%s" class', + (variant) => { + const { container } = render( + + {'Description'} + + ) + + expect(container.querySelector('div')).toHaveClass( + `sbui-alert-container sbui-alert-container--${variant}` + ) + expect(screen.queryByText('Description')).toHaveClass( + `sbui-alert-description sbui-alert-description--${variant}` + ) + } + ) +}) diff --git a/packages/ui/src/components/Alert/Alert.tsx b/packages/ui/src/components/Alert/Alert.tsx new file mode 100644 index 00000000000..d5736e07a82 --- /dev/null +++ b/packages/ui/src/components/Alert/Alert.tsx @@ -0,0 +1,99 @@ +import React, { useState } from 'react' +import { IconAlertTriangle } from '../Icon/icons/IconAlertTriangle' + +import { IconInfo } from '../Icon/icons/IconInfo' +import { IconX } from '../Icon/icons/IconX' + +// @ts-ignore +// import AlertStyles from './Alert.module.css' +import styleHandler from '../../lib/theme/styleHandler' +import { IconAlertOctagon } from '../Icon/icons/IconAlertOctagon' +import { IconCheckCircle } from '../Icon/icons/IconCheckCircle' + +interface Props { + variant?: 'success' | 'danger' | 'warning' | 'info' | 'neutral' + className?: string + title: string + withIcon?: boolean + closable?: boolean + children?: React.ReactNode + icon?: React.ReactNode + actions?: React.ReactNode +} + +const icons: Record< + 'success' | 'danger' | 'warning' | 'info' | 'neutral', + React.ReactElement +> = { + danger: , + success: , + warning: , + info: , + neutral: <>, +} + +function Alert({ + variant = 'neutral', + className, + title, + withIcon, + closable, + children, + icon, + actions, +}: Props) { + let __styles = styleHandler('alert') + + const [visible, setVisible] = useState(true) + + let containerClasses = [__styles.base] + containerClasses.push(__styles.variant[variant].base) + + if (className) containerClasses.push(className) + + let descriptionClasses = [ + __styles.description, + __styles.variant[variant].description, + ] + let closeButtonClasses = [__styles.close] + + return ( + <> + {visible && ( +
+ {withIcon ? ( +
+ {withIcon && icons[variant]} +
+ ) : null} + {icon && icon} +
+
+

+ {title} +

+
{children}
+
+ {actions} +
+ {closable && ( + + )} +
+ )} + + ) +} + +export default Alert diff --git a/packages/ui/src/components/Alert/index.tsx b/packages/ui/src/components/Alert/index.tsx new file mode 100644 index 00000000000..fd2a1266021 --- /dev/null +++ b/packages/ui/src/components/Alert/index.tsx @@ -0,0 +1 @@ +export { default as Alert } from './Alert' diff --git a/packages/ui/src/components/Avatar/Avatar.module.css b/packages/ui/src/components/Avatar/Avatar.module.css new file mode 100644 index 00000000000..652b2bd74c2 --- /dev/null +++ b/packages/ui/src/components/Avatar/Avatar.module.css @@ -0,0 +1,65 @@ +.sbui-avatar { + @apply rounded-full; +} + +.sbui-avatar-type-rounded { + border-radius: 10%; +} + +.sbui-avatar-type-square { + border-radius: 0; +} + +.sbui-avatar-image { + object-fit: 'contain'; + border-radius: '50%'; + height: 3rem; + width: 3rem; +} + +.sbui-avatar-children { + @apply flex; + @apply justify-center; + @apply items-center +} + +.sbui-avatar-icon { + @apply flex; + @apply justify-center; + @apply items-center; + background-color: cadetblue; + height: 3rem; + width: 3rem; +} + +.sbui-avatar-text { + @apply flex; + @apply justify-center; + @apply items-center; + background-color: cadetblue; + float: left; + height: 3rem; + width: 3rem; +} + +.sbui-avatar-fallback { + @apply flex; + @apply justify-center; + @apply items-center; + background-color: cadetblue; + height: 3rem; + width: 3rem; +} + +.sbui-avatar-single { + +} + +.sbui-avatar-multiple { + +} + +.sbui-image-responsive { + width: 100%; + height: auto; +} diff --git a/packages/ui/src/components/Avatar/Avatar.stories.tsx b/packages/ui/src/components/Avatar/Avatar.stories.tsx new file mode 100644 index 00000000000..95d28cdbb8c --- /dev/null +++ b/packages/ui/src/components/Avatar/Avatar.stories.tsx @@ -0,0 +1,60 @@ +import React from 'react' +import { IconAirplay } from '../Icon/icons/IconAirplay' + +import Avatar from './Avatar' + +export default { + title: 'General/Avatar', + component: Avatar, +} + +export const Image = (args: any) => { + return ( + <> + + + ) +} + +export const Text = (args: any) => { + return ( + <> + + + ) +} + +export const Icon = (args: any) => { + return ( + <> + + + ) +} + +export const Fallback = (args: any) => { + return ( + <> + + + ) +} + +Image.args = { + active: true, + src: 'https://via.placeholder.com/150', +} + +Text.args = { + active: true, + text: 'Shoury', +} + +Icon.args = { + active: true, + Icon: IconAirplay, +} + +Fallback.args = { + active: true, +} diff --git a/packages/ui/src/components/Avatar/Avatar.tsx b/packages/ui/src/components/Avatar/Avatar.tsx new file mode 100644 index 00000000000..2c8714f8529 --- /dev/null +++ b/packages/ui/src/components/Avatar/Avatar.tsx @@ -0,0 +1,104 @@ +import React from 'react' +import { Icon } from '../Icon/IconImportHandler' +import { IconUser } from '../Icon/icons/IconUser' +// @ts-ignore +import AvatarStyles from './Avatar.module.css' + +interface Props { + children?: React.ReactNode + src?: string | undefined + style?: React.CSSProperties + className?: string + alt?: string + responsive?: boolean + text?: string + variant?: 'circle' | 'square' + AvatarIcon?: Icon + size: number +} + +export default function Avatar({ + src, + style, + className, + alt, + responsive, + text, + variant, + AvatarIcon, + size, + children, +}: Props) { + const classes = [AvatarStyles['sbui-avatar']] + classes.push(className) + let objectToRender + + const imageExist = () => { + const img = new Image() + img.src = src + if (img.complete) { + return true + } else { + img.onload = () => { + return true + } + img.onerror = () => { + return false + } + } + } + + if (imageExist && src) { + classes.push(AvatarStyles['sbui-avatar-image']) + objectToRender = ( + {alt} + ) + } else if (AvatarIcon) { + classes.push(AvatarStyles['sbui-avatar-icon']) + objectToRender = ( +
+ +
+ ) + } else if (text) { + classes.push(AvatarStyles['sbui-avatar-text']) + objectToRender = ( +
+

{text[0]}

+
+ ) + } else if (children) { + classes.push(AvatarStyles['sbui-avatar-children']) + objectToRender = ( +
+ {children} +
+ ) + } else { + classes.push(AvatarStyles['sbui-avatar-fallback']) + objectToRender = ( +
+ +
+ ) + } + + return <>{objectToRender} +} diff --git a/packages/ui/src/components/Avatar/index.tsx b/packages/ui/src/components/Avatar/index.tsx new file mode 100644 index 00000000000..6383d3a6c94 --- /dev/null +++ b/packages/ui/src/components/Avatar/index.tsx @@ -0,0 +1 @@ +export { default as Image } from './Avatar' diff --git a/packages/ui/src/components/Badge/Badge.module.css b/packages/ui/src/components/Badge/Badge.module.css new file mode 100644 index 00000000000..38c8ed21ddf --- /dev/null +++ b/packages/ui/src/components/Badge/Badge.module.css @@ -0,0 +1,43 @@ +/* .sbui-badge { + @apply inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-green-500 bg-opacity-10 text-brand-800; +} + +.sbui-badge--large { + @apply px-3 py-0.5 rounded-full text-sm; +} + +.sbui-badge-dot { + @apply -ml-0.5 mr-1.5 h-2 w-2; +} + +.sbui-badge--gray { + @apply bg-gray-600 bg-opacity-10 text-gray-500; +} + +.sbui-badge--red { + @apply bg-red-600 bg-opacity-10 text-red-500; +} + +.sbui-badge--yellow { + @apply bg-yellow-600 bg-opacity-10 text-yellow-500; +} + +.sbui-badge--green { + @apply bg-green-600 bg-opacity-10 text-green-500; +} + +.sbui-badge--blue { + @apply bg-blue-600 bg-opacity-10 text-blue-500; +} + +.sbui-badge--indigo { + @apply bg-indigo-600 bg-opacity-10 text-indigo-500; +} + +.sbui-badge--purple { + @apply bg-purple-600 bg-opacity-10 text-purple-500; +} + +.sbui-badge--pink { + @apply bg-pink-600 bg-opacity-10 text-pink-500; +} */ diff --git a/packages/ui/src/components/Badge/Badge.stories.tsx b/packages/ui/src/components/Badge/Badge.stories.tsx new file mode 100644 index 00000000000..d27bcd12adc --- /dev/null +++ b/packages/ui/src/components/Badge/Badge.stories.tsx @@ -0,0 +1,98 @@ +import { Badge } from './' + +export default { + title: 'Displays/Badge', + component: Badge, +} + +const colors = [ + 'brand', + 'scale', + 'tomato', + 'red', + 'crimson', + 'pink', + 'plum', + 'purple', + 'violet', + 'indigo', + 'blue', + 'cyan', + 'teal', + 'green', + 'grass', + 'brown', + 'orange', + 'sky', + 'mint', + 'lime', + 'yellow', + 'amber', + 'gold', + 'bronze', + 'gray', + 'mauve', + 'slate', + 'sage', + 'olive', + 'sand', +] + +const sizes: string[] = ['small', 'large'] + +export const Default = (args: any) => Hello world + +export const withColor = (args: any) => Hello world + +export const withDot = (args: any) => Hello world + +export const large = (args: any) => Hello world + +export const withDotLarge = (args: any) => Hello world + +export const withCustomClassNames = (args: any) => ( + Hello world +) + +export const allBadges = () => ( + <> +
+ {sizes.map((size, sizeIndex) => ( + <> +

{size}

+
+ {colors.map((x, colorIndex) => ( + // @ts-ignore + + Supabase + + ))} +
+ + ))} +
+ +) + +Default.args = {} + +withColor.args = { + color: 'red', +} + +withDot.args = { + dot: true, +} + +large.args = { + size: 'large', +} + +withDotLarge.args = { + size: 'large', + dot: true, +} + +withCustomClassNames.args = { + className: 'border-teal-100 border-2' +} diff --git a/packages/ui/src/components/Badge/Badge.test.js b/packages/ui/src/components/Badge/Badge.test.js new file mode 100644 index 00000000000..9877cee4f60 --- /dev/null +++ b/packages/ui/src/components/Badge/Badge.test.js @@ -0,0 +1,55 @@ +import React from 'react' +import { render, screen } from '@testing-library/react' +import Badge from './Badge' + +const SIZES = ['small', 'large'] +const COLORS = [ + 'gray', + 'red', + 'yellow', + 'green', + 'blue', + 'indigo', + 'purple', + 'pink' +] + +describe('#Badge', () => { + it('should render component correctly', () => { + const wrapper = render(Badge) + expect(screen.getByText('Badge')).toBeInTheDocument() + expect(() => wrapper.unmount()).not.toThrow() + }) + + it('should render different text', () => { + const wrapper = render(Badge) + expect(screen.getByText('Badge')).toBeInTheDocument() + wrapper.rerender(徽章) + expect(screen.getByText('徽章')).toBeInTheDocument() + }) + + it('should render with dot', () => { + const wrapper = render(Badge) + expect(screen.getByText('Badge')).toBeInTheDocument() + expect(() => wrapper.unmount()).not.toThrow() + }) + + it.each(COLORS)('should have %s color', (color) => { + render({color}) + expect(screen.getByText(color)).toHaveClass( + `sbui-badge sbui-badge--${color}` + ) + }) + + it.each(SIZES)('should render with %s size', (size) => { + render({size}) + expect(screen.getByText(size)).toHaveClass( + `sbui-badge ${size === 'large' ? 'sbui-badge--large' : ''}` + ) + }) + + it('should render with Classes',()=>{ + render(Badge) + expect(screen.getByText('Badge')).toHaveClass('border-2') + }) +}) diff --git a/packages/ui/src/components/Badge/Badge.tsx b/packages/ui/src/components/Badge/Badge.tsx new file mode 100644 index 00000000000..39f2d26318b --- /dev/null +++ b/packages/ui/src/components/Badge/Badge.tsx @@ -0,0 +1,71 @@ +import styleHandler from '../../lib/theme/styleHandler' + +interface Props { + color?: + | 'brand' + | 'scale' + | 'tomato' + | 'red' + | 'crimson' + | 'pink' + | 'plum' + | 'purple' + | 'violet' + | 'indigo' + | 'blue' + | 'cyan' + | 'teal' + | 'green' + | 'grass' + | 'brown' + | 'orange' + | 'sky' + | 'mint' + | 'lime' + | 'yellow' + | 'amber' + | 'gold' + | 'bronze' + | 'gray' + | 'mauve' + | 'slate' + | 'sage' + | 'olive' + | 'sand' + children: string | React.ReactNode + size?: 'large' | 'small' + dot?: boolean + className?: string +} + +function Badge({ color = 'brand', children, size, dot, className }: Props) { + const __styles = styleHandler('badge') + + let classes = [__styles.base] + if (color) { + classes.push(__styles.color[color]) + } + if (size === 'large') { + classes.push(__styles.size.large) + } + if (className) { + classes.push(className) + } + + return ( + + {dot && ( + + + + )} + + {children} + + ) +} +export default Badge diff --git a/packages/ui/src/components/Badge/index.tsx b/packages/ui/src/components/Badge/index.tsx new file mode 100644 index 00000000000..e69f9906a73 --- /dev/null +++ b/packages/ui/src/components/Badge/index.tsx @@ -0,0 +1 @@ +export { default as Badge } from './Badge' diff --git a/packages/ui/src/components/Breadcrumb/Breadcrumb.module.css b/packages/ui/src/components/Breadcrumb/Breadcrumb.module.css new file mode 100644 index 00000000000..60a6ec4e374 --- /dev/null +++ b/packages/ui/src/components/Breadcrumb/Breadcrumb.module.css @@ -0,0 +1,34 @@ +.sbui-breadcrumb--container { + @apply flex flex-row items-center; + @apply p-0 my-0; +} + +.sbui-breadcrumb--item-container { + @apply flex items-center; +} + +.sbui-breadcrumb--item { + @apply text-gray-500 hover:text-gray-600; + @apply cursor-pointer; + @apply dark:text-dark-200 dark:hover:text-brand-700; +} + +.sbui-breadcrumb--item__active { + @apply text-brand-700 dark:text-brand-700; +} + +.sbui-breadcrumb--separator { + @apply mx-2; + @apply text-gray-500 hover:text-gray-600; + @apply dark:text-dark-200 dark:hover:text-white; +} + +.sbui-breadcrumb--separator-small { + @apply mx-2; +} +.sbui-breadcrumb--separator-medium { + @apply mx-4; +} +.sbui-breadcrumb--separator-large { + @apply mx-6; +} diff --git a/packages/ui/src/components/Breadcrumb/Breadcrumb.stories.tsx b/packages/ui/src/components/Breadcrumb/Breadcrumb.stories.tsx new file mode 100644 index 00000000000..681539b05b7 --- /dev/null +++ b/packages/ui/src/components/Breadcrumb/Breadcrumb.stories.tsx @@ -0,0 +1,18 @@ +import React from 'react' +import { Breadcrumb } from './../../../' + +export default { + title: 'Navigation/Breadcrumb', + component: Breadcrumb, +} + +export const Default = ({ children, ...args }: any) => {children} + +Default.args = { + children: [ + Brothers, + Grimm, + Hansel, + Gretel, + ], +} diff --git a/packages/ui/src/components/Breadcrumb/Breadcrumb.test.js b/packages/ui/src/components/Breadcrumb/Breadcrumb.test.js new file mode 100644 index 00000000000..2f5646af7e2 --- /dev/null +++ b/packages/ui/src/components/Breadcrumb/Breadcrumb.test.js @@ -0,0 +1,25 @@ +import React from from 'react'; +import { render, screen } from '@testing-library/react'; +import Breadcrumb from './Breadcrumb'; + +describe('#Breadcrumb', () => { + it('should render breadcrumb correctly', async () => { + render( + +

Item 1

+

Item 2

+
+ ) + expect(screen.queryByTestId('breadcrumb')).toBeInTheDocument() + }) + + it('should have "breadcrumb--item" class', () => { + render( + +

Item 1

+

Item 2

+
+ ) + expect(screen.queryByTestId('breadcrumb')).toHaveClass('.sbui-breadcrumb--item ') + }) +}) diff --git a/packages/ui/src/components/Breadcrumb/Breadcrumb.tsx b/packages/ui/src/components/Breadcrumb/Breadcrumb.tsx new file mode 100644 index 00000000000..6b32edf834b --- /dev/null +++ b/packages/ui/src/components/Breadcrumb/Breadcrumb.tsx @@ -0,0 +1,62 @@ +import { IconChevronRight } from '../Icon/icons/IconChevronRight' +// @ts-ignore +import BreadcrumbStyle from './Breadcrumb.module.css' + +interface Props { + children?: [React.ReactNode] + className?: string + style?: React.CSSProperties + spacing?: 'small' | 'medium' | 'large' +} + +const Breadcrumb = ({ className, style, children, spacing = 'small' }: Props) => { + let classes = [BreadcrumbStyle['sbui-breadcrumb--container']] + let seperatorClasses = [BreadcrumbStyle['sbui-breadcrumb--separator']] + + if (className) { + classes.push(className) + } + + if (spacing) { + seperatorClasses.push(`sbui-breadcrumb--separator-${spacing}`) + } + + return ( +
    + {children!.map((child: React.ReactNode, idx: number) => ( +
  1. + {child} + {idx + 1 < children!.length && ( +
  2. + ))} +
+ ) +} + +interface ItemProps { + children: React.ReactNode + active?: boolean + onClick?: any + style?: React.CSSProperties +} + +export function Item({ children, active, onClick, style }: ItemProps) { + let classes = [BreadcrumbStyle['sbui-breadcrumb--item']] + if (active) classes.push(BreadcrumbStyle['sbui-breadcrumb--item__active']) + return ( + + {children} + + ) +} + +Breadcrumb.Item = Item + +export default Breadcrumb diff --git a/packages/ui/src/components/Breadcrumb/index.tsx b/packages/ui/src/components/Breadcrumb/index.tsx new file mode 100644 index 00000000000..29b136a967f --- /dev/null +++ b/packages/ui/src/components/Breadcrumb/index.tsx @@ -0,0 +1 @@ +export { default as Breadcrumb } from './Breadcrumb' diff --git a/packages/ui/src/components/Button/Button.module.css b/packages/ui/src/components/Button/Button.module.css new file mode 100644 index 00000000000..8c4d9b48a9a --- /dev/null +++ b/packages/ui/src/components/Button/Button.module.css @@ -0,0 +1,156 @@ +/* .sbui-btn-container { + @apply inline-flex font-medium; +} */ + +/* .sbui-btn { + @apply relative cursor-pointer inline-flex items-center space-x-2 text-center border border-solid border-transparent transition ease-out duration-200 outline-none; + @apply rounded; + font-family: inherit; + font-weight: inherit; +} */ + +/* .sbui-btn:focus { + @apply outline-none; +} */ + +/* .sbui-btn-container--shadow { + box-shadow: 0 2px 0 rgba(0, 0, 0, 0.045); +} */ + +/* .sbui-btn--w-full { + @apply w-full flex items-center justify-center; +} */ + +/* .sbui-btn:disabled { + @apply opacity-75 cursor-not-allowed; + pointer-events: none; +} */ + +/* + Button sizes +*/ + +.sbui-btn--tiny { + @apply px-2.5 py-1.5 text-xs; +} +.sbui-btn--small { + @apply px-3 py-2 text-sm leading-4; +} +.sbui-btn--medium { + @apply px-4 py-2 text-sm; +} +.sbui-btn--large { + @apply px-4 py-2 text-base; +} +.sbui-btn--xlarge { + @apply px-6 py-3 text-base; +} + +/* + Button varients +*/ +/* .sbui-btn-primary { + @apply text-white bg-brand-800 hover:bg-brand-600; + @apply dark:hover:bg-brand-900; +} */ +.dark .sbui-btn-primary { + text-shadow: 0px 0px 4px rgba(38 111 78 / 50%); +} + +/* .sbui-btn-default { + @apply text-gray-500 bg-white border-gray-200 hover:text-gray-600; + @apply hover:bg-white hover:border-gray-200; + + @apply dark:border-gray-600 dark:bg-gray-600 dark:text-dark-200; + @apply dark:hover:bg-gray-700; +} */ +.dark .sbui-btn-default { + text-shadow: 0px 0px 4px rgba(31 31 31 / 50%); +} +/* +.sbui-btn-secondary { + @apply text-gray-600 bg-gray-200; + @apply hover:text-gray-700 hover:bg-gray-300; + + @apply dark:text-gray-300 dark:bg-gray-500; + @apply dark:hover:bg-gray-600; +} */ +.dark .sbui-btn-secondary { + text-shadow: 0px 0px 4px rgba(42 42 42 / 50%); +} + +/* .sbui-btn-outline { + @apply border text-gray-500 bg-transparent border-gray-200 border-solid hover:bg-white hover:text-gray-600 hover:border-gray-600 dark:text-white dark:border-dark-400 dark:hover:text-dark-600 dark:hover:border-white; +} */ +/* .sbui-btn-dashed { + @apply border text-gray-500 bg-transparent border-gray-200 border-dashed hover:text-gray-600 hover:border-gray-600; + @apply dark:text-white dark:border-dark-400 dark:hover:text-white dark:hover:border-white; +} */ +/* .sbui-btn-link { + @apply bg-transparent text-brand-800 border-none hover:bg-brand-900 hover:bg-opacity-25; + box-shadow: none; +} */ +/* .sbui-btn-text { + @apply text-gray-400 bg-transparent border-none hover:bg-gray-200 hover:bg-opacity-25; + @apply dark:text-dark-300 dark:hover:bg-dark-600; + box-shadow: none; +} */ + +/* .sbui-btn--danger { + @apply border-red-500 text-red-500; + @apply dark:border-red-500 dark:text-red-500; +} */ + +/* .dark .sbui-btn--danger { + text-shadow: 0px 0px 4px rgba(229, 62, 62 / 50%); +} + +.sbui-btn-primary.sbui-btn--danger { + @apply bg-red-500 text-white; + @apply hover:bg-red-600 hover:border-red-600; +} +.sbui-btn-default.sbui-btn--danger, +.sbui-btn-secondary.sbui-btn--danger, +.sbui-btn-outline.sbui-btn--danger, +.sbui-btn-dashed.sbui-btn--danger, +.sbui-btn-link.sbui-btn--danger, +.sbui-btn-text.sbui-btn--danger { + @apply hover:bg-red-600 hover:text-white hover:border-red-600; +} */ +/* { + @apply hover:bg-red-600 hover:text-white hover:border-red-600; +} */ + +/* + Animation for icon +*/ +/* .sbui-btn--anim--spin { + @apply animate-spin; +} */ + +/* @keyframes spin { + from { + transform: rotate(0deg); + } + to { + transform: rotate(360deg); + } +} */ + +/* .sbui-btn-loader--center { + position: absolute; + + top: 50%; + left: 50%; + right: 50%; + bottom: 50%; + transform: translate(-50%, -50%); + margin: auto 0; + + width: inherit; + height: inherit; +} + +.sbui-btn--text-fade-out span { + @apply opacity-0; +} */ diff --git a/packages/ui/src/components/Button/Button.stories.tsx b/packages/ui/src/components/Button/Button.stories.tsx new file mode 100644 index 00000000000..a65e2eefe74 --- /dev/null +++ b/packages/ui/src/components/Button/Button.stories.tsx @@ -0,0 +1,260 @@ +// import React, { useRef, useState } from 'react' +// import defaultTheme from '../../theme/defaultTheme' +// import { ThemeProvider } from './../ThemeProvider' +// import customThemeExample from '../../lib/theme/customThemeExample' + +import { useRef, useState } from 'react' +import { Button, IconPackage, IconChevronRight } from './../../index' + +export default { + title: 'General/Button', + component: Button, +} + +export const Default = (args: any) => +export const withStyles = (args: any) => +export const withIcon = (args: any) => +export const withIconRight = (args: any) => ( + +) +export const withBlock = (args: any) => +export const withOnlyIcon = (args: any) => +) +export const withRef = () => { + const buttonRef = useRef(null) + const [msg, setMsg] = useState('Click button to console.log Ref') + + function onClick() { + const message = `button:${buttonRef?.current} ` + setMsg(message) + // console.log(message) + } + + return ( + <> + + +

{msg}

+ + ) +} +export const allButtons = (args: any) => ( + <> +
+
+ + + + + + + + + + +
+ +
+ + + + + + + + + + +
+
+ + + + + + + + + + +
+
+ + + + + + + + + + +
+
+ + + + + + + + + + +
+
+ +) + +export const withCustomTag = (args: any) => ( + +) + +const icon = + +withIcon.args = { + type: 'primary', + icon: icon, +} + +withIconRight.args = { + type: 'primary', + iconRight: , +} + +withStyles.args = { + type: 'primary', + style: { backgroundColor: 'red', color: 'yellow' }, +} + +withBlock.args = { + type: 'primary', + block: true, +} + +withOnlyIcon.args = { + icon: icon, +} + +withOnlyLoading.args = { + loading: true, +} + +withLoadingCentered.args = { + loading: true, + loadingCentered: true, +} + +allButtons.args = { + loading: false, + danger: false, +} + +withCustomTag.args = { + as: 'span', +} diff --git a/packages/ui/src/components/Button/Button.test.js b/packages/ui/src/components/Button/Button.test.js new file mode 100644 index 00000000000..0b8dd6e4fe7 --- /dev/null +++ b/packages/ui/src/components/Button/Button.test.js @@ -0,0 +1,87 @@ +import React from 'react' +import { render, screen, fireEvent } from '@testing-library/react' +import Button from './Button' + +const SIZES = ['tiny', 'small', 'medium', 'large', 'xlarge'] +const TYPES = [ + 'primary', + 'default', + 'secondary', + 'outline', + 'dashed', + 'link', + 'text', +] + +describe('#Button', () => { + it('should render button correctly', () => { + const wrapper = render() + expect(wrapper.getByText('Button')).toBeInTheDocument() + expect(() => wrapper.unmount()).not.toThrow() + }) + + it('should render different text', () => { + const wrapper = render() + expect(screen.getByText('Button')).toBeInTheDocument() + wrapper.rerender() + expect(screen.getByText('按钮')).toBeInTheDocument() + }) + + it('should ignore events when disabled', () => { + const WrapperButton = () => { + const [state, setState] = React.useState('state1') + return ( + + ) + } + render() + expect(screen.getByText('state1')).toBeInTheDocument() + fireEvent.click(screen.getByText('state1')) + expect(screen.getByText('state1')).toBeInTheDocument() + expect(screen.queryByText('state2')).not.toBeInTheDocument() + }) + + it('should ignore events when loading', () => { + const WrapperButton = () => { + const [state, setState] = React.useState('state1') + return ( + + ) + } + render() + fireEvent.click(screen.getByText('state1')) + expect(screen.queryByText('state2')).not.toBeInTheDocument() + }) + + it('should have "w-full" class', async () => { + render() + expect(screen.queryByRole('button')).toHaveClass( + 'sbui-btn sbui-btn-primary sbui-btn--w-full sbui-btn-container--shadow sbui-btn--tiny' + ) + }) + + it.each(TYPES)('should have "btn--%s" class', (type) => { + render() + + if (type !== 'text' && type !== 'link') { + expect(screen.queryByRole('button')).toHaveClass( + `sbui-btn sbui-btn-${type} sbui-btn-container--shadow sbui-btn--tiny` + ) + } else { + expect(screen.queryByRole('button')).toHaveClass( + `sbui-btn sbui-btn-${type} sbui-btn--tiny` + ) + } + }) + + it.each(SIZES)('should have "btn--%s" class', (size) => { + render() + expect(screen.queryByRole('button')).toHaveClass( + `sbui-btn sbui-btn-primary sbui-btn-container--shadow sbui-btn--${size}` + ) + }) +}) diff --git a/packages/ui/src/components/Button/Button.tsx b/packages/ui/src/components/Button/Button.tsx new file mode 100644 index 00000000000..f6f8108405d --- /dev/null +++ b/packages/ui/src/components/Button/Button.tsx @@ -0,0 +1,171 @@ +import React, { forwardRef, useRef, useImperativeHandle } from 'react' +import { IconContext } from './../Icon/IconContext' +import { IconLoader } from './../Icon/icons/IconLoader' + +import styleHandler from '../../lib/theme/styleHandler' + +export interface ButtonProps extends React.HTMLAttributes { + block?: boolean + className?: string + children?: React.ReactNode + disabled?: boolean + onClick?: React.MouseEventHandler + icon?: React.ReactNode + iconRight?: React.ReactNode + loading?: boolean + loadingCentered?: boolean + shadow?: boolean + size?: 'tiny' | 'small' | 'medium' | 'large' | 'xlarge' + style?: React.CSSProperties + type?: + | 'primary' + | 'default' + | 'secondary' + | 'alternative' + | 'outline' + | 'dashed' + | 'link' + | 'text' + | 'danger' + | 'warning' + danger?: boolean + htmlType?: 'button' | 'submit' | 'reset' + ref?: any + ariaSelected?: boolean + ariaControls?: string + tabIndex?: 0 | -1 + role?: string + textAlign?: 'left' | 'center' | 'right' + as?: keyof JSX.IntrinsicElements + form?: string +} + +interface CustomButtonProps extends React.HTMLAttributes {} + +interface RefHandle { + // container: () => HTMLElement | null + button: () => HTMLButtonElement | null +} + +export const Button = forwardRef( + ( + { + block, + className, + children, + danger, + disabled = false, + onClick, + icon, + iconRight, + loading = false, + loadingCentered = false, + shadow = true, + size = 'tiny', + style, + type = 'primary', + htmlType = 'button', + ariaSelected, + ariaControls, + tabIndex, + role, + as, + textAlign = 'center', + ...props + }: ButtonProps, + ref + ) => { + // button ref + // const containerRef = useRef(null) + const buttonRef = useRef(null) + + useImperativeHandle(ref, () => ({ + button: () => { + return buttonRef.current + }, + })) + + let __styles = styleHandler('button') + + // styles + const showIcon = loading || icon + + let classes = [__styles.base] + let containerClasses = [__styles.container] + + classes.push(__styles.type[type]) + + if (block) { + containerClasses.push(__styles.block) + classes.push(__styles.block) + } + + if (shadow && type !== 'link' && type !== 'text') { + classes.push(__styles.shadow) + } + + if (size) { + classes.push(__styles.size[size]) + } + + if (className) { + classes.push(className) + } + + if (disabled) { + classes.push(__styles.disabled) + } + + const iconLoaderClasses = [__styles.loading] + + // custom button tag + const CustomButton = ({ ...props }) => { + const Tag = as as keyof JSX.IntrinsicElements + return + } + + const buttonContent = ( + <> + {showIcon && + (loading ? ( + + ) : icon ? ( + {icon} + ) : null)} + {children && {children}} + {iconRight && !loading && ( + {iconRight} + )} + + ) + + if (as) { + return ( + + {buttonContent} + + ) + } else { + return ( + // + + // + ) + } + } +) diff --git a/packages/ui/src/components/Button/index.tsx b/packages/ui/src/components/Button/index.tsx new file mode 100644 index 00000000000..8486fd6d62d --- /dev/null +++ b/packages/ui/src/components/Button/index.tsx @@ -0,0 +1 @@ +export * from './Button' diff --git a/packages/ui/src/components/Card/Card.module.css b/packages/ui/src/components/Card/Card.module.css new file mode 100644 index 00000000000..680cbf7bef9 --- /dev/null +++ b/packages/ui/src/components/Card/Card.module.css @@ -0,0 +1,27 @@ +.sbui-card { + @apply flex flex-col bg-white dark:bg-dark-700 rounded-md shadow-lg overflow-hidden relative; + + border: 1px solid #e0e0e0; +} + +.sbui-card--hoverable { + @apply transition transform hover:-translate-y-1 hover:shadow-2xl; +} + +.dark .sbui-card { + border: 1px solid #2a2a2a; +} + +.sbui-card-head { + @apply px-8 py-6 flex justify-between; + + border-bottom: 1px solid #e0e0e0; +} + +.dark .sbui-card-head { + border-bottom: 1px solid #2a2a2a; +} + +.sbui-card-content { + @apply p-8; +} diff --git a/packages/ui/src/components/Card/Card.stories.tsx b/packages/ui/src/components/Card/Card.stories.tsx new file mode 100644 index 00000000000..36fd25b1945 --- /dev/null +++ b/packages/ui/src/components/Card/Card.stories.tsx @@ -0,0 +1,61 @@ +import React from 'react' +import Typography from '../Typography' +// import { AutoForm } from 'uniforms' + +import { Card } from './' + +export default { + title: 'Displays/Card', + component: Card, +} + +export const Default = (args: any) => ( + + Card content + Card content + Card content + +) + +export const withCover = (args: any) => ( + + Sub title here + To Do List with Vue.JS + +) + +export const withMeta = (args: any) => ( + + + +) + +export const withHover = (args: any) => ( + + + +) + +Default.args = { + title: 'I am a title', + titleExtra: Learn more, +} + +withCover.args = { + cover: ( + {'title'} + ), +} + +withMeta.args = { + title: 'title is here' +} + +withHover.args = { + title: 'This card can hover', + hoverable: true +} diff --git a/packages/ui/src/components/Card/Card.tsx b/packages/ui/src/components/Card/Card.tsx new file mode 100644 index 00000000000..7507cd2666e --- /dev/null +++ b/packages/ui/src/components/Card/Card.tsx @@ -0,0 +1,69 @@ +import React from 'react' +import Typography from '../Typography' +// @ts-ignore +import CardStyles from './Card.module.css' + +import styleHandler from '../../lib/theme/styleHandler' + +interface CardProps { + children?: React.ReactNode + className?: string + cover?: React.ReactNode + description?: string + hoverable?: boolean + style?: React.CSSProperties + title?: string + titleExtra?: React.ReactNode +} + +function Card({ + children, + className, + cover, + hoverable, + style, + title, + titleExtra, +}: CardProps) { + let __styles = styleHandler('card') + + let classes = [__styles.base] + if (hoverable) classes.push(__styles.hoverable) + if (className) classes.push(className) + + return ( +
+ {title && ( +
+ {title} + {titleExtra} +
+ )} + {cover} +
{children}
+
+ ) +} + +interface MetaProps { + title?: string + description?: string + style?: React.CSSProperties + className?: string +} + +function Meta({ title, description, style, className }: MetaProps) { + return ( +
+ + {title} + +
+ {description} +
+
+ ) +} + +Card.Meta = Meta +export default Card diff --git a/packages/ui/src/components/Card/index.tsx b/packages/ui/src/components/Card/index.tsx new file mode 100644 index 00000000000..03fa782ed13 --- /dev/null +++ b/packages/ui/src/components/Card/index.tsx @@ -0,0 +1 @@ +export { default as Card } from './Card' diff --git a/packages/ui/src/components/Checkbox/Checkbox.module.css b/packages/ui/src/components/Checkbox/Checkbox.module.css new file mode 100644 index 00000000000..0beb3a78b09 --- /dev/null +++ b/packages/ui/src/components/Checkbox/Checkbox.module.css @@ -0,0 +1,127 @@ +/* clear native styling */ +/* .sbui-checkbox[type='checkbox'] { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + padding: 0; + -webkit-print-color-adjust: exact; + color-adjust: exact; + display: inline-block; + vertical-align: middle; + background-origin: border-box; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + flex-shrink: 0; + height: 1rem; + width: 1rem; + color: #2563eb; + background-color: #fff; + border-color: #6b7280; + border-width: 1px; +} */ + +/* .sbui-checkbox[type='checkbox']:checked { + background-image: url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M12.207 4.793a1 1 0 010 1.414l-5 5a1 1 0 01-1.414 0l-2-2a1 1 0 011.414-1.414L6.5 9.086l4.293-4.293a1 1 0 011.414 0z'/%3e%3c/svg%3e"); +} + +.sbui-checkbox[type='checkbox']:checked { + @apply dark:bg-brand-700; + @apply bg-brand-700; + border-color: transparent; + background-size: 100% 100%; + background-position: center; + background-repeat: no-repeat; +} */ + +/* .sbui-checkbox { + @apply border border-solid rounded; + + @apply text-brand-700 border-gray-300 transition-all; + @apply hover:border-brand-500 focus:ring-brand-500 focus:outline-none; + + @apply dark:bg-transparent dark:border-dark-400 dark:text-white; + @apply dark:hover:border-brand-500; + + margin-top: 2px; +} */ +/* +.sbui-checkbox-container { + @apply flex cursor-pointer; +} */ + +/* .sbui-checkbox__label-container { + @apply leading-none; +} */ + +/* .sbui-checkbox__label-container__label { + @apply text-gray-700 dark:text-white cursor-pointer mt-0; +} + +.sbui-checkbox__label-container__label__span { + @apply font-medium; +} + +.sbui-checkbox__label-container__label__span .sbui-checkbox__label-text-before, +.sbui-checkbox__label-container__label__span .sbui-checkbox__label-text-after { + @apply text-gray-400 dark:text-gray-300; +} + +.sbui-checkbox__label-container__label__p { + @apply mt-0 text-gray-400 dark:text-gray-300; +} */ + +/* + Label sizes +*/ + +/* .sbui-checkbox-container--tiny .sbui-checkbox__label-container__label, +.sbui-checkbox-container--tiny .sbui-checkbox__label-container__label__span, +.sbui-checkbox-container--tiny .sbui-checkbox__label-container__label__p { + @apply text-xs; +} +.sbui-checkbox-container--small .sbui-checkbox__label-container__label, +.sbui-checkbox-container--small .sbui-checkbox__label-container__label__span, +.sbui-checkbox-container--small .sbui-checkbox__label-container__label__p { + @apply text-sm; +} +.sbui-checkbox-container--medium .sbui-checkbox__label-container__label, +.sbui-checkbox-container--medium .sbui-checkbox__label-container__label__span, +.sbui-checkbox-container--medium .sbui-checkbox__label-container__label__p { + @apply text-sm; +} +.sbui-checkbox-container--large .sbui-checkbox__label-container__label, +.sbui-checkbox-container--large .sbui-checkbox__label-container__label__span, +.sbui-checkbox-container--large .sbui-checkbox__label-container__label__p { + @apply text-base; +} +.sbui-checkbox-container--xlarge .sbui-checkbox__label-container__label, +.sbui-checkbox-container--xlarge .sbui-checkbox__label-container__label__span, +.sbui-checkbox-container--xlarge .sbui-checkbox__label-container__label__p { + @apply text-base; +} */ + +/* + Checkbox sizes +*/ + +/* .sbui-checkbox-container--tiny .sbui-checkbox { + @apply h-3 w-3 mt-1 mr-3; +} + +.sbui-checkbox-container--small .sbui-checkbox { + @apply h-3.5 w-3.5 mt-0.5 mr-3.5; +} + +.sbui-checkbox-container--medium .sbui-checkbox { + @apply h-4 w-4 mt-0.5 mr-3.5; +} + +.sbui-checkbox-container--large .sbui-checkbox { + @apply h-5 w-5 mt-0.5 mr-4; +} + +.sbui-checkbox-container--xlarge .sbui-checkbox { + @apply h-5 w-5 mt-0.5 mr-4; +} */ diff --git a/packages/ui/src/components/Checkbox/Checkbox.stories.tsx b/packages/ui/src/components/Checkbox/Checkbox.stories.tsx new file mode 100644 index 00000000000..75cb24c3ea0 --- /dev/null +++ b/packages/ui/src/components/Checkbox/Checkbox.stories.tsx @@ -0,0 +1,133 @@ +import React from 'react' + +import { Checkbox } from '.' + +export default { + title: 'Data Input/Checkbox', + component: Checkbox, +} + +export const Default = (args: any) => + +export const withGroup = (args: any) => ( + + + + + +) + +export const withGroupHorizontal = (args: any) => ( + + + + + +) + +export const size = (args: any) => ( + + + + + +) + +export const withBeforeAndAfterLabels = (args: any) => ( + +) + +Default.args = { + label: 'This is the label', + description: 'This is the description', +} + +withGroup.args = { + id: 'checkobox-q', + label: 'This is the label', + description: 'This is the description', + disabled: false, + size: 'medium', + className: 'font-sans', + layout: 'vertical', +} + +withGroupHorizontal.args = { + id: 'checkobox-q', + label: 'This is the label', + description: 'This is the description', + disabled: false, + className: 'font-sans', + layout: 'horizontal', +} + +size.args = { + id: 'checkobox-q', + label: 'Control the size of the checkboxes', + description: + 'You can add a size just the Group component and it will affect the children', + disabled: false, + className: 'font-sans', + layout: 'horizontal', + size: 'tiny', +} + +withBeforeAndAfterLabels.args = { + label: 'Label', + beforeLabel: 'Before : ', + afterLabel: ' : After', + options: [ + { + label: 'Label', + beforeLabel: 'Before : ', + afterLabel: ' : After', + description: 'Description', + }, + ], + className: 'font-sans', +} diff --git a/packages/ui/src/components/Checkbox/Checkbox.test.js b/packages/ui/src/components/Checkbox/Checkbox.test.js new file mode 100644 index 00000000000..41eda3a2002 --- /dev/null +++ b/packages/ui/src/components/Checkbox/Checkbox.test.js @@ -0,0 +1,15 @@ +import React from 'react' +import { render, screen } from '@testing-library/react' +import Checkbox from './Checkbox' + +describe('#Checkbox', () => { + it('should render checkbox correctly', () => { + render() + expect(screen.queryByTestId('form-checkbox')).toBeInTheDocument() + }) + + it('should show label', () => { + render() + expect(screen.queryByText('JavaScript')).toBeInTheDocument() + }) +}) diff --git a/packages/ui/src/components/Checkbox/Checkbox.tsx b/packages/ui/src/components/Checkbox/Checkbox.tsx new file mode 100644 index 00000000000..13707b536a9 --- /dev/null +++ b/packages/ui/src/components/Checkbox/Checkbox.tsx @@ -0,0 +1,216 @@ +import React, { useEffect, useState } from 'react' +import { FormLayout } from '../../lib/Layout/FormLayout' +import { CheckboxContext } from './CheckboxContext' +// @ts-ignore +import CheckboxStyles from './Checkbox.module.css' + +import defaultTheme from '../../lib/theme/defaultTheme' + +import { useFormContext } from '../Form/FormContext' +import styleHandler from '../../lib/theme/styleHandler' + +export interface InputProps extends Omit, 'size'> { + afterLabel?: string + beforeLabel?: string + description?: string + label?: string + size?: 'tiny' | 'small' | 'medium' | 'large' | 'xlarge' +} + +interface GroupProps { + id?: string + layout?: 'horizontal' | 'vertical' + error?: any + descriptionText?: any + label?: any + afterLabel?: string + beforeLabel?: string + labelOptional?: any + name?: any + value?: any + className?: string + children?: React.ReactNode + options?: Array + defaultValue?: string + onChange?(x: React.ChangeEvent): void + size?: 'tiny' | 'small' | 'medium' | 'large' | 'xlarge' +} + +function Group({ + id, + layout = 'vertical', + error, + descriptionText, + label, + afterLabel, + beforeLabel, + labelOptional, + children, + className, + options, + onChange, + size = 'medium', +}: GroupProps) { + const parentCallback = (e: React.ChangeEvent) => { + if (onChange) onChange(e) + } + + const __styles = styleHandler('checkbox') + + return ( + + +
+ {options + ? options.map((option: InputProps) => { + return ( + + ) + }) + : children} +
+
+
+ ) +} + +export function Checkbox({ + className, + id = '', + name = '', + label, + afterLabel, + beforeLabel, + description, + checked, + value, + onChange, + onBlur, + size = 'medium', + disabled = false, + ...props +}: InputProps) { + const { formContextOnChange, values, handleBlur } = useFormContext() + + const __styles = styleHandler('checkbox') + + return ( + + {({ parentCallback, parentSize }) => { + // if id does not exist, use label + const markupId = id + ? id + : name + ? name + : label + ? label + .toLowerCase() + .replace(/^[^A-Z0-9]+/gi, '') + .replace(/ /g, '-') + : undefined + + // @ts-ignore + size = parentSize ? parentSize : size + + // if name does not exist on Radio then use Context Name from Radio.Group + // if that fails, use the id + const markupName = name ? name : markupId + + // check if checkbox checked is true or false + // if neither true or false the checkbox will rely on native control + let active = checked ?? undefined + + // if (values && !value) value = values[id || name] + + let containerClasses = [__styles.container] + + function onInputChange(e: React.ChangeEvent) { + // '`onChange` callback for parent component + if (parentCallback) parentCallback(e) + // '`onChange` callback for this component + if (onChange) onChange(e) + // update form + if (formContextOnChange) formContextOnChange(e) + } + + if (className) containerClasses.push(className) + + if (values && checked === undefined) active = values[id || name] + + function handleBlurEvent(e: React.FocusEvent) { + if (handleBlur) handleBlur(e) + if (onBlur) onBlur(e) + } + + return ( +
+ + + +
+ ) + }} +
+ ) +} + +Checkbox.Group = Group +export default Checkbox diff --git a/packages/ui/src/components/Checkbox/CheckboxContext.tsx b/packages/ui/src/components/Checkbox/CheckboxContext.tsx new file mode 100644 index 00000000000..742c51f9575 --- /dev/null +++ b/packages/ui/src/components/Checkbox/CheckboxContext.tsx @@ -0,0 +1,8 @@ +import { createContext } from 'react' + +// Make sure the shape of the default value passed to +// createContext matches the shape that the consumers expect! +export const CheckboxContext = createContext({ + parentCallback: (e: any) => {}, + parentSize: '', +}) diff --git a/packages/ui/src/components/Checkbox/index.tsx b/packages/ui/src/components/Checkbox/index.tsx new file mode 100644 index 00000000000..23993dfce7f --- /dev/null +++ b/packages/ui/src/components/Checkbox/index.tsx @@ -0,0 +1,3 @@ +import Checkbox from './Checkbox' +export default Checkbox +export { default as Checkbox } from './Checkbox' diff --git a/packages/ui/src/components/Collapsible/Collapsible.stories.tsx b/packages/ui/src/components/Collapsible/Collapsible.stories.tsx new file mode 100644 index 00000000000..6b723f7a438 --- /dev/null +++ b/packages/ui/src/components/Collapsible/Collapsible.stories.tsx @@ -0,0 +1,67 @@ +import React from 'react' +// import { AutoForm } from 'uniforms' + +import { Collapsible } from '.' +import { IconChevronUp } from '../..' +import { Button } from '../Button' + +export default { + title: 'Displays/Collapsible', + component: Collapsible, +} + +export const Default = (args: any) => { + return ( + <> + hello all + + + +
+ + + +
+

I am content

+

I am content

+

I am content

+

I am content

+
+
+ + + + + + +
+

I am content

+

I am content

+

I am content

+

I am content

+
+
+
+ + ) +} + +Default.args = { + placeholder: 'Type text here ...', + disabled: false, + label: 'Name', + layout: 'vertical', +} diff --git a/packages/ui/src/components/Collapsible/Collapsible.tsx b/packages/ui/src/components/Collapsible/Collapsible.tsx new file mode 100644 index 00000000000..e137af1003f --- /dev/null +++ b/packages/ui/src/components/Collapsible/Collapsible.tsx @@ -0,0 +1,56 @@ +import * as RadixCollapsible from '@radix-ui/react-collapsible' +import React from 'react' +import styleHandler from '../../lib/theme/styleHandler' + +export interface CollapsibleProps extends RadixCollapsible.CollapsibleProps { + children: React.ReactNode + // onChange?: (e: boolean) => void +} + +export const Collapsible = ({ + open = undefined, + children, + className, + ...props +}: CollapsibleProps) => { + // const [_open, setOpen] = React.useState(open) + + // function handleOpenChange(e: boolean) { + // console.log(e) + // if (onChange) onChange(e) + // } + return ( + + {children} + + ) +} + +export function Trigger({ children, asChild }: { children: React.ReactNode; asChild?: boolean }) { + return {children} +} + +export function Content({ + children, + className, +}: { + children: React.ReactNode + className?: string +}) { + const __styles = styleHandler('collapsible') + return ( + + {children} + + ) +} + +Collapsible.Trigger = Trigger +Collapsible.Content = Content +export default Collapsible diff --git a/packages/ui/src/components/Collapsible/index.tsx b/packages/ui/src/components/Collapsible/index.tsx new file mode 100644 index 00000000000..6024fb1be25 --- /dev/null +++ b/packages/ui/src/components/Collapsible/index.tsx @@ -0,0 +1 @@ +export { default as Collapsible } from './Collapsible' diff --git a/packages/ui/src/components/ContextMenu/ContextMenu.module.css b/packages/ui/src/components/ContextMenu/ContextMenu.module.css new file mode 100644 index 00000000000..c4651c0ef7a --- /dev/null +++ b/packages/ui/src/components/ContextMenu/ContextMenu.module.css @@ -0,0 +1,65 @@ +.sbui-contextmenu-item { + @apply text-xs; + @apply text-typography-body-light dark:text-typography-body-dark; + @apply px-4 py-1.5 flex items-center space-x-2; + @apply cursor-pointer; + @apply focus:bg-bg-secondary-light dark:focus:bg-bg-primary-dark border-none; + cursor: 'default'; +} + +.sbui-contextmenu-item svg { + /* @apply text-typography-body-secondary-light dark:text-typography-body-secondary-dark; */ +} + +.sbui-contextmenu-label { + /* @apply text-typography-body-secondary-light dark:text-typography-body-secondary-dark; */ + /* @apply px-4 py-1.5 flex items-center space-x-2; */ + /* font-size: 0.65rem; */ +} + +.sbui-contextmenu-misc { + /* @apply px-4 py-1.5; */ +} + +.sbui-contextmenu-item:focus-visible { + /* border: none; */ + /* outline: none; */ +} + +.sbui-contextmenu-input { + /* @apply flex items-center space-x-2; */ +} + +.sbui-contextmenu-input__check { + /* @apply flex items-center; */ +} + +.sbui-contextmenu__content { + /* @apply bg-bg-primary-light dark:bg-bg-secondary-dark p-0; */ + /* @apply rounded; */ + /* @apply border; */ + /* @apply shadow; */ + /* overflow: visible; */ + /* border-style: solid; */ + /* border-width: 1px; */ +} + +@keyframes transition { + /* 0% { */ + /* opacity: 0; */ + /* transform: scale(0.95); */ + /* } */ + /* 100% { */ + /* opacity: 1; */ + /* transform: scale(1); */ + /* } */ +} + +.sbui-contextmenu__content { + /* transform-origin: var(--radix-dropdown-menu-content-transform-origin); */ + /* animation: transition 0.1s ease-out; */ +} + +.sbui-contextmenu__trigger { + /* @apply border-none bg-transparent p-0 focus:ring-0; */ +} diff --git a/packages/ui/src/components/ContextMenu/ContextMenu.stories.tsx b/packages/ui/src/components/ContextMenu/ContextMenu.stories.tsx new file mode 100644 index 00000000000..d2d155e8c47 --- /dev/null +++ b/packages/ui/src/components/ContextMenu/ContextMenu.stories.tsx @@ -0,0 +1,168 @@ +import React, { useState } from 'react' +import { Button } from '../Button' +import { Divider } from '../Divider' +import { IconSettings, IconLogOut } from '../../index' +import Typography from '../Typography' + +import { ContextMenu } from '.' +import { IconLogIn } from '../Icon/icons/IconLogIn' + +export default { + title: 'Navigation/ContextMenu', + component: ContextMenu, +} + +const triggerArea = ( +
+ Right click this area +
+) + +export const Default = (args: any) => ( +
+ +
+ + Signed in as{' '} + + + + tom@example.com{' '} + +
+ , + , + Group label, + console.log('clicked')}> + Account + , + Settings, + , + }> + Log out + , + ]} + > + {triggerArea} +
+
+) + +Default.args = {} + +export const doNotcloseOverlay = (args: any) => ( +
+ + Signed in as + tom@example.com + , + , + Account, + Settings, + + + , + ]} + > + {triggerArea} + +
+) + +doNotcloseOverlay.args = {} + +export const withCustomStyles = (args: any) => ( +
+ + Signed in as + tom@example.com + , + , + Account, + Settings, + , + + + , + ]} + > + {triggerArea} + +
+) + +withCustomStyles.args = {} + +export const Checkbox = (args: any) => { + const [checked, setChecked] = useState(false) + + return ( +
+ }> + Account + , + Settings, + , + + Show subtitles + , + ]} + > + {triggerArea} + +
+ ) +} + +export const Radio = (args: any) => { + const [value, setValue] = useState('red') + + return ( +
+ + Red + Blue + Green + , + ]} + > + {triggerArea} + +
+ ) +} diff --git a/packages/ui/src/components/ContextMenu/ContextMenu.tsx b/packages/ui/src/components/ContextMenu/ContextMenu.tsx new file mode 100644 index 00000000000..bbf300a4540 --- /dev/null +++ b/packages/ui/src/components/ContextMenu/ContextMenu.tsx @@ -0,0 +1,194 @@ +import React, { useState } from 'react' + +// import * as RadixContextMenu from '@radix-ui/react-dropdown-menu' +import { IconCheck } from '../Icon/icons/IconCheck' + +// @ts-ignore +// import ContextMenuStyles from './ContextMenu.module.css' + +import type * as RadixContextMenuTypes from '@radix-ui/react-context-menu/' + +import * as RadixContextMenu from '@radix-ui/react-context-menu' + +const ContextMenuStyles = {} + +interface RootProps { + onOpenChange?(x: boolean): void + alignOffset?: RadixContextMenuTypes.ContextMenuContentProps['alignOffset'] + overlay?: React.ReactNode + children?: React.ReactNode + className?: string + style?: React.CSSProperties +} + +function ContextMenu({ + onOpenChange, + + alignOffset = 6, + overlay, + children, + className, + style, +}: RootProps) { + // let classes = [ContextMenuStyles['sbui-contextmenu__content']] + // if (className) { + // classes.push(className) + // } + return ( + + + {children} + + + + {overlay} + + + ) +} + +interface ItemProps { + children: React.ReactNode + icon?: React.ReactNode + disabled?: boolean + onClick?: (event: Event) => void +} + +export function Item({ children, icon, disabled, onClick }: ItemProps) { + return ( + + {icon && icon} + {children} + + ) +} + +export function Misc({ children, icon }: ItemProps) { + return ( +
+ {icon && icon} + {children} +
+ ) +} + +interface CheckboxProps { + children: React.ReactNode + checked?: boolean + onChange?(x: boolean): void + disabled?: boolean + ItemIndicator?: React.ReactNode +} + +export function Checkbox({ + children, + checked: propsChecked, + onChange, + disabled, + ItemIndicator, +}: CheckboxProps) { + const [checked, setChecked] = useState(propsChecked ? propsChecked : false) + + const handleChange = (e: boolean) => { + if (onChange) onChange(e) + setChecked(e) + } + + return ( + + + {ItemIndicator ? ItemIndicator : } + + + {children} + + ) +} + +interface RadioProps { + children: React.ReactNode + value: string + ItemIndicator?: React.ReactNode +} + +export function Radio({ children, value, ItemIndicator }: RadioProps) { + return ( + + + {ItemIndicator ? ItemIndicator : } + + {children} + + ) +} + +interface RadioGroupProps { + children: React.ReactNode + value: string + onChange?(x: string): void +} + +export function RadioGroup({ + children, + value: propsValue, + onChange, +}: RadioGroupProps) { + const [value, setValue] = useState(propsValue ? propsValue : '') + + const handleChange = (e: string) => { + if (onChange) onChange(e) + setValue(e) + } + + return ( + + {children} + + ) +} + +interface LabelProps { + children: React.ReactNode +} + +export function Label({ children }: LabelProps) { + return ( + + {children} + + ) +} + +ContextMenu.Item = Item +ContextMenu.Misc = Misc +ContextMenu.Checkbox = Checkbox +ContextMenu.Radio = Radio +ContextMenu.RadioGroup = RadioGroup +ContextMenu.Label = Label +export default ContextMenu diff --git a/packages/ui/src/components/ContextMenu/index.tsx b/packages/ui/src/components/ContextMenu/index.tsx new file mode 100644 index 00000000000..c87ee1b10ab --- /dev/null +++ b/packages/ui/src/components/ContextMenu/index.tsx @@ -0,0 +1 @@ +export { default as ContextMenu } from './ContextMenu' diff --git a/packages/ui/src/components/Divider/Divider.module.css b/packages/ui/src/components/Divider/Divider.module.css new file mode 100644 index 00000000000..18d32e48f51 --- /dev/null +++ b/packages/ui/src/components/Divider/Divider.module.css @@ -0,0 +1,101 @@ +.sbui-divider { + width: 100%; + display: flex; + align-items: center; + white-space: nowrap; +} + +.sbui-divider-vertical { + @apply bg-gray-200 dark:bg-dark-500; + width: 1px; + height: inherit; +} + +.sbui-divider-vertical.sbui-divider--light { + @apply bg-gray-100 dark:bg-dark-600; +} + +.sbui-divider--no-text { + @apply border-gray-200 dark:border-dark-500; + border-bottom-style: solid; + border-bottom-width: 1px; +} + +.sbui-divider > span { + @apply text-sm; + @apply text-gray-300; + @apply dark:text-dark-400; + display: inline-block; + padding: 0 1em; +} + +.sbui-divider--left:before { + @apply border-gray-200 dark:border-dark-500; + border-bottom-style: solid; + border-bottom-width: 1px; + top: 50%; + content: ''; + position: relative; + display: inline-block; + width: 5%; +} + +.sbui-divider--left:after { + @apply border-gray-200 dark:border-dark-500; + border-bottom-style: solid; + border-bottom-width: 1px; + top: 50%; + content: ''; + position: relative; + display: inline-block; + width: 95%; +} + +.sbui-divider--right:before { + @apply border-gray-200 dark:border-dark-500; + border-bottom-style: solid; + border-bottom-width: 1px; + top: 50%; + content: ''; + position: relative; + display: inline-block; + width: 95%; +} + +.sbui-divider--right:after { + @apply border-gray-200 dark:border-dark-500; + border-bottom-style: solid; + border-bottom-width: 1px; + top: 50%; + content: ''; + position: relative; + display: inline-block; + width: 5%; +} + +.sbui-divider--center:before, +.sbui-divider--center:after { + @apply border-gray-200 dark:border-dark-500; + border-bottom-style: solid; + border-bottom-width: 1px; + top: 50%; + content: ''; + position: relative; + display: inline-block; + width: 50%; +} + +.sbui-divider--light.sbui-divider--left:before, +.sbui-divider--light.sbui-divider--left:after, +.sbui-divider--light.sbui-divider--right:before, +.sbui-divider--light.sbui-divider--right:after, +.sbui-divider--light.sbui-divider--center:before, +.sbui-divider--light.sbui-divider--center:after, +.sbui-divider--light.sbui-divider--no-text { + @apply border-gray-100 dark:border-dark-600; +} + +.sbui-divider--light.sbui-divider > span { + @apply text-gray-200; + @apply dark:text-dark-800; +} diff --git a/packages/ui/src/components/Divider/Divider.stories.tsx b/packages/ui/src/components/Divider/Divider.stories.tsx new file mode 100644 index 00000000000..8826bebe1e3 --- /dev/null +++ b/packages/ui/src/components/Divider/Divider.stories.tsx @@ -0,0 +1,60 @@ +import React from 'react' +import { Button } from '../Button' +import Typography from '../Typography' +import { Divider } from './' + +export default { + title: 'Utilities/Divider', + component: Divider, +} + +export const Default = (args: any) => + +export const withCenterText = (args: any) => ( + Hello world +) + +export const withLeftText = (args: any) => ( + Hello world +) + +export const withRightText = (args: any) => ( + Hello world +) + +export const lighterColor = (args: any) => + +export const vertical = (args: any) => ( +
+
+ + + + + + Some text + + +
+
+) + +Default.args = {} + +withCenterText.args = {} + +withLeftText.args = { + orientation: 'left', +} + +withRightText.args = { + orientation: 'right', +} + +lighterColor.args = { + light: true, +} + +vertical.args = { + type: 'vertical', +} diff --git a/packages/ui/src/components/Divider/Divider.tsx b/packages/ui/src/components/Divider/Divider.tsx new file mode 100644 index 00000000000..c1b0607899f --- /dev/null +++ b/packages/ui/src/components/Divider/Divider.tsx @@ -0,0 +1,52 @@ +import React from 'react' +// @ts-ignore +// import DividerStyles from './Divider.module.css' + +interface Props { + children?: React.ReactNode + className?: string + light?: boolean + orientation?: 'left' | 'right' | 'center' + style?: React.CSSProperties + type?: 'vertical' | 'horizontal' +} + +export default function Divider({ + children, + className, + light = false, + orientation = 'center', + style, + type = 'horizontal', +}: Props) { + // let classes = [ + // type === 'horizontal' + // ? DividerStyles['sbui-divider'] + // : DividerStyles['sbui-divider-vertical'], + // ] + // if (light) classes.push(DividerStyles['sbui-divider--light']) + + // if (children) { + // classes.push(DividerStyles[`sbui-divider--${orientation}`]) + // } else if (!children && type === 'horizontal') { + // classes.push(DividerStyles[`sbui-divider--no-text`]) + // } + + // if (className) classes.push(className) + + return ( +
+ {children && ( + + {children} + + )} +
+ ) +} diff --git a/packages/ui/src/components/Divider/index.tsx b/packages/ui/src/components/Divider/index.tsx new file mode 100644 index 00000000000..644af288bc8 --- /dev/null +++ b/packages/ui/src/components/Divider/index.tsx @@ -0,0 +1 @@ +export { default as Divider } from './Divider' diff --git a/packages/ui/src/components/Dropdown/Dropdown.module.css b/packages/ui/src/components/Dropdown/Dropdown.module.css new file mode 100644 index 00000000000..751546ff202 --- /dev/null +++ b/packages/ui/src/components/Dropdown/Dropdown.module.css @@ -0,0 +1,112 @@ +/* .sbui-dropdown-item { + @apply text-xs; + @apply text-typography-body-light dark:text-typography-body-dark; + @apply px-4 py-1.5 flex items-center space-x-2; + @apply cursor-pointer; + @apply focus:bg-bg-secondary-light dark:focus:bg-bg-primary-dark border-none; + cursor: 'default'; + + user-select: none; +} + +/* .sbui-dropdown-item svg { + @apply text-typography-body-secondary-light dark:text-typography-body-secondary-dark; +} */ + +/* .sbui-dropdown-label { + @apply text-typography-body-secondary-light dark:text-typography-body-secondary-dark; + @apply px-4 py-1.5 flex items-center space-x-2; + font-size: 0.65rem; +} + +.sbui-dropdown-misc { + @apply px-4 py-1.5; +} + +.sbui-dropdown-item:focus-visible { + border: none; + outline: none; +} + +.sbui-dropdown-input { + @apply flex items-center space-x-0 pl-8 pr-4; +} + +.sbui-dropdown-input__check { + @apply absolute left-2; + @apply flex items-center; +} */ + +/* .sbui-dropdown__content { + @apply bg-bg-primary-light dark:bg-bg-secondary-dark p-0; + @apply border border-lightmode dark:border-darkmode; + @apply rounded; + @apply shadow; + border-style: solid; + border-width: 1px; +} */ + +/* @keyframes fadeIn { + from { + transform: scale(0.95); + opacity: 0; + } + to { + transform: scale(1); + opacity: 1; + } +} + +@keyframes fadeOut { + from { + transform: scale(1); + opacity: 1; + } + to { + transform: scale(0.95); + opacity: 0; + } +} */ +/* .sbui-dropdown__content { + transform-origin: 'var(--radix-dropdown-menu-content-transform-origin)'; +} */ + +/* .sbui-dropdown__content[data-state='open'] { + animation: fadeIn 50ms ease-out; +} + +.sbui-dropdown__content[data-state='closed'] { + animation: fadeOut 50ms ease-in; +} */ + +/* .sbui-dropdown__trigger { + @apply border-none bg-transparent p-0 focus:ring-0; +} */ + +/* .sbui-dropdown__arrow { + @apply fill-current text-bg-primary-light dark:text-bg-secondary-dark; + @apply border-0 border-t; + border-style: solid; + +} + +.sbui-dropdown-item-trigger { + @apply text-xs; + @apply text-typography-body-light dark:text-typography-body-dark; + @apply px-4 py-1.5 flex items-center space-x-2; + @apply cursor-pointer; + cursor: 'default'; +} + +.sbui-dropdown-item-trigger svg { + @apply text-typography-body-secondary-light dark:text-typography-body-secondary-dark; +} + +.sbui-dropdown-item-trigger:focus-visible { + border: none; + outline: none; +} */ + +/* .sbui-dropdown__trigger-item[data-state='open'] { + @apply bg-bg-secondary-light dark:bg-bg-primary-dark border-none; +} */ diff --git a/packages/ui/src/components/Dropdown/Dropdown.stories.tsx b/packages/ui/src/components/Dropdown/Dropdown.stories.tsx new file mode 100644 index 00000000000..d1f825a5772 --- /dev/null +++ b/packages/ui/src/components/Dropdown/Dropdown.stories.tsx @@ -0,0 +1,347 @@ +import React, { useState } from 'react' +import { Button } from '../Button' +import { Divider } from '../Divider' +import { + IconSettings, + IconLogOut, + IconChevronDown, + IconChevronRight, + IconHardDrive, +} from './../../index' +import Typography from '../Typography' + +import { Dropdown } from './' +import { IconLogIn } from '../Icon/icons/IconLogIn' +import { Input } from '../Input' +import { IconSearch } from '../Icon/icons/IconSearch' + +export default { + title: 'Navigation/Dropdown', + component: Dropdown, +} + +const DemoContainer = ({ children }: { children: React.ReactNode }) => ( +
+
+
+

+ Shall we nest some components? +

+

yea sure, go on then.

+
+
{children}
+
+
+) + +export const DefaultFull = (args: any) => { + const [checked, setChecked] = useState(false) + const [value, setValue] = useState('red') + + return ( + + +
+ + Signed in as{' '} + + + + tom@example.com{' '} + +
+ , + , + Group label, + console.log('clicked')}> + Account + , + + Settings ⌘+T + , + , + + Show subtitles + , + , + + Red + Blue + Green + , + , + + Red + Blue + Green + , + , + Group label, + console.log('clicked')}> + Account + , + + Settings ⌘+T + , + ]} + > + }> + Open sub menu{' '} + + + + + , + , + }> + Log out + , + ]} + > + +
+
+ ) +} + +export const Default = (args: any) => ( +
+ +
+ + Signed in as{' '} + + + + tom@example.com{' '} + +
+ , + , + Group label, + console.log('clicked')}> + Account + , + + Settings ⌘+T + , + , + }>Log out, + ]} + > + +
+
+) + +Default.args = {} + +export const doNotcloseOverlay = (args: any) => ( +
+ + Signed in as + tom@example.com + , + , + Account, + Settings, + + + , + ]} + > + + +
+) + +doNotcloseOverlay.args = {} + +export const withCustomStyles = (args: any) => ( +
+ + Signed in as + tom@example.com + , + , + Account, + Settings, + , + + + , + ]} + > + + +
+) + +withCustomStyles.args = {} + +export const SearchList = (args: any) => ( +
+ + } autofocus={false} /> + , + + Signed in as + tom@example.com + , + + Signed in as + tom@example.com + , + , + }> + Log out + , + ]} + > + + +
+) + +SearchList.args = {} + +export const Checkbox = (args: any) => { + const [checked, setChecked] = useState(false) + + return ( +
+ }> + Account + , + Settings, + , + + Show subtitles + , + ]} + > + + +
+ ) +} + +export const Radio = (args: any) => { + const [value, setValue] = useState('red') + + return ( +
+ + Red + Blue + Green + , + ]} + > + + +
+ ) +} + +export const Nested = (args: any) => { + const [value, setValue] = useState('red') + + return ( +
+ + + Red + Blue + Green + + + + Red + Blue + Green + , + ]} + > + Open sub menu + + hello + + } + > + + +
+ ) +} diff --git a/packages/ui/src/components/Dropdown/Dropdown.tsx b/packages/ui/src/components/Dropdown/Dropdown.tsx new file mode 100644 index 00000000000..9e50ceef6dd --- /dev/null +++ b/packages/ui/src/components/Dropdown/Dropdown.tsx @@ -0,0 +1,226 @@ +import React, { useState } from 'react' + +import * as RadixDropdown from '@radix-ui/react-dropdown-menu' +import { IconCheck } from '../Icon/icons/IconCheck' + +// @ts-ignore +// import DropdownStyles from './Dropdown.module.css' + +import type * as RadixDropdownTypes from '@radix-ui/react-dropdown-menu/' + +import styleHandler from '../../lib/theme/styleHandler' +import { IconTarget } from '../Icon/icons/IconTarget' + +interface RootProps { + open?: boolean + arrow?: boolean + onOpenChange?: RadixDropdownTypes.DropdownMenuProps['onOpenChange'] // DropdownMenu['onOpenChange'] + side?: RadixDropdownTypes.DropdownMenuContentProps['side'] + align?: RadixDropdownTypes.DropdownMenuContentProps['align'] + sideOffset?: RadixDropdownTypes.DropdownMenuContentProps['sideOffset'] + overlay?: React.ReactNode + children?: React.ReactNode + size?: 'tiny' | 'small' | 'medium' | 'large' | 'xlarge' | 'content' + className?: string + style?: React.CSSProperties + isNested?: Boolean +} + +function Dropdown({ + open, + onOpenChange, + align = 'center', //Default value + side = 'bottom', //Default value + sideOffset = 6, + overlay, + children, + size = 'medium', + className, + style, + arrow, + isNested, +}: RootProps) { + let __styles = styleHandler('dropdown') + + let classes = [__styles.content, __styles.size[size]] + if (className) { + classes.push(className) + } + + return ( + + {isNested ? ( + + {children} + + ) : ( + {children} + )} + + + {arrow && ( + + )} + {overlay} + + + ) +} + +export function RightSlot({ children }: any) { + let __styles = styleHandler('dropdown') + return
{children}
+} + +interface ItemProps { + children: React.ReactNode + icon?: React.ReactNode + disabled?: boolean + onClick?: (event: Event) => void + rightSlot?: React.ReactNode +} + +export function Item({ children, icon, disabled, onClick, rightSlot }: ItemProps) { + let __styles = styleHandler('dropdown') + + return ( + + {icon && icon} + {children} + + ) +} + +export function TriggerItem({ children, icon, disabled }: ItemProps) { + let __styles = styleHandler('dropdown') + return ( +
+ {icon && icon} + {children} +
+ ) +} + +export function Misc({ children, icon }: ItemProps) { + let __styles = styleHandler('dropdown') + return ( +
+ {icon && icon} + {children} +
+ ) +} + +interface CheckboxProps { + children: React.ReactNode + checked?: boolean + onChange?(x: boolean): void + disabled?: boolean + ItemIndicator?: React.ReactNode +} + +export function Seperator() { + let __styles = styleHandler('dropdown') + + return +} + +export function Checkbox({ + children, + checked: propsChecked, + onChange, + disabled, + ItemIndicator, +}: CheckboxProps) { + const [checked, setChecked] = useState(propsChecked ? propsChecked : false) + + let __styles = styleHandler('dropdown') + + const handleChange = (e: boolean) => { + if (onChange) onChange(e) + setChecked(e) + } + + return ( + + + {ItemIndicator ? ItemIndicator : } + + + {children} + + ) +} + +interface RadioProps { + children: React.ReactNode + value: string + ItemIndicator?: React.ReactNode +} + +export function Radio({ children, value, ItemIndicator }: RadioProps) { + let __styles = styleHandler('dropdown') + + return ( + + + {ItemIndicator ? ItemIndicator : } + + {children} + + ) +} + +interface RadioGroupProps { + children: React.ReactNode + value: string + onChange?(x: string): void +} + +export function RadioGroup({ children, value: propsValue, onChange }: RadioGroupProps) { + const [value, setValue] = useState(propsValue ? propsValue : '') + + const handleChange = (e: string) => { + if (onChange) onChange(e) + setValue(e) + } + + return ( + + {children} + + ) +} + +interface LabelProps { + children: React.ReactNode +} + +export function Label({ children }: LabelProps) { + let __styles = styleHandler('dropdown') + + return {children} +} + +Dropdown.Item = Item +Dropdown.Misc = Misc +Dropdown.Checkbox = Checkbox +Dropdown.Radio = Radio +Dropdown.RadioGroup = RadioGroup +Dropdown.Label = Label +Dropdown.Seperator = Seperator +Dropdown.RightSlot = RightSlot +Dropdown.TriggerItem = TriggerItem +export default Dropdown diff --git a/packages/ui/src/components/Dropdown/index.tsx b/packages/ui/src/components/Dropdown/index.tsx new file mode 100644 index 00000000000..a34974dee8c --- /dev/null +++ b/packages/ui/src/components/Dropdown/index.tsx @@ -0,0 +1 @@ +export { default as Dropdown } from './Dropdown' diff --git a/packages/ui/src/components/Form/Form.css b/packages/ui/src/components/Form/Form.css new file mode 100644 index 00000000000..e69de29bb2d diff --git a/packages/ui/src/components/Form/Form.stories.tsx b/packages/ui/src/components/Form/Form.stories.tsx new file mode 100644 index 00000000000..277ae09180e --- /dev/null +++ b/packages/ui/src/components/Form/Form.stories.tsx @@ -0,0 +1,569 @@ +import { Form } from '.' +import { + Input, + Button, + InputNumber, + Toggle, + Checkbox, + Radio, + Select, + Listbox, +} from '../../index' + +import * as Yup from 'yup' +import { User } from '../Icon/IconImportHandler' +import React from 'react' + +export default { + title: 'Data Input/Form', + component: Form, +} + +interface Values { + email: string + last_name: string + profession: string + number: number | undefined + // remember_me: boolean + checkbox_alone: boolean + favorite_food: string + check_3: boolean + check_2: boolean + check_1: boolean + textarea: string + toggle: boolean + people: number | undefined +} + +const INITIAL_VALUES: Values = { + email: '', + last_name: '', + profession: '', + number: undefined, + checkbox_alone: false, + // remember_me: false, + favorite_food: '', + check_3: false, + check_2: true, + check_1: false, + textarea: '', + toggle: true, + people: undefined, +} + +export const InputLevelValidation = () => { + function validateEmail(value: string) { + console.log('validateEmail running') + let error + if (!value) { + error = 'Required' + } else if (!/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i.test(value)) { + error = 'Invalid email address' + } + return error + } + + return ( +
{ + setTimeout(() => { + alert(JSON.stringify(values, null, 2)) + setSubmitting(false) + }, 400) + }} + > + {({ isSubmitting }: { isSubmitting: boolean }) => ( +
+ + {/* */} + +
+ )} +
+ ) +} + +export const InputLevelValidationYip = () => { + // validation schema + const SignupSchema = Yup.object().shape({ + firstname: Yup.string() + .min(2, 'Too Short!') + .max(50, 'Too Long!') + .required('Required'), + lastname: Yup.string() + .min(2, 'Too Short!') + .max(50, 'Too Long!') + .required('Required'), + email: Yup.string().email('Invalid email').required('Required'), + }) + + return ( +
{ + setTimeout(() => { + alert(JSON.stringify(values, null, 2)) + setSubmitting(false) + }, 400) + }} + > + {({ isSubmitting }: any) => ( +
+ + + + +
+ )} +
+ ) +} + +const people = [ + { + value: 1, + label: 'Wade Cooper', + avatar: + 'https://images.unsplash.com/photo-1491528323818-fdd1faba62cc?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80', + }, + { + value: 2, + label: 'Arlene Mccoy', + avatar: + 'https://images.unsplash.com/photo-1550525811-e5869dd03032?ixlib=rb-1.2.1&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80', + }, + { + value: 3, + label: 'Devon Webb', + avatar: + 'https://images.unsplash.com/photo-1500648767791-00dcc994a43e?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2.25&w=256&h=256&q=80', + }, + { + value: 4, + label: 'Tom Cook', + avatar: + 'https://images.unsplash.com/photo-1472099645785-5658abf4ff4e?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80', + }, + { + value: 5, + label: 'Tanya Fox', + avatar: + 'https://images.unsplash.com/photo-1494790108377-be9c29b29330?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80', + }, + { + value: 6, + label: 'Hellen Schmidt', + avatar: + 'https://images.unsplash.com/photo-1487412720507-e7ab37603c6f?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80', + }, + { + value: 7, + label: 'Caroline Schultz', + avatar: + 'https://images.unsplash.com/photo-1568409938619-12e139227838?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80', + }, + { + value: 8, + label: 'Mason Heaney', + avatar: + 'https://images.unsplash.com/photo-1531427186611-ecfd6d936c79?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80', + }, + { + value: 9, + label: 'Claudie Smitham', + avatar: + 'https://images.unsplash.com/photo-1584486520270-19eca1efcce5?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80', + }, + { + value: 10, + label: 'Emil Schaefer', + avatar: + 'https://images.unsplash.com/photo-1561505457-3bcad021f8ee?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80', + }, +] + +export const LargerExample = () => { + return ( + <> +
{ + setTimeout(() => { + alert(JSON.stringify(values, null, 2)) + setSubmitting(false) + }, 400) + }} + validate={(values: Values) => { + const errors: any = {} + + console.log('values for validation', values) + + if (!values.email) { + errors.email = 'Required' + } else if ( + !/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}$/i.test(values.email) + ) { + errors.email = 'Invalid email address' + } + + if (!values.profession) { + errors.profession = 'Required' + } + + if (!values.textarea) { + errors.textarea = 'Required' + } + + if (!values.number) { + errors.number = 'Required' + } + + if (values.number <= 13) { + errors.number = 'Must be a number above 13' + } + + if (values.number >= 32) { + errors.number = 'Must be a number below 32' + } + + if (!values.favorite_food) { + errors.favorite_food = 'You must select a favourite food' + } + + if (!values.toggle) { + errors.toggle = 'This needs to be turned on' + } + + // if (!values.people) { + // errors.people = 'Please select a person' + // } + + // if (values.remember_me) + + return errors + }} + > + {({ isSubmitting }: any) => ( + <> +
+

{isSubmitting ? 'submitting' : 'not submitting'}

+ + + + + + + + + + + + + + + + + + + + {people.map((person) => { + return ( + ( + + )} + children={({ active, selected }: any) => { + // console.log('selected', selected) + // console.log('active', active) + return ( + + {person.label} + + ) + }} + /> + ) + })} + + + +
+ + )} +
+ + ) +} + +export const CardForm = () => { + // panel + const Panel = ({ + children, + header, + footer, + }: { + children: React.ReactNode + header?: React.ReactNode + footer?: React.ReactNode + }) => ( +
+ {header && ( +
+ {header} +
+ )} +
{children}
+ {footer} +
+ ) + + const Section = ({ + children, + header, + }: { + children: React.ReactNode + header?: React.ReactNode + }) => ( +
+ {header} + {children} +
+ ) + + return ( + <> +
{ + setTimeout(() => { + alert(JSON.stringify(values, null, 2)) + setSubmitting(false) + }, 400) + }} + validate={(values: Values) => { + const errors: any = {} + + return errors + }} + > + {({ isSubmitting }: any) => ( + +

+ Custom Options +

+

+ These settings apply to payment pages you create using Stripe + Checkout and Payment Links. +

+ + } + footer={ + <> +
+
+ + +
+ + } + > + {/*

{isSubmitting ? 'submitting' : 'not submitting'}

*/} + {/*
*/} +
+ Faster checkout + + } + > + +
+
+
+ Faster checkout + + } + > + + + + +
+
+
+ Faster checkout + + } + > +
+ + + This can be found in{' '} + + the developer settings + + + } + /> +
+
+
+ )} +
+ + ) +} + +export { default as AuthForm } from './examples/AuthForm' diff --git a/packages/ui/src/components/Form/Form.tsx b/packages/ui/src/components/Form/Form.tsx new file mode 100644 index 00000000000..791ceeaaaa6 --- /dev/null +++ b/packages/ui/src/components/Form/Form.tsx @@ -0,0 +1,96 @@ +import { useReducer } from 'react' +import { useFormik, FormikConfig } from 'formik' +import { FormContextProvider } from './FormContext' + +// interface Props extends FormikProps, Partial FormikConfig { +interface Props + extends Omit, 'validateOnMount' | 'validateOnChange'> { + children: any + handleIsSubmitting?: any + handleIsValidating?: any + name?: string + id?: string + className?: string + style?: React.CSSProperties +} + +function errorReducer(state: any, action: any) { + if (!action.error) { + const payload = state + delete payload[action.key] + return payload + } + if (action) { + return { + ...state, + [action.key]: action.error, + } + } else { + throw new Error() + } +} + +export default function Form({ validate, ...props }: Props) { + const [fieldLevelErrors, dispatchErrors] = useReducer(errorReducer, null) + + function handleFieldLevelValidation(key: any, error: string) { + dispatchErrors({ key, error }) + } + + const formik = useFormik({ + validateOnBlur: true, + ...props, + validationSchema: props.validationSchema, + initialValues: props.initialValues, + onSubmit: props.onSubmit, + validate: + validate || + function () { + return fieldLevelErrors + }, + }) + + // console.log('values', formik.values) + // console.log('errors', formik.errors) + // console.log('touched', formik.touched) + + return ( +
+ + + ) +} diff --git a/packages/ui/src/components/Form/FormContext.tsx b/packages/ui/src/components/Form/FormContext.tsx new file mode 100644 index 00000000000..d49db95209b --- /dev/null +++ b/packages/ui/src/components/Form/FormContext.tsx @@ -0,0 +1,60 @@ +import React, { createContext, useContext } from 'react' + +interface ContextProps { + formContextOnChange: any + values: any + errors: any + handleBlur: React.FocusEventHandler | null + touched: any + fieldLevelValidation: any +} + +interface Provider extends ContextProps { + children?: React.ReactNode +} + +// Make sure the shape of the default value passed to +// createContext matches the shape that the consumers expect! +const FormContext = createContext({ + formContextOnChange: null, + values: null, + errors: null, + handleBlur: null, + touched: null, + fieldLevelValidation: null, +}) + +export const FormContextProvider = (props: Provider) => { + const { + formContextOnChange, + values, + errors, + handleBlur, + touched, + fieldLevelValidation, + } = props + + const value = { + formContextOnChange: formContextOnChange, + values: values, + errors: errors, + handleBlur: handleBlur, + touched: touched, + fieldLevelValidation: fieldLevelValidation, + } + + return ( + {props.children} + ) +} + +// context helper to avoid using a consumer component +export const useFormContext = () => { + const context = useContext(FormContext) + if (context === undefined) { + throw new Error( + `useFormContextOnChange must be used within a FormContextProvider.` + ) + } + return context +} diff --git a/packages/ui/src/components/Form/examples/AuthForm.tsx b/packages/ui/src/components/Form/examples/AuthForm.tsx new file mode 100644 index 00000000000..10a885c46b2 --- /dev/null +++ b/packages/ui/src/components/Form/examples/AuthForm.tsx @@ -0,0 +1,1162 @@ +import React, { useReducer, useState } from 'react' +import { + Button, + IconArrowRight, + IconCheck, + IconChevronUp, + IconGlobe, + IconTrash, + IconX, + Input, + InputNumber, + Tabs, + Toggle, +} from '../../../../' +import { Form } from './../' + +import { Collapsible } from '../../Collapsible' + +import { Modal } from '../../Modal' +import AuthFormSchema from './AuthFormSchema.json' + +// import GoogleIcon './../../../static/icons/google-icon.svg' + +const DocsButton = () => { + return ( + + ) +} + +const CardForm = () => { + // panel + const Panel = ({ + children, + header, + footer, + }: { + children: React.ReactNode + header?: React.ReactNode + footer?: React.ReactNode + }) => ( +
+ {header && ( +
+ {header} +
+ )} +
{children}
+ {footer} +
+ ) + + const Section = ({ + children, + header, + }: { + children: React.ReactNode + header?: React.ReactNode + }) => ( +
+ {header} + {children} +
+ ) + + return ( + <> +
{ + setTimeout(() => { + alert(JSON.stringify(values, null, 2)) + setSubmitting(false) + }, 400) + }} + validate={(values: Values) => { + const errors: any = {} + if (!values.jwt_expiry) { + errors.jwt_expiry = 'This is required' + } + if (values.jwt_expiry > 604800) { + errors.jwt_expiry = + 'The maxiumum allowed is 604,800 seconds. Use a smaller number of seconds.' + } + return errors + }} + > + {({ isSubmitting, handleReset }: any) => ( + +
+
+ + +
+ + } + > +
User Signups} + > + +
+
+
User Sessions} + > + +
+
+ )} +
+ + ) +} + +// type to do later.. +let initialState: any = {} + +AuthFormSchema.map((provider) => { + initialState[`${provider.name.toLowerCase()}-active`] = provider.name == 'Email' ? true : false + initialState[`${provider.name.toLowerCase()}-app-id`] = '' + initialState[`${provider.name.toLowerCase()}-id-key`] = '' +}) + +console.log('form initialState', initialState) + +function providersReducer(state, action) { + switch (action.type) { + case 'update': + return Object.assign(state, action.values) + // case 'decrement': + // return { count: state.count - 1 } + default: + throw new Error() + } +} + +const AuthForm = () => { + const [providersFormState, dispatchProvidersForm] = useReducer(providersReducer, initialState) + + console.log('providersFormState from useState', providersFormState) + + // panel + const Panel = ({ + children, + header, + footer, + }: { + children: React.ReactNode + header?: React.ReactNode + footer?: React.ReactNode + }) => ( +
+ {header && ( +
+ {header} +
+ )} +
{children}
+ {footer} +
+ ) + + const Section = ({ + children, + header, + }: { + children: React.ReactNode + header?: React.ReactNode + }) => ( +
+ {header} + {children} +
+ ) + + const CollapsibleContainer = ({ + children, + header, + }: { + children: React.ReactNode + header?: React.ReactNode + }) => { + return ( +
+ {children} +
+ ) + } + + type formObj = { + type: string + name: string + label: string + description: string + } + + interface Provider { + name: string + icon: string + form: formObj[] + } + + const ProviderForm = ({ provider }: { provider: Provider }) => { + const [open, setOpen] = useState(false) + const [active, setActive] = useState( + providersFormState[`${provider.name.toLowerCase()}-active`] + ) + + console.log('panel active state', active) + + return ( + // + + + + +
{ + const errors: any = {} + + console.log('validation values', values) + + const input_active = `${provider.name.toLowerCase()}-active` + const input_app_id = `${provider.name.toLowerCase()}-app-id` + const input_id_key = `${provider.name.toLowerCase()}-id-key` + + if (values[input_app_id] && values[input_app_id].length < 10) + errors[input_app_id] = 'App ID must be at least 10 characters long' + if (values[input_app_id] && values[input_id_key].length < 10) + errors[input_id_key] = 'Secret must be at least 10 characters long' + + if (values[input_active]) { + if (!values[input_app_id]) + errors[input_app_id] = + 'You need to input an application ID if you want to enable this provider.' + if (!values[input_id_key]) + errors[input_id_key] = + 'You need to input an application secret if you want to enable this provider.' + } + + return errors + }} + onSubmit={(values: any, { setSubmitting }: any) => { + setTimeout(() => { + // alert(JSON.stringify(values, null, 2)) + dispatchProvidersForm({ type: 'update', values: values }) + setActive(values[`${provider.name.toLowerCase()}-active`]) + setSubmitting(false) + setOpen(false) + }, 400) + }} + > + {({ isSubmitting, handleReset }: any) => ( + +
+
+ +
+ {provider.form.map((x) => { + return ( + + ) + })} +
+
+ + +
+
+
+
+ )} +
+
+ //
+ ) + } + + return ( +
+
+ {AuthFormSchema.map((provider: Provider) => { + return + })} +
+
+ ) +} + +// type to do later.. +let domainInitialState: any = ['https://summersmuir.com', 'http://localhost:3000'] + +// AuthFormSchema.map((provider) => { +// domainInitialState[`${provider.name.toLowerCase()}-active`] = +// provider.name == 'Email' ? true : false +// domainInitialState[`${provider.name.toLowerCase()}-app-id`] = '' +// domainInitialState[`${provider.name.toLowerCase()}-id-key`] = '' +// }) + +console.log('form domainInitialState', domainInitialState) + +// function domainsReducer(state, action) { +// switch (action.type) { +// case 'update': +// let _state = [] +// _state.push(...state) +// _state.push(action.values.domain) +// console.log('new state', _state) +// return _state +// // case 'remove': +// // _state.push(...state) +// // _state = _state.filter((e: any) => e !== action.values) +// // console.log('new state', _state) +// // return _state +// // case 'decrement': +// // return { count: state.count - 1 } +// default: +// throw new Error() +// } +// } + +function domainsReducer(state, action) { + let _state = [] + switch (action.type) { + case 'update': + _state.push(...state) + _state.push(action.values.domain) + console.log('new state', _state) + return _state + case 'remove': + _state.push(...state) + _state = _state.filter((e: any) => e !== action.values) + console.log('new state', _state) + return _state + // case 'decrement': + // return { count: state.count - 1 } + default: + throw new Error() + } +} + +const DomainsForm = () => { + const [domainsFormState, dispatchDomainsForm] = useReducer(domainsReducer, domainInitialState) + + const [deleteOpen, setDeleteOpen] = useState(false) + const [deleteLoading, setDeleteLoading] = useState(false) + const [selectedDomain, setSelected] = useState('') + + console.log('domainsFormState from useState', domainsFormState) + + type formObj = { + type: string + name: string + label: string + description: string + } + + interface Provider { + name: string + icon: string + form: formObj[] + } + + const DomainsForm = () => { + // const [active, setActive] = useState( + // domainsFormState[`${provider.name.toLowerCase()}-active`] + // ) + const [open, setOpen] = useState(false) + + // console.log('panel active state', active) + + return ( + <> +
+
+

Authorised domains

+

+ Turn payment methods on and off in one click – no engineering time required. +

+

+ Use our guide to check which payment methods are compatible with your integration. +

+
+ + setOpen(!open)} + header={ +
+
+

Add a new domain

+
+
+ } + contentStyle={{ padding: 0 }} + hideFooter + > +
{ + console.log('submitting domain') + setTimeout(() => { + setSubmitting(false) + dispatchDomainsForm({ type: 'update', values: values }) + setOpen(false) + }, 400) + }} + validate={(values) => { + const errors: any = {} + if (!values.domain) { + errors.domain = 'A domain is required' + } else if ( + !/^((https?|ftp|smtp):\/\/)?(www.)?[a-z0-9]+\.[a-z]+(\/[a-zA-Z0-9#]+\/?)*$/i.test( + values.domain + ) + ) { + errors.domain = 'Not a valid URL. Please use http:// or https://' + } + return errors + }} + > + {({ isSubmitting, errors, touched }: any) => { + // console.log('errors in form', errors) + // console.log('touched in form', touched) + return ( +
+
+

+ This will add a domain to a list of allowed domains that can interact with + your Authenticaton services for this project. +

+
+
+
+ +
+
+
+ +
+
+ ) + }} +
+
+
+ + ) + } + + console.log('RENDER DOMAINS') + + return ( +
+ +
+ {domainsFormState.map((domain) => { + return ( + <> +
+
+ + + + {domain} +
+ +
+ + ) + })} +
+ setDeleteOpen(!open)} + header={ +
+
+

Remove domain

+
+
+ } + contentStyle={{ padding: 0 }} + hideFooter + > +
+
+

+ Are you sure you want to remove{' '} + {selectedDomain}? +

+

+ This domain will no longer work with your Authentication configuration. +

+
+
+
+ + +
+
+
+
+ ) +} + +const SmtpForm = () => { + const [active, setActive] = useState(true) + + // panel + const Panel = ({ + children, + header, + footer, + }: { + children: React.ReactNode + header?: React.ReactNode + footer?: React.ReactNode + }) => ( +
+ {header && ( +
+ {header} +
+ )} +
{children}
+ {footer} +
+ ) + + const Section = ({ + children, + header, + }: { + children: React.ReactNode + header?: React.ReactNode + }) => ( +
+ {header &&
{header}
} + {children} +
+ ) + + return ( + <> +
{ + setTimeout(() => { + alert(JSON.stringify(values, null, 2)) + setSubmitting(false) + }, 400) + }} + validate={(values: Values) => { + const errors: any = {} + if (!values.jwt_expiry) { + errors.jwt_expiry = 'This is required' + } + if (values.jwt_expiry > 604800) { + errors.jwt_expiry = + 'The maxiumum allowed is 604,800 seconds. Use a smaller number of seconds.' + } + return errors + }} + > + {({ isSubmitting, handleReset, values }: any) => ( + +
+
+ + +
+ + } + > + {/*
+ Enable SMTP + + } + > */} + setActive(!active)} + // checked={active} + name="enable_smtp" + className="col-span-8 mx-8" + label="Enable Custom SMTP" + layout="flex" + descriptionText="If this is disabled, new users will not be able to sign up to your application." + /> + {/*
*/} +
+
+ +

+ These settings can be found in your SMTP provider config +

+
+ } + > +
+ + + + + +
+ + {values.enable_smtp && ( +
+ +
+ )} + + )} + + + ) +} + +const TemplatesForm = () => { + const [active, setActive] = useState(true) + + // panel + const Panel = ({ + children, + header, + footer, + }: { + children: React.ReactNode + header?: React.ReactNode + footer?: React.ReactNode + }) => ( +
+ {header && ( +
+ {header} +
+ )} +
{children}
+ {footer} +
+ ) + + const Section = ({ + children, + header, + }: { + children: React.ReactNode + header?: React.ReactNode + }) => ( +
+ {header &&
{header}
} + {children} +
+ ) + + return ( + <> +
{ + setTimeout(() => { + alert(JSON.stringify(values, null, 2)) + setSubmitting(false) + }, 400) + }} + validate={(values: Values) => { + const errors: any = {} + if (!values.jwt_expiry) { + errors.jwt_expiry = 'This is required' + } + if (values.jwt_expiry > 604800) { + errors.jwt_expiry = + 'The maxiumum allowed is 604,800 seconds. Use a smaller number of seconds.' + } + return errors + }} + > + {({ isSubmitting, handleReset, values }: any) => ( + <> +
+ + + + + + + +
+ +
+
+ + +
+ + } + > + {/*
+ Enable SMTP + + } + > */} + {/* setActive(!active)} + // checked={active} + name="enable_smtp" + className="col-span-8 mx-8" + label="Enable Custom SMTP" + layout="flex" + descriptionText="If this is disabled, new users will not be able to sign up to your application." + /> */} + {/*
*/} + {/*
*/} +
+

Confirm Signup

+

+ When a user signs up using an email address and password, you can send them a + confirmation email to verify their registered email address. Learn more +

+
+ } + > +
+ + {values.enable_smtp && ( +
+ +
+ )} + + + )} + + + ) +} + +export function WholeForm() { + return ( +
+ + +
+
+

Sign-in method

+
+
+
+

General settings

+

+ Turn payment methods on and off in one click – no engineering time required. +

+

+ Use our guide to check which payment methods are compatible with your integration. +

+ +
+
+

Providers

+

+ Turn payment methods on and off in one click – no engineering time required. +

+

+ Use our guide to check which payment methods are compatible with your integration. +

+ +
+ + +
+
+ +
+
+

Emails

+
+ +
+
+

Custom SMTP

+

+ You can use your own SMTP server instead of the built-in email service. +

+ +
+
+

Templates

+

+ You can use your own SMTP server instead of the built-in email service. +

+ +
+
+
+
+
+ ) +} + +export default WholeForm diff --git a/packages/ui/src/components/Form/examples/AuthFormSchema.json b/packages/ui/src/components/Form/examples/AuthFormSchema.json new file mode 100644 index 00000000000..faf00278cc5 --- /dev/null +++ b/packages/ui/src/components/Form/examples/AuthFormSchema.json @@ -0,0 +1,281 @@ +[ + { + "name": "Email", + "icon": "email-icon", + "form": [ + { + "type": "text", + "name": "email-app-id", + "label": "email App Id", + "description": "" + }, + { + "type": "text", + "name": "email-id-key", + "label": "email client ID", + "description": "" + }, + { + "type": "text", + "name": "email-id-key", + "label": "email client ID", + "description": "" + }, + { + "type": "text", + "name": "email-id-key", + "label": "email client ID", + "description": "" + } + ] + }, + { + "name": "Phone", + "icon": "phone-icon", + "form": [ + { + "type": "select", + "name": "phone-app-provider", + "label": "Phone service provider", + "description": "You can use a provider etc etc" + }, + { + "type": "text", + "name": "phone-id-key", + "label": "phone client ID", + "description": "" + }, + { + "type": "text", + "name": "phone-id-key", + "label": "phone client ID", + "description": "" + }, + { + "type": "text", + "name": "phone-id-key", + "label": "phone client ID", + "description": "" + } + ] + }, + { + "name": "Google", + "icon": "google-icon", + "form": [ + { + "type": "text", + "name": "google-app-id", + "label": "Google App Id", + "description": "" + }, + { + "type": "text", + "name": "google-id-key", + "label": "Google client ID", + "description": "" + } + ] + }, + { + "name": "Facebook", + "icon": "facebook-icon", + "form": [ + { + "type": "text", + "name": "facebook-app-id", + "label": "Facebook App Id", + "description": "" + }, + { + "type": "text", + "name": "facebook-id-key", + "label": "Facebook client ID", + "description": "" + } + ] + }, + { + "name": "Twitter", + "icon": "twitter-icon", + "form": [ + { + "type": "text", + "name": "twitter-app-id", + "label": "Twitter App Id", + "description": "" + }, + { + "type": "text", + "name": "twitter-id-key", + "label": "Twitter client ID", + "description": "" + } + ] + }, + { + "name": "Apple", + "icon": "apple-icon", + "form": [ + { + "type": "text", + "name": "apple-app-id", + "label": "Apple App Id", + "description": "" + }, + { + "type": "text", + "name": "apple-id-key", + "label": "Apple client ID", + "description": "" + } + ] + }, + { + "name": "Microsoft", + "icon": "microsoft-icon", + "form": [ + { + "type": "text", + "name": "microsoft-app-id", + "label": "Microsoft App Id", + "description": "" + }, + { + "type": "text", + "name": "microsoft-id-key", + "label": "Microsoft client ID", + "description": "" + } + ] + }, + { + "name": "Gitlab", + "icon": "gitlab-icon", + "form": [ + { + "type": "text", + "name": "gitlab-app-id", + "label": "Gitlab App Id", + "description": "" + }, + { + "type": "text", + "name": "gitlab-id-key", + "label": "Gitlab client ID", + "description": "" + } + ] + }, + + { + "name": "Bitbucket", + "icon": "bitbucket-icon", + "form": [ + { + "type": "text", + "name": "bitbucket-app-id", + "label": "Bitbucket App Id", + "description": "" + }, + { + "type": "text", + "name": "bitbucket-id-key", + "label": "Bitbucket client ID", + "description": "" + } + ] + }, + { + "name": "Discord", + "icon": "discord-icon", + "form": [ + { + "type": "text", + "name": "discord-app-id", + "label": "Discord App Id", + "description": "" + }, + { + "type": "text", + "name": "discord-id-key", + "label": "Discord client ID", + "description": "" + } + ] + }, + + { + "name": "Github", + "icon": "github-icon-dark", + "form": [ + { + "type": "text", + "name": "github-app-id", + "label": "Github App Id", + "description": "" + }, + { + "type": "text", + "name": "github-id-key", + "label": "Github client ID", + "description": "" + } + ] + }, + + { + "name": "Slack", + "icon": "slack-icon", + "form": [ + { + "type": "text", + "name": "slack-app-id", + "label": "Slack App Id", + "description": "" + }, + { + "type": "text", + "name": "slack-id-key", + "label": "Slack client ID", + "description": "" + } + ] + }, + { + "name": "Spotify", + "icon": "spotify-icon", + "form": [ + { + "type": "text", + "name": "spotify-app-id", + "label": "Spotify App Id", + "description": "" + }, + { + "type": "text", + "name": "spotify-id-key", + "label": "Spotify client ID", + "description": "" + } + ] + }, + { + "name": "Twitch", + "icon": "twitch-icon", + "form": [ + { + "type": "text", + "name": "twitch-app-id", + "label": "Twitch App Id", + "description": "" + }, + { + "type": "text", + "name": "twitch-id-key", + "label": "Twitch client ID", + "description": "" + } + ] + } +] diff --git a/packages/ui/src/components/Form/examples/PhoneProvidersSchema.json b/packages/ui/src/components/Form/examples/PhoneProvidersSchema.json new file mode 100644 index 00000000000..eb38715495a --- /dev/null +++ b/packages/ui/src/components/Form/examples/PhoneProvidersSchema.json @@ -0,0 +1,36 @@ + { + "name": "Twilio", + "icon": "twilio-icon", + "form": [ + { + "type": "text", + "name": "twilio-app-id", + "label": "Enable twilio Provider", + "description": "" + }, + { + "type": "text", + "name": "twilio-id-key", + "label": "twilio client ID", + "description": "" + } + ] + }, + { + "name": "Messagebird", + "icon": "messagebird-icon", + "form": [ + { + "type": "text", + "name": "messagebird-app-id", + "label": "Enable gitlab messagebird", + "description": "" + }, + { + "type": "text", + "name": "messagebird-id-key", + "label": "messagebird client ID", + "description": "" + } + ] + } \ No newline at end of file diff --git a/packages/ui/src/components/Form/index.tsx b/packages/ui/src/components/Form/index.tsx new file mode 100644 index 00000000000..dda8db37e4a --- /dev/null +++ b/packages/ui/src/components/Form/index.tsx @@ -0,0 +1 @@ +export { default as Form } from './Form' diff --git a/packages/ui/src/components/Icon/Icon.module.css b/packages/ui/src/components/Icon/Icon.module.css new file mode 100644 index 00000000000..a9a9de6e63e --- /dev/null +++ b/packages/ui/src/components/Icon/Icon.module.css @@ -0,0 +1,39 @@ +/* .sbui-icon-container { + @apply flex-shrink-0 flex items-center justify-center rounded-full p-3; +} + +.sbui-icon-container--brand { + @apply bg-brand-800 bg-opacity-10 text-brand-800; +} + +.sbui-icon-container--gray { + @apply bg-gray-600 bg-opacity-10 text-gray-500; +} + +.sbui-icon-container--red { + @apply bg-red-600 bg-opacity-10 text-red-500; +} + +.sbui-icon-container--yellow { + @apply bg-yellow-600 bg-opacity-10 text-yellow-500; +} + +.sbui-icon-container--green { + @apply bg-green-600 bg-opacity-10 text-green-500; +} + +.sbui-icon-container--blue { + @apply bg-blue-600 bg-opacity-10 text-blue-500; +} + +.sbui-icon-container--indigo { + @apply bg-indigo-600 bg-opacity-10 text-indigo-500; +} + +.sbui-icon-container--purple { + @apply bg-purple-600 bg-opacity-10 text-purple-500; +} + +.sbui-icon-container--pink { + @apply bg-pink-600 bg-opacity-10 text-pink-500; +} */ diff --git a/packages/ui/src/components/Icon/Icon.stories.tsx b/packages/ui/src/components/Icon/Icon.stories.tsx new file mode 100644 index 00000000000..8fcc2f8b607 --- /dev/null +++ b/packages/ui/src/components/Icon/Icon.stories.tsx @@ -0,0 +1,66 @@ +import React from 'react' + +import { IconMail, Typography } from './../../index' + +export default { + title: 'General/Icon', + component: IconMail, +} + +export const Default = (args: any) => ( +
+
+ + + +
+
+) + +Default.args = { + size: 16, + strokeWidth: 2, +} + +// export const IconList = (args: any) => ( +// <> +//
+// This icons uses react-feather from Feather Icons. For detail you can check +// it here and{' '} +// here +//
+//
+// {LIST_ICONS.map((icon) => ( +//
+// +// {icon} +//
+// ))} +//
+// +// ) + +// IconList.args = { +// size: 16, +// strokeWidth: 2, +// } + +// // const SvgMessagesIcon = () => ( +// // +// // +// // +// // ) + +// // export const IconWithSVG = (args: any) => ( +// // } /> +// // ) + +// // IconWithSVG.args = { +// // size: 'xxxlarge', +// // strokeWidth: 4, +// // } diff --git a/packages/ui/src/components/Icon/Icon.test.js b/packages/ui/src/components/Icon/Icon.test.js new file mode 100644 index 00000000000..865c70baa4b --- /dev/null +++ b/packages/ui/src/components/Icon/Icon.test.js @@ -0,0 +1,26 @@ +import React from 'react' +import { render, screen } from '@testing-library/react' +import Icon from './Icon' + +describe('#Icon', () => { + it('should render Icon correctly', () => { + render() + const $elIcon = screen.queryByTestId('icon') + expect($elIcon).toBeInTheDocument() + }) + + it('should change svg size', () => { + render() + + const $elIcon = screen.queryByTestId('icon') + expect($elIcon.getAttribute('width')).toEqual('40') + expect($elIcon.getAttribute('height')).toEqual('40') + }) + + it('should change strokeWidth value', () => { + render() + + const $elIcon = screen.queryByTestId('icon') + expect($elIcon.getAttribute('stroke-width')).toEqual('1') + }) +}) diff --git a/packages/ui/src/components/Icon/Icon.tsx b/packages/ui/src/components/Icon/Icon.tsx new file mode 100644 index 00000000000..d2a507cedbd --- /dev/null +++ b/packages/ui/src/components/Icon/Icon.tsx @@ -0,0 +1,133 @@ +import React from 'react' +import styleHandler from '../../lib/theme/styleHandler' +import { IconContext } from './IconContext' +// @ts-ignore +// import IconStyles from './Icon.module.css' + +const IconStyles = {} + +interface Props { + className?: string + size?: + | 'tiny' + | 'small' + | 'medium' + | 'large' + | 'xlarge' + | 'xxlarge' + | 'xxxlarge' + | number + type?: string + color?: string + strokeWidth?: number + fill?: string + stroke?: string + background?: + | 'brand' + | 'gray' + | 'red' + | 'yellow' + | 'green' + | 'blue' + | 'indigo' + | 'purple' + | 'pink' + src: React.ReactNode +} + +interface StringMap { + [key: string]: number +} + +function Icon({ + className, + size, + type, + color, + strokeWidth, + fill = undefined, + stroke = undefined, + background, + src, + ...props +}: Props) { + const __styles = styleHandler('icon') + + return ( + + {({ contextSize, className: contextClassName }) => { + const defaultSizes: StringMap = { + tiny: 14, + small: 18, + medium: 20, + large: 20, + xlarge: 24, + xxlarge: 30, + xxxlarge: 42, + } + + const defaultSize = defaultSizes['large'] + + // const iconSize = typeof size === 'string' ? defaultSizes[contextSize] : 21 + let iconSize: any = 21 + + // use contextSize of parent (via context hook) if one exists + if (contextSize) { + iconSize = contextSize + ? typeof contextSize === 'string' + ? defaultSizes[contextSize] + : contextSize + : defaultSize + } + + // use size prop of this component if one exists + if (size) { + iconSize = size + ? typeof size === 'string' + ? defaultSizes[size] + : size + : defaultSize + } + + // confitional used for Icons with no color settings + // default these icons to use 'currentColor' ie, the text color + const noColor = !color && !fill && !stroke + + let classes = ['sbui-icon', className] + if (contextClassName) { + classes.push(contextClassName) + } + + const Icon = ( + // custom SVG file + + {src} + + ) + + return background ? ( +
+ {Icon} +
+ ) : ( + Icon + ) + }} +
+ ) +} + +export default Icon diff --git a/packages/ui/src/components/Icon/IconBase.tsx b/packages/ui/src/components/Icon/IconBase.tsx new file mode 100644 index 00000000000..82f097092be --- /dev/null +++ b/packages/ui/src/components/Icon/IconBase.tsx @@ -0,0 +1,144 @@ +import React from 'react' +import styleHandler from '../../lib/theme/styleHandler' +import { IconContext } from './IconContext' +// @ts-ignore +// import IconStyles from './Icon.module.css' + +interface Props { + className?: string + size?: + | 'tiny' + | 'small' + | 'medium' + | 'large' + | 'xlarge' + | 'xxlarge' + | 'xxxlarge' + | number + type?: string + color?: string + strokeWidth?: number + fill?: string + stroke?: string + background?: + | 'brand' + | 'gray' + | 'red' + | 'yellow' + | 'green' + | 'blue' + | 'indigo' + | 'purple' + | 'pink' + src?: React.ReactNode + icon?: any +} + +interface StringMap { + [key: string]: number +} + +function IconBase({ + className, + size, + type = 'Mail', + color, + strokeWidth, + fill = undefined, + stroke = undefined, + background, + src, + icon, + ...props +}: Props) { + const __styles = styleHandler('icon') + + return ( + + {({ contextSize, className: contextClassName }) => { + const defaultSizes: StringMap = { + tiny: 14, + small: 18, + medium: 20, + large: 20, + xlarge: 24, + xxlarge: 30, + xxxlarge: 42, + } + + const defaultSize = defaultSizes['large'] + // @ts-ignore + + const FeatherIcon = icon + + // const iconSize = typeof size === 'string' ? defaultSizes[contextSize] : 21 + let iconSize: any = 21 + + // use contextSize of parent (via context hook) if one exists + if (contextSize) { + iconSize = contextSize + ? typeof contextSize === 'string' + ? defaultSizes[contextSize] + : contextSize + : defaultSize + } + + // use size prop of this component if one exists + if (size) { + iconSize = size + ? typeof size === 'string' + ? defaultSizes[size] + : size + : defaultSize + } + + // confitional used for Icons with no color settings + // default these icons to use 'currentColor' ie, the text color + const noColor = !color && !fill && !stroke + + let classes = ['sbui-icon', className] + if (contextClassName) { + classes.push(contextClassName) + } + + const IconComponent = () => ( + + ) + + const Icon = src ? ( + // custom SVG file + + {src} + + ) : ( + // feather icon + + ) + + return background ? ( +
{Icon}
+ ) : ( + Icon + ) + }} +
+ ) +} + +export default IconBase diff --git a/packages/ui/src/components/Icon/IconContext.tsx b/packages/ui/src/components/Icon/IconContext.tsx new file mode 100644 index 00000000000..4d2198bdfe7 --- /dev/null +++ b/packages/ui/src/components/Icon/IconContext.tsx @@ -0,0 +1,10 @@ +import { createContext } from 'react' + +type ContextValue = { contextSize?: string; className?: string } + +// Make sure the shape of the default value passed to +// createContext matches the shape that the consumers expect! +export const IconContext = createContext({ + contextSize: '', + className: '', +}) diff --git a/packages/ui/src/components/Icon/IconImportHandler.tsx b/packages/ui/src/components/Icon/IconImportHandler.tsx new file mode 100644 index 00000000000..0d158b428c6 --- /dev/null +++ b/packages/ui/src/components/Icon/IconImportHandler.tsx @@ -0,0 +1,294 @@ +import { FC, SVGAttributes } from 'react' + +export interface IconProps extends SVGAttributes { + color?: string + size?: string | number +} + +export type Icon = FC +export const Activity: Icon = require(`react-feather/dist/icons/activity`) +export const Airplay: Icon = require(`react-feather/dist/icons/airplay`) +export const AlertCircle: Icon = require(`react-feather/dist/icons/alert-circle`) +export const AlertOctagon: Icon = require(`react-feather/dist/icons/alert-octagon`) +export const AlertTriangle: Icon = require(`react-feather/dist/icons/alert-triangle`) +export const AlignCenter: Icon = require(`react-feather/dist/icons/align-center`) +export const AlignJustify: Icon = require(`react-feather/dist/icons/align-justify`) +export const AlignLeft: Icon = require(`react-feather/dist/icons/align-left`) +export const AlignRight: Icon = require(`react-feather/dist/icons/align-right`) +export const Anchor: Icon = require(`react-feather/dist/icons/anchor`) +export const Aperture: Icon = require(`react-feather/dist/icons/aperture`) +export const Archive: Icon = require(`react-feather/dist/icons/archive`) +export const ArrowDownCircle: Icon = require(`react-feather/dist/icons/arrow-down-circle`) +export const ArrowDownLeft: Icon = require(`react-feather/dist/icons/arrow-down-left`) +export const ArrowDownRight: Icon = require(`react-feather/dist/icons/arrow-down-right`) +export const ArrowDown: Icon = require(`react-feather/dist/icons/arrow-down`) +export const ArrowLeftCircle: Icon = require(`react-feather/dist/icons/arrow-left-circle`) +export const ArrowLeft: Icon = require(`react-feather/dist/icons/arrow-left`) +export const ArrowRightCircle: Icon = require(`react-feather/dist/icons/arrow-right-circle`) +export const ArrowRight: Icon = require(`react-feather/dist/icons/arrow-right`) +export const ArrowUpCircle: Icon = require(`react-feather/dist/icons/arrow-up-circle`) +export const ArrowUpLeft: Icon = require(`react-feather/dist/icons/arrow-up-left`) +export const ArrowUpRight: Icon = require(`react-feather/dist/icons/arrow-up-right`) +export const ArrowUp: Icon = require(`react-feather/dist/icons/arrow-up`) +export const AtSign: Icon = require(`react-feather/dist/icons/at-sign`) +export const Award: Icon = require(`react-feather/dist/icons/award`) +export const BarChart2: Icon = require(`react-feather/dist/icons/bar-chart-2`) +export const BarChart: Icon = require(`react-feather/dist/icons/bar-chart`) +export const BatteryCharging: Icon = require(`react-feather/dist/icons/battery-charging`) +export const Battery: Icon = require(`react-feather/dist/icons/battery`) +export const BellOff: Icon = require(`react-feather/dist/icons/bell-off`) +export const Bell: Icon = require(`react-feather/dist/icons/bell`) +export const Bluetooth: Icon = require(`react-feather/dist/icons/bluetooth`) +export const Bold: Icon = require(`react-feather/dist/icons/bold`) +export const BookOpen: Icon = require(`react-feather/dist/icons/book-open`) +export const Book: Icon = require(`react-feather/dist/icons/book`) +export const Bookmark: Icon = require(`react-feather/dist/icons/bookmark`) +export const Box: Icon = require(`react-feather/dist/icons/box`) +export const Briefcase: Icon = require(`react-feather/dist/icons/briefcase`) +export const Calendar: Icon = require(`react-feather/dist/icons/calendar`) +export const CameraOff: Icon = require(`react-feather/dist/icons/camera-off`) +export const Camera: Icon = require(`react-feather/dist/icons/camera`) +export const Cast: Icon = require(`react-feather/dist/icons/cast`) +export const CheckCircle: Icon = require(`react-feather/dist/icons/check-circle`) +export const CheckSquare: Icon = require(`react-feather/dist/icons/check-square`) +export const Check: Icon = require(`react-feather/dist/icons/check`) +export const ChevronDown: Icon = require(`react-feather/dist/icons/chevron-down`) +export const ChevronLeft: Icon = require(`react-feather/dist/icons/chevron-left`) +export const ChevronRight: Icon = require(`react-feather/dist/icons/chevron-right`) +export const ChevronUp: Icon = require(`react-feather/dist/icons/chevron-up`) +export const ChevronsDown: Icon = require(`react-feather/dist/icons/chevrons-down`) +export const ChevronsLeft: Icon = require(`react-feather/dist/icons/chevrons-left`) +export const ChevronsRight: Icon = require(`react-feather/dist/icons/chevrons-right`) +export const ChevronsUp: Icon = require(`react-feather/dist/icons/chevrons-up`) +export const Chrome: Icon = require(`react-feather/dist/icons/chrome`) +export const Circle: Icon = require(`react-feather/dist/icons/circle`) +export const Clipboard: Icon = require(`react-feather/dist/icons/clipboard`) +export const Clock: Icon = require(`react-feather/dist/icons/clock`) +export const CloudDrizzle: Icon = require(`react-feather/dist/icons/cloud-drizzle`) +export const CloudLightning: Icon = require(`react-feather/dist/icons/cloud-lightning`) +export const CloudOff: Icon = require(`react-feather/dist/icons/cloud-off`) +export const CloudRain: Icon = require(`react-feather/dist/icons/cloud-rain`) +export const CloudSnow: Icon = require(`react-feather/dist/icons/cloud-snow`) +export const Cloud: Icon = require(`react-feather/dist/icons/cloud`) +export const Code: Icon = require(`react-feather/dist/icons/code`) +export const Codepen: Icon = require(`react-feather/dist/icons/codepen`) +export const Codesandbox: Icon = require(`react-feather/dist/icons/codesandbox`) +export const Coffee: Icon = require(`react-feather/dist/icons/coffee`) +export const Columns: Icon = require(`react-feather/dist/icons/columns`) +export const Command: Icon = require(`react-feather/dist/icons/command`) +export const Compass: Icon = require(`react-feather/dist/icons/compass`) +export const Copy: Icon = require(`react-feather/dist/icons/copy`) +export const CornerDownLeft: Icon = require(`react-feather/dist/icons/corner-down-left`) +export const CornerDownRight: Icon = require(`react-feather/dist/icons/corner-down-right`) +export const CornerLeftDown: Icon = require(`react-feather/dist/icons/corner-left-down`) +export const CornerLeftUp: Icon = require(`react-feather/dist/icons/corner-left-up`) +export const CornerRightDown: Icon = require(`react-feather/dist/icons/corner-right-down`) +export const CornerRightUp: Icon = require(`react-feather/dist/icons/corner-right-up`) +export const CornerUpLeft: Icon = require(`react-feather/dist/icons/corner-up-left`) +export const CornerUpRight: Icon = require(`react-feather/dist/icons/corner-up-right`) +export const Cpu: Icon = require(`react-feather/dist/icons/cpu`) +export const CreditCard: Icon = require(`react-feather/dist/icons/credit-card`) +export const Crop: Icon = require(`react-feather/dist/icons/crop`) +export const Crosshair: Icon = require(`react-feather/dist/icons/crosshair`) +export const Database: Icon = require(`react-feather/dist/icons/database`) +export const Delete: Icon = require(`react-feather/dist/icons/delete`) +export const Disc: Icon = require(`react-feather/dist/icons/disc`) +export const DivideCircle: Icon = require(`react-feather/dist/icons/divide-circle`) +export const DivideSquare: Icon = require(`react-feather/dist/icons/divide-square`) +export const Divide: Icon = require(`react-feather/dist/icons/divide`) +export const DollarSign: Icon = require(`react-feather/dist/icons/dollar-sign`) +export const DownloadCloud: Icon = require(`react-feather/dist/icons/download-cloud`) +export const Download: Icon = require(`react-feather/dist/icons/download`) +export const Dribbble: Icon = require(`react-feather/dist/icons/dribbble`) +export const Droplet: Icon = require(`react-feather/dist/icons/droplet`) +export const Edit2: Icon = require(`react-feather/dist/icons/edit-2`) +export const Edit3: Icon = require(`react-feather/dist/icons/edit-3`) +export const Edit: Icon = require(`react-feather/dist/icons/edit`) +export const ExternalLink: Icon = require(`react-feather/dist/icons/external-link`) +export const EyeOff: Icon = require(`react-feather/dist/icons/eye-off`) +export const Eye: Icon = require(`react-feather/dist/icons/eye`) +export const Facebook: Icon = require(`react-feather/dist/icons/facebook`) +export const FastForward: Icon = require(`react-feather/dist/icons/fast-forward`) +export const Feather: Icon = require(`react-feather/dist/icons/feather`) +export const Figma: Icon = require(`react-feather/dist/icons/figma`) +export const FileMinus: Icon = require(`react-feather/dist/icons/file-minus`) +export const FilePlus: Icon = require(`react-feather/dist/icons/file-plus`) +export const FileText: Icon = require(`react-feather/dist/icons/file-text`) +export const File: Icon = require(`react-feather/dist/icons/file`) +export const Film: Icon = require(`react-feather/dist/icons/film`) +export const Filter: Icon = require(`react-feather/dist/icons/filter`) +export const Flag: Icon = require(`react-feather/dist/icons/flag`) +export const FolderMinus: Icon = require(`react-feather/dist/icons/folder-minus`) +export const FolderPlus: Icon = require(`react-feather/dist/icons/folder-plus`) +export const Folder: Icon = require(`react-feather/dist/icons/folder`) +export const Framer: Icon = require(`react-feather/dist/icons/framer`) +export const Frown: Icon = require(`react-feather/dist/icons/frown`) +export const Gift: Icon = require(`react-feather/dist/icons/gift`) +export const GitBranch: Icon = require(`react-feather/dist/icons/git-branch`) +export const GitCommit: Icon = require(`react-feather/dist/icons/git-commit`) +export const GitMerge: Icon = require(`react-feather/dist/icons/git-merge`) +export const GitPullRequest: Icon = require(`react-feather/dist/icons/git-pull-request`) +export const GitHub: Icon = require(`react-feather/dist/icons/github`) +export const Gitlab: Icon = require(`react-feather/dist/icons/gitlab`) +export const Globe: Icon = require(`react-feather/dist/icons/globe`) +export const Grid: Icon = require(`react-feather/dist/icons/grid`) +export const HardDrive: Icon = require(`react-feather/dist/icons/hard-drive`) +export const Hash: Icon = require(`react-feather/dist/icons/hash`) +export const Headphones: Icon = require(`react-feather/dist/icons/headphones`) +export const Heart: Icon = require(`react-feather/dist/icons/heart`) +export const HelpCircle: Icon = require(`react-feather/dist/icons/help-circle`) +export const Hexagon: Icon = require(`react-feather/dist/icons/hexagon`) +export const Home: Icon = require(`react-feather/dist/icons/home`) +export const Image: Icon = require(`react-feather/dist/icons/image`) +export const Inbox: Icon = require(`react-feather/dist/icons/inbox`) +export const Info: Icon = require(`react-feather/dist/icons/info`) +export const Instagram: Icon = require(`react-feather/dist/icons/instagram`) +export const Italic: Icon = require(`react-feather/dist/icons/italic`) +export const Key: Icon = require(`react-feather/dist/icons/key`) +export const Layers: Icon = require(`react-feather/dist/icons/layers`) +export const Layout: Icon = require(`react-feather/dist/icons/layout`) +export const LifeBuoy: Icon = require(`react-feather/dist/icons/life-buoy`) +export const Link2: Icon = require(`react-feather/dist/icons/link-2`) +export const Link: Icon = require(`react-feather/dist/icons/link`) +export const Linkedin: Icon = require(`react-feather/dist/icons/linkedin`) +export const List: Icon = require(`react-feather/dist/icons/list`) +export const Loader: Icon = require(`react-feather/dist/icons/loader`) +export const Lock: Icon = require(`react-feather/dist/icons/lock`) +export const LogIn: Icon = require(`react-feather/dist/icons/log-in`) +export const LogOut: Icon = require(`react-feather/dist/icons/log-out`) +export const Mail: Icon = require(`react-feather/dist/icons/mail`) +export const MapPin: Icon = require(`react-feather/dist/icons/map-pin`) +export const Map: Icon = require(`react-feather/dist/icons/map`) +export const Maximize2: Icon = require(`react-feather/dist/icons/maximize-2`) +export const Maximize: Icon = require(`react-feather/dist/icons/maximize`) +export const Meh: Icon = require(`react-feather/dist/icons/meh`) +export const Menu: Icon = require(`react-feather/dist/icons/menu`) +export const MessageCircle: Icon = require(`react-feather/dist/icons/message-circle`) +export const MessageSquare: Icon = require(`react-feather/dist/icons/message-square`) +export const MicOff: Icon = require(`react-feather/dist/icons/mic-off`) +export const Mic: Icon = require(`react-feather/dist/icons/mic`) +export const Minimize2: Icon = require(`react-feather/dist/icons/minimize-2`) +export const Minimize: Icon = require(`react-feather/dist/icons/minimize`) +export const MinusCircle: Icon = require(`react-feather/dist/icons/minus-circle`) +export const MinusSquare: Icon = require(`react-feather/dist/icons/minus-square`) +export const Minus: Icon = require(`react-feather/dist/icons/minus`) +export const Monitor: Icon = require(`react-feather/dist/icons/monitor`) +export const Moon: Icon = require(`react-feather/dist/icons/moon`) +export const MoreHorizontal: Icon = require(`react-feather/dist/icons/more-horizontal`) +export const MoreVertical: Icon = require(`react-feather/dist/icons/more-vertical`) +export const MousePointer: Icon = require(`react-feather/dist/icons/mouse-pointer`) +export const Move: Icon = require(`react-feather/dist/icons/move`) +export const Music: Icon = require(`react-feather/dist/icons/music`) +export const Navigation2: Icon = require(`react-feather/dist/icons/navigation-2`) +export const Navigation: Icon = require(`react-feather/dist/icons/navigation`) +export const Octagon: Icon = require(`react-feather/dist/icons/octagon`) +export const Package: Icon = require(`react-feather/dist/icons/package`) +export const Paperclip: Icon = require(`react-feather/dist/icons/paperclip`) +export const PauseCircle: Icon = require(`react-feather/dist/icons/pause-circle`) +export const Pause: Icon = require(`react-feather/dist/icons/pause`) +export const PenTool: Icon = require(`react-feather/dist/icons/pen-tool`) +export const Percent: Icon = require(`react-feather/dist/icons/percent`) +export const PhoneCall: Icon = require(`react-feather/dist/icons/phone-call`) +export const PhoneForwarded: Icon = require(`react-feather/dist/icons/phone-forwarded`) +export const PhoneIncoming: Icon = require(`react-feather/dist/icons/phone-incoming`) +export const PhoneMissed: Icon = require(`react-feather/dist/icons/phone-missed`) +export const PhoneOff: Icon = require(`react-feather/dist/icons/phone-off`) +export const PhoneOutgoing: Icon = require(`react-feather/dist/icons/phone-outgoing`) +export const Phone: Icon = require(`react-feather/dist/icons/phone`) +export const PieChart: Icon = require(`react-feather/dist/icons/pie-chart`) +export const PlayCircle: Icon = require(`react-feather/dist/icons/play-circle`) +export const Play: Icon = require(`react-feather/dist/icons/play`) +export const PlusCircle: Icon = require(`react-feather/dist/icons/plus-circle`) +export const PlusSquare: Icon = require(`react-feather/dist/icons/plus-square`) +export const Plus: Icon = require(`react-feather/dist/icons/plus`) +export const Pocket: Icon = require(`react-feather/dist/icons/pocket`) +export const Power: Icon = require(`react-feather/dist/icons/power`) +export const Printer: Icon = require(`react-feather/dist/icons/printer`) +export const Radio: Icon = require(`react-feather/dist/icons/radio`) +export const RefreshCcw: Icon = require(`react-feather/dist/icons/refresh-ccw`) +export const RefreshCw: Icon = require(`react-feather/dist/icons/refresh-cw`) +export const Repeat: Icon = require(`react-feather/dist/icons/repeat`) +export const Rewind: Icon = require(`react-feather/dist/icons/rewind`) +export const RotateCcw: Icon = require(`react-feather/dist/icons/rotate-ccw`) +export const RotateCw: Icon = require(`react-feather/dist/icons/rotate-cw`) +export const Rss: Icon = require(`react-feather/dist/icons/rss`) +export const Save: Icon = require(`react-feather/dist/icons/save`) +export const Scissors: Icon = require(`react-feather/dist/icons/scissors`) +export const Search: Icon = require(`react-feather/dist/icons/search`) +export const Send: Icon = require(`react-feather/dist/icons/send`) +export const Server: Icon = require(`react-feather/dist/icons/server`) +export const Settings: Icon = require(`react-feather/dist/icons/settings`) +export const Share2: Icon = require(`react-feather/dist/icons/share-2`) +export const Share: Icon = require(`react-feather/dist/icons/share`) +export const ShieldOff: Icon = require(`react-feather/dist/icons/shield-off`) +export const Shield: Icon = require(`react-feather/dist/icons/shield`) +export const ShoppingBag: Icon = require(`react-feather/dist/icons/shopping-bag`) +export const ShoppingCart: Icon = require(`react-feather/dist/icons/shopping-cart`) +export const Shuffle: Icon = require(`react-feather/dist/icons/shuffle`) +export const Sidebar: Icon = require(`react-feather/dist/icons/sidebar`) +export const SkipBack: Icon = require(`react-feather/dist/icons/skip-back`) +export const SkipForward: Icon = require(`react-feather/dist/icons/skip-forward`) +export const Slack: Icon = require(`react-feather/dist/icons/slack`) +export const Slash: Icon = require(`react-feather/dist/icons/slash`) +export const Sliders: Icon = require(`react-feather/dist/icons/sliders`) +export const Smartphone: Icon = require(`react-feather/dist/icons/smartphone`) +export const Smile: Icon = require(`react-feather/dist/icons/smile`) +export const Speaker: Icon = require(`react-feather/dist/icons/speaker`) +export const Square: Icon = require(`react-feather/dist/icons/square`) +export const Star: Icon = require(`react-feather/dist/icons/star`) +export const StopCircle: Icon = require(`react-feather/dist/icons/stop-circle`) +export const Sun: Icon = require(`react-feather/dist/icons/sun`) +export const Sunrise: Icon = require(`react-feather/dist/icons/sunrise`) +export const Sunset: Icon = require(`react-feather/dist/icons/sunset`) +export const Tablet: Icon = require(`react-feather/dist/icons/tablet`) +export const Tag: Icon = require(`react-feather/dist/icons/tag`) +export const Target: Icon = require(`react-feather/dist/icons/target`) +export const Terminal: Icon = require(`react-feather/dist/icons/terminal`) +export const Thermometer: Icon = require(`react-feather/dist/icons/thermometer`) +export const ThumbsDown: Icon = require(`react-feather/dist/icons/thumbs-down`) +export const ThumbsUp: Icon = require(`react-feather/dist/icons/thumbs-up`) +export const ToggleLeft: Icon = require(`react-feather/dist/icons/toggle-left`) +export const ToggleRight: Icon = require(`react-feather/dist/icons/toggle-right`) +export const Tool: Icon = require(`react-feather/dist/icons/tool`) +export const Trash2: Icon = require(`react-feather/dist/icons/trash-2`) +export const Trash: Icon = require(`react-feather/dist/icons/trash`) +export const Trello: Icon = require(`react-feather/dist/icons/trello`) +export const TrendingDown: Icon = require(`react-feather/dist/icons/trending-down`) +export const TrendingUp: Icon = require(`react-feather/dist/icons/trending-up`) +export const Triangle: Icon = require(`react-feather/dist/icons/triangle`) +export const Truck: Icon = require(`react-feather/dist/icons/truck`) +export const Tv: Icon = require(`react-feather/dist/icons/tv`) +export const Twitch: Icon = require(`react-feather/dist/icons/twitch`) +export const Twitter: Icon = require(`react-feather/dist/icons/twitter`) +export const Type: Icon = require(`react-feather/dist/icons/type`) +export const Umbrella: Icon = require(`react-feather/dist/icons/umbrella`) +export const Underline: Icon = require(`react-feather/dist/icons/underline`) +export const Unlock: Icon = require(`react-feather/dist/icons/unlock`) +export const UploadCloud: Icon = require(`react-feather/dist/icons/upload-cloud`) +export const Upload: Icon = require(`react-feather/dist/icons/upload`) +export const UserCheck: Icon = require(`react-feather/dist/icons/user-check`) +export const UserMinus: Icon = require(`react-feather/dist/icons/user-minus`) +export const UserPlus: Icon = require(`react-feather/dist/icons/user-plus`) +export const UserX: Icon = require(`react-feather/dist/icons/user-x`) +export const User: Icon = require(`react-feather/dist/icons/user`) +export const Users: Icon = require(`react-feather/dist/icons/users`) +export const VideoOff: Icon = require(`react-feather/dist/icons/video-off`) +export const Video: Icon = require(`react-feather/dist/icons/video`) +export const Voicemail: Icon = require(`react-feather/dist/icons/voicemail`) +export const Volume1: Icon = require(`react-feather/dist/icons/volume-1`) +export const Volume2: Icon = require(`react-feather/dist/icons/volume-2`) +export const VolumeX: Icon = require(`react-feather/dist/icons/volume-x`) +export const Volume: Icon = require(`react-feather/dist/icons/volume`) +export const Watch: Icon = require(`react-feather/dist/icons/watch`) +export const WifiOff: Icon = require(`react-feather/dist/icons/wifi-off`) +export const Wifi: Icon = require(`react-feather/dist/icons/wifi`) +export const Wind: Icon = require(`react-feather/dist/icons/wind`) +export const XCircle: Icon = require(`react-feather/dist/icons/x-circle`) +export const XOctagon: Icon = require(`react-feather/dist/icons/x-octagon`) +export const XSquare: Icon = require(`react-feather/dist/icons/x-square`) +export const X: Icon = require(`react-feather/dist/icons/x`) +export const Youtube: Icon = require(`react-feather/dist/icons/youtube`) +export const ZapOff: Icon = require(`react-feather/dist/icons/zap-off`) +export const Zap: Icon = require(`react-feather/dist/icons/zap`) +export const ZoomIn: Icon = require(`react-feather/dist/icons/zoom-in`) +export const ZoomOut: Icon = require(`react-feather/dist/icons/zoom-out`) diff --git a/packages/ui/src/components/Icon/icons/IconActivity/IconActivity.tsx b/packages/ui/src/components/Icon/icons/IconActivity/IconActivity.tsx new file mode 100644 index 00000000000..2d4a75b5acb --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconActivity/IconActivity.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Activity } from 'react-feather' + import IconBase from './../../IconBase' + + function IconActivity(props: any) { + return + } + + export default IconActivity + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconActivity/index.tsx b/packages/ui/src/components/Icon/icons/IconActivity/index.tsx new file mode 100644 index 00000000000..c0cd7e3099b --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconActivity/index.tsx @@ -0,0 +1 @@ +export { default as IconActivity } from './IconActivity' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconAirplay/IconAirplay.tsx b/packages/ui/src/components/Icon/icons/IconAirplay/IconAirplay.tsx new file mode 100644 index 00000000000..58863820feb --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconAirplay/IconAirplay.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Airplay } from 'react-feather' + import IconBase from './../../IconBase' + + function IconAirplay(props: any) { + return + } + + export default IconAirplay + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconAirplay/index.tsx b/packages/ui/src/components/Icon/icons/IconAirplay/index.tsx new file mode 100644 index 00000000000..a8b24b57ce2 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconAirplay/index.tsx @@ -0,0 +1 @@ +export { default as IconAirplay } from './IconAirplay' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconAlertCircle/IconAlertCircle.tsx b/packages/ui/src/components/Icon/icons/IconAlertCircle/IconAlertCircle.tsx new file mode 100644 index 00000000000..39d0ada0e1c --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconAlertCircle/IconAlertCircle.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { AlertCircle } from 'react-feather' + import IconBase from './../../IconBase' + + function IconAlertCircle(props: any) { + return + } + + export default IconAlertCircle + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconAlertCircle/index.tsx b/packages/ui/src/components/Icon/icons/IconAlertCircle/index.tsx new file mode 100644 index 00000000000..9feccb65b27 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconAlertCircle/index.tsx @@ -0,0 +1 @@ +export { default as IconAlertCircle } from './IconAlertCircle' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconAlertOctagon/IconAlertOctagon.tsx b/packages/ui/src/components/Icon/icons/IconAlertOctagon/IconAlertOctagon.tsx new file mode 100644 index 00000000000..46520fcf43f --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconAlertOctagon/IconAlertOctagon.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { AlertOctagon } from 'react-feather' + import IconBase from './../../IconBase' + + function IconAlertOctagon(props: any) { + return + } + + export default IconAlertOctagon + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconAlertOctagon/index.tsx b/packages/ui/src/components/Icon/icons/IconAlertOctagon/index.tsx new file mode 100644 index 00000000000..75a68b48c7e --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconAlertOctagon/index.tsx @@ -0,0 +1 @@ +export { default as IconAlertOctagon } from './IconAlertOctagon' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconAlertTriangle/IconAlertTriangle.tsx b/packages/ui/src/components/Icon/icons/IconAlertTriangle/IconAlertTriangle.tsx new file mode 100644 index 00000000000..399ead726e2 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconAlertTriangle/IconAlertTriangle.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { AlertTriangle } from 'react-feather' + import IconBase from './../../IconBase' + + function IconAlertTriangle(props: any) { + return + } + + export default IconAlertTriangle + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconAlertTriangle/index.tsx b/packages/ui/src/components/Icon/icons/IconAlertTriangle/index.tsx new file mode 100644 index 00000000000..7dba36a4704 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconAlertTriangle/index.tsx @@ -0,0 +1 @@ +export { default as IconAlertTriangle } from './IconAlertTriangle' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconAlignCenter/IconAlignCenter.tsx b/packages/ui/src/components/Icon/icons/IconAlignCenter/IconAlignCenter.tsx new file mode 100644 index 00000000000..d387e06e910 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconAlignCenter/IconAlignCenter.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { AlignCenter } from 'react-feather' + import IconBase from './../../IconBase' + + function IconAlignCenter(props: any) { + return + } + + export default IconAlignCenter + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconAlignCenter/index.tsx b/packages/ui/src/components/Icon/icons/IconAlignCenter/index.tsx new file mode 100644 index 00000000000..3e869590177 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconAlignCenter/index.tsx @@ -0,0 +1 @@ +export { default as IconAlignCenter } from './IconAlignCenter' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconAlignJustify/IconAlignJustify.tsx b/packages/ui/src/components/Icon/icons/IconAlignJustify/IconAlignJustify.tsx new file mode 100644 index 00000000000..0436afe6750 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconAlignJustify/IconAlignJustify.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { AlignJustify } from 'react-feather' + import IconBase from './../../IconBase' + + function IconAlignJustify(props: any) { + return + } + + export default IconAlignJustify + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconAlignJustify/index.tsx b/packages/ui/src/components/Icon/icons/IconAlignJustify/index.tsx new file mode 100644 index 00000000000..ca40f16a68c --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconAlignJustify/index.tsx @@ -0,0 +1 @@ +export { default as IconAlignJustify } from './IconAlignJustify' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconAlignLeft/IconAlignLeft.tsx b/packages/ui/src/components/Icon/icons/IconAlignLeft/IconAlignLeft.tsx new file mode 100644 index 00000000000..be7a707097a --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconAlignLeft/IconAlignLeft.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { AlignLeft } from 'react-feather' + import IconBase from './../../IconBase' + + function IconAlignLeft(props: any) { + return + } + + export default IconAlignLeft + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconAlignLeft/index.tsx b/packages/ui/src/components/Icon/icons/IconAlignLeft/index.tsx new file mode 100644 index 00000000000..5a5dbef94bf --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconAlignLeft/index.tsx @@ -0,0 +1 @@ +export { default as IconAlignLeft } from './IconAlignLeft' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconAlignRight/IconAlignRight.tsx b/packages/ui/src/components/Icon/icons/IconAlignRight/IconAlignRight.tsx new file mode 100644 index 00000000000..c5f9d7d071a --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconAlignRight/IconAlignRight.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { AlignRight } from 'react-feather' + import IconBase from './../../IconBase' + + function IconAlignRight(props: any) { + return + } + + export default IconAlignRight + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconAlignRight/index.tsx b/packages/ui/src/components/Icon/icons/IconAlignRight/index.tsx new file mode 100644 index 00000000000..014fa83f8a1 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconAlignRight/index.tsx @@ -0,0 +1 @@ +export { default as IconAlignRight } from './IconAlignRight' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconAnchor/IconAnchor.tsx b/packages/ui/src/components/Icon/icons/IconAnchor/IconAnchor.tsx new file mode 100644 index 00000000000..7801175e9bc --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconAnchor/IconAnchor.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Anchor } from 'react-feather' + import IconBase from './../../IconBase' + + function IconAnchor(props: any) { + return + } + + export default IconAnchor + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconAnchor/index.tsx b/packages/ui/src/components/Icon/icons/IconAnchor/index.tsx new file mode 100644 index 00000000000..78fe875f982 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconAnchor/index.tsx @@ -0,0 +1 @@ +export { default as IconAnchor } from './IconAnchor' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconAperture/IconAperture.tsx b/packages/ui/src/components/Icon/icons/IconAperture/IconAperture.tsx new file mode 100644 index 00000000000..3475fe74b8d --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconAperture/IconAperture.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Aperture } from 'react-feather' + import IconBase from './../../IconBase' + + function IconAperture(props: any) { + return + } + + export default IconAperture + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconAperture/index.tsx b/packages/ui/src/components/Icon/icons/IconAperture/index.tsx new file mode 100644 index 00000000000..9316dda6596 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconAperture/index.tsx @@ -0,0 +1 @@ +export { default as IconAperture } from './IconAperture' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconArchive/IconArchive.tsx b/packages/ui/src/components/Icon/icons/IconArchive/IconArchive.tsx new file mode 100644 index 00000000000..b24704add6d --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconArchive/IconArchive.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Archive } from 'react-feather' + import IconBase from './../../IconBase' + + function IconArchive(props: any) { + return + } + + export default IconArchive + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconArchive/index.tsx b/packages/ui/src/components/Icon/icons/IconArchive/index.tsx new file mode 100644 index 00000000000..c671b516e75 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconArchive/index.tsx @@ -0,0 +1 @@ +export { default as IconArchive } from './IconArchive' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconArrowDown/IconArrowDown.tsx b/packages/ui/src/components/Icon/icons/IconArrowDown/IconArrowDown.tsx new file mode 100644 index 00000000000..78a0fa0ce83 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconArrowDown/IconArrowDown.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { ArrowDown } from 'react-feather' + import IconBase from './../../IconBase' + + function IconArrowDown(props: any) { + return + } + + export default IconArrowDown + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconArrowDown/index.tsx b/packages/ui/src/components/Icon/icons/IconArrowDown/index.tsx new file mode 100644 index 00000000000..5a7b55663b9 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconArrowDown/index.tsx @@ -0,0 +1 @@ +export { default as IconArrowDown } from './IconArrowDown' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconArrowDownCircle/IconArrowDownCircle.tsx b/packages/ui/src/components/Icon/icons/IconArrowDownCircle/IconArrowDownCircle.tsx new file mode 100644 index 00000000000..aa04d7c3b01 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconArrowDownCircle/IconArrowDownCircle.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { ArrowDownCircle } from 'react-feather' + import IconBase from './../../IconBase' + + function IconArrowDownCircle(props: any) { + return + } + + export default IconArrowDownCircle + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconArrowDownCircle/index.tsx b/packages/ui/src/components/Icon/icons/IconArrowDownCircle/index.tsx new file mode 100644 index 00000000000..56596a2bf99 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconArrowDownCircle/index.tsx @@ -0,0 +1 @@ +export { default as IconArrowDownCircle } from './IconArrowDownCircle' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconArrowDownLeft/IconArrowDownLeft.tsx b/packages/ui/src/components/Icon/icons/IconArrowDownLeft/IconArrowDownLeft.tsx new file mode 100644 index 00000000000..5447a0ec73d --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconArrowDownLeft/IconArrowDownLeft.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { ArrowDownLeft } from 'react-feather' + import IconBase from './../../IconBase' + + function IconArrowDownLeft(props: any) { + return + } + + export default IconArrowDownLeft + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconArrowDownLeft/index.tsx b/packages/ui/src/components/Icon/icons/IconArrowDownLeft/index.tsx new file mode 100644 index 00000000000..15ceed71a5d --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconArrowDownLeft/index.tsx @@ -0,0 +1 @@ +export { default as IconArrowDownLeft } from './IconArrowDownLeft' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconArrowDownRight/IconArrowDownRight.tsx b/packages/ui/src/components/Icon/icons/IconArrowDownRight/IconArrowDownRight.tsx new file mode 100644 index 00000000000..50dcef00c5e --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconArrowDownRight/IconArrowDownRight.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { ArrowDownRight } from 'react-feather' + import IconBase from './../../IconBase' + + function IconArrowDownRight(props: any) { + return + } + + export default IconArrowDownRight + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconArrowDownRight/index.tsx b/packages/ui/src/components/Icon/icons/IconArrowDownRight/index.tsx new file mode 100644 index 00000000000..4531008a8f6 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconArrowDownRight/index.tsx @@ -0,0 +1 @@ +export { default as IconArrowDownRight } from './IconArrowDownRight' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconArrowLeft/IconArrowLeft.tsx b/packages/ui/src/components/Icon/icons/IconArrowLeft/IconArrowLeft.tsx new file mode 100644 index 00000000000..730b60f5778 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconArrowLeft/IconArrowLeft.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { ArrowLeft } from 'react-feather' + import IconBase from './../../IconBase' + + function IconArrowLeft(props: any) { + return + } + + export default IconArrowLeft + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconArrowLeft/index.tsx b/packages/ui/src/components/Icon/icons/IconArrowLeft/index.tsx new file mode 100644 index 00000000000..cdbf2d5ab15 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconArrowLeft/index.tsx @@ -0,0 +1 @@ +export { default as IconArrowLeft } from './IconArrowLeft' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconArrowLeftCircle/IconArrowLeftCircle.tsx b/packages/ui/src/components/Icon/icons/IconArrowLeftCircle/IconArrowLeftCircle.tsx new file mode 100644 index 00000000000..d74241b9bf1 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconArrowLeftCircle/IconArrowLeftCircle.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { ArrowLeftCircle } from 'react-feather' + import IconBase from './../../IconBase' + + function IconArrowLeftCircle(props: any) { + return + } + + export default IconArrowLeftCircle + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconArrowLeftCircle/index.tsx b/packages/ui/src/components/Icon/icons/IconArrowLeftCircle/index.tsx new file mode 100644 index 00000000000..d5c6e247db5 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconArrowLeftCircle/index.tsx @@ -0,0 +1 @@ +export { default as IconArrowLeftCircle } from './IconArrowLeftCircle' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconArrowRight/IconArrowRight.tsx b/packages/ui/src/components/Icon/icons/IconArrowRight/IconArrowRight.tsx new file mode 100644 index 00000000000..ca98bdef6b1 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconArrowRight/IconArrowRight.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { ArrowRight } from 'react-feather' + import IconBase from './../../IconBase' + + function IconArrowRight(props: any) { + return + } + + export default IconArrowRight + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconArrowRight/index.tsx b/packages/ui/src/components/Icon/icons/IconArrowRight/index.tsx new file mode 100644 index 00000000000..f8f3b50ff9a --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconArrowRight/index.tsx @@ -0,0 +1 @@ +export { default as IconArrowRight } from './IconArrowRight' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconArrowRightCircle/IconArrowRightCircle.tsx b/packages/ui/src/components/Icon/icons/IconArrowRightCircle/IconArrowRightCircle.tsx new file mode 100644 index 00000000000..b97823e71b7 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconArrowRightCircle/IconArrowRightCircle.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { ArrowRightCircle } from 'react-feather' + import IconBase from './../../IconBase' + + function IconArrowRightCircle(props: any) { + return + } + + export default IconArrowRightCircle + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconArrowRightCircle/index.tsx b/packages/ui/src/components/Icon/icons/IconArrowRightCircle/index.tsx new file mode 100644 index 00000000000..3be96611901 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconArrowRightCircle/index.tsx @@ -0,0 +1 @@ +export { default as IconArrowRightCircle } from './IconArrowRightCircle' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconArrowUp/IconArrowUp.tsx b/packages/ui/src/components/Icon/icons/IconArrowUp/IconArrowUp.tsx new file mode 100644 index 00000000000..f32de2ffa70 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconArrowUp/IconArrowUp.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { ArrowUp } from 'react-feather' + import IconBase from './../../IconBase' + + function IconArrowUp(props: any) { + return + } + + export default IconArrowUp + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconArrowUp/index.tsx b/packages/ui/src/components/Icon/icons/IconArrowUp/index.tsx new file mode 100644 index 00000000000..5736280f36f --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconArrowUp/index.tsx @@ -0,0 +1 @@ +export { default as IconArrowUp } from './IconArrowUp' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconArrowUpCircle/IconArrowUpCircle.tsx b/packages/ui/src/components/Icon/icons/IconArrowUpCircle/IconArrowUpCircle.tsx new file mode 100644 index 00000000000..3b26bf54b9f --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconArrowUpCircle/IconArrowUpCircle.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { ArrowUpCircle } from 'react-feather' + import IconBase from './../../IconBase' + + function IconArrowUpCircle(props: any) { + return + } + + export default IconArrowUpCircle + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconArrowUpCircle/index.tsx b/packages/ui/src/components/Icon/icons/IconArrowUpCircle/index.tsx new file mode 100644 index 00000000000..6922ff119e4 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconArrowUpCircle/index.tsx @@ -0,0 +1 @@ +export { default as IconArrowUpCircle } from './IconArrowUpCircle' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconArrowUpLeft/IconArrowUpLeft.tsx b/packages/ui/src/components/Icon/icons/IconArrowUpLeft/IconArrowUpLeft.tsx new file mode 100644 index 00000000000..3090b9b6957 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconArrowUpLeft/IconArrowUpLeft.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { ArrowUpLeft } from 'react-feather' + import IconBase from './../../IconBase' + + function IconArrowUpLeft(props: any) { + return + } + + export default IconArrowUpLeft + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconArrowUpLeft/index.tsx b/packages/ui/src/components/Icon/icons/IconArrowUpLeft/index.tsx new file mode 100644 index 00000000000..7ae1176227c --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconArrowUpLeft/index.tsx @@ -0,0 +1 @@ +export { default as IconArrowUpLeft } from './IconArrowUpLeft' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconArrowUpRight/IconArrowUpRight.tsx b/packages/ui/src/components/Icon/icons/IconArrowUpRight/IconArrowUpRight.tsx new file mode 100644 index 00000000000..54ad83386cb --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconArrowUpRight/IconArrowUpRight.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { ArrowUpRight } from 'react-feather' + import IconBase from './../../IconBase' + + function IconArrowUpRight(props: any) { + return + } + + export default IconArrowUpRight + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconArrowUpRight/index.tsx b/packages/ui/src/components/Icon/icons/IconArrowUpRight/index.tsx new file mode 100644 index 00000000000..f6c7570d1e5 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconArrowUpRight/index.tsx @@ -0,0 +1 @@ +export { default as IconArrowUpRight } from './IconArrowUpRight' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconAtSign/IconAtSign.tsx b/packages/ui/src/components/Icon/icons/IconAtSign/IconAtSign.tsx new file mode 100644 index 00000000000..ddada82370b --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconAtSign/IconAtSign.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { AtSign } from 'react-feather' + import IconBase from './../../IconBase' + + function IconAtSign(props: any) { + return + } + + export default IconAtSign + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconAtSign/index.tsx b/packages/ui/src/components/Icon/icons/IconAtSign/index.tsx new file mode 100644 index 00000000000..fab6a7738e3 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconAtSign/index.tsx @@ -0,0 +1 @@ +export { default as IconAtSign } from './IconAtSign' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconAward/IconAward.tsx b/packages/ui/src/components/Icon/icons/IconAward/IconAward.tsx new file mode 100644 index 00000000000..e6ed8f1d551 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconAward/IconAward.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Award } from 'react-feather' + import IconBase from './../../IconBase' + + function IconAward(props: any) { + return + } + + export default IconAward + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconAward/index.tsx b/packages/ui/src/components/Icon/icons/IconAward/index.tsx new file mode 100644 index 00000000000..41699a41288 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconAward/index.tsx @@ -0,0 +1 @@ +export { default as IconAward } from './IconAward' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconBarChart/IconBarChart.tsx b/packages/ui/src/components/Icon/icons/IconBarChart/IconBarChart.tsx new file mode 100644 index 00000000000..15e1ef30aec --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconBarChart/IconBarChart.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { BarChart } from 'react-feather' + import IconBase from './../../IconBase' + + function IconBarChart(props: any) { + return + } + + export default IconBarChart + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconBarChart/index.tsx b/packages/ui/src/components/Icon/icons/IconBarChart/index.tsx new file mode 100644 index 00000000000..62cb14dee1d --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconBarChart/index.tsx @@ -0,0 +1 @@ +export { default as IconBarChart } from './IconBarChart' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconBarChart2/IconBarChart2.tsx b/packages/ui/src/components/Icon/icons/IconBarChart2/IconBarChart2.tsx new file mode 100644 index 00000000000..c69eab37956 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconBarChart2/IconBarChart2.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { BarChart2 } from 'react-feather' + import IconBase from './../../IconBase' + + function IconBarChart2(props: any) { + return + } + + export default IconBarChart2 + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconBarChart2/index.tsx b/packages/ui/src/components/Icon/icons/IconBarChart2/index.tsx new file mode 100644 index 00000000000..9e7aa1ad983 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconBarChart2/index.tsx @@ -0,0 +1 @@ +export { default as IconBarChart2 } from './IconBarChart2' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconBattery/IconBattery.tsx b/packages/ui/src/components/Icon/icons/IconBattery/IconBattery.tsx new file mode 100644 index 00000000000..4e2d94086d3 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconBattery/IconBattery.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Battery } from 'react-feather' + import IconBase from './../../IconBase' + + function IconBattery(props: any) { + return + } + + export default IconBattery + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconBattery/index.tsx b/packages/ui/src/components/Icon/icons/IconBattery/index.tsx new file mode 100644 index 00000000000..bddb3488372 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconBattery/index.tsx @@ -0,0 +1 @@ +export { default as IconBattery } from './IconBattery' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconBatteryCharging/IconBatteryCharging.tsx b/packages/ui/src/components/Icon/icons/IconBatteryCharging/IconBatteryCharging.tsx new file mode 100644 index 00000000000..75d5e1104a1 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconBatteryCharging/IconBatteryCharging.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { BatteryCharging } from 'react-feather' + import IconBase from './../../IconBase' + + function IconBatteryCharging(props: any) { + return + } + + export default IconBatteryCharging + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconBatteryCharging/index.tsx b/packages/ui/src/components/Icon/icons/IconBatteryCharging/index.tsx new file mode 100644 index 00000000000..947c91fe3da --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconBatteryCharging/index.tsx @@ -0,0 +1 @@ +export { default as IconBatteryCharging } from './IconBatteryCharging' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconBell/IconBell.tsx b/packages/ui/src/components/Icon/icons/IconBell/IconBell.tsx new file mode 100644 index 00000000000..c8cb4f26aba --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconBell/IconBell.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Bell } from 'react-feather' + import IconBase from './../../IconBase' + + function IconBell(props: any) { + return + } + + export default IconBell + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconBell/index.tsx b/packages/ui/src/components/Icon/icons/IconBell/index.tsx new file mode 100644 index 00000000000..7c369f55502 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconBell/index.tsx @@ -0,0 +1 @@ +export { default as IconBell } from './IconBell' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconBellOff/IconBellOff.tsx b/packages/ui/src/components/Icon/icons/IconBellOff/IconBellOff.tsx new file mode 100644 index 00000000000..9f958610465 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconBellOff/IconBellOff.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { BellOff } from 'react-feather' + import IconBase from './../../IconBase' + + function IconBellOff(props: any) { + return + } + + export default IconBellOff + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconBellOff/index.tsx b/packages/ui/src/components/Icon/icons/IconBellOff/index.tsx new file mode 100644 index 00000000000..b08667dffd2 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconBellOff/index.tsx @@ -0,0 +1 @@ +export { default as IconBellOff } from './IconBellOff' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconBluetooth/IconBluetooth.tsx b/packages/ui/src/components/Icon/icons/IconBluetooth/IconBluetooth.tsx new file mode 100644 index 00000000000..e801f468c2d --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconBluetooth/IconBluetooth.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Bluetooth } from 'react-feather' + import IconBase from './../../IconBase' + + function IconBluetooth(props: any) { + return + } + + export default IconBluetooth + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconBluetooth/index.tsx b/packages/ui/src/components/Icon/icons/IconBluetooth/index.tsx new file mode 100644 index 00000000000..23c1fd5a4ce --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconBluetooth/index.tsx @@ -0,0 +1 @@ +export { default as IconBluetooth } from './IconBluetooth' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconBold/IconBold.tsx b/packages/ui/src/components/Icon/icons/IconBold/IconBold.tsx new file mode 100644 index 00000000000..a3c15c5a8a0 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconBold/IconBold.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Bold } from 'react-feather' + import IconBase from './../../IconBase' + + function IconBold(props: any) { + return + } + + export default IconBold + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconBold/index.tsx b/packages/ui/src/components/Icon/icons/IconBold/index.tsx new file mode 100644 index 00000000000..7978a95733b --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconBold/index.tsx @@ -0,0 +1 @@ +export { default as IconBold } from './IconBold' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconBook/IconBook.tsx b/packages/ui/src/components/Icon/icons/IconBook/IconBook.tsx new file mode 100644 index 00000000000..f8d975a7454 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconBook/IconBook.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Book } from 'react-feather' + import IconBase from './../../IconBase' + + function IconBook(props: any) { + return + } + + export default IconBook + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconBook/index.tsx b/packages/ui/src/components/Icon/icons/IconBook/index.tsx new file mode 100644 index 00000000000..e028c5f5dc9 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconBook/index.tsx @@ -0,0 +1 @@ +export { default as IconBook } from './IconBook' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconBookOpen/IconBookOpen.tsx b/packages/ui/src/components/Icon/icons/IconBookOpen/IconBookOpen.tsx new file mode 100644 index 00000000000..73e5e9da8bb --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconBookOpen/IconBookOpen.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { BookOpen } from 'react-feather' + import IconBase from './../../IconBase' + + function IconBookOpen(props: any) { + return + } + + export default IconBookOpen + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconBookOpen/index.tsx b/packages/ui/src/components/Icon/icons/IconBookOpen/index.tsx new file mode 100644 index 00000000000..cdccfa708a4 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconBookOpen/index.tsx @@ -0,0 +1 @@ +export { default as IconBookOpen } from './IconBookOpen' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconBookmark/IconBookmark.tsx b/packages/ui/src/components/Icon/icons/IconBookmark/IconBookmark.tsx new file mode 100644 index 00000000000..cd833a037dc --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconBookmark/IconBookmark.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Bookmark } from 'react-feather' + import IconBase from './../../IconBase' + + function IconBookmark(props: any) { + return + } + + export default IconBookmark + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconBookmark/index.tsx b/packages/ui/src/components/Icon/icons/IconBookmark/index.tsx new file mode 100644 index 00000000000..8ca61a74f49 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconBookmark/index.tsx @@ -0,0 +1 @@ +export { default as IconBookmark } from './IconBookmark' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconBox/IconBox.tsx b/packages/ui/src/components/Icon/icons/IconBox/IconBox.tsx new file mode 100644 index 00000000000..c54c7cd33ce --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconBox/IconBox.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Box } from 'react-feather' + import IconBase from './../../IconBase' + + function IconBox(props: any) { + return + } + + export default IconBox + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconBox/index.tsx b/packages/ui/src/components/Icon/icons/IconBox/index.tsx new file mode 100644 index 00000000000..d0a11faa8f5 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconBox/index.tsx @@ -0,0 +1 @@ +export { default as IconBox } from './IconBox' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconBriefcase/IconBriefcase.tsx b/packages/ui/src/components/Icon/icons/IconBriefcase/IconBriefcase.tsx new file mode 100644 index 00000000000..f6704ecd765 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconBriefcase/IconBriefcase.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Briefcase } from 'react-feather' + import IconBase from './../../IconBase' + + function IconBriefcase(props: any) { + return + } + + export default IconBriefcase + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconBriefcase/index.tsx b/packages/ui/src/components/Icon/icons/IconBriefcase/index.tsx new file mode 100644 index 00000000000..d6e7d702458 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconBriefcase/index.tsx @@ -0,0 +1 @@ +export { default as IconBriefcase } from './IconBriefcase' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconCalendar/IconCalendar.tsx b/packages/ui/src/components/Icon/icons/IconCalendar/IconCalendar.tsx new file mode 100644 index 00000000000..2df1d8eae7e --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconCalendar/IconCalendar.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Calendar } from 'react-feather' + import IconBase from './../../IconBase' + + function IconCalendar(props: any) { + return + } + + export default IconCalendar + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconCalendar/index.tsx b/packages/ui/src/components/Icon/icons/IconCalendar/index.tsx new file mode 100644 index 00000000000..9bb041c1e00 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconCalendar/index.tsx @@ -0,0 +1 @@ +export { default as IconCalendar } from './IconCalendar' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconCamera/IconCamera.tsx b/packages/ui/src/components/Icon/icons/IconCamera/IconCamera.tsx new file mode 100644 index 00000000000..b5c38b3b138 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconCamera/IconCamera.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Camera } from 'react-feather' + import IconBase from './../../IconBase' + + function IconCamera(props: any) { + return + } + + export default IconCamera + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconCamera/index.tsx b/packages/ui/src/components/Icon/icons/IconCamera/index.tsx new file mode 100644 index 00000000000..90bee0859c6 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconCamera/index.tsx @@ -0,0 +1 @@ +export { default as IconCamera } from './IconCamera' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconCameraOff/IconCameraOff.tsx b/packages/ui/src/components/Icon/icons/IconCameraOff/IconCameraOff.tsx new file mode 100644 index 00000000000..73781b2e447 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconCameraOff/IconCameraOff.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { CameraOff } from 'react-feather' + import IconBase from './../../IconBase' + + function IconCameraOff(props: any) { + return + } + + export default IconCameraOff + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconCameraOff/index.tsx b/packages/ui/src/components/Icon/icons/IconCameraOff/index.tsx new file mode 100644 index 00000000000..03ae3dee103 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconCameraOff/index.tsx @@ -0,0 +1 @@ +export { default as IconCameraOff } from './IconCameraOff' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconCast/IconCast.tsx b/packages/ui/src/components/Icon/icons/IconCast/IconCast.tsx new file mode 100644 index 00000000000..a102ba78414 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconCast/IconCast.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Cast } from 'react-feather' + import IconBase from './../../IconBase' + + function IconCast(props: any) { + return + } + + export default IconCast + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconCast/index.tsx b/packages/ui/src/components/Icon/icons/IconCast/index.tsx new file mode 100644 index 00000000000..8413f130ab9 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconCast/index.tsx @@ -0,0 +1 @@ +export { default as IconCast } from './IconCast' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconCheck/IconCheck.tsx b/packages/ui/src/components/Icon/icons/IconCheck/IconCheck.tsx new file mode 100644 index 00000000000..4c032a64522 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconCheck/IconCheck.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Check } from 'react-feather' + import IconBase from './../../IconBase' + + function IconCheck(props: any) { + return + } + + export default IconCheck + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconCheck/index.tsx b/packages/ui/src/components/Icon/icons/IconCheck/index.tsx new file mode 100644 index 00000000000..1ca606e15d7 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconCheck/index.tsx @@ -0,0 +1 @@ +export { default as IconCheck } from './IconCheck' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconCheckCircle/IconCheckCircle.tsx b/packages/ui/src/components/Icon/icons/IconCheckCircle/IconCheckCircle.tsx new file mode 100644 index 00000000000..141036ef661 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconCheckCircle/IconCheckCircle.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { CheckCircle } from 'react-feather' + import IconBase from './../../IconBase' + + function IconCheckCircle(props: any) { + return + } + + export default IconCheckCircle + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconCheckCircle/index.tsx b/packages/ui/src/components/Icon/icons/IconCheckCircle/index.tsx new file mode 100644 index 00000000000..9f8e17b95cb --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconCheckCircle/index.tsx @@ -0,0 +1 @@ +export { default as IconCheckCircle } from './IconCheckCircle' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconCheckSquare/IconCheckSquare.tsx b/packages/ui/src/components/Icon/icons/IconCheckSquare/IconCheckSquare.tsx new file mode 100644 index 00000000000..42cc1de4018 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconCheckSquare/IconCheckSquare.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { CheckSquare } from 'react-feather' + import IconBase from './../../IconBase' + + function IconCheckSquare(props: any) { + return + } + + export default IconCheckSquare + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconCheckSquare/index.tsx b/packages/ui/src/components/Icon/icons/IconCheckSquare/index.tsx new file mode 100644 index 00000000000..d40098c0b3d --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconCheckSquare/index.tsx @@ -0,0 +1 @@ +export { default as IconCheckSquare } from './IconCheckSquare' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconChevronDown/IconChevronDown.tsx b/packages/ui/src/components/Icon/icons/IconChevronDown/IconChevronDown.tsx new file mode 100644 index 00000000000..e70f2fe349d --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconChevronDown/IconChevronDown.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { ChevronDown } from 'react-feather' + import IconBase from './../../IconBase' + + function IconChevronDown(props: any) { + return + } + + export default IconChevronDown + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconChevronDown/index.tsx b/packages/ui/src/components/Icon/icons/IconChevronDown/index.tsx new file mode 100644 index 00000000000..2326858c139 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconChevronDown/index.tsx @@ -0,0 +1 @@ +export { default as IconChevronDown } from './IconChevronDown' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconChevronLeft/IconChevronLeft.tsx b/packages/ui/src/components/Icon/icons/IconChevronLeft/IconChevronLeft.tsx new file mode 100644 index 00000000000..42a7896cfbe --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconChevronLeft/IconChevronLeft.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { ChevronLeft } from 'react-feather' + import IconBase from './../../IconBase' + + function IconChevronLeft(props: any) { + return + } + + export default IconChevronLeft + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconChevronLeft/index.tsx b/packages/ui/src/components/Icon/icons/IconChevronLeft/index.tsx new file mode 100644 index 00000000000..a9c2036a7c6 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconChevronLeft/index.tsx @@ -0,0 +1 @@ +export { default as IconChevronLeft } from './IconChevronLeft' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconChevronRight/IconChevronRight.tsx b/packages/ui/src/components/Icon/icons/IconChevronRight/IconChevronRight.tsx new file mode 100644 index 00000000000..c824e625baf --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconChevronRight/IconChevronRight.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { ChevronRight } from 'react-feather' + import IconBase from './../../IconBase' + + function IconChevronRight(props: any) { + return + } + + export default IconChevronRight + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconChevronRight/index.tsx b/packages/ui/src/components/Icon/icons/IconChevronRight/index.tsx new file mode 100644 index 00000000000..587b5dc81a0 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconChevronRight/index.tsx @@ -0,0 +1 @@ +export { default as IconChevronRight } from './IconChevronRight' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconChevronUp/IconChevronUp.tsx b/packages/ui/src/components/Icon/icons/IconChevronUp/IconChevronUp.tsx new file mode 100644 index 00000000000..8fa865da009 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconChevronUp/IconChevronUp.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { ChevronUp } from 'react-feather' + import IconBase from './../../IconBase' + + function IconChevronUp(props: any) { + return + } + + export default IconChevronUp + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconChevronUp/index.tsx b/packages/ui/src/components/Icon/icons/IconChevronUp/index.tsx new file mode 100644 index 00000000000..4ac36b87f0d --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconChevronUp/index.tsx @@ -0,0 +1 @@ +export { default as IconChevronUp } from './IconChevronUp' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconChevronsDown/IconChevronsDown.tsx b/packages/ui/src/components/Icon/icons/IconChevronsDown/IconChevronsDown.tsx new file mode 100644 index 00000000000..bd6af1c12ee --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconChevronsDown/IconChevronsDown.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { ChevronsDown } from 'react-feather' + import IconBase from './../../IconBase' + + function IconChevronsDown(props: any) { + return + } + + export default IconChevronsDown + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconChevronsDown/index.tsx b/packages/ui/src/components/Icon/icons/IconChevronsDown/index.tsx new file mode 100644 index 00000000000..d3d88fea723 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconChevronsDown/index.tsx @@ -0,0 +1 @@ +export { default as IconChevronsDown } from './IconChevronsDown' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconChevronsLeft/IconChevronsLeft.tsx b/packages/ui/src/components/Icon/icons/IconChevronsLeft/IconChevronsLeft.tsx new file mode 100644 index 00000000000..730ab00a885 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconChevronsLeft/IconChevronsLeft.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { ChevronsLeft } from 'react-feather' + import IconBase from './../../IconBase' + + function IconChevronsLeft(props: any) { + return + } + + export default IconChevronsLeft + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconChevronsLeft/index.tsx b/packages/ui/src/components/Icon/icons/IconChevronsLeft/index.tsx new file mode 100644 index 00000000000..a42d1954938 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconChevronsLeft/index.tsx @@ -0,0 +1 @@ +export { default as IconChevronsLeft } from './IconChevronsLeft' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconChevronsRight/IconChevronsRight.tsx b/packages/ui/src/components/Icon/icons/IconChevronsRight/IconChevronsRight.tsx new file mode 100644 index 00000000000..1c8c1327be4 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconChevronsRight/IconChevronsRight.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { ChevronsRight } from 'react-feather' + import IconBase from './../../IconBase' + + function IconChevronsRight(props: any) { + return + } + + export default IconChevronsRight + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconChevronsRight/index.tsx b/packages/ui/src/components/Icon/icons/IconChevronsRight/index.tsx new file mode 100644 index 00000000000..13a7ed89c3d --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconChevronsRight/index.tsx @@ -0,0 +1 @@ +export { default as IconChevronsRight } from './IconChevronsRight' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconChevronsUp/IconChevronsUp.tsx b/packages/ui/src/components/Icon/icons/IconChevronsUp/IconChevronsUp.tsx new file mode 100644 index 00000000000..4be6f08bc60 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconChevronsUp/IconChevronsUp.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { ChevronsUp } from 'react-feather' + import IconBase from './../../IconBase' + + function IconChevronsUp(props: any) { + return + } + + export default IconChevronsUp + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconChevronsUp/index.tsx b/packages/ui/src/components/Icon/icons/IconChevronsUp/index.tsx new file mode 100644 index 00000000000..72cb4b96844 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconChevronsUp/index.tsx @@ -0,0 +1 @@ +export { default as IconChevronsUp } from './IconChevronsUp' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconChrome/IconChrome.tsx b/packages/ui/src/components/Icon/icons/IconChrome/IconChrome.tsx new file mode 100644 index 00000000000..b86b1eac340 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconChrome/IconChrome.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Chrome } from 'react-feather' + import IconBase from './../../IconBase' + + function IconChrome(props: any) { + return + } + + export default IconChrome + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconChrome/index.tsx b/packages/ui/src/components/Icon/icons/IconChrome/index.tsx new file mode 100644 index 00000000000..e124b1194dc --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconChrome/index.tsx @@ -0,0 +1 @@ +export { default as IconChrome } from './IconChrome' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconCircle/IconCircle.tsx b/packages/ui/src/components/Icon/icons/IconCircle/IconCircle.tsx new file mode 100644 index 00000000000..f4c0e528358 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconCircle/IconCircle.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Circle } from 'react-feather' + import IconBase from './../../IconBase' + + function IconCircle(props: any) { + return + } + + export default IconCircle + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconCircle/index.tsx b/packages/ui/src/components/Icon/icons/IconCircle/index.tsx new file mode 100644 index 00000000000..2f1eee6423b --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconCircle/index.tsx @@ -0,0 +1 @@ +export { default as IconCircle } from './IconCircle' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconClipboard/IconClipboard.tsx b/packages/ui/src/components/Icon/icons/IconClipboard/IconClipboard.tsx new file mode 100644 index 00000000000..d52e2386b73 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconClipboard/IconClipboard.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Clipboard } from 'react-feather' + import IconBase from './../../IconBase' + + function IconClipboard(props: any) { + return + } + + export default IconClipboard + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconClipboard/index.tsx b/packages/ui/src/components/Icon/icons/IconClipboard/index.tsx new file mode 100644 index 00000000000..cb71ec1c9e1 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconClipboard/index.tsx @@ -0,0 +1 @@ +export { default as IconClipboard } from './IconClipboard' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconClock/IconClock.tsx b/packages/ui/src/components/Icon/icons/IconClock/IconClock.tsx new file mode 100644 index 00000000000..5f80f434706 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconClock/IconClock.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Clock } from 'react-feather' + import IconBase from './../../IconBase' + + function IconClock(props: any) { + return + } + + export default IconClock + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconClock/index.tsx b/packages/ui/src/components/Icon/icons/IconClock/index.tsx new file mode 100644 index 00000000000..9b634163922 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconClock/index.tsx @@ -0,0 +1 @@ +export { default as IconClock } from './IconClock' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconCloud/IconCloud.tsx b/packages/ui/src/components/Icon/icons/IconCloud/IconCloud.tsx new file mode 100644 index 00000000000..c296d1ccff4 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconCloud/IconCloud.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Cloud } from 'react-feather' + import IconBase from './../../IconBase' + + function IconCloud(props: any) { + return + } + + export default IconCloud + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconCloud/index.tsx b/packages/ui/src/components/Icon/icons/IconCloud/index.tsx new file mode 100644 index 00000000000..d55f15ba066 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconCloud/index.tsx @@ -0,0 +1 @@ +export { default as IconCloud } from './IconCloud' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconCloudDrizzle/IconCloudDrizzle.tsx b/packages/ui/src/components/Icon/icons/IconCloudDrizzle/IconCloudDrizzle.tsx new file mode 100644 index 00000000000..1ff0fbbc6b1 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconCloudDrizzle/IconCloudDrizzle.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { CloudDrizzle } from 'react-feather' + import IconBase from './../../IconBase' + + function IconCloudDrizzle(props: any) { + return + } + + export default IconCloudDrizzle + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconCloudDrizzle/index.tsx b/packages/ui/src/components/Icon/icons/IconCloudDrizzle/index.tsx new file mode 100644 index 00000000000..ef17d936f0d --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconCloudDrizzle/index.tsx @@ -0,0 +1 @@ +export { default as IconCloudDrizzle } from './IconCloudDrizzle' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconCloudLightning/IconCloudLightning.tsx b/packages/ui/src/components/Icon/icons/IconCloudLightning/IconCloudLightning.tsx new file mode 100644 index 00000000000..06e3596b504 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconCloudLightning/IconCloudLightning.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { CloudLightning } from 'react-feather' + import IconBase from './../../IconBase' + + function IconCloudLightning(props: any) { + return + } + + export default IconCloudLightning + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconCloudLightning/index.tsx b/packages/ui/src/components/Icon/icons/IconCloudLightning/index.tsx new file mode 100644 index 00000000000..ca7f9404f77 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconCloudLightning/index.tsx @@ -0,0 +1 @@ +export { default as IconCloudLightning } from './IconCloudLightning' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconCloudOff/IconCloudOff.tsx b/packages/ui/src/components/Icon/icons/IconCloudOff/IconCloudOff.tsx new file mode 100644 index 00000000000..0a2fdb56f0d --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconCloudOff/IconCloudOff.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { CloudOff } from 'react-feather' + import IconBase from './../../IconBase' + + function IconCloudOff(props: any) { + return + } + + export default IconCloudOff + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconCloudOff/index.tsx b/packages/ui/src/components/Icon/icons/IconCloudOff/index.tsx new file mode 100644 index 00000000000..7cd6e346ae9 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconCloudOff/index.tsx @@ -0,0 +1 @@ +export { default as IconCloudOff } from './IconCloudOff' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconCloudRain/IconCloudRain.tsx b/packages/ui/src/components/Icon/icons/IconCloudRain/IconCloudRain.tsx new file mode 100644 index 00000000000..944fbe87209 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconCloudRain/IconCloudRain.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { CloudRain } from 'react-feather' + import IconBase from './../../IconBase' + + function IconCloudRain(props: any) { + return + } + + export default IconCloudRain + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconCloudRain/index.tsx b/packages/ui/src/components/Icon/icons/IconCloudRain/index.tsx new file mode 100644 index 00000000000..bd855399854 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconCloudRain/index.tsx @@ -0,0 +1 @@ +export { default as IconCloudRain } from './IconCloudRain' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconCloudSnow/IconCloudSnow.tsx b/packages/ui/src/components/Icon/icons/IconCloudSnow/IconCloudSnow.tsx new file mode 100644 index 00000000000..9d554d8eb0b --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconCloudSnow/IconCloudSnow.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { CloudSnow } from 'react-feather' + import IconBase from './../../IconBase' + + function IconCloudSnow(props: any) { + return + } + + export default IconCloudSnow + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconCloudSnow/index.tsx b/packages/ui/src/components/Icon/icons/IconCloudSnow/index.tsx new file mode 100644 index 00000000000..1bab3f5c238 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconCloudSnow/index.tsx @@ -0,0 +1 @@ +export { default as IconCloudSnow } from './IconCloudSnow' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconCode/IconCode.tsx b/packages/ui/src/components/Icon/icons/IconCode/IconCode.tsx new file mode 100644 index 00000000000..809e8b5efae --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconCode/IconCode.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Code } from 'react-feather' + import IconBase from './../../IconBase' + + function IconCode(props: any) { + return + } + + export default IconCode + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconCode/index.tsx b/packages/ui/src/components/Icon/icons/IconCode/index.tsx new file mode 100644 index 00000000000..1c47991a0ff --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconCode/index.tsx @@ -0,0 +1 @@ +export { default as IconCode } from './IconCode' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconCodepen/IconCodepen.tsx b/packages/ui/src/components/Icon/icons/IconCodepen/IconCodepen.tsx new file mode 100644 index 00000000000..31fbe1f4c7d --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconCodepen/IconCodepen.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Codepen } from 'react-feather' + import IconBase from './../../IconBase' + + function IconCodepen(props: any) { + return + } + + export default IconCodepen + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconCodepen/index.tsx b/packages/ui/src/components/Icon/icons/IconCodepen/index.tsx new file mode 100644 index 00000000000..5434f72c197 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconCodepen/index.tsx @@ -0,0 +1 @@ +export { default as IconCodepen } from './IconCodepen' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconCodesandbox/IconCodesandbox.tsx b/packages/ui/src/components/Icon/icons/IconCodesandbox/IconCodesandbox.tsx new file mode 100644 index 00000000000..2f3ed94e5b4 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconCodesandbox/IconCodesandbox.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Codesandbox } from 'react-feather' + import IconBase from './../../IconBase' + + function IconCodesandbox(props: any) { + return + } + + export default IconCodesandbox + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconCodesandbox/index.tsx b/packages/ui/src/components/Icon/icons/IconCodesandbox/index.tsx new file mode 100644 index 00000000000..d75d38f13dd --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconCodesandbox/index.tsx @@ -0,0 +1 @@ +export { default as IconCodesandbox } from './IconCodesandbox' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconCoffee/IconCoffee.tsx b/packages/ui/src/components/Icon/icons/IconCoffee/IconCoffee.tsx new file mode 100644 index 00000000000..03dcc1d3cf6 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconCoffee/IconCoffee.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Coffee } from 'react-feather' + import IconBase from './../../IconBase' + + function IconCoffee(props: any) { + return + } + + export default IconCoffee + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconCoffee/index.tsx b/packages/ui/src/components/Icon/icons/IconCoffee/index.tsx new file mode 100644 index 00000000000..53070e84581 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconCoffee/index.tsx @@ -0,0 +1 @@ +export { default as IconCoffee } from './IconCoffee' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconColumns/IconColumns.tsx b/packages/ui/src/components/Icon/icons/IconColumns/IconColumns.tsx new file mode 100644 index 00000000000..2e8673d6aa7 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconColumns/IconColumns.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Columns } from 'react-feather' + import IconBase from './../../IconBase' + + function IconColumns(props: any) { + return + } + + export default IconColumns + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconColumns/index.tsx b/packages/ui/src/components/Icon/icons/IconColumns/index.tsx new file mode 100644 index 00000000000..562404ba685 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconColumns/index.tsx @@ -0,0 +1 @@ +export { default as IconColumns } from './IconColumns' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconCommand/IconCommand.tsx b/packages/ui/src/components/Icon/icons/IconCommand/IconCommand.tsx new file mode 100644 index 00000000000..e083db5f7ae --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconCommand/IconCommand.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Command } from 'react-feather' + import IconBase from './../../IconBase' + + function IconCommand(props: any) { + return + } + + export default IconCommand + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconCommand/index.tsx b/packages/ui/src/components/Icon/icons/IconCommand/index.tsx new file mode 100644 index 00000000000..525b41a21ab --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconCommand/index.tsx @@ -0,0 +1 @@ +export { default as IconCommand } from './IconCommand' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconCompass/IconCompass.tsx b/packages/ui/src/components/Icon/icons/IconCompass/IconCompass.tsx new file mode 100644 index 00000000000..e727ff71f11 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconCompass/IconCompass.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Compass } from 'react-feather' + import IconBase from './../../IconBase' + + function IconCompass(props: any) { + return + } + + export default IconCompass + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconCompass/index.tsx b/packages/ui/src/components/Icon/icons/IconCompass/index.tsx new file mode 100644 index 00000000000..1eff658929c --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconCompass/index.tsx @@ -0,0 +1 @@ +export { default as IconCompass } from './IconCompass' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconCopy/IconCopy.tsx b/packages/ui/src/components/Icon/icons/IconCopy/IconCopy.tsx new file mode 100644 index 00000000000..7dbd5f6e5ee --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconCopy/IconCopy.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Copy } from 'react-feather' + import IconBase from './../../IconBase' + + function IconCopy(props: any) { + return + } + + export default IconCopy + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconCopy/index.tsx b/packages/ui/src/components/Icon/icons/IconCopy/index.tsx new file mode 100644 index 00000000000..c868a5eee82 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconCopy/index.tsx @@ -0,0 +1 @@ +export { default as IconCopy } from './IconCopy' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconCornerDownLeft/IconCornerDownLeft.tsx b/packages/ui/src/components/Icon/icons/IconCornerDownLeft/IconCornerDownLeft.tsx new file mode 100644 index 00000000000..53944162399 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconCornerDownLeft/IconCornerDownLeft.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { CornerDownLeft } from 'react-feather' + import IconBase from './../../IconBase' + + function IconCornerDownLeft(props: any) { + return + } + + export default IconCornerDownLeft + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconCornerDownLeft/index.tsx b/packages/ui/src/components/Icon/icons/IconCornerDownLeft/index.tsx new file mode 100644 index 00000000000..477f9471474 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconCornerDownLeft/index.tsx @@ -0,0 +1 @@ +export { default as IconCornerDownLeft } from './IconCornerDownLeft' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconCornerDownRight/IconCornerDownRight.tsx b/packages/ui/src/components/Icon/icons/IconCornerDownRight/IconCornerDownRight.tsx new file mode 100644 index 00000000000..b2fb1391c39 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconCornerDownRight/IconCornerDownRight.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { CornerDownRight } from 'react-feather' + import IconBase from './../../IconBase' + + function IconCornerDownRight(props: any) { + return + } + + export default IconCornerDownRight + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconCornerDownRight/index.tsx b/packages/ui/src/components/Icon/icons/IconCornerDownRight/index.tsx new file mode 100644 index 00000000000..32f99c402ff --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconCornerDownRight/index.tsx @@ -0,0 +1 @@ +export { default as IconCornerDownRight } from './IconCornerDownRight' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconCornerLeftDown/IconCornerLeftDown.tsx b/packages/ui/src/components/Icon/icons/IconCornerLeftDown/IconCornerLeftDown.tsx new file mode 100644 index 00000000000..d97ef15970f --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconCornerLeftDown/IconCornerLeftDown.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { CornerLeftDown } from 'react-feather' + import IconBase from './../../IconBase' + + function IconCornerLeftDown(props: any) { + return + } + + export default IconCornerLeftDown + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconCornerLeftDown/index.tsx b/packages/ui/src/components/Icon/icons/IconCornerLeftDown/index.tsx new file mode 100644 index 00000000000..f9ef7b4bba7 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconCornerLeftDown/index.tsx @@ -0,0 +1 @@ +export { default as IconCornerLeftDown } from './IconCornerLeftDown' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconCornerLeftUp/IconCornerLeftUp.tsx b/packages/ui/src/components/Icon/icons/IconCornerLeftUp/IconCornerLeftUp.tsx new file mode 100644 index 00000000000..476415c1a5a --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconCornerLeftUp/IconCornerLeftUp.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { CornerLeftUp } from 'react-feather' + import IconBase from './../../IconBase' + + function IconCornerLeftUp(props: any) { + return + } + + export default IconCornerLeftUp + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconCornerLeftUp/index.tsx b/packages/ui/src/components/Icon/icons/IconCornerLeftUp/index.tsx new file mode 100644 index 00000000000..b884409f0f4 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconCornerLeftUp/index.tsx @@ -0,0 +1 @@ +export { default as IconCornerLeftUp } from './IconCornerLeftUp' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconCornerRightDown/IconCornerRightDown.tsx b/packages/ui/src/components/Icon/icons/IconCornerRightDown/IconCornerRightDown.tsx new file mode 100644 index 00000000000..d0bf547fd1b --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconCornerRightDown/IconCornerRightDown.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { CornerRightDown } from 'react-feather' + import IconBase from './../../IconBase' + + function IconCornerRightDown(props: any) { + return + } + + export default IconCornerRightDown + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconCornerRightDown/index.tsx b/packages/ui/src/components/Icon/icons/IconCornerRightDown/index.tsx new file mode 100644 index 00000000000..738a9c2eecb --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconCornerRightDown/index.tsx @@ -0,0 +1 @@ +export { default as IconCornerRightDown } from './IconCornerRightDown' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconCornerRightUp/IconCornerRightUp.tsx b/packages/ui/src/components/Icon/icons/IconCornerRightUp/IconCornerRightUp.tsx new file mode 100644 index 00000000000..b0b902b3618 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconCornerRightUp/IconCornerRightUp.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { CornerRightUp } from 'react-feather' + import IconBase from './../../IconBase' + + function IconCornerRightUp(props: any) { + return + } + + export default IconCornerRightUp + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconCornerRightUp/index.tsx b/packages/ui/src/components/Icon/icons/IconCornerRightUp/index.tsx new file mode 100644 index 00000000000..bc280b92ea0 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconCornerRightUp/index.tsx @@ -0,0 +1 @@ +export { default as IconCornerRightUp } from './IconCornerRightUp' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconCornerUpLeft/IconCornerUpLeft.tsx b/packages/ui/src/components/Icon/icons/IconCornerUpLeft/IconCornerUpLeft.tsx new file mode 100644 index 00000000000..cb1049bab82 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconCornerUpLeft/IconCornerUpLeft.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { CornerUpLeft } from 'react-feather' + import IconBase from './../../IconBase' + + function IconCornerUpLeft(props: any) { + return + } + + export default IconCornerUpLeft + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconCornerUpLeft/index.tsx b/packages/ui/src/components/Icon/icons/IconCornerUpLeft/index.tsx new file mode 100644 index 00000000000..8a44c3abfc4 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconCornerUpLeft/index.tsx @@ -0,0 +1 @@ +export { default as IconCornerUpLeft } from './IconCornerUpLeft' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconCornerUpRight/IconCornerUpRight.tsx b/packages/ui/src/components/Icon/icons/IconCornerUpRight/IconCornerUpRight.tsx new file mode 100644 index 00000000000..a6e2034bc29 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconCornerUpRight/IconCornerUpRight.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { CornerUpRight } from 'react-feather' + import IconBase from './../../IconBase' + + function IconCornerUpRight(props: any) { + return + } + + export default IconCornerUpRight + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconCornerUpRight/index.tsx b/packages/ui/src/components/Icon/icons/IconCornerUpRight/index.tsx new file mode 100644 index 00000000000..00e4224c19a --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconCornerUpRight/index.tsx @@ -0,0 +1 @@ +export { default as IconCornerUpRight } from './IconCornerUpRight' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconCpu/IconCpu.tsx b/packages/ui/src/components/Icon/icons/IconCpu/IconCpu.tsx new file mode 100644 index 00000000000..0f7f7715aff --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconCpu/IconCpu.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Cpu } from 'react-feather' + import IconBase from './../../IconBase' + + function IconCpu(props: any) { + return + } + + export default IconCpu + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconCpu/index.tsx b/packages/ui/src/components/Icon/icons/IconCpu/index.tsx new file mode 100644 index 00000000000..da017c9601b --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconCpu/index.tsx @@ -0,0 +1 @@ +export { default as IconCpu } from './IconCpu' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconCreditCard/IconCreditCard.tsx b/packages/ui/src/components/Icon/icons/IconCreditCard/IconCreditCard.tsx new file mode 100644 index 00000000000..caf4b0b41fd --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconCreditCard/IconCreditCard.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { CreditCard } from 'react-feather' + import IconBase from './../../IconBase' + + function IconCreditCard(props: any) { + return + } + + export default IconCreditCard + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconCreditCard/index.tsx b/packages/ui/src/components/Icon/icons/IconCreditCard/index.tsx new file mode 100644 index 00000000000..21df338de15 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconCreditCard/index.tsx @@ -0,0 +1 @@ +export { default as IconCreditCard } from './IconCreditCard' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconCrop/IconCrop.tsx b/packages/ui/src/components/Icon/icons/IconCrop/IconCrop.tsx new file mode 100644 index 00000000000..a856427b3a5 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconCrop/IconCrop.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Crop } from 'react-feather' + import IconBase from './../../IconBase' + + function IconCrop(props: any) { + return + } + + export default IconCrop + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconCrop/index.tsx b/packages/ui/src/components/Icon/icons/IconCrop/index.tsx new file mode 100644 index 00000000000..5cde59b60eb --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconCrop/index.tsx @@ -0,0 +1 @@ +export { default as IconCrop } from './IconCrop' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconCrosshair/IconCrosshair.tsx b/packages/ui/src/components/Icon/icons/IconCrosshair/IconCrosshair.tsx new file mode 100644 index 00000000000..935c17ffa70 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconCrosshair/IconCrosshair.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Crosshair } from 'react-feather' + import IconBase from './../../IconBase' + + function IconCrosshair(props: any) { + return + } + + export default IconCrosshair + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconCrosshair/index.tsx b/packages/ui/src/components/Icon/icons/IconCrosshair/index.tsx new file mode 100644 index 00000000000..10e997ee887 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconCrosshair/index.tsx @@ -0,0 +1 @@ +export { default as IconCrosshair } from './IconCrosshair' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconDatabase/IconDatabase.tsx b/packages/ui/src/components/Icon/icons/IconDatabase/IconDatabase.tsx new file mode 100644 index 00000000000..94802081c09 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconDatabase/IconDatabase.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Database } from 'react-feather' + import IconBase from './../../IconBase' + + function IconDatabase(props: any) { + return + } + + export default IconDatabase + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconDatabase/index.tsx b/packages/ui/src/components/Icon/icons/IconDatabase/index.tsx new file mode 100644 index 00000000000..e96a644e005 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconDatabase/index.tsx @@ -0,0 +1 @@ +export { default as IconDatabase } from './IconDatabase' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconDelete/IconDelete.tsx b/packages/ui/src/components/Icon/icons/IconDelete/IconDelete.tsx new file mode 100644 index 00000000000..2c9f3b166b8 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconDelete/IconDelete.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Delete } from 'react-feather' + import IconBase from './../../IconBase' + + function IconDelete(props: any) { + return + } + + export default IconDelete + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconDelete/index.tsx b/packages/ui/src/components/Icon/icons/IconDelete/index.tsx new file mode 100644 index 00000000000..1be609a80a1 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconDelete/index.tsx @@ -0,0 +1 @@ +export { default as IconDelete } from './IconDelete' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconDisc/IconDisc.tsx b/packages/ui/src/components/Icon/icons/IconDisc/IconDisc.tsx new file mode 100644 index 00000000000..d731799af0e --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconDisc/IconDisc.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Disc } from 'react-feather' + import IconBase from './../../IconBase' + + function IconDisc(props: any) { + return + } + + export default IconDisc + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconDisc/index.tsx b/packages/ui/src/components/Icon/icons/IconDisc/index.tsx new file mode 100644 index 00000000000..52afccf5409 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconDisc/index.tsx @@ -0,0 +1 @@ +export { default as IconDisc } from './IconDisc' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconDivide/IconDivide.tsx b/packages/ui/src/components/Icon/icons/IconDivide/IconDivide.tsx new file mode 100644 index 00000000000..2a43112f91f --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconDivide/IconDivide.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Divide } from 'react-feather' + import IconBase from './../../IconBase' + + function IconDivide(props: any) { + return + } + + export default IconDivide + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconDivide/index.tsx b/packages/ui/src/components/Icon/icons/IconDivide/index.tsx new file mode 100644 index 00000000000..41363ecad89 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconDivide/index.tsx @@ -0,0 +1 @@ +export { default as IconDivide } from './IconDivide' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconDivideCircle/IconDivideCircle.tsx b/packages/ui/src/components/Icon/icons/IconDivideCircle/IconDivideCircle.tsx new file mode 100644 index 00000000000..f71ecff8cdf --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconDivideCircle/IconDivideCircle.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { DivideCircle } from 'react-feather' + import IconBase from './../../IconBase' + + function IconDivideCircle(props: any) { + return + } + + export default IconDivideCircle + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconDivideCircle/index.tsx b/packages/ui/src/components/Icon/icons/IconDivideCircle/index.tsx new file mode 100644 index 00000000000..45364c264b0 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconDivideCircle/index.tsx @@ -0,0 +1 @@ +export { default as IconDivideCircle } from './IconDivideCircle' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconDivideSquare/IconDivideSquare.tsx b/packages/ui/src/components/Icon/icons/IconDivideSquare/IconDivideSquare.tsx new file mode 100644 index 00000000000..5a2ab199926 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconDivideSquare/IconDivideSquare.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { DivideSquare } from 'react-feather' + import IconBase from './../../IconBase' + + function IconDivideSquare(props: any) { + return + } + + export default IconDivideSquare + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconDivideSquare/index.tsx b/packages/ui/src/components/Icon/icons/IconDivideSquare/index.tsx new file mode 100644 index 00000000000..7ab852f628f --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconDivideSquare/index.tsx @@ -0,0 +1 @@ +export { default as IconDivideSquare } from './IconDivideSquare' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconDollarSign/IconDollarSign.tsx b/packages/ui/src/components/Icon/icons/IconDollarSign/IconDollarSign.tsx new file mode 100644 index 00000000000..ac5eb967e92 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconDollarSign/IconDollarSign.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { DollarSign } from 'react-feather' + import IconBase from './../../IconBase' + + function IconDollarSign(props: any) { + return + } + + export default IconDollarSign + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconDollarSign/index.tsx b/packages/ui/src/components/Icon/icons/IconDollarSign/index.tsx new file mode 100644 index 00000000000..3e4d47f6832 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconDollarSign/index.tsx @@ -0,0 +1 @@ +export { default as IconDollarSign } from './IconDollarSign' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconDownload/IconDownload.tsx b/packages/ui/src/components/Icon/icons/IconDownload/IconDownload.tsx new file mode 100644 index 00000000000..eaffa876956 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconDownload/IconDownload.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Download } from 'react-feather' + import IconBase from './../../IconBase' + + function IconDownload(props: any) { + return + } + + export default IconDownload + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconDownload/index.tsx b/packages/ui/src/components/Icon/icons/IconDownload/index.tsx new file mode 100644 index 00000000000..47db78af2d0 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconDownload/index.tsx @@ -0,0 +1 @@ +export { default as IconDownload } from './IconDownload' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconDownloadCloud/IconDownloadCloud.tsx b/packages/ui/src/components/Icon/icons/IconDownloadCloud/IconDownloadCloud.tsx new file mode 100644 index 00000000000..c645838fd59 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconDownloadCloud/IconDownloadCloud.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { DownloadCloud } from 'react-feather' + import IconBase from './../../IconBase' + + function IconDownloadCloud(props: any) { + return + } + + export default IconDownloadCloud + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconDownloadCloud/index.tsx b/packages/ui/src/components/Icon/icons/IconDownloadCloud/index.tsx new file mode 100644 index 00000000000..531dd760ce7 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconDownloadCloud/index.tsx @@ -0,0 +1 @@ +export { default as IconDownloadCloud } from './IconDownloadCloud' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconDribbble/IconDribbble.tsx b/packages/ui/src/components/Icon/icons/IconDribbble/IconDribbble.tsx new file mode 100644 index 00000000000..544b6438d92 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconDribbble/IconDribbble.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Dribbble } from 'react-feather' + import IconBase from './../../IconBase' + + function IconDribbble(props: any) { + return + } + + export default IconDribbble + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconDribbble/index.tsx b/packages/ui/src/components/Icon/icons/IconDribbble/index.tsx new file mode 100644 index 00000000000..2c41308c1f9 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconDribbble/index.tsx @@ -0,0 +1 @@ +export { default as IconDribbble } from './IconDribbble' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconDroplet/IconDroplet.tsx b/packages/ui/src/components/Icon/icons/IconDroplet/IconDroplet.tsx new file mode 100644 index 00000000000..b44a323f694 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconDroplet/IconDroplet.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Droplet } from 'react-feather' + import IconBase from './../../IconBase' + + function IconDroplet(props: any) { + return + } + + export default IconDroplet + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconDroplet/index.tsx b/packages/ui/src/components/Icon/icons/IconDroplet/index.tsx new file mode 100644 index 00000000000..5fb19904134 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconDroplet/index.tsx @@ -0,0 +1 @@ +export { default as IconDroplet } from './IconDroplet' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconEdit/IconEdit.tsx b/packages/ui/src/components/Icon/icons/IconEdit/IconEdit.tsx new file mode 100644 index 00000000000..40766c7f989 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconEdit/IconEdit.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Edit } from 'react-feather' + import IconBase from './../../IconBase' + + function IconEdit(props: any) { + return + } + + export default IconEdit + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconEdit/index.tsx b/packages/ui/src/components/Icon/icons/IconEdit/index.tsx new file mode 100644 index 00000000000..af52567d4cc --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconEdit/index.tsx @@ -0,0 +1 @@ +export { default as IconEdit } from './IconEdit' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconEdit2/IconEdit2.tsx b/packages/ui/src/components/Icon/icons/IconEdit2/IconEdit2.tsx new file mode 100644 index 00000000000..e1effbb315b --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconEdit2/IconEdit2.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Edit2 } from 'react-feather' + import IconBase from './../../IconBase' + + function IconEdit2(props: any) { + return + } + + export default IconEdit2 + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconEdit2/index.tsx b/packages/ui/src/components/Icon/icons/IconEdit2/index.tsx new file mode 100644 index 00000000000..6f7d8bbca5f --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconEdit2/index.tsx @@ -0,0 +1 @@ +export { default as IconEdit2 } from './IconEdit2' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconEdit3/IconEdit3.tsx b/packages/ui/src/components/Icon/icons/IconEdit3/IconEdit3.tsx new file mode 100644 index 00000000000..f1c10ebd813 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconEdit3/IconEdit3.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Edit3 } from 'react-feather' + import IconBase from './../../IconBase' + + function IconEdit3(props: any) { + return + } + + export default IconEdit3 + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconEdit3/index.tsx b/packages/ui/src/components/Icon/icons/IconEdit3/index.tsx new file mode 100644 index 00000000000..152f98f3101 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconEdit3/index.tsx @@ -0,0 +1 @@ +export { default as IconEdit3 } from './IconEdit3' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconExternalLink/IconExternalLink.tsx b/packages/ui/src/components/Icon/icons/IconExternalLink/IconExternalLink.tsx new file mode 100644 index 00000000000..c830e74ff3c --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconExternalLink/IconExternalLink.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { ExternalLink } from 'react-feather' + import IconBase from './../../IconBase' + + function IconExternalLink(props: any) { + return + } + + export default IconExternalLink + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconExternalLink/index.tsx b/packages/ui/src/components/Icon/icons/IconExternalLink/index.tsx new file mode 100644 index 00000000000..46c299244ac --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconExternalLink/index.tsx @@ -0,0 +1 @@ +export { default as IconExternalLink } from './IconExternalLink' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconEye/IconEye.tsx b/packages/ui/src/components/Icon/icons/IconEye/IconEye.tsx new file mode 100644 index 00000000000..50a759138f7 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconEye/IconEye.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Eye } from 'react-feather' + import IconBase from './../../IconBase' + + function IconEye(props: any) { + return + } + + export default IconEye + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconEye/index.tsx b/packages/ui/src/components/Icon/icons/IconEye/index.tsx new file mode 100644 index 00000000000..5a52fa214f9 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconEye/index.tsx @@ -0,0 +1 @@ +export { default as IconEye } from './IconEye' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconEyeOff/IconEyeOff.tsx b/packages/ui/src/components/Icon/icons/IconEyeOff/IconEyeOff.tsx new file mode 100644 index 00000000000..567a597830d --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconEyeOff/IconEyeOff.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { EyeOff } from 'react-feather' + import IconBase from './../../IconBase' + + function IconEyeOff(props: any) { + return + } + + export default IconEyeOff + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconEyeOff/index.tsx b/packages/ui/src/components/Icon/icons/IconEyeOff/index.tsx new file mode 100644 index 00000000000..1c801bd5004 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconEyeOff/index.tsx @@ -0,0 +1 @@ +export { default as IconEyeOff } from './IconEyeOff' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconFacebook/IconFacebook.tsx b/packages/ui/src/components/Icon/icons/IconFacebook/IconFacebook.tsx new file mode 100644 index 00000000000..73a3515b9b7 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconFacebook/IconFacebook.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Facebook } from 'react-feather' + import IconBase from './../../IconBase' + + function IconFacebook(props: any) { + return + } + + export default IconFacebook + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconFacebook/index.tsx b/packages/ui/src/components/Icon/icons/IconFacebook/index.tsx new file mode 100644 index 00000000000..ceb874a3ef8 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconFacebook/index.tsx @@ -0,0 +1 @@ +export { default as IconFacebook } from './IconFacebook' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconFastForward/IconFastForward.tsx b/packages/ui/src/components/Icon/icons/IconFastForward/IconFastForward.tsx new file mode 100644 index 00000000000..6a2f29c6269 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconFastForward/IconFastForward.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { FastForward } from 'react-feather' + import IconBase from './../../IconBase' + + function IconFastForward(props: any) { + return + } + + export default IconFastForward + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconFastForward/index.tsx b/packages/ui/src/components/Icon/icons/IconFastForward/index.tsx new file mode 100644 index 00000000000..328d519e36b --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconFastForward/index.tsx @@ -0,0 +1 @@ +export { default as IconFastForward } from './IconFastForward' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconFeather/IconFeather.tsx b/packages/ui/src/components/Icon/icons/IconFeather/IconFeather.tsx new file mode 100644 index 00000000000..b773d3cd345 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconFeather/IconFeather.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Feather } from 'react-feather' + import IconBase from './../../IconBase' + + function IconFeather(props: any) { + return + } + + export default IconFeather + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconFeather/index.tsx b/packages/ui/src/components/Icon/icons/IconFeather/index.tsx new file mode 100644 index 00000000000..3292e8b0d83 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconFeather/index.tsx @@ -0,0 +1 @@ +export { default as IconFeather } from './IconFeather' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconFigma/IconFigma.tsx b/packages/ui/src/components/Icon/icons/IconFigma/IconFigma.tsx new file mode 100644 index 00000000000..dc60d05dda4 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconFigma/IconFigma.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Figma } from 'react-feather' + import IconBase from './../../IconBase' + + function IconFigma(props: any) { + return + } + + export default IconFigma + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconFigma/index.tsx b/packages/ui/src/components/Icon/icons/IconFigma/index.tsx new file mode 100644 index 00000000000..acb3e3b924e --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconFigma/index.tsx @@ -0,0 +1 @@ +export { default as IconFigma } from './IconFigma' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconFile/IconFile.tsx b/packages/ui/src/components/Icon/icons/IconFile/IconFile.tsx new file mode 100644 index 00000000000..dc69f88511d --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconFile/IconFile.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { File } from 'react-feather' + import IconBase from './../../IconBase' + + function IconFile(props: any) { + return + } + + export default IconFile + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconFile/index.tsx b/packages/ui/src/components/Icon/icons/IconFile/index.tsx new file mode 100644 index 00000000000..cad25268e3e --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconFile/index.tsx @@ -0,0 +1 @@ +export { default as IconFile } from './IconFile' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconFileMinus/IconFileMinus.tsx b/packages/ui/src/components/Icon/icons/IconFileMinus/IconFileMinus.tsx new file mode 100644 index 00000000000..fad179b7d7d --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconFileMinus/IconFileMinus.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { FileMinus } from 'react-feather' + import IconBase from './../../IconBase' + + function IconFileMinus(props: any) { + return + } + + export default IconFileMinus + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconFileMinus/index.tsx b/packages/ui/src/components/Icon/icons/IconFileMinus/index.tsx new file mode 100644 index 00000000000..4b9b66b26ac --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconFileMinus/index.tsx @@ -0,0 +1 @@ +export { default as IconFileMinus } from './IconFileMinus' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconFilePlus/IconFilePlus.tsx b/packages/ui/src/components/Icon/icons/IconFilePlus/IconFilePlus.tsx new file mode 100644 index 00000000000..8575982a568 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconFilePlus/IconFilePlus.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { FilePlus } from 'react-feather' + import IconBase from './../../IconBase' + + function IconFilePlus(props: any) { + return + } + + export default IconFilePlus + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconFilePlus/index.tsx b/packages/ui/src/components/Icon/icons/IconFilePlus/index.tsx new file mode 100644 index 00000000000..f5069b82483 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconFilePlus/index.tsx @@ -0,0 +1 @@ +export { default as IconFilePlus } from './IconFilePlus' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconFileText/IconFileText.tsx b/packages/ui/src/components/Icon/icons/IconFileText/IconFileText.tsx new file mode 100644 index 00000000000..27122f15776 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconFileText/IconFileText.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { FileText } from 'react-feather' + import IconBase from './../../IconBase' + + function IconFileText(props: any) { + return + } + + export default IconFileText + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconFileText/index.tsx b/packages/ui/src/components/Icon/icons/IconFileText/index.tsx new file mode 100644 index 00000000000..288b4d56d97 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconFileText/index.tsx @@ -0,0 +1 @@ +export { default as IconFileText } from './IconFileText' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconFilm/IconFilm.tsx b/packages/ui/src/components/Icon/icons/IconFilm/IconFilm.tsx new file mode 100644 index 00000000000..15a1a7071c3 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconFilm/IconFilm.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Film } from 'react-feather' + import IconBase from './../../IconBase' + + function IconFilm(props: any) { + return + } + + export default IconFilm + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconFilm/index.tsx b/packages/ui/src/components/Icon/icons/IconFilm/index.tsx new file mode 100644 index 00000000000..da1459a2938 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconFilm/index.tsx @@ -0,0 +1 @@ +export { default as IconFilm } from './IconFilm' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconFilter/IconFilter.tsx b/packages/ui/src/components/Icon/icons/IconFilter/IconFilter.tsx new file mode 100644 index 00000000000..4b354f82a69 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconFilter/IconFilter.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Filter } from 'react-feather' + import IconBase from './../../IconBase' + + function IconFilter(props: any) { + return + } + + export default IconFilter + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconFilter/index.tsx b/packages/ui/src/components/Icon/icons/IconFilter/index.tsx new file mode 100644 index 00000000000..2e57c693dec --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconFilter/index.tsx @@ -0,0 +1 @@ +export { default as IconFilter } from './IconFilter' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconFlag/IconFlag.tsx b/packages/ui/src/components/Icon/icons/IconFlag/IconFlag.tsx new file mode 100644 index 00000000000..8fec141dece --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconFlag/IconFlag.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Flag } from 'react-feather' + import IconBase from './../../IconBase' + + function IconFlag(props: any) { + return + } + + export default IconFlag + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconFlag/index.tsx b/packages/ui/src/components/Icon/icons/IconFlag/index.tsx new file mode 100644 index 00000000000..fc470293bcb --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconFlag/index.tsx @@ -0,0 +1 @@ +export { default as IconFlag } from './IconFlag' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconFolder/IconFolder.tsx b/packages/ui/src/components/Icon/icons/IconFolder/IconFolder.tsx new file mode 100644 index 00000000000..93732810681 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconFolder/IconFolder.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Folder } from 'react-feather' + import IconBase from './../../IconBase' + + function IconFolder(props: any) { + return + } + + export default IconFolder + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconFolder/index.tsx b/packages/ui/src/components/Icon/icons/IconFolder/index.tsx new file mode 100644 index 00000000000..fb963a8e7c8 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconFolder/index.tsx @@ -0,0 +1 @@ +export { default as IconFolder } from './IconFolder' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconFolderMinus/IconFolderMinus.tsx b/packages/ui/src/components/Icon/icons/IconFolderMinus/IconFolderMinus.tsx new file mode 100644 index 00000000000..1e6bd552df2 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconFolderMinus/IconFolderMinus.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { FolderMinus } from 'react-feather' + import IconBase from './../../IconBase' + + function IconFolderMinus(props: any) { + return + } + + export default IconFolderMinus + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconFolderMinus/index.tsx b/packages/ui/src/components/Icon/icons/IconFolderMinus/index.tsx new file mode 100644 index 00000000000..74832350505 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconFolderMinus/index.tsx @@ -0,0 +1 @@ +export { default as IconFolderMinus } from './IconFolderMinus' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconFolderPlus/IconFolderPlus.tsx b/packages/ui/src/components/Icon/icons/IconFolderPlus/IconFolderPlus.tsx new file mode 100644 index 00000000000..cf1de0affa0 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconFolderPlus/IconFolderPlus.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { FolderPlus } from 'react-feather' + import IconBase from './../../IconBase' + + function IconFolderPlus(props: any) { + return + } + + export default IconFolderPlus + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconFolderPlus/index.tsx b/packages/ui/src/components/Icon/icons/IconFolderPlus/index.tsx new file mode 100644 index 00000000000..03e776a7c6f --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconFolderPlus/index.tsx @@ -0,0 +1 @@ +export { default as IconFolderPlus } from './IconFolderPlus' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconFramer/IconFramer.tsx b/packages/ui/src/components/Icon/icons/IconFramer/IconFramer.tsx new file mode 100644 index 00000000000..2aa5dd8402d --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconFramer/IconFramer.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Framer } from 'react-feather' + import IconBase from './../../IconBase' + + function IconFramer(props: any) { + return + } + + export default IconFramer + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconFramer/index.tsx b/packages/ui/src/components/Icon/icons/IconFramer/index.tsx new file mode 100644 index 00000000000..11b1ce5da65 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconFramer/index.tsx @@ -0,0 +1 @@ +export { default as IconFramer } from './IconFramer' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconFrown/IconFrown.tsx b/packages/ui/src/components/Icon/icons/IconFrown/IconFrown.tsx new file mode 100644 index 00000000000..38d1b536ed8 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconFrown/IconFrown.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Frown } from 'react-feather' + import IconBase from './../../IconBase' + + function IconFrown(props: any) { + return + } + + export default IconFrown + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconFrown/index.tsx b/packages/ui/src/components/Icon/icons/IconFrown/index.tsx new file mode 100644 index 00000000000..f2a4d47604d --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconFrown/index.tsx @@ -0,0 +1 @@ +export { default as IconFrown } from './IconFrown' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconGift/IconGift.tsx b/packages/ui/src/components/Icon/icons/IconGift/IconGift.tsx new file mode 100644 index 00000000000..8075803ad4a --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconGift/IconGift.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Gift } from 'react-feather' + import IconBase from './../../IconBase' + + function IconGift(props: any) { + return + } + + export default IconGift + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconGift/index.tsx b/packages/ui/src/components/Icon/icons/IconGift/index.tsx new file mode 100644 index 00000000000..98db46ae496 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconGift/index.tsx @@ -0,0 +1 @@ +export { default as IconGift } from './IconGift' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconGitBranch/IconGitBranch.tsx b/packages/ui/src/components/Icon/icons/IconGitBranch/IconGitBranch.tsx new file mode 100644 index 00000000000..d197c33deb6 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconGitBranch/IconGitBranch.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { GitBranch } from 'react-feather' + import IconBase from './../../IconBase' + + function IconGitBranch(props: any) { + return + } + + export default IconGitBranch + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconGitBranch/index.tsx b/packages/ui/src/components/Icon/icons/IconGitBranch/index.tsx new file mode 100644 index 00000000000..10a02051554 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconGitBranch/index.tsx @@ -0,0 +1 @@ +export { default as IconGitBranch } from './IconGitBranch' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconGitCommit/IconGitCommit.tsx b/packages/ui/src/components/Icon/icons/IconGitCommit/IconGitCommit.tsx new file mode 100644 index 00000000000..a238277693c --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconGitCommit/IconGitCommit.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { GitCommit } from 'react-feather' + import IconBase from './../../IconBase' + + function IconGitCommit(props: any) { + return + } + + export default IconGitCommit + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconGitCommit/index.tsx b/packages/ui/src/components/Icon/icons/IconGitCommit/index.tsx new file mode 100644 index 00000000000..29519a9f227 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconGitCommit/index.tsx @@ -0,0 +1 @@ +export { default as IconGitCommit } from './IconGitCommit' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconGitHub/IconGitHub.tsx b/packages/ui/src/components/Icon/icons/IconGitHub/IconGitHub.tsx new file mode 100644 index 00000000000..f582f541d63 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconGitHub/IconGitHub.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { GitHub } from 'react-feather' + import IconBase from './../../IconBase' + + function IconGitHub(props: any) { + return + } + + export default IconGitHub + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconGitHub/index.tsx b/packages/ui/src/components/Icon/icons/IconGitHub/index.tsx new file mode 100644 index 00000000000..608d1aec113 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconGitHub/index.tsx @@ -0,0 +1 @@ +export { default as IconGitHub } from './IconGitHub' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconGitMerge/IconGitMerge.tsx b/packages/ui/src/components/Icon/icons/IconGitMerge/IconGitMerge.tsx new file mode 100644 index 00000000000..9935ac42b72 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconGitMerge/IconGitMerge.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { GitMerge } from 'react-feather' + import IconBase from './../../IconBase' + + function IconGitMerge(props: any) { + return + } + + export default IconGitMerge + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconGitMerge/index.tsx b/packages/ui/src/components/Icon/icons/IconGitMerge/index.tsx new file mode 100644 index 00000000000..2d94f1a9ab8 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconGitMerge/index.tsx @@ -0,0 +1 @@ +export { default as IconGitMerge } from './IconGitMerge' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconGitPullRequest/IconGitPullRequest.tsx b/packages/ui/src/components/Icon/icons/IconGitPullRequest/IconGitPullRequest.tsx new file mode 100644 index 00000000000..fe3f79a8280 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconGitPullRequest/IconGitPullRequest.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { GitPullRequest } from 'react-feather' + import IconBase from './../../IconBase' + + function IconGitPullRequest(props: any) { + return + } + + export default IconGitPullRequest + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconGitPullRequest/index.tsx b/packages/ui/src/components/Icon/icons/IconGitPullRequest/index.tsx new file mode 100644 index 00000000000..4a71993a501 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconGitPullRequest/index.tsx @@ -0,0 +1 @@ +export { default as IconGitPullRequest } from './IconGitPullRequest' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconGitlab/IconGitlab.tsx b/packages/ui/src/components/Icon/icons/IconGitlab/IconGitlab.tsx new file mode 100644 index 00000000000..f4c43e5e33b --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconGitlab/IconGitlab.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Gitlab } from 'react-feather' + import IconBase from './../../IconBase' + + function IconGitlab(props: any) { + return + } + + export default IconGitlab + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconGitlab/index.tsx b/packages/ui/src/components/Icon/icons/IconGitlab/index.tsx new file mode 100644 index 00000000000..05be357fe26 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconGitlab/index.tsx @@ -0,0 +1 @@ +export { default as IconGitlab } from './IconGitlab' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconGlobe/IconGlobe.tsx b/packages/ui/src/components/Icon/icons/IconGlobe/IconGlobe.tsx new file mode 100644 index 00000000000..b4b96579362 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconGlobe/IconGlobe.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Globe } from 'react-feather' + import IconBase from './../../IconBase' + + function IconGlobe(props: any) { + return + } + + export default IconGlobe + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconGlobe/index.tsx b/packages/ui/src/components/Icon/icons/IconGlobe/index.tsx new file mode 100644 index 00000000000..6f235fa7223 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconGlobe/index.tsx @@ -0,0 +1 @@ +export { default as IconGlobe } from './IconGlobe' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconGrid/IconGrid.tsx b/packages/ui/src/components/Icon/icons/IconGrid/IconGrid.tsx new file mode 100644 index 00000000000..008d0085c42 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconGrid/IconGrid.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Grid } from 'react-feather' + import IconBase from './../../IconBase' + + function IconGrid(props: any) { + return + } + + export default IconGrid + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconGrid/index.tsx b/packages/ui/src/components/Icon/icons/IconGrid/index.tsx new file mode 100644 index 00000000000..70462bca247 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconGrid/index.tsx @@ -0,0 +1 @@ +export { default as IconGrid } from './IconGrid' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconHardDrive/IconHardDrive.tsx b/packages/ui/src/components/Icon/icons/IconHardDrive/IconHardDrive.tsx new file mode 100644 index 00000000000..778ed2f45a0 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconHardDrive/IconHardDrive.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { HardDrive } from 'react-feather' + import IconBase from './../../IconBase' + + function IconHardDrive(props: any) { + return + } + + export default IconHardDrive + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconHardDrive/index.tsx b/packages/ui/src/components/Icon/icons/IconHardDrive/index.tsx new file mode 100644 index 00000000000..2425e8ac09c --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconHardDrive/index.tsx @@ -0,0 +1 @@ +export { default as IconHardDrive } from './IconHardDrive' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconHash/IconHash.tsx b/packages/ui/src/components/Icon/icons/IconHash/IconHash.tsx new file mode 100644 index 00000000000..75ee95e64e2 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconHash/IconHash.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Hash } from 'react-feather' + import IconBase from './../../IconBase' + + function IconHash(props: any) { + return + } + + export default IconHash + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconHash/index.tsx b/packages/ui/src/components/Icon/icons/IconHash/index.tsx new file mode 100644 index 00000000000..97522ca8118 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconHash/index.tsx @@ -0,0 +1 @@ +export { default as IconHash } from './IconHash' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconHeadphones/IconHeadphones.tsx b/packages/ui/src/components/Icon/icons/IconHeadphones/IconHeadphones.tsx new file mode 100644 index 00000000000..8f5d1b9ac15 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconHeadphones/IconHeadphones.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Headphones } from 'react-feather' + import IconBase from './../../IconBase' + + function IconHeadphones(props: any) { + return + } + + export default IconHeadphones + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconHeadphones/index.tsx b/packages/ui/src/components/Icon/icons/IconHeadphones/index.tsx new file mode 100644 index 00000000000..ec00aa51f14 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconHeadphones/index.tsx @@ -0,0 +1 @@ +export { default as IconHeadphones } from './IconHeadphones' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconHeart/IconHeart.tsx b/packages/ui/src/components/Icon/icons/IconHeart/IconHeart.tsx new file mode 100644 index 00000000000..e595058003f --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconHeart/IconHeart.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Heart } from 'react-feather' + import IconBase from './../../IconBase' + + function IconHeart(props: any) { + return + } + + export default IconHeart + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconHeart/index.tsx b/packages/ui/src/components/Icon/icons/IconHeart/index.tsx new file mode 100644 index 00000000000..cddf79d3273 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconHeart/index.tsx @@ -0,0 +1 @@ +export { default as IconHeart } from './IconHeart' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconHelpCircle/IconHelpCircle.tsx b/packages/ui/src/components/Icon/icons/IconHelpCircle/IconHelpCircle.tsx new file mode 100644 index 00000000000..7be33730193 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconHelpCircle/IconHelpCircle.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { HelpCircle } from 'react-feather' + import IconBase from './../../IconBase' + + function IconHelpCircle(props: any) { + return + } + + export default IconHelpCircle + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconHelpCircle/index.tsx b/packages/ui/src/components/Icon/icons/IconHelpCircle/index.tsx new file mode 100644 index 00000000000..d03132246ff --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconHelpCircle/index.tsx @@ -0,0 +1 @@ +export { default as IconHelpCircle } from './IconHelpCircle' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconHexagon/IconHexagon.tsx b/packages/ui/src/components/Icon/icons/IconHexagon/IconHexagon.tsx new file mode 100644 index 00000000000..6e6060833ee --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconHexagon/IconHexagon.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Hexagon } from 'react-feather' + import IconBase from './../../IconBase' + + function IconHexagon(props: any) { + return + } + + export default IconHexagon + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconHexagon/index.tsx b/packages/ui/src/components/Icon/icons/IconHexagon/index.tsx new file mode 100644 index 00000000000..6a26815ba7d --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconHexagon/index.tsx @@ -0,0 +1 @@ +export { default as IconHexagon } from './IconHexagon' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconHome/IconHome.tsx b/packages/ui/src/components/Icon/icons/IconHome/IconHome.tsx new file mode 100644 index 00000000000..901e43f2f2d --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconHome/IconHome.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Home } from 'react-feather' + import IconBase from './../../IconBase' + + function IconHome(props: any) { + return + } + + export default IconHome + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconHome/index.tsx b/packages/ui/src/components/Icon/icons/IconHome/index.tsx new file mode 100644 index 00000000000..dc9261d7802 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconHome/index.tsx @@ -0,0 +1 @@ +export { default as IconHome } from './IconHome' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconImage/IconImage.tsx b/packages/ui/src/components/Icon/icons/IconImage/IconImage.tsx new file mode 100644 index 00000000000..81c1230878c --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconImage/IconImage.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Image } from 'react-feather' + import IconBase from './../../IconBase' + + function IconImage(props: any) { + return + } + + export default IconImage + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconImage/index.tsx b/packages/ui/src/components/Icon/icons/IconImage/index.tsx new file mode 100644 index 00000000000..c03e50fcbba --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconImage/index.tsx @@ -0,0 +1 @@ +export { default as IconImage } from './IconImage' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconInbox/IconInbox.tsx b/packages/ui/src/components/Icon/icons/IconInbox/IconInbox.tsx new file mode 100644 index 00000000000..379a4ebdea4 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconInbox/IconInbox.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Inbox } from 'react-feather' + import IconBase from './../../IconBase' + + function IconInbox(props: any) { + return + } + + export default IconInbox + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconInbox/index.tsx b/packages/ui/src/components/Icon/icons/IconInbox/index.tsx new file mode 100644 index 00000000000..e6bf79f5cfe --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconInbox/index.tsx @@ -0,0 +1 @@ +export { default as IconInbox } from './IconInbox' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconInfo/IconInfo.tsx b/packages/ui/src/components/Icon/icons/IconInfo/IconInfo.tsx new file mode 100644 index 00000000000..e8c64a9673b --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconInfo/IconInfo.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Info } from 'react-feather' + import IconBase from './../../IconBase' + + function IconInfo(props: any) { + return + } + + export default IconInfo + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconInfo/index.tsx b/packages/ui/src/components/Icon/icons/IconInfo/index.tsx new file mode 100644 index 00000000000..a133d6514fe --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconInfo/index.tsx @@ -0,0 +1 @@ +export { default as IconInfo } from './IconInfo' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconInstagram/IconInstagram.tsx b/packages/ui/src/components/Icon/icons/IconInstagram/IconInstagram.tsx new file mode 100644 index 00000000000..3b854044f25 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconInstagram/IconInstagram.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Instagram } from 'react-feather' + import IconBase from './../../IconBase' + + function IconInstagram(props: any) { + return + } + + export default IconInstagram + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconInstagram/index.tsx b/packages/ui/src/components/Icon/icons/IconInstagram/index.tsx new file mode 100644 index 00000000000..9e944ccf51c --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconInstagram/index.tsx @@ -0,0 +1 @@ +export { default as IconInstagram } from './IconInstagram' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconItalic/IconItalic.tsx b/packages/ui/src/components/Icon/icons/IconItalic/IconItalic.tsx new file mode 100644 index 00000000000..31d2b33f03e --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconItalic/IconItalic.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Italic } from 'react-feather' + import IconBase from './../../IconBase' + + function IconItalic(props: any) { + return + } + + export default IconItalic + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconItalic/index.tsx b/packages/ui/src/components/Icon/icons/IconItalic/index.tsx new file mode 100644 index 00000000000..bf25fb58a41 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconItalic/index.tsx @@ -0,0 +1 @@ +export { default as IconItalic } from './IconItalic' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconKey/IconKey.tsx b/packages/ui/src/components/Icon/icons/IconKey/IconKey.tsx new file mode 100644 index 00000000000..57f1c447d21 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconKey/IconKey.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Key } from 'react-feather' + import IconBase from './../../IconBase' + + function IconKey(props: any) { + return + } + + export default IconKey + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconKey/index.tsx b/packages/ui/src/components/Icon/icons/IconKey/index.tsx new file mode 100644 index 00000000000..cb927e42bf2 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconKey/index.tsx @@ -0,0 +1 @@ +export { default as IconKey } from './IconKey' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconLayers/IconLayers.tsx b/packages/ui/src/components/Icon/icons/IconLayers/IconLayers.tsx new file mode 100644 index 00000000000..d7219649110 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconLayers/IconLayers.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Layers } from 'react-feather' + import IconBase from './../../IconBase' + + function IconLayers(props: any) { + return + } + + export default IconLayers + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconLayers/index.tsx b/packages/ui/src/components/Icon/icons/IconLayers/index.tsx new file mode 100644 index 00000000000..b9ecc8248b8 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconLayers/index.tsx @@ -0,0 +1 @@ +export { default as IconLayers } from './IconLayers' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconLayout/IconLayout.tsx b/packages/ui/src/components/Icon/icons/IconLayout/IconLayout.tsx new file mode 100644 index 00000000000..0724b73d43b --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconLayout/IconLayout.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Layout } from 'react-feather' + import IconBase from './../../IconBase' + + function IconLayout(props: any) { + return + } + + export default IconLayout + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconLayout/index.tsx b/packages/ui/src/components/Icon/icons/IconLayout/index.tsx new file mode 100644 index 00000000000..5ff570644b9 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconLayout/index.tsx @@ -0,0 +1 @@ +export { default as IconLayout } from './IconLayout' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconLifeBuoy/IconLifeBuoy.tsx b/packages/ui/src/components/Icon/icons/IconLifeBuoy/IconLifeBuoy.tsx new file mode 100644 index 00000000000..d104e244e13 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconLifeBuoy/IconLifeBuoy.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { LifeBuoy } from 'react-feather' + import IconBase from './../../IconBase' + + function IconLifeBuoy(props: any) { + return + } + + export default IconLifeBuoy + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconLifeBuoy/index.tsx b/packages/ui/src/components/Icon/icons/IconLifeBuoy/index.tsx new file mode 100644 index 00000000000..6353c3a8352 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconLifeBuoy/index.tsx @@ -0,0 +1 @@ +export { default as IconLifeBuoy } from './IconLifeBuoy' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconLink/IconLink.tsx b/packages/ui/src/components/Icon/icons/IconLink/IconLink.tsx new file mode 100644 index 00000000000..cf00e14bc94 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconLink/IconLink.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Link } from 'react-feather' + import IconBase from './../../IconBase' + + function IconLink(props: any) { + return + } + + export default IconLink + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconLink/index.tsx b/packages/ui/src/components/Icon/icons/IconLink/index.tsx new file mode 100644 index 00000000000..61093f8bd35 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconLink/index.tsx @@ -0,0 +1 @@ +export { default as IconLink } from './IconLink' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconLink2/IconLink2.tsx b/packages/ui/src/components/Icon/icons/IconLink2/IconLink2.tsx new file mode 100644 index 00000000000..c9066c2a8f9 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconLink2/IconLink2.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Link2 } from 'react-feather' + import IconBase from './../../IconBase' + + function IconLink2(props: any) { + return + } + + export default IconLink2 + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconLink2/index.tsx b/packages/ui/src/components/Icon/icons/IconLink2/index.tsx new file mode 100644 index 00000000000..7df3844aa81 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconLink2/index.tsx @@ -0,0 +1 @@ +export { default as IconLink2 } from './IconLink2' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconLinkedin/IconLinkedin.tsx b/packages/ui/src/components/Icon/icons/IconLinkedin/IconLinkedin.tsx new file mode 100644 index 00000000000..d82039ac9a1 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconLinkedin/IconLinkedin.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Linkedin } from 'react-feather' + import IconBase from './../../IconBase' + + function IconLinkedin(props: any) { + return + } + + export default IconLinkedin + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconLinkedin/index.tsx b/packages/ui/src/components/Icon/icons/IconLinkedin/index.tsx new file mode 100644 index 00000000000..36d537210b3 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconLinkedin/index.tsx @@ -0,0 +1 @@ +export { default as IconLinkedin } from './IconLinkedin' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconList/IconList.tsx b/packages/ui/src/components/Icon/icons/IconList/IconList.tsx new file mode 100644 index 00000000000..2f93e1f6b0a --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconList/IconList.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { List } from 'react-feather' + import IconBase from './../../IconBase' + + function IconList(props: any) { + return + } + + export default IconList + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconList/index.tsx b/packages/ui/src/components/Icon/icons/IconList/index.tsx new file mode 100644 index 00000000000..5773dbeca8b --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconList/index.tsx @@ -0,0 +1 @@ +export { default as IconList } from './IconList' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconLoader/IconLoader.tsx b/packages/ui/src/components/Icon/icons/IconLoader/IconLoader.tsx new file mode 100644 index 00000000000..0dd192e321b --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconLoader/IconLoader.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Loader } from 'react-feather' + import IconBase from './../../IconBase' + + function IconLoader(props: any) { + return + } + + export default IconLoader + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconLoader/index.tsx b/packages/ui/src/components/Icon/icons/IconLoader/index.tsx new file mode 100644 index 00000000000..daaebea734d --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconLoader/index.tsx @@ -0,0 +1 @@ +export { default as IconLoader } from './IconLoader' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconLock/IconLock.tsx b/packages/ui/src/components/Icon/icons/IconLock/IconLock.tsx new file mode 100644 index 00000000000..a6a5dba33cd --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconLock/IconLock.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Lock } from 'react-feather' + import IconBase from './../../IconBase' + + function IconLock(props: any) { + return + } + + export default IconLock + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconLock/index.tsx b/packages/ui/src/components/Icon/icons/IconLock/index.tsx new file mode 100644 index 00000000000..6fe4b7bded0 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconLock/index.tsx @@ -0,0 +1 @@ +export { default as IconLock } from './IconLock' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconLogIn/IconLogIn.tsx b/packages/ui/src/components/Icon/icons/IconLogIn/IconLogIn.tsx new file mode 100644 index 00000000000..6a6d52a8082 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconLogIn/IconLogIn.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { LogIn } from 'react-feather' + import IconBase from './../../IconBase' + + function IconLogIn(props: any) { + return + } + + export default IconLogIn + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconLogIn/index.tsx b/packages/ui/src/components/Icon/icons/IconLogIn/index.tsx new file mode 100644 index 00000000000..a051b59dc52 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconLogIn/index.tsx @@ -0,0 +1 @@ +export { default as IconLogIn } from './IconLogIn' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconLogOut/IconLogOut.tsx b/packages/ui/src/components/Icon/icons/IconLogOut/IconLogOut.tsx new file mode 100644 index 00000000000..ec44e847d33 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconLogOut/IconLogOut.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { LogOut } from 'react-feather' + import IconBase from './../../IconBase' + + function IconLogOut(props: any) { + return + } + + export default IconLogOut + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconLogOut/index.tsx b/packages/ui/src/components/Icon/icons/IconLogOut/index.tsx new file mode 100644 index 00000000000..21175f671e7 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconLogOut/index.tsx @@ -0,0 +1 @@ +export { default as IconLogOut } from './IconLogOut' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconMail/IconMail.tsx b/packages/ui/src/components/Icon/icons/IconMail/IconMail.tsx new file mode 100644 index 00000000000..cd31c5abc75 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconMail/IconMail.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Mail } from 'react-feather' + import IconBase from './../../IconBase' + + function IconMail(props: any) { + return + } + + export default IconMail + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconMail/index.tsx b/packages/ui/src/components/Icon/icons/IconMail/index.tsx new file mode 100644 index 00000000000..f8c8667ee71 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconMail/index.tsx @@ -0,0 +1 @@ +export { default as IconMail } from './IconMail' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconMap/IconMap.tsx b/packages/ui/src/components/Icon/icons/IconMap/IconMap.tsx new file mode 100644 index 00000000000..7c2e821f427 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconMap/IconMap.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Map } from 'react-feather' + import IconBase from './../../IconBase' + + function IconMap(props: any) { + return + } + + export default IconMap + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconMap/index.tsx b/packages/ui/src/components/Icon/icons/IconMap/index.tsx new file mode 100644 index 00000000000..8b24ec3d545 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconMap/index.tsx @@ -0,0 +1 @@ +export { default as IconMap } from './IconMap' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconMapPin/IconMapPin.tsx b/packages/ui/src/components/Icon/icons/IconMapPin/IconMapPin.tsx new file mode 100644 index 00000000000..4867ae03c6b --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconMapPin/IconMapPin.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { MapPin } from 'react-feather' + import IconBase from './../../IconBase' + + function IconMapPin(props: any) { + return + } + + export default IconMapPin + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconMapPin/index.tsx b/packages/ui/src/components/Icon/icons/IconMapPin/index.tsx new file mode 100644 index 00000000000..766afe88b9b --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconMapPin/index.tsx @@ -0,0 +1 @@ +export { default as IconMapPin } from './IconMapPin' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconMaximize/IconMaximize.tsx b/packages/ui/src/components/Icon/icons/IconMaximize/IconMaximize.tsx new file mode 100644 index 00000000000..e03dd087533 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconMaximize/IconMaximize.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Maximize } from 'react-feather' + import IconBase from './../../IconBase' + + function IconMaximize(props: any) { + return + } + + export default IconMaximize + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconMaximize/index.tsx b/packages/ui/src/components/Icon/icons/IconMaximize/index.tsx new file mode 100644 index 00000000000..05af84161da --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconMaximize/index.tsx @@ -0,0 +1 @@ +export { default as IconMaximize } from './IconMaximize' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconMaximize2/IconMaximize2.tsx b/packages/ui/src/components/Icon/icons/IconMaximize2/IconMaximize2.tsx new file mode 100644 index 00000000000..addad5e4b8f --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconMaximize2/IconMaximize2.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Maximize2 } from 'react-feather' + import IconBase from './../../IconBase' + + function IconMaximize2(props: any) { + return + } + + export default IconMaximize2 + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconMaximize2/index.tsx b/packages/ui/src/components/Icon/icons/IconMaximize2/index.tsx new file mode 100644 index 00000000000..a9ee885446b --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconMaximize2/index.tsx @@ -0,0 +1 @@ +export { default as IconMaximize2 } from './IconMaximize2' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconMeh/IconMeh.tsx b/packages/ui/src/components/Icon/icons/IconMeh/IconMeh.tsx new file mode 100644 index 00000000000..478674bf677 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconMeh/IconMeh.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Meh } from 'react-feather' + import IconBase from './../../IconBase' + + function IconMeh(props: any) { + return + } + + export default IconMeh + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconMeh/index.tsx b/packages/ui/src/components/Icon/icons/IconMeh/index.tsx new file mode 100644 index 00000000000..a05f15bfdd8 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconMeh/index.tsx @@ -0,0 +1 @@ +export { default as IconMeh } from './IconMeh' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconMenu/IconMenu.tsx b/packages/ui/src/components/Icon/icons/IconMenu/IconMenu.tsx new file mode 100644 index 00000000000..409d2d9f18e --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconMenu/IconMenu.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Menu } from 'react-feather' + import IconBase from './../../IconBase' + + function IconMenu(props: any) { + return + } + + export default IconMenu + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconMenu/index.tsx b/packages/ui/src/components/Icon/icons/IconMenu/index.tsx new file mode 100644 index 00000000000..fc07cc67453 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconMenu/index.tsx @@ -0,0 +1 @@ +export { default as IconMenu } from './IconMenu' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconMessageCircle/IconMessageCircle.tsx b/packages/ui/src/components/Icon/icons/IconMessageCircle/IconMessageCircle.tsx new file mode 100644 index 00000000000..875a15cbc60 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconMessageCircle/IconMessageCircle.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { MessageCircle } from 'react-feather' + import IconBase from './../../IconBase' + + function IconMessageCircle(props: any) { + return + } + + export default IconMessageCircle + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconMessageCircle/index.tsx b/packages/ui/src/components/Icon/icons/IconMessageCircle/index.tsx new file mode 100644 index 00000000000..9d06f7672e8 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconMessageCircle/index.tsx @@ -0,0 +1 @@ +export { default as IconMessageCircle } from './IconMessageCircle' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconMessageSquare/IconMessageSquare.tsx b/packages/ui/src/components/Icon/icons/IconMessageSquare/IconMessageSquare.tsx new file mode 100644 index 00000000000..b6d23d923c2 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconMessageSquare/IconMessageSquare.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { MessageSquare } from 'react-feather' + import IconBase from './../../IconBase' + + function IconMessageSquare(props: any) { + return + } + + export default IconMessageSquare + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconMessageSquare/index.tsx b/packages/ui/src/components/Icon/icons/IconMessageSquare/index.tsx new file mode 100644 index 00000000000..44abdd0d9a1 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconMessageSquare/index.tsx @@ -0,0 +1 @@ +export { default as IconMessageSquare } from './IconMessageSquare' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconMic/IconMic.tsx b/packages/ui/src/components/Icon/icons/IconMic/IconMic.tsx new file mode 100644 index 00000000000..25f2e402bd2 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconMic/IconMic.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Mic } from 'react-feather' + import IconBase from './../../IconBase' + + function IconMic(props: any) { + return + } + + export default IconMic + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconMic/index.tsx b/packages/ui/src/components/Icon/icons/IconMic/index.tsx new file mode 100644 index 00000000000..9bf267c1c88 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconMic/index.tsx @@ -0,0 +1 @@ +export { default as IconMic } from './IconMic' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconMicOff/IconMicOff.tsx b/packages/ui/src/components/Icon/icons/IconMicOff/IconMicOff.tsx new file mode 100644 index 00000000000..464d6117e59 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconMicOff/IconMicOff.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { MicOff } from 'react-feather' + import IconBase from './../../IconBase' + + function IconMicOff(props: any) { + return + } + + export default IconMicOff + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconMicOff/index.tsx b/packages/ui/src/components/Icon/icons/IconMicOff/index.tsx new file mode 100644 index 00000000000..c6d4ac36fc9 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconMicOff/index.tsx @@ -0,0 +1 @@ +export { default as IconMicOff } from './IconMicOff' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconMinimize/IconMinimize.tsx b/packages/ui/src/components/Icon/icons/IconMinimize/IconMinimize.tsx new file mode 100644 index 00000000000..ad64686521d --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconMinimize/IconMinimize.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Minimize } from 'react-feather' + import IconBase from './../../IconBase' + + function IconMinimize(props: any) { + return + } + + export default IconMinimize + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconMinimize/index.tsx b/packages/ui/src/components/Icon/icons/IconMinimize/index.tsx new file mode 100644 index 00000000000..4181851df8f --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconMinimize/index.tsx @@ -0,0 +1 @@ +export { default as IconMinimize } from './IconMinimize' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconMinimize2/IconMinimize2.tsx b/packages/ui/src/components/Icon/icons/IconMinimize2/IconMinimize2.tsx new file mode 100644 index 00000000000..65c807e94f3 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconMinimize2/IconMinimize2.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Minimize2 } from 'react-feather' + import IconBase from './../../IconBase' + + function IconMinimize2(props: any) { + return + } + + export default IconMinimize2 + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconMinimize2/index.tsx b/packages/ui/src/components/Icon/icons/IconMinimize2/index.tsx new file mode 100644 index 00000000000..22a4346a8ab --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconMinimize2/index.tsx @@ -0,0 +1 @@ +export { default as IconMinimize2 } from './IconMinimize2' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconMinus/IconMinus.tsx b/packages/ui/src/components/Icon/icons/IconMinus/IconMinus.tsx new file mode 100644 index 00000000000..fd4fcf81bd2 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconMinus/IconMinus.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Minus } from 'react-feather' + import IconBase from './../../IconBase' + + function IconMinus(props: any) { + return + } + + export default IconMinus + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconMinus/index.tsx b/packages/ui/src/components/Icon/icons/IconMinus/index.tsx new file mode 100644 index 00000000000..8d0539c0143 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconMinus/index.tsx @@ -0,0 +1 @@ +export { default as IconMinus } from './IconMinus' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconMinusCircle/IconMinusCircle.tsx b/packages/ui/src/components/Icon/icons/IconMinusCircle/IconMinusCircle.tsx new file mode 100644 index 00000000000..dfc9790ad36 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconMinusCircle/IconMinusCircle.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { MinusCircle } from 'react-feather' + import IconBase from './../../IconBase' + + function IconMinusCircle(props: any) { + return + } + + export default IconMinusCircle + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconMinusCircle/index.tsx b/packages/ui/src/components/Icon/icons/IconMinusCircle/index.tsx new file mode 100644 index 00000000000..0c15c333077 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconMinusCircle/index.tsx @@ -0,0 +1 @@ +export { default as IconMinusCircle } from './IconMinusCircle' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconMinusSquare/IconMinusSquare.tsx b/packages/ui/src/components/Icon/icons/IconMinusSquare/IconMinusSquare.tsx new file mode 100644 index 00000000000..27efb61e415 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconMinusSquare/IconMinusSquare.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { MinusSquare } from 'react-feather' + import IconBase from './../../IconBase' + + function IconMinusSquare(props: any) { + return + } + + export default IconMinusSquare + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconMinusSquare/index.tsx b/packages/ui/src/components/Icon/icons/IconMinusSquare/index.tsx new file mode 100644 index 00000000000..5b434586304 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconMinusSquare/index.tsx @@ -0,0 +1 @@ +export { default as IconMinusSquare } from './IconMinusSquare' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconMonitor/IconMonitor.tsx b/packages/ui/src/components/Icon/icons/IconMonitor/IconMonitor.tsx new file mode 100644 index 00000000000..7b70c9b2295 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconMonitor/IconMonitor.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Monitor } from 'react-feather' + import IconBase from './../../IconBase' + + function IconMonitor(props: any) { + return + } + + export default IconMonitor + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconMonitor/index.tsx b/packages/ui/src/components/Icon/icons/IconMonitor/index.tsx new file mode 100644 index 00000000000..de64f06d3fb --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconMonitor/index.tsx @@ -0,0 +1 @@ +export { default as IconMonitor } from './IconMonitor' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconMoon/IconMoon.tsx b/packages/ui/src/components/Icon/icons/IconMoon/IconMoon.tsx new file mode 100644 index 00000000000..a5bedac3546 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconMoon/IconMoon.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Moon } from 'react-feather' + import IconBase from './../../IconBase' + + function IconMoon(props: any) { + return + } + + export default IconMoon + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconMoon/index.tsx b/packages/ui/src/components/Icon/icons/IconMoon/index.tsx new file mode 100644 index 00000000000..72cadd9c75b --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconMoon/index.tsx @@ -0,0 +1 @@ +export { default as IconMoon } from './IconMoon' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconMoreHorizontal/IconMoreHorizontal.tsx b/packages/ui/src/components/Icon/icons/IconMoreHorizontal/IconMoreHorizontal.tsx new file mode 100644 index 00000000000..0e10cd20a77 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconMoreHorizontal/IconMoreHorizontal.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { MoreHorizontal } from 'react-feather' + import IconBase from './../../IconBase' + + function IconMoreHorizontal(props: any) { + return + } + + export default IconMoreHorizontal + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconMoreHorizontal/index.tsx b/packages/ui/src/components/Icon/icons/IconMoreHorizontal/index.tsx new file mode 100644 index 00000000000..9d4cc538cb2 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconMoreHorizontal/index.tsx @@ -0,0 +1 @@ +export { default as IconMoreHorizontal } from './IconMoreHorizontal' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconMoreVertical/IconMoreVertical.tsx b/packages/ui/src/components/Icon/icons/IconMoreVertical/IconMoreVertical.tsx new file mode 100644 index 00000000000..a207b2a3046 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconMoreVertical/IconMoreVertical.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { MoreVertical } from 'react-feather' + import IconBase from './../../IconBase' + + function IconMoreVertical(props: any) { + return + } + + export default IconMoreVertical + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconMoreVertical/index.tsx b/packages/ui/src/components/Icon/icons/IconMoreVertical/index.tsx new file mode 100644 index 00000000000..09e734731ec --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconMoreVertical/index.tsx @@ -0,0 +1 @@ +export { default as IconMoreVertical } from './IconMoreVertical' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconMousePointer/IconMousePointer.tsx b/packages/ui/src/components/Icon/icons/IconMousePointer/IconMousePointer.tsx new file mode 100644 index 00000000000..94d764e2979 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconMousePointer/IconMousePointer.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { MousePointer } from 'react-feather' + import IconBase from './../../IconBase' + + function IconMousePointer(props: any) { + return + } + + export default IconMousePointer + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconMousePointer/index.tsx b/packages/ui/src/components/Icon/icons/IconMousePointer/index.tsx new file mode 100644 index 00000000000..0bb79473c38 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconMousePointer/index.tsx @@ -0,0 +1 @@ +export { default as IconMousePointer } from './IconMousePointer' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconMove/IconMove.tsx b/packages/ui/src/components/Icon/icons/IconMove/IconMove.tsx new file mode 100644 index 00000000000..bc6e7203f39 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconMove/IconMove.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Move } from 'react-feather' + import IconBase from './../../IconBase' + + function IconMove(props: any) { + return + } + + export default IconMove + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconMove/index.tsx b/packages/ui/src/components/Icon/icons/IconMove/index.tsx new file mode 100644 index 00000000000..3a09652b9e6 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconMove/index.tsx @@ -0,0 +1 @@ +export { default as IconMove } from './IconMove' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconMusic/IconMusic.tsx b/packages/ui/src/components/Icon/icons/IconMusic/IconMusic.tsx new file mode 100644 index 00000000000..f3e62a953a9 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconMusic/IconMusic.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Music } from 'react-feather' + import IconBase from './../../IconBase' + + function IconMusic(props: any) { + return + } + + export default IconMusic + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconMusic/index.tsx b/packages/ui/src/components/Icon/icons/IconMusic/index.tsx new file mode 100644 index 00000000000..b9e9ced4974 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconMusic/index.tsx @@ -0,0 +1 @@ +export { default as IconMusic } from './IconMusic' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconNavigation/IconNavigation.tsx b/packages/ui/src/components/Icon/icons/IconNavigation/IconNavigation.tsx new file mode 100644 index 00000000000..6b1f004aa72 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconNavigation/IconNavigation.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Navigation } from 'react-feather' + import IconBase from './../../IconBase' + + function IconNavigation(props: any) { + return + } + + export default IconNavigation + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconNavigation/index.tsx b/packages/ui/src/components/Icon/icons/IconNavigation/index.tsx new file mode 100644 index 00000000000..f1cf1746b54 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconNavigation/index.tsx @@ -0,0 +1 @@ +export { default as IconNavigation } from './IconNavigation' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconNavigation2/IconNavigation2.tsx b/packages/ui/src/components/Icon/icons/IconNavigation2/IconNavigation2.tsx new file mode 100644 index 00000000000..24b2b541ef9 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconNavigation2/IconNavigation2.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Navigation2 } from 'react-feather' + import IconBase from './../../IconBase' + + function IconNavigation2(props: any) { + return + } + + export default IconNavigation2 + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconNavigation2/index.tsx b/packages/ui/src/components/Icon/icons/IconNavigation2/index.tsx new file mode 100644 index 00000000000..a5007e9aac8 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconNavigation2/index.tsx @@ -0,0 +1 @@ +export { default as IconNavigation2 } from './IconNavigation2' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconOctagon/IconOctagon.tsx b/packages/ui/src/components/Icon/icons/IconOctagon/IconOctagon.tsx new file mode 100644 index 00000000000..5b283264bb1 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconOctagon/IconOctagon.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Octagon } from 'react-feather' + import IconBase from './../../IconBase' + + function IconOctagon(props: any) { + return + } + + export default IconOctagon + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconOctagon/index.tsx b/packages/ui/src/components/Icon/icons/IconOctagon/index.tsx new file mode 100644 index 00000000000..84af91fd14e --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconOctagon/index.tsx @@ -0,0 +1 @@ +export { default as IconOctagon } from './IconOctagon' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconPackage/IconPackage.tsx b/packages/ui/src/components/Icon/icons/IconPackage/IconPackage.tsx new file mode 100644 index 00000000000..da4047d51e7 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconPackage/IconPackage.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Package } from 'react-feather' + import IconBase from './../../IconBase' + + function IconPackage(props: any) { + return + } + + export default IconPackage + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconPackage/index.tsx b/packages/ui/src/components/Icon/icons/IconPackage/index.tsx new file mode 100644 index 00000000000..4994e914bef --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconPackage/index.tsx @@ -0,0 +1 @@ +export { default as IconPackage } from './IconPackage' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconPaperclip/IconPaperclip.tsx b/packages/ui/src/components/Icon/icons/IconPaperclip/IconPaperclip.tsx new file mode 100644 index 00000000000..f3e09408555 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconPaperclip/IconPaperclip.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Paperclip } from 'react-feather' + import IconBase from './../../IconBase' + + function IconPaperclip(props: any) { + return + } + + export default IconPaperclip + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconPaperclip/index.tsx b/packages/ui/src/components/Icon/icons/IconPaperclip/index.tsx new file mode 100644 index 00000000000..2eaafbe1ae4 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconPaperclip/index.tsx @@ -0,0 +1 @@ +export { default as IconPaperclip } from './IconPaperclip' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconPause/IconPause.tsx b/packages/ui/src/components/Icon/icons/IconPause/IconPause.tsx new file mode 100644 index 00000000000..b67fe3f2638 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconPause/IconPause.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Pause } from 'react-feather' + import IconBase from './../../IconBase' + + function IconPause(props: any) { + return + } + + export default IconPause + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconPause/index.tsx b/packages/ui/src/components/Icon/icons/IconPause/index.tsx new file mode 100644 index 00000000000..240c0d71ce6 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconPause/index.tsx @@ -0,0 +1 @@ +export { default as IconPause } from './IconPause' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconPauseCircle/IconPauseCircle.tsx b/packages/ui/src/components/Icon/icons/IconPauseCircle/IconPauseCircle.tsx new file mode 100644 index 00000000000..6e5dc2700eb --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconPauseCircle/IconPauseCircle.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { PauseCircle } from 'react-feather' + import IconBase from './../../IconBase' + + function IconPauseCircle(props: any) { + return + } + + export default IconPauseCircle + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconPauseCircle/index.tsx b/packages/ui/src/components/Icon/icons/IconPauseCircle/index.tsx new file mode 100644 index 00000000000..effcb57c47b --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconPauseCircle/index.tsx @@ -0,0 +1 @@ +export { default as IconPauseCircle } from './IconPauseCircle' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconPenTool/IconPenTool.tsx b/packages/ui/src/components/Icon/icons/IconPenTool/IconPenTool.tsx new file mode 100644 index 00000000000..fffd069cb0c --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconPenTool/IconPenTool.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { PenTool } from 'react-feather' + import IconBase from './../../IconBase' + + function IconPenTool(props: any) { + return + } + + export default IconPenTool + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconPenTool/index.tsx b/packages/ui/src/components/Icon/icons/IconPenTool/index.tsx new file mode 100644 index 00000000000..3a6732dd18d --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconPenTool/index.tsx @@ -0,0 +1 @@ +export { default as IconPenTool } from './IconPenTool' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconPercent/IconPercent.tsx b/packages/ui/src/components/Icon/icons/IconPercent/IconPercent.tsx new file mode 100644 index 00000000000..d7c1701e131 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconPercent/IconPercent.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Percent } from 'react-feather' + import IconBase from './../../IconBase' + + function IconPercent(props: any) { + return + } + + export default IconPercent + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconPercent/index.tsx b/packages/ui/src/components/Icon/icons/IconPercent/index.tsx new file mode 100644 index 00000000000..f5e74fb9fcb --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconPercent/index.tsx @@ -0,0 +1 @@ +export { default as IconPercent } from './IconPercent' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconPhone/IconPhone.tsx b/packages/ui/src/components/Icon/icons/IconPhone/IconPhone.tsx new file mode 100644 index 00000000000..37fd20edf4b --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconPhone/IconPhone.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Phone } from 'react-feather' + import IconBase from './../../IconBase' + + function IconPhone(props: any) { + return + } + + export default IconPhone + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconPhone/index.tsx b/packages/ui/src/components/Icon/icons/IconPhone/index.tsx new file mode 100644 index 00000000000..30548408cff --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconPhone/index.tsx @@ -0,0 +1 @@ +export { default as IconPhone } from './IconPhone' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconPhoneCall/IconPhoneCall.tsx b/packages/ui/src/components/Icon/icons/IconPhoneCall/IconPhoneCall.tsx new file mode 100644 index 00000000000..b3b25bad1f1 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconPhoneCall/IconPhoneCall.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { PhoneCall } from 'react-feather' + import IconBase from './../../IconBase' + + function IconPhoneCall(props: any) { + return + } + + export default IconPhoneCall + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconPhoneCall/index.tsx b/packages/ui/src/components/Icon/icons/IconPhoneCall/index.tsx new file mode 100644 index 00000000000..ea3ebe5eda8 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconPhoneCall/index.tsx @@ -0,0 +1 @@ +export { default as IconPhoneCall } from './IconPhoneCall' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconPhoneForwarded/IconPhoneForwarded.tsx b/packages/ui/src/components/Icon/icons/IconPhoneForwarded/IconPhoneForwarded.tsx new file mode 100644 index 00000000000..3adc0213be1 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconPhoneForwarded/IconPhoneForwarded.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { PhoneForwarded } from 'react-feather' + import IconBase from './../../IconBase' + + function IconPhoneForwarded(props: any) { + return + } + + export default IconPhoneForwarded + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconPhoneForwarded/index.tsx b/packages/ui/src/components/Icon/icons/IconPhoneForwarded/index.tsx new file mode 100644 index 00000000000..cbca9c6b74b --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconPhoneForwarded/index.tsx @@ -0,0 +1 @@ +export { default as IconPhoneForwarded } from './IconPhoneForwarded' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconPhoneIncoming/IconPhoneIncoming.tsx b/packages/ui/src/components/Icon/icons/IconPhoneIncoming/IconPhoneIncoming.tsx new file mode 100644 index 00000000000..13ff5d44c81 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconPhoneIncoming/IconPhoneIncoming.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { PhoneIncoming } from 'react-feather' + import IconBase from './../../IconBase' + + function IconPhoneIncoming(props: any) { + return + } + + export default IconPhoneIncoming + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconPhoneIncoming/index.tsx b/packages/ui/src/components/Icon/icons/IconPhoneIncoming/index.tsx new file mode 100644 index 00000000000..d7c110a70ad --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconPhoneIncoming/index.tsx @@ -0,0 +1 @@ +export { default as IconPhoneIncoming } from './IconPhoneIncoming' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconPhoneMissed/IconPhoneMissed.tsx b/packages/ui/src/components/Icon/icons/IconPhoneMissed/IconPhoneMissed.tsx new file mode 100644 index 00000000000..5f6258762a9 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconPhoneMissed/IconPhoneMissed.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { PhoneMissed } from 'react-feather' + import IconBase from './../../IconBase' + + function IconPhoneMissed(props: any) { + return + } + + export default IconPhoneMissed + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconPhoneMissed/index.tsx b/packages/ui/src/components/Icon/icons/IconPhoneMissed/index.tsx new file mode 100644 index 00000000000..46f8b925ca6 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconPhoneMissed/index.tsx @@ -0,0 +1 @@ +export { default as IconPhoneMissed } from './IconPhoneMissed' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconPhoneOff/IconPhoneOff.tsx b/packages/ui/src/components/Icon/icons/IconPhoneOff/IconPhoneOff.tsx new file mode 100644 index 00000000000..b5e32827588 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconPhoneOff/IconPhoneOff.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { PhoneOff } from 'react-feather' + import IconBase from './../../IconBase' + + function IconPhoneOff(props: any) { + return + } + + export default IconPhoneOff + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconPhoneOff/index.tsx b/packages/ui/src/components/Icon/icons/IconPhoneOff/index.tsx new file mode 100644 index 00000000000..fc0abae6a9d --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconPhoneOff/index.tsx @@ -0,0 +1 @@ +export { default as IconPhoneOff } from './IconPhoneOff' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconPhoneOutgoing/IconPhoneOutgoing.tsx b/packages/ui/src/components/Icon/icons/IconPhoneOutgoing/IconPhoneOutgoing.tsx new file mode 100644 index 00000000000..4b63a8bdcce --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconPhoneOutgoing/IconPhoneOutgoing.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { PhoneOutgoing } from 'react-feather' + import IconBase from './../../IconBase' + + function IconPhoneOutgoing(props: any) { + return + } + + export default IconPhoneOutgoing + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconPhoneOutgoing/index.tsx b/packages/ui/src/components/Icon/icons/IconPhoneOutgoing/index.tsx new file mode 100644 index 00000000000..f4e964d76fc --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconPhoneOutgoing/index.tsx @@ -0,0 +1 @@ +export { default as IconPhoneOutgoing } from './IconPhoneOutgoing' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconPieChart/IconPieChart.tsx b/packages/ui/src/components/Icon/icons/IconPieChart/IconPieChart.tsx new file mode 100644 index 00000000000..61afc4998dd --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconPieChart/IconPieChart.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { PieChart } from 'react-feather' + import IconBase from './../../IconBase' + + function IconPieChart(props: any) { + return + } + + export default IconPieChart + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconPieChart/index.tsx b/packages/ui/src/components/Icon/icons/IconPieChart/index.tsx new file mode 100644 index 00000000000..5bde6cfd209 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconPieChart/index.tsx @@ -0,0 +1 @@ +export { default as IconPieChart } from './IconPieChart' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconPlay/IconPlay.tsx b/packages/ui/src/components/Icon/icons/IconPlay/IconPlay.tsx new file mode 100644 index 00000000000..60234c3da1c --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconPlay/IconPlay.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Play } from 'react-feather' + import IconBase from './../../IconBase' + + function IconPlay(props: any) { + return + } + + export default IconPlay + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconPlay/index.tsx b/packages/ui/src/components/Icon/icons/IconPlay/index.tsx new file mode 100644 index 00000000000..fae661ec14e --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconPlay/index.tsx @@ -0,0 +1 @@ +export { default as IconPlay } from './IconPlay' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconPlayCircle/IconPlayCircle.tsx b/packages/ui/src/components/Icon/icons/IconPlayCircle/IconPlayCircle.tsx new file mode 100644 index 00000000000..eaed5aad83c --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconPlayCircle/IconPlayCircle.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { PlayCircle } from 'react-feather' + import IconBase from './../../IconBase' + + function IconPlayCircle(props: any) { + return + } + + export default IconPlayCircle + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconPlayCircle/index.tsx b/packages/ui/src/components/Icon/icons/IconPlayCircle/index.tsx new file mode 100644 index 00000000000..16eb39a5b67 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconPlayCircle/index.tsx @@ -0,0 +1 @@ +export { default as IconPlayCircle } from './IconPlayCircle' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconPlus/IconPlus.tsx b/packages/ui/src/components/Icon/icons/IconPlus/IconPlus.tsx new file mode 100644 index 00000000000..d362cd74015 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconPlus/IconPlus.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Plus } from 'react-feather' + import IconBase from './../../IconBase' + + function IconPlus(props: any) { + return + } + + export default IconPlus + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconPlus/index.tsx b/packages/ui/src/components/Icon/icons/IconPlus/index.tsx new file mode 100644 index 00000000000..f745b1bae26 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconPlus/index.tsx @@ -0,0 +1 @@ +export { default as IconPlus } from './IconPlus' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconPlusCircle/IconPlusCircle.tsx b/packages/ui/src/components/Icon/icons/IconPlusCircle/IconPlusCircle.tsx new file mode 100644 index 00000000000..a8bb680c272 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconPlusCircle/IconPlusCircle.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { PlusCircle } from 'react-feather' + import IconBase from './../../IconBase' + + function IconPlusCircle(props: any) { + return + } + + export default IconPlusCircle + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconPlusCircle/index.tsx b/packages/ui/src/components/Icon/icons/IconPlusCircle/index.tsx new file mode 100644 index 00000000000..182b7990301 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconPlusCircle/index.tsx @@ -0,0 +1 @@ +export { default as IconPlusCircle } from './IconPlusCircle' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconPlusSquare/IconPlusSquare.tsx b/packages/ui/src/components/Icon/icons/IconPlusSquare/IconPlusSquare.tsx new file mode 100644 index 00000000000..1cc6dd6ea00 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconPlusSquare/IconPlusSquare.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { PlusSquare } from 'react-feather' + import IconBase from './../../IconBase' + + function IconPlusSquare(props: any) { + return + } + + export default IconPlusSquare + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconPlusSquare/index.tsx b/packages/ui/src/components/Icon/icons/IconPlusSquare/index.tsx new file mode 100644 index 00000000000..68b2738724d --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconPlusSquare/index.tsx @@ -0,0 +1 @@ +export { default as IconPlusSquare } from './IconPlusSquare' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconPocket/IconPocket.tsx b/packages/ui/src/components/Icon/icons/IconPocket/IconPocket.tsx new file mode 100644 index 00000000000..99e232608d4 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconPocket/IconPocket.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Pocket } from 'react-feather' + import IconBase from './../../IconBase' + + function IconPocket(props: any) { + return + } + + export default IconPocket + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconPocket/index.tsx b/packages/ui/src/components/Icon/icons/IconPocket/index.tsx new file mode 100644 index 00000000000..f5cdaac5eaf --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconPocket/index.tsx @@ -0,0 +1 @@ +export { default as IconPocket } from './IconPocket' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconPower/IconPower.tsx b/packages/ui/src/components/Icon/icons/IconPower/IconPower.tsx new file mode 100644 index 00000000000..e2608c54795 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconPower/IconPower.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Power } from 'react-feather' + import IconBase from './../../IconBase' + + function IconPower(props: any) { + return + } + + export default IconPower + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconPower/index.tsx b/packages/ui/src/components/Icon/icons/IconPower/index.tsx new file mode 100644 index 00000000000..3512925d4bd --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconPower/index.tsx @@ -0,0 +1 @@ +export { default as IconPower } from './IconPower' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconPrinter/IconPrinter.tsx b/packages/ui/src/components/Icon/icons/IconPrinter/IconPrinter.tsx new file mode 100644 index 00000000000..dfc6e42103f --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconPrinter/IconPrinter.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Printer } from 'react-feather' + import IconBase from './../../IconBase' + + function IconPrinter(props: any) { + return + } + + export default IconPrinter + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconPrinter/index.tsx b/packages/ui/src/components/Icon/icons/IconPrinter/index.tsx new file mode 100644 index 00000000000..e1ccaf9da66 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconPrinter/index.tsx @@ -0,0 +1 @@ +export { default as IconPrinter } from './IconPrinter' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconRadio/IconRadio.tsx b/packages/ui/src/components/Icon/icons/IconRadio/IconRadio.tsx new file mode 100644 index 00000000000..256a3fd4049 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconRadio/IconRadio.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Radio } from 'react-feather' + import IconBase from './../../IconBase' + + function IconRadio(props: any) { + return + } + + export default IconRadio + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconRadio/index.tsx b/packages/ui/src/components/Icon/icons/IconRadio/index.tsx new file mode 100644 index 00000000000..e2b52ceb0e7 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconRadio/index.tsx @@ -0,0 +1 @@ +export { default as IconRadio } from './IconRadio' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconRefreshCcw/IconRefreshCcw.tsx b/packages/ui/src/components/Icon/icons/IconRefreshCcw/IconRefreshCcw.tsx new file mode 100644 index 00000000000..00c9586f255 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconRefreshCcw/IconRefreshCcw.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { RefreshCcw } from 'react-feather' + import IconBase from './../../IconBase' + + function IconRefreshCcw(props: any) { + return + } + + export default IconRefreshCcw + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconRefreshCcw/index.tsx b/packages/ui/src/components/Icon/icons/IconRefreshCcw/index.tsx new file mode 100644 index 00000000000..a1028a78737 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconRefreshCcw/index.tsx @@ -0,0 +1 @@ +export { default as IconRefreshCcw } from './IconRefreshCcw' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconRefreshCw/IconRefreshCw.tsx b/packages/ui/src/components/Icon/icons/IconRefreshCw/IconRefreshCw.tsx new file mode 100644 index 00000000000..904acba7c7f --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconRefreshCw/IconRefreshCw.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { RefreshCw } from 'react-feather' + import IconBase from './../../IconBase' + + function IconRefreshCw(props: any) { + return + } + + export default IconRefreshCw + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconRefreshCw/index.tsx b/packages/ui/src/components/Icon/icons/IconRefreshCw/index.tsx new file mode 100644 index 00000000000..5b6d32b704f --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconRefreshCw/index.tsx @@ -0,0 +1 @@ +export { default as IconRefreshCw } from './IconRefreshCw' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconRepeat/IconRepeat.tsx b/packages/ui/src/components/Icon/icons/IconRepeat/IconRepeat.tsx new file mode 100644 index 00000000000..d896f0b8e21 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconRepeat/IconRepeat.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Repeat } from 'react-feather' + import IconBase from './../../IconBase' + + function IconRepeat(props: any) { + return + } + + export default IconRepeat + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconRepeat/index.tsx b/packages/ui/src/components/Icon/icons/IconRepeat/index.tsx new file mode 100644 index 00000000000..c483552a305 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconRepeat/index.tsx @@ -0,0 +1 @@ +export { default as IconRepeat } from './IconRepeat' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconRewind/IconRewind.tsx b/packages/ui/src/components/Icon/icons/IconRewind/IconRewind.tsx new file mode 100644 index 00000000000..298c0eff916 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconRewind/IconRewind.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Rewind } from 'react-feather' + import IconBase from './../../IconBase' + + function IconRewind(props: any) { + return + } + + export default IconRewind + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconRewind/index.tsx b/packages/ui/src/components/Icon/icons/IconRewind/index.tsx new file mode 100644 index 00000000000..22a7a0e00d3 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconRewind/index.tsx @@ -0,0 +1 @@ +export { default as IconRewind } from './IconRewind' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconRotateCcw/IconRotateCcw.tsx b/packages/ui/src/components/Icon/icons/IconRotateCcw/IconRotateCcw.tsx new file mode 100644 index 00000000000..5e8d7fff8a4 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconRotateCcw/IconRotateCcw.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { RotateCcw } from 'react-feather' + import IconBase from './../../IconBase' + + function IconRotateCcw(props: any) { + return + } + + export default IconRotateCcw + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconRotateCcw/index.tsx b/packages/ui/src/components/Icon/icons/IconRotateCcw/index.tsx new file mode 100644 index 00000000000..3001a2399d0 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconRotateCcw/index.tsx @@ -0,0 +1 @@ +export { default as IconRotateCcw } from './IconRotateCcw' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconRotateCw/IconRotateCw.tsx b/packages/ui/src/components/Icon/icons/IconRotateCw/IconRotateCw.tsx new file mode 100644 index 00000000000..507706ead07 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconRotateCw/IconRotateCw.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { RotateCw } from 'react-feather' + import IconBase from './../../IconBase' + + function IconRotateCw(props: any) { + return + } + + export default IconRotateCw + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconRotateCw/index.tsx b/packages/ui/src/components/Icon/icons/IconRotateCw/index.tsx new file mode 100644 index 00000000000..33361f00773 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconRotateCw/index.tsx @@ -0,0 +1 @@ +export { default as IconRotateCw } from './IconRotateCw' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconRss/IconRss.tsx b/packages/ui/src/components/Icon/icons/IconRss/IconRss.tsx new file mode 100644 index 00000000000..590b9596def --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconRss/IconRss.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Rss } from 'react-feather' + import IconBase from './../../IconBase' + + function IconRss(props: any) { + return + } + + export default IconRss + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconRss/index.tsx b/packages/ui/src/components/Icon/icons/IconRss/index.tsx new file mode 100644 index 00000000000..5f0d4945238 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconRss/index.tsx @@ -0,0 +1 @@ +export { default as IconRss } from './IconRss' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconSave/IconSave.tsx b/packages/ui/src/components/Icon/icons/IconSave/IconSave.tsx new file mode 100644 index 00000000000..5bf57ef1964 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconSave/IconSave.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Save } from 'react-feather' + import IconBase from './../../IconBase' + + function IconSave(props: any) { + return + } + + export default IconSave + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconSave/index.tsx b/packages/ui/src/components/Icon/icons/IconSave/index.tsx new file mode 100644 index 00000000000..62c81731ce5 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconSave/index.tsx @@ -0,0 +1 @@ +export { default as IconSave } from './IconSave' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconScissors/IconScissors.tsx b/packages/ui/src/components/Icon/icons/IconScissors/IconScissors.tsx new file mode 100644 index 00000000000..af9b4157097 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconScissors/IconScissors.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Scissors } from 'react-feather' + import IconBase from './../../IconBase' + + function IconScissors(props: any) { + return + } + + export default IconScissors + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconScissors/index.tsx b/packages/ui/src/components/Icon/icons/IconScissors/index.tsx new file mode 100644 index 00000000000..fb5c7b2bfbd --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconScissors/index.tsx @@ -0,0 +1 @@ +export { default as IconScissors } from './IconScissors' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconSearch/IconSearch.tsx b/packages/ui/src/components/Icon/icons/IconSearch/IconSearch.tsx new file mode 100644 index 00000000000..8e10764a085 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconSearch/IconSearch.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Search } from 'react-feather' + import IconBase from './../../IconBase' + + function IconSearch(props: any) { + return + } + + export default IconSearch + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconSearch/index.tsx b/packages/ui/src/components/Icon/icons/IconSearch/index.tsx new file mode 100644 index 00000000000..2baafb71dfb --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconSearch/index.tsx @@ -0,0 +1 @@ +export { default as IconSearch } from './IconSearch' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconSend/IconSend.tsx b/packages/ui/src/components/Icon/icons/IconSend/IconSend.tsx new file mode 100644 index 00000000000..bd2a47bb0f4 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconSend/IconSend.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Send } from 'react-feather' + import IconBase from './../../IconBase' + + function IconSend(props: any) { + return + } + + export default IconSend + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconSend/index.tsx b/packages/ui/src/components/Icon/icons/IconSend/index.tsx new file mode 100644 index 00000000000..70992ea259c --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconSend/index.tsx @@ -0,0 +1 @@ +export { default as IconSend } from './IconSend' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconServer/IconServer.tsx b/packages/ui/src/components/Icon/icons/IconServer/IconServer.tsx new file mode 100644 index 00000000000..27e4b938a50 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconServer/IconServer.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Server } from 'react-feather' + import IconBase from './../../IconBase' + + function IconServer(props: any) { + return + } + + export default IconServer + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconServer/index.tsx b/packages/ui/src/components/Icon/icons/IconServer/index.tsx new file mode 100644 index 00000000000..8d937d198e3 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconServer/index.tsx @@ -0,0 +1 @@ +export { default as IconServer } from './IconServer' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconSettings/IconSettings.tsx b/packages/ui/src/components/Icon/icons/IconSettings/IconSettings.tsx new file mode 100644 index 00000000000..3de6802715b --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconSettings/IconSettings.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Settings } from 'react-feather' + import IconBase from './../../IconBase' + + function IconSettings(props: any) { + return + } + + export default IconSettings + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconSettings/index.tsx b/packages/ui/src/components/Icon/icons/IconSettings/index.tsx new file mode 100644 index 00000000000..2081ba44c45 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconSettings/index.tsx @@ -0,0 +1 @@ +export { default as IconSettings } from './IconSettings' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconShare/IconShare.tsx b/packages/ui/src/components/Icon/icons/IconShare/IconShare.tsx new file mode 100644 index 00000000000..2af0089074e --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconShare/IconShare.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Share } from 'react-feather' + import IconBase from './../../IconBase' + + function IconShare(props: any) { + return + } + + export default IconShare + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconShare/index.tsx b/packages/ui/src/components/Icon/icons/IconShare/index.tsx new file mode 100644 index 00000000000..71951de779d --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconShare/index.tsx @@ -0,0 +1 @@ +export { default as IconShare } from './IconShare' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconShare2/IconShare2.tsx b/packages/ui/src/components/Icon/icons/IconShare2/IconShare2.tsx new file mode 100644 index 00000000000..8660a48153f --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconShare2/IconShare2.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Share2 } from 'react-feather' + import IconBase from './../../IconBase' + + function IconShare2(props: any) { + return + } + + export default IconShare2 + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconShare2/index.tsx b/packages/ui/src/components/Icon/icons/IconShare2/index.tsx new file mode 100644 index 00000000000..23cca338aea --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconShare2/index.tsx @@ -0,0 +1 @@ +export { default as IconShare2 } from './IconShare2' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconShield/IconShield.tsx b/packages/ui/src/components/Icon/icons/IconShield/IconShield.tsx new file mode 100644 index 00000000000..66ae4050b62 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconShield/IconShield.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Shield } from 'react-feather' + import IconBase from './../../IconBase' + + function IconShield(props: any) { + return + } + + export default IconShield + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconShield/index.tsx b/packages/ui/src/components/Icon/icons/IconShield/index.tsx new file mode 100644 index 00000000000..5b162ce12f4 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconShield/index.tsx @@ -0,0 +1 @@ +export { default as IconShield } from './IconShield' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconShieldOff/IconShieldOff.tsx b/packages/ui/src/components/Icon/icons/IconShieldOff/IconShieldOff.tsx new file mode 100644 index 00000000000..d3d5b39c14a --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconShieldOff/IconShieldOff.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { ShieldOff } from 'react-feather' + import IconBase from './../../IconBase' + + function IconShieldOff(props: any) { + return + } + + export default IconShieldOff + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconShieldOff/index.tsx b/packages/ui/src/components/Icon/icons/IconShieldOff/index.tsx new file mode 100644 index 00000000000..128cd672ae4 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconShieldOff/index.tsx @@ -0,0 +1 @@ +export { default as IconShieldOff } from './IconShieldOff' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconShoppingBag/IconShoppingBag.tsx b/packages/ui/src/components/Icon/icons/IconShoppingBag/IconShoppingBag.tsx new file mode 100644 index 00000000000..e0a26ecfa7e --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconShoppingBag/IconShoppingBag.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { ShoppingBag } from 'react-feather' + import IconBase from './../../IconBase' + + function IconShoppingBag(props: any) { + return + } + + export default IconShoppingBag + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconShoppingBag/index.tsx b/packages/ui/src/components/Icon/icons/IconShoppingBag/index.tsx new file mode 100644 index 00000000000..fd065a33250 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconShoppingBag/index.tsx @@ -0,0 +1 @@ +export { default as IconShoppingBag } from './IconShoppingBag' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconShoppingCart/IconShoppingCart.tsx b/packages/ui/src/components/Icon/icons/IconShoppingCart/IconShoppingCart.tsx new file mode 100644 index 00000000000..0bf92511efb --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconShoppingCart/IconShoppingCart.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { ShoppingCart } from 'react-feather' + import IconBase from './../../IconBase' + + function IconShoppingCart(props: any) { + return + } + + export default IconShoppingCart + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconShoppingCart/index.tsx b/packages/ui/src/components/Icon/icons/IconShoppingCart/index.tsx new file mode 100644 index 00000000000..8d86eea115f --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconShoppingCart/index.tsx @@ -0,0 +1 @@ +export { default as IconShoppingCart } from './IconShoppingCart' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconShuffle/IconShuffle.tsx b/packages/ui/src/components/Icon/icons/IconShuffle/IconShuffle.tsx new file mode 100644 index 00000000000..38bc0707fa2 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconShuffle/IconShuffle.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Shuffle } from 'react-feather' + import IconBase from './../../IconBase' + + function IconShuffle(props: any) { + return + } + + export default IconShuffle + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconShuffle/index.tsx b/packages/ui/src/components/Icon/icons/IconShuffle/index.tsx new file mode 100644 index 00000000000..5ef26092595 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconShuffle/index.tsx @@ -0,0 +1 @@ +export { default as IconShuffle } from './IconShuffle' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconSidebar/IconSidebar.tsx b/packages/ui/src/components/Icon/icons/IconSidebar/IconSidebar.tsx new file mode 100644 index 00000000000..746dfa3941a --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconSidebar/IconSidebar.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Sidebar } from 'react-feather' + import IconBase from './../../IconBase' + + function IconSidebar(props: any) { + return + } + + export default IconSidebar + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconSidebar/index.tsx b/packages/ui/src/components/Icon/icons/IconSidebar/index.tsx new file mode 100644 index 00000000000..7adc56e2398 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconSidebar/index.tsx @@ -0,0 +1 @@ +export { default as IconSidebar } from './IconSidebar' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconSkipBack/IconSkipBack.tsx b/packages/ui/src/components/Icon/icons/IconSkipBack/IconSkipBack.tsx new file mode 100644 index 00000000000..507b6323819 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconSkipBack/IconSkipBack.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { SkipBack } from 'react-feather' + import IconBase from './../../IconBase' + + function IconSkipBack(props: any) { + return + } + + export default IconSkipBack + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconSkipBack/index.tsx b/packages/ui/src/components/Icon/icons/IconSkipBack/index.tsx new file mode 100644 index 00000000000..455c4566b48 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconSkipBack/index.tsx @@ -0,0 +1 @@ +export { default as IconSkipBack } from './IconSkipBack' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconSkipForward/IconSkipForward.tsx b/packages/ui/src/components/Icon/icons/IconSkipForward/IconSkipForward.tsx new file mode 100644 index 00000000000..75e2f181cbb --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconSkipForward/IconSkipForward.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { SkipForward } from 'react-feather' + import IconBase from './../../IconBase' + + function IconSkipForward(props: any) { + return + } + + export default IconSkipForward + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconSkipForward/index.tsx b/packages/ui/src/components/Icon/icons/IconSkipForward/index.tsx new file mode 100644 index 00000000000..6d0d78de659 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconSkipForward/index.tsx @@ -0,0 +1 @@ +export { default as IconSkipForward } from './IconSkipForward' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconSlack/IconSlack.tsx b/packages/ui/src/components/Icon/icons/IconSlack/IconSlack.tsx new file mode 100644 index 00000000000..9c39e4277c4 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconSlack/IconSlack.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Slack } from 'react-feather' + import IconBase from './../../IconBase' + + function IconSlack(props: any) { + return + } + + export default IconSlack + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconSlack/index.tsx b/packages/ui/src/components/Icon/icons/IconSlack/index.tsx new file mode 100644 index 00000000000..cb3061d4752 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconSlack/index.tsx @@ -0,0 +1 @@ +export { default as IconSlack } from './IconSlack' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconSlash/IconSlash.tsx b/packages/ui/src/components/Icon/icons/IconSlash/IconSlash.tsx new file mode 100644 index 00000000000..afff6286c5d --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconSlash/IconSlash.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Slash } from 'react-feather' + import IconBase from './../../IconBase' + + function IconSlash(props: any) { + return + } + + export default IconSlash + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconSlash/index.tsx b/packages/ui/src/components/Icon/icons/IconSlash/index.tsx new file mode 100644 index 00000000000..f36a76a943c --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconSlash/index.tsx @@ -0,0 +1 @@ +export { default as IconSlash } from './IconSlash' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconSliders/IconSliders.tsx b/packages/ui/src/components/Icon/icons/IconSliders/IconSliders.tsx new file mode 100644 index 00000000000..7a80d1993e5 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconSliders/IconSliders.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Sliders } from 'react-feather' + import IconBase from './../../IconBase' + + function IconSliders(props: any) { + return + } + + export default IconSliders + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconSliders/index.tsx b/packages/ui/src/components/Icon/icons/IconSliders/index.tsx new file mode 100644 index 00000000000..16cbff6b407 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconSliders/index.tsx @@ -0,0 +1 @@ +export { default as IconSliders } from './IconSliders' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconSmartphone/IconSmartphone.tsx b/packages/ui/src/components/Icon/icons/IconSmartphone/IconSmartphone.tsx new file mode 100644 index 00000000000..8494c6a7b66 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconSmartphone/IconSmartphone.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Smartphone } from 'react-feather' + import IconBase from './../../IconBase' + + function IconSmartphone(props: any) { + return + } + + export default IconSmartphone + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconSmartphone/index.tsx b/packages/ui/src/components/Icon/icons/IconSmartphone/index.tsx new file mode 100644 index 00000000000..d22e200558e --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconSmartphone/index.tsx @@ -0,0 +1 @@ +export { default as IconSmartphone } from './IconSmartphone' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconSmile/IconSmile.tsx b/packages/ui/src/components/Icon/icons/IconSmile/IconSmile.tsx new file mode 100644 index 00000000000..4beeaf060ba --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconSmile/IconSmile.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Smile } from 'react-feather' + import IconBase from './../../IconBase' + + function IconSmile(props: any) { + return + } + + export default IconSmile + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconSmile/index.tsx b/packages/ui/src/components/Icon/icons/IconSmile/index.tsx new file mode 100644 index 00000000000..c8b475e469a --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconSmile/index.tsx @@ -0,0 +1 @@ +export { default as IconSmile } from './IconSmile' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconSpeaker/IconSpeaker.tsx b/packages/ui/src/components/Icon/icons/IconSpeaker/IconSpeaker.tsx new file mode 100644 index 00000000000..da3ff8289ea --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconSpeaker/IconSpeaker.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Speaker } from 'react-feather' + import IconBase from './../../IconBase' + + function IconSpeaker(props: any) { + return + } + + export default IconSpeaker + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconSpeaker/index.tsx b/packages/ui/src/components/Icon/icons/IconSpeaker/index.tsx new file mode 100644 index 00000000000..28d69e636da --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconSpeaker/index.tsx @@ -0,0 +1 @@ +export { default as IconSpeaker } from './IconSpeaker' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconSquare/IconSquare.tsx b/packages/ui/src/components/Icon/icons/IconSquare/IconSquare.tsx new file mode 100644 index 00000000000..82e534a8e75 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconSquare/IconSquare.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Square } from 'react-feather' + import IconBase from './../../IconBase' + + function IconSquare(props: any) { + return + } + + export default IconSquare + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconSquare/index.tsx b/packages/ui/src/components/Icon/icons/IconSquare/index.tsx new file mode 100644 index 00000000000..87167e817e6 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconSquare/index.tsx @@ -0,0 +1 @@ +export { default as IconSquare } from './IconSquare' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconStar/IconStar.tsx b/packages/ui/src/components/Icon/icons/IconStar/IconStar.tsx new file mode 100644 index 00000000000..85b43832e76 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconStar/IconStar.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Star } from 'react-feather' + import IconBase from './../../IconBase' + + function IconStar(props: any) { + return + } + + export default IconStar + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconStar/index.tsx b/packages/ui/src/components/Icon/icons/IconStar/index.tsx new file mode 100644 index 00000000000..bb5be9c2e38 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconStar/index.tsx @@ -0,0 +1 @@ +export { default as IconStar } from './IconStar' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconStopCircle/IconStopCircle.tsx b/packages/ui/src/components/Icon/icons/IconStopCircle/IconStopCircle.tsx new file mode 100644 index 00000000000..3d3ac23feef --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconStopCircle/IconStopCircle.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { StopCircle } from 'react-feather' + import IconBase from './../../IconBase' + + function IconStopCircle(props: any) { + return + } + + export default IconStopCircle + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconStopCircle/index.tsx b/packages/ui/src/components/Icon/icons/IconStopCircle/index.tsx new file mode 100644 index 00000000000..e096354c4ee --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconStopCircle/index.tsx @@ -0,0 +1 @@ +export { default as IconStopCircle } from './IconStopCircle' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconSun/IconSun.tsx b/packages/ui/src/components/Icon/icons/IconSun/IconSun.tsx new file mode 100644 index 00000000000..668b9901e54 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconSun/IconSun.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Sun } from 'react-feather' + import IconBase from './../../IconBase' + + function IconSun(props: any) { + return + } + + export default IconSun + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconSun/index.tsx b/packages/ui/src/components/Icon/icons/IconSun/index.tsx new file mode 100644 index 00000000000..fb164320b97 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconSun/index.tsx @@ -0,0 +1 @@ +export { default as IconSun } from './IconSun' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconSunrise/IconSunrise.tsx b/packages/ui/src/components/Icon/icons/IconSunrise/IconSunrise.tsx new file mode 100644 index 00000000000..b459a886a73 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconSunrise/IconSunrise.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Sunrise } from 'react-feather' + import IconBase from './../../IconBase' + + function IconSunrise(props: any) { + return + } + + export default IconSunrise + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconSunrise/index.tsx b/packages/ui/src/components/Icon/icons/IconSunrise/index.tsx new file mode 100644 index 00000000000..a4c2744b8b6 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconSunrise/index.tsx @@ -0,0 +1 @@ +export { default as IconSunrise } from './IconSunrise' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconSunset/IconSunset.tsx b/packages/ui/src/components/Icon/icons/IconSunset/IconSunset.tsx new file mode 100644 index 00000000000..ca72d27c41b --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconSunset/IconSunset.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Sunset } from 'react-feather' + import IconBase from './../../IconBase' + + function IconSunset(props: any) { + return + } + + export default IconSunset + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconSunset/index.tsx b/packages/ui/src/components/Icon/icons/IconSunset/index.tsx new file mode 100644 index 00000000000..0793dc25f84 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconSunset/index.tsx @@ -0,0 +1 @@ +export { default as IconSunset } from './IconSunset' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconTablet/IconTablet.tsx b/packages/ui/src/components/Icon/icons/IconTablet/IconTablet.tsx new file mode 100644 index 00000000000..3143b0dfe62 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconTablet/IconTablet.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Tablet } from 'react-feather' + import IconBase from './../../IconBase' + + function IconTablet(props: any) { + return + } + + export default IconTablet + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconTablet/index.tsx b/packages/ui/src/components/Icon/icons/IconTablet/index.tsx new file mode 100644 index 00000000000..aaaa2cf4dcb --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconTablet/index.tsx @@ -0,0 +1 @@ +export { default as IconTablet } from './IconTablet' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconTag/IconTag.tsx b/packages/ui/src/components/Icon/icons/IconTag/IconTag.tsx new file mode 100644 index 00000000000..fd83bcaa48e --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconTag/IconTag.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Tag } from 'react-feather' + import IconBase from './../../IconBase' + + function IconTag(props: any) { + return + } + + export default IconTag + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconTag/index.tsx b/packages/ui/src/components/Icon/icons/IconTag/index.tsx new file mode 100644 index 00000000000..e080b0262a7 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconTag/index.tsx @@ -0,0 +1 @@ +export { default as IconTag } from './IconTag' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconTarget/IconTarget.tsx b/packages/ui/src/components/Icon/icons/IconTarget/IconTarget.tsx new file mode 100644 index 00000000000..31dbc9ff700 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconTarget/IconTarget.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Target } from 'react-feather' + import IconBase from './../../IconBase' + + function IconTarget(props: any) { + return + } + + export default IconTarget + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconTarget/index.tsx b/packages/ui/src/components/Icon/icons/IconTarget/index.tsx new file mode 100644 index 00000000000..d23fa16d81f --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconTarget/index.tsx @@ -0,0 +1 @@ +export { default as IconTarget } from './IconTarget' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconTerminal/IconTerminal.tsx b/packages/ui/src/components/Icon/icons/IconTerminal/IconTerminal.tsx new file mode 100644 index 00000000000..b0f8113dec0 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconTerminal/IconTerminal.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Terminal } from 'react-feather' + import IconBase from './../../IconBase' + + function IconTerminal(props: any) { + return + } + + export default IconTerminal + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconTerminal/index.tsx b/packages/ui/src/components/Icon/icons/IconTerminal/index.tsx new file mode 100644 index 00000000000..ca3883bda43 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconTerminal/index.tsx @@ -0,0 +1 @@ +export { default as IconTerminal } from './IconTerminal' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconThermometer/IconThermometer.tsx b/packages/ui/src/components/Icon/icons/IconThermometer/IconThermometer.tsx new file mode 100644 index 00000000000..b9bc028de04 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconThermometer/IconThermometer.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Thermometer } from 'react-feather' + import IconBase from './../../IconBase' + + function IconThermometer(props: any) { + return + } + + export default IconThermometer + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconThermometer/index.tsx b/packages/ui/src/components/Icon/icons/IconThermometer/index.tsx new file mode 100644 index 00000000000..d6a2a41c8a1 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconThermometer/index.tsx @@ -0,0 +1 @@ +export { default as IconThermometer } from './IconThermometer' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconThumbsDown/IconThumbsDown.tsx b/packages/ui/src/components/Icon/icons/IconThumbsDown/IconThumbsDown.tsx new file mode 100644 index 00000000000..64a8a1a2fbc --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconThumbsDown/IconThumbsDown.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { ThumbsDown } from 'react-feather' + import IconBase from './../../IconBase' + + function IconThumbsDown(props: any) { + return + } + + export default IconThumbsDown + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconThumbsDown/index.tsx b/packages/ui/src/components/Icon/icons/IconThumbsDown/index.tsx new file mode 100644 index 00000000000..ed90d861fbf --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconThumbsDown/index.tsx @@ -0,0 +1 @@ +export { default as IconThumbsDown } from './IconThumbsDown' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconThumbsUp/IconThumbsUp.tsx b/packages/ui/src/components/Icon/icons/IconThumbsUp/IconThumbsUp.tsx new file mode 100644 index 00000000000..6e0296f7b3d --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconThumbsUp/IconThumbsUp.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { ThumbsUp } from 'react-feather' + import IconBase from './../../IconBase' + + function IconThumbsUp(props: any) { + return + } + + export default IconThumbsUp + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconThumbsUp/index.tsx b/packages/ui/src/components/Icon/icons/IconThumbsUp/index.tsx new file mode 100644 index 00000000000..dab88e6ac3a --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconThumbsUp/index.tsx @@ -0,0 +1 @@ +export { default as IconThumbsUp } from './IconThumbsUp' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconToggleLeft/IconToggleLeft.tsx b/packages/ui/src/components/Icon/icons/IconToggleLeft/IconToggleLeft.tsx new file mode 100644 index 00000000000..5dbe2cd0704 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconToggleLeft/IconToggleLeft.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { ToggleLeft } from 'react-feather' + import IconBase from './../../IconBase' + + function IconToggleLeft(props: any) { + return + } + + export default IconToggleLeft + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconToggleLeft/index.tsx b/packages/ui/src/components/Icon/icons/IconToggleLeft/index.tsx new file mode 100644 index 00000000000..ebfc126b158 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconToggleLeft/index.tsx @@ -0,0 +1 @@ +export { default as IconToggleLeft } from './IconToggleLeft' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconToggleRight/IconToggleRight.tsx b/packages/ui/src/components/Icon/icons/IconToggleRight/IconToggleRight.tsx new file mode 100644 index 00000000000..3fba59801f9 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconToggleRight/IconToggleRight.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { ToggleRight } from 'react-feather' + import IconBase from './../../IconBase' + + function IconToggleRight(props: any) { + return + } + + export default IconToggleRight + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconToggleRight/index.tsx b/packages/ui/src/components/Icon/icons/IconToggleRight/index.tsx new file mode 100644 index 00000000000..bdda33c11f3 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconToggleRight/index.tsx @@ -0,0 +1 @@ +export { default as IconToggleRight } from './IconToggleRight' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconTool/IconTool.tsx b/packages/ui/src/components/Icon/icons/IconTool/IconTool.tsx new file mode 100644 index 00000000000..e9defd6f76e --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconTool/IconTool.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Tool } from 'react-feather' + import IconBase from './../../IconBase' + + function IconTool(props: any) { + return + } + + export default IconTool + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconTool/index.tsx b/packages/ui/src/components/Icon/icons/IconTool/index.tsx new file mode 100644 index 00000000000..9b58437431d --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconTool/index.tsx @@ -0,0 +1 @@ +export { default as IconTool } from './IconTool' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconTrash/IconTrash.tsx b/packages/ui/src/components/Icon/icons/IconTrash/IconTrash.tsx new file mode 100644 index 00000000000..bc7fdd49324 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconTrash/IconTrash.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Trash } from 'react-feather' + import IconBase from './../../IconBase' + + function IconTrash(props: any) { + return + } + + export default IconTrash + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconTrash/index.tsx b/packages/ui/src/components/Icon/icons/IconTrash/index.tsx new file mode 100644 index 00000000000..72dd12cce3b --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconTrash/index.tsx @@ -0,0 +1 @@ +export { default as IconTrash } from './IconTrash' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconTrash2/IconTrash2.tsx b/packages/ui/src/components/Icon/icons/IconTrash2/IconTrash2.tsx new file mode 100644 index 00000000000..1217b07a4a0 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconTrash2/IconTrash2.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Trash2 } from 'react-feather' + import IconBase from './../../IconBase' + + function IconTrash2(props: any) { + return + } + + export default IconTrash2 + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconTrash2/index.tsx b/packages/ui/src/components/Icon/icons/IconTrash2/index.tsx new file mode 100644 index 00000000000..f0d7c172357 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconTrash2/index.tsx @@ -0,0 +1 @@ +export { default as IconTrash2 } from './IconTrash2' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconTrello/IconTrello.tsx b/packages/ui/src/components/Icon/icons/IconTrello/IconTrello.tsx new file mode 100644 index 00000000000..c57561c21e2 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconTrello/IconTrello.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Trello } from 'react-feather' + import IconBase from './../../IconBase' + + function IconTrello(props: any) { + return + } + + export default IconTrello + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconTrello/index.tsx b/packages/ui/src/components/Icon/icons/IconTrello/index.tsx new file mode 100644 index 00000000000..737a1c75e9c --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconTrello/index.tsx @@ -0,0 +1 @@ +export { default as IconTrello } from './IconTrello' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconTrendingDown/IconTrendingDown.tsx b/packages/ui/src/components/Icon/icons/IconTrendingDown/IconTrendingDown.tsx new file mode 100644 index 00000000000..a15e9a14549 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconTrendingDown/IconTrendingDown.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { TrendingDown } from 'react-feather' + import IconBase from './../../IconBase' + + function IconTrendingDown(props: any) { + return + } + + export default IconTrendingDown + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconTrendingDown/index.tsx b/packages/ui/src/components/Icon/icons/IconTrendingDown/index.tsx new file mode 100644 index 00000000000..e6869cd98ca --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconTrendingDown/index.tsx @@ -0,0 +1 @@ +export { default as IconTrendingDown } from './IconTrendingDown' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconTrendingUp/IconTrendingUp.tsx b/packages/ui/src/components/Icon/icons/IconTrendingUp/IconTrendingUp.tsx new file mode 100644 index 00000000000..56e0d17a81f --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconTrendingUp/IconTrendingUp.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { TrendingUp } from 'react-feather' + import IconBase from './../../IconBase' + + function IconTrendingUp(props: any) { + return + } + + export default IconTrendingUp + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconTrendingUp/index.tsx b/packages/ui/src/components/Icon/icons/IconTrendingUp/index.tsx new file mode 100644 index 00000000000..f20ea46fbc3 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconTrendingUp/index.tsx @@ -0,0 +1 @@ +export { default as IconTrendingUp } from './IconTrendingUp' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconTriangle/IconTriangle.tsx b/packages/ui/src/components/Icon/icons/IconTriangle/IconTriangle.tsx new file mode 100644 index 00000000000..0e77d5ed861 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconTriangle/IconTriangle.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Triangle } from 'react-feather' + import IconBase from './../../IconBase' + + function IconTriangle(props: any) { + return + } + + export default IconTriangle + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconTriangle/index.tsx b/packages/ui/src/components/Icon/icons/IconTriangle/index.tsx new file mode 100644 index 00000000000..7ed372ab6c3 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconTriangle/index.tsx @@ -0,0 +1 @@ +export { default as IconTriangle } from './IconTriangle' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconTruck/IconTruck.tsx b/packages/ui/src/components/Icon/icons/IconTruck/IconTruck.tsx new file mode 100644 index 00000000000..5338a219d35 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconTruck/IconTruck.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Truck } from 'react-feather' + import IconBase from './../../IconBase' + + function IconTruck(props: any) { + return + } + + export default IconTruck + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconTruck/index.tsx b/packages/ui/src/components/Icon/icons/IconTruck/index.tsx new file mode 100644 index 00000000000..a56c046baa2 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconTruck/index.tsx @@ -0,0 +1 @@ +export { default as IconTruck } from './IconTruck' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconTv/IconTv.tsx b/packages/ui/src/components/Icon/icons/IconTv/IconTv.tsx new file mode 100644 index 00000000000..6df35d9198c --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconTv/IconTv.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Tv } from 'react-feather' + import IconBase from './../../IconBase' + + function IconTv(props: any) { + return + } + + export default IconTv + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconTv/index.tsx b/packages/ui/src/components/Icon/icons/IconTv/index.tsx new file mode 100644 index 00000000000..ac3c5630f18 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconTv/index.tsx @@ -0,0 +1 @@ +export { default as IconTv } from './IconTv' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconTwitch/IconTwitch.tsx b/packages/ui/src/components/Icon/icons/IconTwitch/IconTwitch.tsx new file mode 100644 index 00000000000..a0ec1a629df --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconTwitch/IconTwitch.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Twitch } from 'react-feather' + import IconBase from './../../IconBase' + + function IconTwitch(props: any) { + return + } + + export default IconTwitch + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconTwitch/index.tsx b/packages/ui/src/components/Icon/icons/IconTwitch/index.tsx new file mode 100644 index 00000000000..60f71c08ac6 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconTwitch/index.tsx @@ -0,0 +1 @@ +export { default as IconTwitch } from './IconTwitch' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconTwitter/IconTwitter.tsx b/packages/ui/src/components/Icon/icons/IconTwitter/IconTwitter.tsx new file mode 100644 index 00000000000..aa203f99ce8 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconTwitter/IconTwitter.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Twitter } from 'react-feather' + import IconBase from './../../IconBase' + + function IconTwitter(props: any) { + return + } + + export default IconTwitter + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconTwitter/index.tsx b/packages/ui/src/components/Icon/icons/IconTwitter/index.tsx new file mode 100644 index 00000000000..b9ce9a9c8f1 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconTwitter/index.tsx @@ -0,0 +1 @@ +export { default as IconTwitter } from './IconTwitter' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconType/IconType.tsx b/packages/ui/src/components/Icon/icons/IconType/IconType.tsx new file mode 100644 index 00000000000..edbb613c3f4 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconType/IconType.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Type } from 'react-feather' + import IconBase from './../../IconBase' + + function IconType(props: any) { + return + } + + export default IconType + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconType/index.tsx b/packages/ui/src/components/Icon/icons/IconType/index.tsx new file mode 100644 index 00000000000..b2e3829624a --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconType/index.tsx @@ -0,0 +1 @@ +export { default as IconType } from './IconType' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconUmbrella/IconUmbrella.tsx b/packages/ui/src/components/Icon/icons/IconUmbrella/IconUmbrella.tsx new file mode 100644 index 00000000000..2483d2f033f --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconUmbrella/IconUmbrella.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Umbrella } from 'react-feather' + import IconBase from './../../IconBase' + + function IconUmbrella(props: any) { + return + } + + export default IconUmbrella + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconUmbrella/index.tsx b/packages/ui/src/components/Icon/icons/IconUmbrella/index.tsx new file mode 100644 index 00000000000..cb0b79d6e59 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconUmbrella/index.tsx @@ -0,0 +1 @@ +export { default as IconUmbrella } from './IconUmbrella' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconUnderline/IconUnderline.tsx b/packages/ui/src/components/Icon/icons/IconUnderline/IconUnderline.tsx new file mode 100644 index 00000000000..8549558a4ae --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconUnderline/IconUnderline.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Underline } from 'react-feather' + import IconBase from './../../IconBase' + + function IconUnderline(props: any) { + return + } + + export default IconUnderline + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconUnderline/index.tsx b/packages/ui/src/components/Icon/icons/IconUnderline/index.tsx new file mode 100644 index 00000000000..074d387b354 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconUnderline/index.tsx @@ -0,0 +1 @@ +export { default as IconUnderline } from './IconUnderline' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconUnlock/IconUnlock.tsx b/packages/ui/src/components/Icon/icons/IconUnlock/IconUnlock.tsx new file mode 100644 index 00000000000..e79d4c2046d --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconUnlock/IconUnlock.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Unlock } from 'react-feather' + import IconBase from './../../IconBase' + + function IconUnlock(props: any) { + return + } + + export default IconUnlock + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconUnlock/index.tsx b/packages/ui/src/components/Icon/icons/IconUnlock/index.tsx new file mode 100644 index 00000000000..5be7bd744d7 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconUnlock/index.tsx @@ -0,0 +1 @@ +export { default as IconUnlock } from './IconUnlock' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconUpload/IconUpload.tsx b/packages/ui/src/components/Icon/icons/IconUpload/IconUpload.tsx new file mode 100644 index 00000000000..15f6511c736 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconUpload/IconUpload.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Upload } from 'react-feather' + import IconBase from './../../IconBase' + + function IconUpload(props: any) { + return + } + + export default IconUpload + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconUpload/index.tsx b/packages/ui/src/components/Icon/icons/IconUpload/index.tsx new file mode 100644 index 00000000000..42867d030ec --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconUpload/index.tsx @@ -0,0 +1 @@ +export { default as IconUpload } from './IconUpload' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconUploadCloud/IconUploadCloud.tsx b/packages/ui/src/components/Icon/icons/IconUploadCloud/IconUploadCloud.tsx new file mode 100644 index 00000000000..5c756386abe --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconUploadCloud/IconUploadCloud.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { UploadCloud } from 'react-feather' + import IconBase from './../../IconBase' + + function IconUploadCloud(props: any) { + return + } + + export default IconUploadCloud + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconUploadCloud/index.tsx b/packages/ui/src/components/Icon/icons/IconUploadCloud/index.tsx new file mode 100644 index 00000000000..06da22b5e68 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconUploadCloud/index.tsx @@ -0,0 +1 @@ +export { default as IconUploadCloud } from './IconUploadCloud' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconUser/IconUser.tsx b/packages/ui/src/components/Icon/icons/IconUser/IconUser.tsx new file mode 100644 index 00000000000..cf8d331e5af --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconUser/IconUser.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { User } from 'react-feather' + import IconBase from './../../IconBase' + + function IconUser(props: any) { + return + } + + export default IconUser + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconUser/index.tsx b/packages/ui/src/components/Icon/icons/IconUser/index.tsx new file mode 100644 index 00000000000..21834d687c3 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconUser/index.tsx @@ -0,0 +1 @@ +export { default as IconUser } from './IconUser' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconUserCheck/IconUserCheck.tsx b/packages/ui/src/components/Icon/icons/IconUserCheck/IconUserCheck.tsx new file mode 100644 index 00000000000..7b87d0c6844 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconUserCheck/IconUserCheck.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { UserCheck } from 'react-feather' + import IconBase from './../../IconBase' + + function IconUserCheck(props: any) { + return + } + + export default IconUserCheck + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconUserCheck/index.tsx b/packages/ui/src/components/Icon/icons/IconUserCheck/index.tsx new file mode 100644 index 00000000000..183b28346e5 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconUserCheck/index.tsx @@ -0,0 +1 @@ +export { default as IconUserCheck } from './IconUserCheck' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconUserMinus/IconUserMinus.tsx b/packages/ui/src/components/Icon/icons/IconUserMinus/IconUserMinus.tsx new file mode 100644 index 00000000000..949645fe570 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconUserMinus/IconUserMinus.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { UserMinus } from 'react-feather' + import IconBase from './../../IconBase' + + function IconUserMinus(props: any) { + return + } + + export default IconUserMinus + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconUserMinus/index.tsx b/packages/ui/src/components/Icon/icons/IconUserMinus/index.tsx new file mode 100644 index 00000000000..fcf2754f72a --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconUserMinus/index.tsx @@ -0,0 +1 @@ +export { default as IconUserMinus } from './IconUserMinus' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconUserPlus/IconUserPlus.tsx b/packages/ui/src/components/Icon/icons/IconUserPlus/IconUserPlus.tsx new file mode 100644 index 00000000000..8b5e0403b2e --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconUserPlus/IconUserPlus.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { UserPlus } from 'react-feather' + import IconBase from './../../IconBase' + + function IconUserPlus(props: any) { + return + } + + export default IconUserPlus + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconUserPlus/index.tsx b/packages/ui/src/components/Icon/icons/IconUserPlus/index.tsx new file mode 100644 index 00000000000..196ac18e249 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconUserPlus/index.tsx @@ -0,0 +1 @@ +export { default as IconUserPlus } from './IconUserPlus' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconUserX/IconUserX.tsx b/packages/ui/src/components/Icon/icons/IconUserX/IconUserX.tsx new file mode 100644 index 00000000000..5a7fd20a81d --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconUserX/IconUserX.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { UserX } from 'react-feather' + import IconBase from './../../IconBase' + + function IconUserX(props: any) { + return + } + + export default IconUserX + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconUserX/index.tsx b/packages/ui/src/components/Icon/icons/IconUserX/index.tsx new file mode 100644 index 00000000000..1de4299d2b3 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconUserX/index.tsx @@ -0,0 +1 @@ +export { default as IconUserX } from './IconUserX' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconUsers/IconUsers.tsx b/packages/ui/src/components/Icon/icons/IconUsers/IconUsers.tsx new file mode 100644 index 00000000000..f778383e228 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconUsers/IconUsers.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Users } from 'react-feather' + import IconBase from './../../IconBase' + + function IconUsers(props: any) { + return + } + + export default IconUsers + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconUsers/index.tsx b/packages/ui/src/components/Icon/icons/IconUsers/index.tsx new file mode 100644 index 00000000000..d40774c2eeb --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconUsers/index.tsx @@ -0,0 +1 @@ +export { default as IconUsers } from './IconUsers' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconVideo/IconVideo.tsx b/packages/ui/src/components/Icon/icons/IconVideo/IconVideo.tsx new file mode 100644 index 00000000000..974bf112b28 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconVideo/IconVideo.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Video } from 'react-feather' + import IconBase from './../../IconBase' + + function IconVideo(props: any) { + return + } + + export default IconVideo + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconVideo/index.tsx b/packages/ui/src/components/Icon/icons/IconVideo/index.tsx new file mode 100644 index 00000000000..93f8153c170 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconVideo/index.tsx @@ -0,0 +1 @@ +export { default as IconVideo } from './IconVideo' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconVideoOff/IconVideoOff.tsx b/packages/ui/src/components/Icon/icons/IconVideoOff/IconVideoOff.tsx new file mode 100644 index 00000000000..345cc0dbf69 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconVideoOff/IconVideoOff.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { VideoOff } from 'react-feather' + import IconBase from './../../IconBase' + + function IconVideoOff(props: any) { + return + } + + export default IconVideoOff + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconVideoOff/index.tsx b/packages/ui/src/components/Icon/icons/IconVideoOff/index.tsx new file mode 100644 index 00000000000..8d6802d07fb --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconVideoOff/index.tsx @@ -0,0 +1 @@ +export { default as IconVideoOff } from './IconVideoOff' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconVoicemail/IconVoicemail.tsx b/packages/ui/src/components/Icon/icons/IconVoicemail/IconVoicemail.tsx new file mode 100644 index 00000000000..8bd16ba3e9e --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconVoicemail/IconVoicemail.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Voicemail } from 'react-feather' + import IconBase from './../../IconBase' + + function IconVoicemail(props: any) { + return + } + + export default IconVoicemail + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconVoicemail/index.tsx b/packages/ui/src/components/Icon/icons/IconVoicemail/index.tsx new file mode 100644 index 00000000000..8a2ee7f711e --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconVoicemail/index.tsx @@ -0,0 +1 @@ +export { default as IconVoicemail } from './IconVoicemail' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconVolume/IconVolume.tsx b/packages/ui/src/components/Icon/icons/IconVolume/IconVolume.tsx new file mode 100644 index 00000000000..c2c5b107c33 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconVolume/IconVolume.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Volume } from 'react-feather' + import IconBase from './../../IconBase' + + function IconVolume(props: any) { + return + } + + export default IconVolume + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconVolume/index.tsx b/packages/ui/src/components/Icon/icons/IconVolume/index.tsx new file mode 100644 index 00000000000..ad18a09b054 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconVolume/index.tsx @@ -0,0 +1 @@ +export { default as IconVolume } from './IconVolume' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconVolume1/IconVolume1.tsx b/packages/ui/src/components/Icon/icons/IconVolume1/IconVolume1.tsx new file mode 100644 index 00000000000..f2b32cdbac9 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconVolume1/IconVolume1.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Volume1 } from 'react-feather' + import IconBase from './../../IconBase' + + function IconVolume1(props: any) { + return + } + + export default IconVolume1 + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconVolume1/index.tsx b/packages/ui/src/components/Icon/icons/IconVolume1/index.tsx new file mode 100644 index 00000000000..718793c66c2 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconVolume1/index.tsx @@ -0,0 +1 @@ +export { default as IconVolume1 } from './IconVolume1' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconVolume2/IconVolume2.tsx b/packages/ui/src/components/Icon/icons/IconVolume2/IconVolume2.tsx new file mode 100644 index 00000000000..c56b15d5ff5 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconVolume2/IconVolume2.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Volume2 } from 'react-feather' + import IconBase from './../../IconBase' + + function IconVolume2(props: any) { + return + } + + export default IconVolume2 + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconVolume2/index.tsx b/packages/ui/src/components/Icon/icons/IconVolume2/index.tsx new file mode 100644 index 00000000000..3042ef5a37f --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconVolume2/index.tsx @@ -0,0 +1 @@ +export { default as IconVolume2 } from './IconVolume2' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconVolumeX/IconVolumeX.tsx b/packages/ui/src/components/Icon/icons/IconVolumeX/IconVolumeX.tsx new file mode 100644 index 00000000000..5e997ebdbb5 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconVolumeX/IconVolumeX.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { VolumeX } from 'react-feather' + import IconBase from './../../IconBase' + + function IconVolumeX(props: any) { + return + } + + export default IconVolumeX + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconVolumeX/index.tsx b/packages/ui/src/components/Icon/icons/IconVolumeX/index.tsx new file mode 100644 index 00000000000..89dc1cb40cc --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconVolumeX/index.tsx @@ -0,0 +1 @@ +export { default as IconVolumeX } from './IconVolumeX' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconWatch/IconWatch.tsx b/packages/ui/src/components/Icon/icons/IconWatch/IconWatch.tsx new file mode 100644 index 00000000000..fa410e6f903 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconWatch/IconWatch.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Watch } from 'react-feather' + import IconBase from './../../IconBase' + + function IconWatch(props: any) { + return + } + + export default IconWatch + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconWatch/index.tsx b/packages/ui/src/components/Icon/icons/IconWatch/index.tsx new file mode 100644 index 00000000000..dce90b7221e --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconWatch/index.tsx @@ -0,0 +1 @@ +export { default as IconWatch } from './IconWatch' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconWifi/IconWifi.tsx b/packages/ui/src/components/Icon/icons/IconWifi/IconWifi.tsx new file mode 100644 index 00000000000..a920c6e2497 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconWifi/IconWifi.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Wifi } from 'react-feather' + import IconBase from './../../IconBase' + + function IconWifi(props: any) { + return + } + + export default IconWifi + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconWifi/index.tsx b/packages/ui/src/components/Icon/icons/IconWifi/index.tsx new file mode 100644 index 00000000000..10f002892a0 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconWifi/index.tsx @@ -0,0 +1 @@ +export { default as IconWifi } from './IconWifi' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconWifiOff/IconWifiOff.tsx b/packages/ui/src/components/Icon/icons/IconWifiOff/IconWifiOff.tsx new file mode 100644 index 00000000000..99edae71b75 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconWifiOff/IconWifiOff.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { WifiOff } from 'react-feather' + import IconBase from './../../IconBase' + + function IconWifiOff(props: any) { + return + } + + export default IconWifiOff + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconWifiOff/index.tsx b/packages/ui/src/components/Icon/icons/IconWifiOff/index.tsx new file mode 100644 index 00000000000..b532c51c712 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconWifiOff/index.tsx @@ -0,0 +1 @@ +export { default as IconWifiOff } from './IconWifiOff' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconWind/IconWind.tsx b/packages/ui/src/components/Icon/icons/IconWind/IconWind.tsx new file mode 100644 index 00000000000..85bc9f43623 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconWind/IconWind.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Wind } from 'react-feather' + import IconBase from './../../IconBase' + + function IconWind(props: any) { + return + } + + export default IconWind + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconWind/index.tsx b/packages/ui/src/components/Icon/icons/IconWind/index.tsx new file mode 100644 index 00000000000..9449db6fc40 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconWind/index.tsx @@ -0,0 +1 @@ +export { default as IconWind } from './IconWind' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconX/IconX.tsx b/packages/ui/src/components/Icon/icons/IconX/IconX.tsx new file mode 100644 index 00000000000..123fd33e78d --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconX/IconX.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { X } from 'react-feather' + import IconBase from './../../IconBase' + + function IconX(props: any) { + return + } + + export default IconX + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconX/index.tsx b/packages/ui/src/components/Icon/icons/IconX/index.tsx new file mode 100644 index 00000000000..b0b628132f3 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconX/index.tsx @@ -0,0 +1 @@ +export { default as IconX } from './IconX' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconXCircle/IconXCircle.tsx b/packages/ui/src/components/Icon/icons/IconXCircle/IconXCircle.tsx new file mode 100644 index 00000000000..e1990eba8c4 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconXCircle/IconXCircle.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { XCircle } from 'react-feather' + import IconBase from './../../IconBase' + + function IconXCircle(props: any) { + return + } + + export default IconXCircle + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconXCircle/index.tsx b/packages/ui/src/components/Icon/icons/IconXCircle/index.tsx new file mode 100644 index 00000000000..7300e176f69 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconXCircle/index.tsx @@ -0,0 +1 @@ +export { default as IconXCircle } from './IconXCircle' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconXOctagon/IconXOctagon.tsx b/packages/ui/src/components/Icon/icons/IconXOctagon/IconXOctagon.tsx new file mode 100644 index 00000000000..cba425a37ee --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconXOctagon/IconXOctagon.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { XOctagon } from 'react-feather' + import IconBase from './../../IconBase' + + function IconXOctagon(props: any) { + return + } + + export default IconXOctagon + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconXOctagon/index.tsx b/packages/ui/src/components/Icon/icons/IconXOctagon/index.tsx new file mode 100644 index 00000000000..f1e25a85f6a --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconXOctagon/index.tsx @@ -0,0 +1 @@ +export { default as IconXOctagon } from './IconXOctagon' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconXSquare/IconXSquare.tsx b/packages/ui/src/components/Icon/icons/IconXSquare/IconXSquare.tsx new file mode 100644 index 00000000000..99b634b1848 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconXSquare/IconXSquare.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { XSquare } from 'react-feather' + import IconBase from './../../IconBase' + + function IconXSquare(props: any) { + return + } + + export default IconXSquare + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconXSquare/index.tsx b/packages/ui/src/components/Icon/icons/IconXSquare/index.tsx new file mode 100644 index 00000000000..e830952753a --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconXSquare/index.tsx @@ -0,0 +1 @@ +export { default as IconXSquare } from './IconXSquare' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconYoutube/IconYoutube.tsx b/packages/ui/src/components/Icon/icons/IconYoutube/IconYoutube.tsx new file mode 100644 index 00000000000..c2fff964f17 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconYoutube/IconYoutube.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Youtube } from 'react-feather' + import IconBase from './../../IconBase' + + function IconYoutube(props: any) { + return + } + + export default IconYoutube + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconYoutube/index.tsx b/packages/ui/src/components/Icon/icons/IconYoutube/index.tsx new file mode 100644 index 00000000000..10e2348ce12 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconYoutube/index.tsx @@ -0,0 +1 @@ +export { default as IconYoutube } from './IconYoutube' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconZap/IconZap.tsx b/packages/ui/src/components/Icon/icons/IconZap/IconZap.tsx new file mode 100644 index 00000000000..7aafcac219c --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconZap/IconZap.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { Zap } from 'react-feather' + import IconBase from './../../IconBase' + + function IconZap(props: any) { + return + } + + export default IconZap + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconZap/index.tsx b/packages/ui/src/components/Icon/icons/IconZap/index.tsx new file mode 100644 index 00000000000..42363316e08 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconZap/index.tsx @@ -0,0 +1 @@ +export { default as IconZap } from './IconZap' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconZapOff/IconZapOff.tsx b/packages/ui/src/components/Icon/icons/IconZapOff/IconZapOff.tsx new file mode 100644 index 00000000000..8fd36e5fb2f --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconZapOff/IconZapOff.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { ZapOff } from 'react-feather' + import IconBase from './../../IconBase' + + function IconZapOff(props: any) { + return + } + + export default IconZapOff + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconZapOff/index.tsx b/packages/ui/src/components/Icon/icons/IconZapOff/index.tsx new file mode 100644 index 00000000000..a41fa2435b4 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconZapOff/index.tsx @@ -0,0 +1 @@ +export { default as IconZapOff } from './IconZapOff' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconZoomIn/IconZoomIn.tsx b/packages/ui/src/components/Icon/icons/IconZoomIn/IconZoomIn.tsx new file mode 100644 index 00000000000..ce7bede2f7d --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconZoomIn/IconZoomIn.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { ZoomIn } from 'react-feather' + import IconBase from './../../IconBase' + + function IconZoomIn(props: any) { + return + } + + export default IconZoomIn + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconZoomIn/index.tsx b/packages/ui/src/components/Icon/icons/IconZoomIn/index.tsx new file mode 100644 index 00000000000..3933062fbbd --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconZoomIn/index.tsx @@ -0,0 +1 @@ +export { default as IconZoomIn } from './IconZoomIn' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconZoomOut/IconZoomOut.tsx b/packages/ui/src/components/Icon/icons/IconZoomOut/IconZoomOut.tsx new file mode 100644 index 00000000000..8c4218dde5f --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconZoomOut/IconZoomOut.tsx @@ -0,0 +1,13 @@ +// DO NOT EDIT + // this file is generated by /internals/populate-icons script + import * as React from 'react' + // @ts-ignore + import { ZoomOut } from 'react-feather' + import IconBase from './../../IconBase' + + function IconZoomOut(props: any) { + return + } + + export default IconZoomOut + \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/IconZoomOut/index.tsx b/packages/ui/src/components/Icon/icons/IconZoomOut/index.tsx new file mode 100644 index 00000000000..96deb6dee1e --- /dev/null +++ b/packages/ui/src/components/Icon/icons/IconZoomOut/index.tsx @@ -0,0 +1 @@ +export { default as IconZoomOut } from './IconZoomOut' \ No newline at end of file diff --git a/packages/ui/src/components/Icon/icons/index.tsx b/packages/ui/src/components/Icon/icons/index.tsx new file mode 100644 index 00000000000..9fc2134a5a7 --- /dev/null +++ b/packages/ui/src/components/Icon/icons/index.tsx @@ -0,0 +1,287 @@ +// export icons +export * as IconActivity from './IconActivity' +export * as IconAirplay from './IconAirplay' +export * as IconAlertCircle from './IconAlertCircle' +export * as IconAlertOctagon from './IconAlertOctagon' +export * as IconAlertTriangle from './IconAlertTriangle' +export * as IconAlignCenter from './IconAlignCenter' +export * as IconAlignJustify from './IconAlignJustify' +export * as IconAlignLeft from './IconAlignLeft' +export * as IconAlignRight from './IconAlignRight' +export * as IconAnchor from './IconAnchor' +export * as IconAperture from './IconAperture' +export * as IconArchive from './IconArchive' +export * as IconArrowDownCircle from './IconArrowDownCircle' +export * as IconArrowDownLeft from './IconArrowDownLeft' +export * as IconArrowDownRight from './IconArrowDownRight' +export * as IconArrowDown from './IconArrowDown' +export * as IconArrowLeftCircle from './IconArrowLeftCircle' +export * as IconArrowLeft from './IconArrowLeft' +export * as IconArrowRightCircle from './IconArrowRightCircle' +export * as IconArrowRight from './IconArrowRight' +export * as IconArrowUpCircle from './IconArrowUpCircle' +export * as IconArrowUpLeft from './IconArrowUpLeft' +export * as IconArrowUpRight from './IconArrowUpRight' +export * as IconArrowUp from './IconArrowUp' +export * as IconAtSign from './IconAtSign' +export * as IconAward from './IconAward' +export * as IconBarChart2 from './IconBarChart2' +export * as IconBarChart from './IconBarChart' +export * as IconBatteryCharging from './IconBatteryCharging' +export * as IconBattery from './IconBattery' +export * as IconBellOff from './IconBellOff' +export * as IconBell from './IconBell' +export * as IconBluetooth from './IconBluetooth' +export * as IconBold from './IconBold' +export * as IconBookOpen from './IconBookOpen' +export * as IconBook from './IconBook' +export * as IconBookmark from './IconBookmark' +export * as IconBox from './IconBox' +export * as IconBriefcase from './IconBriefcase' +export * as IconCalendar from './IconCalendar' +export * as IconCameraOff from './IconCameraOff' +export * as IconCamera from './IconCamera' +export * as IconCast from './IconCast' +export * as IconCheckCircle from './IconCheckCircle' +export * as IconCheckSquare from './IconCheckSquare' +export * as IconCheck from './IconCheck' +export * as IconChevronDown from './IconChevronDown' +export * as IconChevronLeft from './IconChevronLeft' +export * as IconChevronRight from './IconChevronRight' +export * as IconChevronUp from './IconChevronUp' +export * as IconChevronsDown from './IconChevronsDown' +export * as IconChevronsLeft from './IconChevronsLeft' +export * as IconChevronsRight from './IconChevronsRight' +export * as IconChevronsUp from './IconChevronsUp' +export * as IconChrome from './IconChrome' +export * as IconCircle from './IconCircle' +export * as IconClipboard from './IconClipboard' +export * as IconClock from './IconClock' +export * as IconCloudDrizzle from './IconCloudDrizzle' +export * as IconCloudLightning from './IconCloudLightning' +export * as IconCloudOff from './IconCloudOff' +export * as IconCloudRain from './IconCloudRain' +export * as IconCloudSnow from './IconCloudSnow' +export * as IconCloud from './IconCloud' +export * as IconCode from './IconCode' +export * as IconCodepen from './IconCodepen' +export * as IconCodesandbox from './IconCodesandbox' +export * as IconCoffee from './IconCoffee' +export * as IconColumns from './IconColumns' +export * as IconCommand from './IconCommand' +export * as IconCompass from './IconCompass' +export * as IconCopy from './IconCopy' +export * as IconCornerDownLeft from './IconCornerDownLeft' +export * as IconCornerDownRight from './IconCornerDownRight' +export * as IconCornerLeftDown from './IconCornerLeftDown' +export * as IconCornerLeftUp from './IconCornerLeftUp' +export * as IconCornerRightDown from './IconCornerRightDown' +export * as IconCornerRightUp from './IconCornerRightUp' +export * as IconCornerUpLeft from './IconCornerUpLeft' +export * as IconCornerUpRight from './IconCornerUpRight' +export * as IconCpu from './IconCpu' +export * as IconCreditCard from './IconCreditCard' +export * as IconCrop from './IconCrop' +export * as IconCrosshair from './IconCrosshair' +export * as IconDatabase from './IconDatabase' +export * as IconDelete from './IconDelete' +export * as IconDisc from './IconDisc' +export * as IconDivideCircle from './IconDivideCircle' +export * as IconDivideSquare from './IconDivideSquare' +export * as IconDivide from './IconDivide' +export * as IconDollarSign from './IconDollarSign' +export * as IconDownloadCloud from './IconDownloadCloud' +export * as IconDownload from './IconDownload' +export * as IconDribbble from './IconDribbble' +export * as IconDroplet from './IconDroplet' +export * as IconEdit2 from './IconEdit2' +export * as IconEdit3 from './IconEdit3' +export * as IconEdit from './IconEdit' +export * as IconExternalLink from './IconExternalLink' +export * as IconEyeOff from './IconEyeOff' +export * as IconEye from './IconEye' +export * as IconFacebook from './IconFacebook' +export * as IconFastForward from './IconFastForward' +export * as IconFeather from './IconFeather' +export * as IconFigma from './IconFigma' +export * as IconFileMinus from './IconFileMinus' +export * as IconFilePlus from './IconFilePlus' +export * as IconFileText from './IconFileText' +export * as IconFile from './IconFile' +export * as IconFilm from './IconFilm' +export * as IconFilter from './IconFilter' +export * as IconFlag from './IconFlag' +export * as IconFolderMinus from './IconFolderMinus' +export * as IconFolderPlus from './IconFolderPlus' +export * as IconFolder from './IconFolder' +export * as IconFramer from './IconFramer' +export * as IconFrown from './IconFrown' +export * as IconGift from './IconGift' +export * as IconGitBranch from './IconGitBranch' +export * as IconGitCommit from './IconGitCommit' +export * as IconGitMerge from './IconGitMerge' +export * as IconGitPullRequest from './IconGitPullRequest' +export * as IconGitHub from './IconGitHub' +export * as IconGitlab from './IconGitlab' +export * as IconGlobe from './IconGlobe' +export * as IconGrid from './IconGrid' +export * as IconHardDrive from './IconHardDrive' +export * as IconHash from './IconHash' +export * as IconHeadphones from './IconHeadphones' +export * as IconHeart from './IconHeart' +export * as IconHelpCircle from './IconHelpCircle' +export * as IconHexagon from './IconHexagon' +export * as IconHome from './IconHome' +export * as IconImage from './IconImage' +export * as IconInbox from './IconInbox' +export * as IconInfo from './IconInfo' +export * as IconInstagram from './IconInstagram' +export * as IconItalic from './IconItalic' +export * as IconKey from './IconKey' +export * as IconLayers from './IconLayers' +export * as IconLayout from './IconLayout' +export * as IconLifeBuoy from './IconLifeBuoy' +export * as IconLink2 from './IconLink2' +export * as IconLink from './IconLink' +export * as IconLinkedin from './IconLinkedin' +export * as IconList from './IconList' +export * as IconLoader from './IconLoader' +export * as IconLock from './IconLock' +export * as IconLogIn from './IconLogIn' +export * as IconLogOut from './IconLogOut' +export * as IconMail from './IconMail' +export * as IconMapPin from './IconMapPin' +export * as IconMap from './IconMap' +export * as IconMaximize2 from './IconMaximize2' +export * as IconMaximize from './IconMaximize' +export * as IconMeh from './IconMeh' +export * as IconMenu from './IconMenu' +export * as IconMessageCircle from './IconMessageCircle' +export * as IconMessageSquare from './IconMessageSquare' +export * as IconMicOff from './IconMicOff' +export * as IconMic from './IconMic' +export * as IconMinimize2 from './IconMinimize2' +export * as IconMinimize from './IconMinimize' +export * as IconMinusCircle from './IconMinusCircle' +export * as IconMinusSquare from './IconMinusSquare' +export * as IconMinus from './IconMinus' +export * as IconMonitor from './IconMonitor' +export * as IconMoon from './IconMoon' +export * as IconMoreHorizontal from './IconMoreHorizontal' +export * as IconMoreVertical from './IconMoreVertical' +export * as IconMousePointer from './IconMousePointer' +export * as IconMove from './IconMove' +export * as IconMusic from './IconMusic' +export * as IconNavigation2 from './IconNavigation2' +export * as IconNavigation from './IconNavigation' +export * as IconOctagon from './IconOctagon' +export * as IconPackage from './IconPackage' +export * as IconPaperclip from './IconPaperclip' +export * as IconPauseCircle from './IconPauseCircle' +export * as IconPause from './IconPause' +export * as IconPenTool from './IconPenTool' +export * as IconPercent from './IconPercent' +export * as IconPhoneCall from './IconPhoneCall' +export * as IconPhoneForwarded from './IconPhoneForwarded' +export * as IconPhoneIncoming from './IconPhoneIncoming' +export * as IconPhoneMissed from './IconPhoneMissed' +export * as IconPhoneOff from './IconPhoneOff' +export * as IconPhoneOutgoing from './IconPhoneOutgoing' +export * as IconPhone from './IconPhone' +export * as IconPieChart from './IconPieChart' +export * as IconPlayCircle from './IconPlayCircle' +export * as IconPlay from './IconPlay' +export * as IconPlusCircle from './IconPlusCircle' +export * as IconPlusSquare from './IconPlusSquare' +export * as IconPlus from './IconPlus' +export * as IconPocket from './IconPocket' +export * as IconPower from './IconPower' +export * as IconPrinter from './IconPrinter' +export * as IconRadio from './IconRadio' +export * as IconRefreshCcw from './IconRefreshCcw' +export * as IconRefreshCw from './IconRefreshCw' +export * as IconRepeat from './IconRepeat' +export * as IconRewind from './IconRewind' +export * as IconRotateCcw from './IconRotateCcw' +export * as IconRotateCw from './IconRotateCw' +export * as IconRss from './IconRss' +export * as IconSave from './IconSave' +export * as IconScissors from './IconScissors' +export * as IconSearch from './IconSearch' +export * as IconSend from './IconSend' +export * as IconServer from './IconServer' +export * as IconSettings from './IconSettings' +export * as IconShare2 from './IconShare2' +export * as IconShare from './IconShare' +export * as IconShieldOff from './IconShieldOff' +export * as IconShield from './IconShield' +export * as IconShoppingBag from './IconShoppingBag' +export * as IconShoppingCart from './IconShoppingCart' +export * as IconShuffle from './IconShuffle' +export * as IconSidebar from './IconSidebar' +export * as IconSkipBack from './IconSkipBack' +export * as IconSkipForward from './IconSkipForward' +export * as IconSlack from './IconSlack' +export * as IconSlash from './IconSlash' +export * as IconSliders from './IconSliders' +export * as IconSmartphone from './IconSmartphone' +export * as IconSmile from './IconSmile' +export * as IconSpeaker from './IconSpeaker' +export * as IconSquare from './IconSquare' +export * as IconStar from './IconStar' +export * as IconStopCircle from './IconStopCircle' +export * as IconSun from './IconSun' +export * as IconSunrise from './IconSunrise' +export * as IconSunset from './IconSunset' +export * as IconTablet from './IconTablet' +export * as IconTag from './IconTag' +export * as IconTarget from './IconTarget' +export * as IconTerminal from './IconTerminal' +export * as IconThermometer from './IconThermometer' +export * as IconThumbsDown from './IconThumbsDown' +export * as IconThumbsUp from './IconThumbsUp' +export * as IconToggleLeft from './IconToggleLeft' +export * as IconToggleRight from './IconToggleRight' +export * as IconTool from './IconTool' +export * as IconTrash2 from './IconTrash2' +export * as IconTrash from './IconTrash' +export * as IconTrello from './IconTrello' +export * as IconTrendingDown from './IconTrendingDown' +export * as IconTrendingUp from './IconTrendingUp' +export * as IconTriangle from './IconTriangle' +export * as IconTruck from './IconTruck' +export * as IconTv from './IconTv' +export * as IconTwitch from './IconTwitch' +export * as IconTwitter from './IconTwitter' +export * as IconType from './IconType' +export * as IconUmbrella from './IconUmbrella' +export * as IconUnderline from './IconUnderline' +export * as IconUnlock from './IconUnlock' +export * as IconUploadCloud from './IconUploadCloud' +export * as IconUpload from './IconUpload' +export * as IconUserCheck from './IconUserCheck' +export * as IconUserMinus from './IconUserMinus' +export * as IconUserPlus from './IconUserPlus' +export * as IconUserX from './IconUserX' +export * as IconUser from './IconUser' +export * as IconUsers from './IconUsers' +export * as IconVideoOff from './IconVideoOff' +export * as IconVideo from './IconVideo' +export * as IconVoicemail from './IconVoicemail' +export * as IconVolume1 from './IconVolume1' +export * as IconVolume2 from './IconVolume2' +export * as IconVolumeX from './IconVolumeX' +export * as IconVolume from './IconVolume' +export * as IconWatch from './IconWatch' +export * as IconWifiOff from './IconWifiOff' +export * as IconWifi from './IconWifi' +export * as IconWind from './IconWind' +export * as IconXCircle from './IconXCircle' +export * as IconXOctagon from './IconXOctagon' +export * as IconXSquare from './IconXSquare' +export * as IconX from './IconX' +export * as IconYoutube from './IconYoutube' +export * as IconZapOff from './IconZapOff' +export * as IconZap from './IconZap' +export * as IconZoomIn from './IconZoomIn' +export * as IconZoomOut from './IconZoomOut' diff --git a/packages/ui/src/components/Icon/index.tsx b/packages/ui/src/components/Icon/index.tsx new file mode 100644 index 00000000000..7aebbe9de7e --- /dev/null +++ b/packages/ui/src/components/Icon/index.tsx @@ -0,0 +1 @@ +export * from './Icon' diff --git a/packages/ui/src/components/Image/Image.module.css b/packages/ui/src/components/Image/Image.module.css new file mode 100644 index 00000000000..f9a9825dc78 --- /dev/null +++ b/packages/ui/src/components/Image/Image.module.css @@ -0,0 +1,21 @@ +.sbui-image { + +} + +.sbui-image-circle { + @apply rounded-full; +} + +.sbui-image-normal { + +} + +.sbui-image-rounded { + @apply rounded +} + +.sbui-image-responsive { + @apply w-full; + @apply h-auto; + +} \ No newline at end of file diff --git a/packages/ui/src/components/Image/Image.stories.tsx b/packages/ui/src/components/Image/Image.stories.tsx new file mode 100644 index 00000000000..81680f06604 --- /dev/null +++ b/packages/ui/src/components/Image/Image.stories.tsx @@ -0,0 +1,65 @@ +import React, { useState } from 'react' + +import { Image } from '.' + +export default { + title: 'General/Image', + component: Image, +} + +export const Normal = (args: any) => { + return ( + <> + + + ) +} + +export const Circle = (args: any) => { + return ( + <> + + + ) +} + +export const Rounded = (args: any) => { + return ( + <> + + + ) +} + +export const Responsive = (args: any) => { + return ( + <> + + + ) +} + +Normal.args = { + active: true, + source: 'https://via.placeholder.com/300' +} + +Circle.args = { + active: true, + type: 'circle', + source: 'https://via.placeholder.com/300' +} + +Rounded.args = { + active: true, + type: 'rounded', + source: 'https://via.placeholder.com/300' +} + +Responsive.args = { + active: true, + type: 'normal', + source: 'https://via.placeholder.com/300', + responsive: true + +} \ No newline at end of file diff --git a/packages/ui/src/components/Image/Image.tsx b/packages/ui/src/components/Image/Image.tsx new file mode 100644 index 00000000000..e079acae6e4 --- /dev/null +++ b/packages/ui/src/components/Image/Image.tsx @@ -0,0 +1,37 @@ +import React from 'react' +// @ts-ignore +// import ImageStyles from './Image.module.css' + +interface Props { + source?: string + style?: React.CSSProperties + className?: string + type?: 'rounded' | 'circle' + alt?: string + responsive?: boolean +} + +export default function Image({ + source, + style, + className, + type, + alt, + responsive, +}: Props) { + // let classes = [ImageStyles['sbui-image-normal']] + // classes.push(type === 'rounded' && ImageStyles['sbui-image-rounded']) + // classes.push(type === 'circle' && ImageStyles['sbui-image-circle']) + // if(responsive) classes.push(ImageStyles['sbui-image-responsive']) + // if (className) classes.push(className) + return ( + <> + {alt} + + ) +} diff --git a/packages/ui/src/components/Image/index.tsx b/packages/ui/src/components/Image/index.tsx new file mode 100644 index 00000000000..225e542fa1e --- /dev/null +++ b/packages/ui/src/components/Image/index.tsx @@ -0,0 +1 @@ +export { default as Image } from './Image' diff --git a/packages/ui/src/components/Input/Input.module.css b/packages/ui/src/components/Input/Input.module.css new file mode 100644 index 00000000000..ae233879291 --- /dev/null +++ b/packages/ui/src/components/Input/Input.module.css @@ -0,0 +1,68 @@ +/* .sbui-input-container { + @apply relative; +} */ + +/* .sbui-input { + @apply block box-border pl-3 pr-3 py-2 w-full rounded-md shadow-sm text-sm border border-solid transition-all; + @apply bg-white text-input-value-light border-input-border-light; + @apply focus:ring-input-border-focus-light focus:border-input-border-focus-light focus:outline-none; + + @apply dark:bg-transparent dark:text-input-value-dark dark:border-input-border-dark; + @apply dark:focus:border-input-border-focus-dark dark:focus:ring-input-border-focus-dark; + + + font-family: inherit; + transition: box-shadow 0.3s ease-in-out; +} */ + +/* .sbui-input:focus { + box-shadow: 0 0 0 2px rgba(62, 207, 142, 0.1); +} */ + +/* .sbui-input--error { + @apply border-red-500 dark:border-red-500; +} + +.sbui-input--borderless { + @apply border-transparent shadow-none; +} + +.sbui-input-actions-container { + @apply absolute inset-y-0 right-0 pl-3 pr-1 flex items-center; +} */ + +.sbui-textarea-actions-container { + @apply absolute inset-y-1 right-0 pl-3 pr-1 flex items-start; +} + +.sbui-textarea-actions-container__items { + @apply flex items-center; +} + +/* + Input sizes +*/ + +/* .sbui-input--tiny { + @apply px-2.5 py-1.5 text-xs; +} +.sbui-input--small { + @apply px-3 py-2 text-sm leading-4; +} +.sbui-input--medium { + @apply px-4 py-2 text-sm; +} +.sbui-input--large { + @apply px-4 py-2 text-base; +} +.sbui-input--xlarge { + @apply px-6 py-3 text-base; +} */ + +/* + Input icon +*/ + +/* .sbui-input--with-icon { + @apply pl-10; +} */ diff --git a/packages/ui/src/components/Input/Input.stories.tsx b/packages/ui/src/components/Input/Input.stories.tsx new file mode 100644 index 00000000000..45bfbb8a008 --- /dev/null +++ b/packages/ui/src/components/Input/Input.stories.tsx @@ -0,0 +1,159 @@ +import React from 'react' +// import { AutoForm } from 'uniforms' + +import { Input } from '.' +import { IconPackage } from './../../index' +import { Button } from '../Button' +import { Space } from '../Space' + +export default { + title: 'Data Input/Input', + component: Input, +} + +export const Default = (args: any) => + +export const ErrorState = (args: any) => + +export const withIcon = (args: any) => + +export const withOption = (args: any) => + +export const withDescription = (args: any) => + +export const withCustomStyle = (args: any) => + +export const textArea = (args: any) => + +export const textAreaWithCopy = (args: any) => + +export const textAreaWithLimit = (args: any) => + +export const withRevealAndCopy = (args: any) => + +export const withCustomActions = (args: any) => + +export const withBeforeAndAfterLabel = (args: any) => + +export const size = (args: any) => + +export const borderless = (args: any) => + +export const date = (args: any) => + +const icon: any = + +Default.args = { + placeholder: 'Type text here ...', + disabled: false, + label: 'Name', + layout: 'vertical', +} + +ErrorState.args = { + type: 'text', + placeholder: 'Type text here ...', + disabled: false, + label: 'Input with an error message', + error: 'Your password must be less than 4 characters.', +} + +withIcon.args = { + type: 'text', + placeholder: 'Type text here ...', + disabled: false, + label: 'Input with an icon', + icon: icon, +} + +withOption.args = { + type: 'text', + placeholder: 'Type text here ...', + disabled: false, + label: 'Input with an error message', + labelOptional: 'This is required', +} + +withDescription.args = { + type: 'text', + placeholder: 'Type text here ...', + disabled: false, + label: 'Input with an error message', + descriptionText: 'Make your password short and easy to guess', +} + +withCustomStyle.args = { + type: 'text', + label: 'This has custom styling {width: 50%}', + style: { width: '50%' }, +} + +textArea.args = { + type: 'text', + label: 'This is a text area', +} + +textAreaWithCopy.args = { + copy: true, + rows: 3, + type: 'text', + label: 'This is a text area', +} + +textAreaWithLimit.args = { + type: 'text', + label: 'This is a text area, with 10 rows', + labelOptional: '500 character limit', + rows: 10, + limit: 500, +} + +withRevealAndCopy.args = { + type: 'text', + label: 'Reveal and copy', + labelOptional: 'Reveal the text, then copy it', + value: '12341234HDGRHSGR/adJDJD', + copy: true, + reveal: true, +} + +withCustomActions.args = { + type: 'text', + label: 'Custom actions', + labelOptional: 'Use any react components', + value: 'Value of input', + actions: [ + , + , + ], +} + +size.args = { + type: 'text', + label: 'You can change the size of this Input', + size: 'tiny', +} + +withBeforeAndAfterLabel.args = { + type: 'text', + label: 'This is the label', + beforeLabel: 'Before label : ', + afterLabel: ' : After label', +} + +borderless.args = { + type: 'text', + label: 'This is the label', + borderless: true, + size: 'tiny', +} + +date.args = { + type: 'date', + placeholder: 'Type text here ...', + disabled: false, + label: 'Name', + layout: 'vertical', +} diff --git a/packages/ui/src/components/Input/Input.tsx b/packages/ui/src/components/Input/Input.tsx new file mode 100644 index 00000000000..97bda1189fd --- /dev/null +++ b/packages/ui/src/components/Input/Input.tsx @@ -0,0 +1,339 @@ +import React, { useEffect, useState } from 'react' +import { Button, IconCopy } from '../../../index' +import { FormLayout } from '../../lib/Layout/FormLayout' +import InputErrorIcon from '../../lib/Layout/InputErrorIcon' +import InputIconContainer from '../../lib/Layout/InputIconContainer' +import { HIDDEN_PLACEHOLDER } from './../../lib/constants' + +import styleHandler from '../../lib/theme/styleHandler' +import { useFormContext } from '../Form/FormContext' + +export interface Props extends Omit, 'size'> { + copy?: boolean + defaultValue?: string | number + descriptionText?: string | React.ReactNode | undefined + disabled?: boolean + error?: string + icon?: any + inputRef?: string + label?: string | React.ReactNode + afterLabel?: string + beforeLabel?: string + labelOptional?: string | React.ReactNode + layout?: 'horizontal' | 'vertical' + reveal?: boolean + actions?: React.ReactNode + size?: 'tiny' | 'small' | 'medium' | 'large' | 'xlarge' + borderless?: boolean + validation?: (x: any) => void +} + +function Input({ + autoComplete, + autoFocus, + className, + copy, + defaultValue, + descriptionText, + disabled, + error, + icon, + id = '', + name = '', + inputRef, + label, + afterLabel, + beforeLabel, + labelOptional, + layout, + onChange, + onBlur, + placeholder, + type = 'text', + value = undefined, + style, + reveal = false, + actions, + size = 'medium', + borderless = false, + validation, + ...props +}: Props) { + const [copyLabel, setCopyLabel] = useState('Copy') + const [hidden, setHidden] = useState(true) + + const __styles = styleHandler('input') + + const { formContextOnChange, values, errors, handleBlur, touched, fieldLevelValidation } = + useFormContext() + + if (values && !value) value = values[id || name] + + function handleBlurEvent(e: React.FocusEvent) { + if (handleBlur) handleBlur(e) + if (onBlur) onBlur(e) + } + + if (!error) { + if (errors && !error) error = errors[id || name] + error = touched && touched[id] ? error : undefined + } + + function onInputChange(e: React.ChangeEvent) { + // console.log('input event', e) + if (onChange) onChange(e) + // update form + if (formContextOnChange) formContextOnChange(e) + // run field level validation + if (validation) fieldLevelValidation(id, validation(e.target.value)) + } + + useEffect(() => { + if (validation) fieldLevelValidation(id, validation(value)) + }, []) + + // useEffect(() => { + // error = touched && touched[id] ? error : undefined + // }, [errors, touched]) + + function onCopy(value: any) { + navigator.clipboard.writeText(value).then( + function () { + /* clipboard successfully set */ + setCopyLabel('Copied') + setTimeout(function () { + setCopyLabel('Copy') + }, 3000) + }, + function () { + /* clipboard write failed */ + setCopyLabel('Failed to copy') + } + ) + } + + function onReveal() { + setHidden(false) + } + + let inputClasses = [__styles.base] + + if (error) inputClasses.push(__styles.variants.error) + if (!error) inputClasses.push(__styles.variants.standard) + if (icon) inputClasses.push(__styles.with_icon) + if (size) inputClasses.push(__styles.size[size]) + if (disabled) inputClasses.push(__styles.disabled) + + return ( + +
+ + {icon && } + {copy || error || actions ? ( +
+ {error && } + {copy && !(reveal && hidden) ? ( + + ) : null} + {reveal && hidden ? ( + + ) : null} + {actions && actions} +
+ ) : null} +
+
+ ) +} + +export interface TextAreaProps + extends Omit, 'size'> { + descriptionText?: string + error?: string + icon?: any + label?: string + afterLabel?: string + beforeLabel?: string + labelOptional?: string + layout?: 'horizontal' | 'vertical' + rows?: number + limit?: number + size?: 'tiny' | 'small' | 'medium' | 'large' | 'xlarge' + borderless?: boolean + validation?: (x: any) => void + copy?: boolean + actions?: React.ReactNode +} + +function TextArea({ + className, + descriptionText, + disabled, + error, + icon, + id = '', + name = '', + label, + afterLabel, + beforeLabel, + labelOptional, + layout, + onChange, + onBlur, + placeholder, + value, + style, + rows = 4, + limit, + size, + borderless = false, + validation, + copy = false, + actions, + ...props +}: TextAreaProps) { + const [charLength, setCharLength] = useState(0) + const [copyLabel, setCopyLabel] = useState('Copy') + + function onCopy(value: any) { + navigator.clipboard.writeText(value).then( + function () { + /* clipboard successfully set */ + setCopyLabel('Copied') + setTimeout(function () { + setCopyLabel('Copy') + }, 3000) + }, + function () { + /* clipboard write failed */ + setCopyLabel('Failed to copy') + } + ) + } + + const { formContextOnChange, values, errors, handleBlur, touched, fieldLevelValidation } = + useFormContext() + + if (values && !value) value = values[id || name] + + function handleBlurEvent(e: React.FocusEvent) { + if (handleBlur) handleBlur(e) + if (onBlur) onBlur(e) + } + + if (!error) { + if (errors && !error) error = errors[id || name] + error = touched && touched[id || name] ? error : undefined + } + + function onInputChange(e: React.ChangeEvent) { + setCharLength(e.target.value.length) + if (onChange) onChange(e) + // update form + if (formContextOnChange) formContextOnChange(e) + // run field level validation + if (validation) fieldLevelValidation(id, validation(e.target.value)) + } + + useEffect(() => { + if (validation) fieldLevelValidation(id, validation(value)) + }, []) + + const __styles = styleHandler('input') + + let classes = [__styles.base] + + if (error) classes.push(__styles.variants.error) + if (!error) classes.push(__styles.variants.standard) + if (icon) classes.push(__styles.with_icon) + if (size) classes.push(__styles.size[size]) + if (disabled) classes.push(__styles.disabled) + + return ( + +
+ + {copy || error || actions ? ( +
+
+ {error && } + {copy && ( + + )} + {actions && actions} +
+
+ ) : null} +
+
+ ) +} + +Input.TextArea = TextArea + +export default Input diff --git a/packages/ui/src/components/Input/index.tsx b/packages/ui/src/components/Input/index.tsx new file mode 100644 index 00000000000..ae5c54e5bfb --- /dev/null +++ b/packages/ui/src/components/Input/index.tsx @@ -0,0 +1 @@ +export { default as Input } from './Input' diff --git a/packages/ui/src/components/InputNumber/InputNumber.module.css b/packages/ui/src/components/InputNumber/InputNumber.module.css new file mode 100644 index 00000000000..ef304850cd1 --- /dev/null +++ b/packages/ui/src/components/InputNumber/InputNumber.module.css @@ -0,0 +1,134 @@ +.sbui-inputnumber-container { + @apply relative; +} + +.sbui-inputnumber { + @apply block box-border pl-3 pr-3 py-2 w-full rounded-md shadow-sm text-sm border border-solid transition-all; + @apply bg-white text-input-value-light border-input-border-light; + @apply focus:ring-input-border-focus-light focus:border-input-border-focus-light focus:outline-none; + + @apply dark:bg-transparent dark:text-input-value-dark dark:border-input-border-dark; + @apply dark:focus:border-input-border-focus-dark dark:focus:ring-input-border-focus-dark; + + /* box-shadow: 0 0 0 2px rgba(255, 255, 255, 0); */ + font-family: inherit; + transition: box-shadow 0.3s ease-in-out; + + -moz-appearance: textfield; +} + +.sbui-inputnumber::-webkit-inner-spin-button, +.sbui-inputnumber::-webkit-outer-spin-button { + -webkit-appearance: none; + margin: 0; +} + +.sbui-inputnumber:focus { + box-shadow: 0 0 0 2px rgba(62, 207, 142, 0.1); + outline: 0; +} + +.sbui-inputnumber--error { + @apply border-red-500 dark:border-red-500; +} + +.sbui-inputnumber--borderless { + @apply border-transparent shadow-none; +} + +.sbui-inputnumber-actions-container { + @apply absolute inset-y-0 right-0 pl-3 pr-1 flex items-center; +} + +.sbui-inputnumber-nav { + @apply hidden; +} + +.sbui-inputnumber:focus + .sbui-inputnumber-nav { + @apply block; +} + +.sbui-inputnumber-button { + @apply block box-border pl-3 pr-3 py-2 w-full rounded-md text-sm border border-solid; + @apply bg-transparent border-transparent; + @apply dark:text-white; + + position: relative; + cursor: pointer; + width: 21px; + text-align: center; + color: #333; + font-size: 13px; + line-height: 1.5; + padding: 0; + -webkit-transform: translateX(-100%); + transform: translateX(-100%); + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + -o-user-select: none; + user-select: none; +} + +.sbui-inputnumber-button:active { + background: #eaeaea; + background-clip: padding-box; +} + +.sbui-inputnumber-button-up { + position: absolute; + height: 50%; + top: 0; + border-radius: 0 0.375rem 0 0; + line-height: 1.6; +} + +.sbui-inputnumber-button-down { + position: absolute; + bottom: 0; + height: 50%; + border-radius: 0 0 0.375rem 0; +} + +/* + Input sizes + */ + +.sbui-inputnumber--tiny { + @apply px-2.5 py-1.5 text-xs; +} +.sbui-inputnumber--small { + @apply px-3 py-2 text-sm leading-4; +} +.sbui-inputnumber--medium { + @apply px-4 py-2 text-sm; +} +.sbui-inputnumber--large { + @apply px-4 py-2 text-base; +} +.sbui-inputnumber--xlarge { + @apply px-6 py-3 text-base; +} + +.sbui-inputnumber-nav--tiny { + height: 30px; +} +.sbui-inputnumber-nav--small { + height: 34px; +} +.sbui-inputnumber-nav--medium { + height: 38px; +} +.sbui-inputnumber-nav--large { + height: 42px; +} +.sbui-inputnumber-nav--xlarge { + height: 50px; +} +/* + Input icon + */ + +.sbui-inputnumber--with-icon { + @apply pl-10; +} diff --git a/packages/ui/src/components/InputNumber/InputNumber.stories.tsx b/packages/ui/src/components/InputNumber/InputNumber.stories.tsx new file mode 100644 index 00000000000..bce31a52703 --- /dev/null +++ b/packages/ui/src/components/InputNumber/InputNumber.stories.tsx @@ -0,0 +1,61 @@ +import React, { useState, useCallback } from 'react' +// import { AutoForm } from 'uniforms' + +import { InputNumber } from '.' +import { IconPackage } from './../../index' +import { Button } from '../Button' +import { Space } from '../Space' + +export default { + title: 'Data Input/InputNumber', + component: InputNumber, +} + +export const Default = (args: any) => + +export const ErrorState = (args: any) => + +export const WithIcon = (args: any) => + +export const Controlled = (props: any) => { + const [state, setState] = useState(() => undefined) + + const onChange = useCallback((e: React.ChangeEvent) => { + // console.log({ e, value: e.currentTarget.value }) + setState(e.currentTarget.value) + }, []) + + return +} + +Default.args = { + label: 'Max of 100 and min of 0', + disabled: false, + layout: 'vertical', + max: 100, + min: 0, +} + +ErrorState.args = { + disabled: false, + layout: 'vertical', + label: 'Input Number with an error message', + error: 'Input Number must be in range', +} + +WithIcon.args = { + label: 'Max of 100 and min of 0 with a Icon', + disabled: false, + layout: 'vertical', + max: 100, + min: 0, + icon: , +} + +Controlled.args = { + label: 'Max of 100 and min of 0', + disabled: false, + layout: 'vertical', + max: 100, + min: 0, +} diff --git a/packages/ui/src/components/InputNumber/InputNumber.tsx b/packages/ui/src/components/InputNumber/InputNumber.tsx new file mode 100644 index 00000000000..54694ad5cb7 --- /dev/null +++ b/packages/ui/src/components/InputNumber/InputNumber.tsx @@ -0,0 +1,195 @@ +import React, { useEffect } from 'react' +import { FormLayout } from '../../lib/Layout/FormLayout' +import InputErrorIcon from '../../lib/Layout/InputErrorIcon' +// import { IconChevronDown } from '../Icon/icons/IconChevronDown' +// import { IconChevronUp } from '../Icon/icons/IconChevronUp' +import InputIconContainer from '../../lib/Layout/InputIconContainer' + +import { useFormContext } from '../Form/FormContext' +import styleHandler from '../../lib/theme/styleHandler' + +export interface Props + extends Omit, 'size'> { + defaultValue?: string | number + descriptionText?: string | React.ReactNode + error?: string + icon?: any + inputRef?: React.RefObject + label?: string + afterLabel?: string + beforeLabel?: string + labelOptional?: string | React.ReactNode + actions?: React.ReactNode + layout?: 'horizontal' | 'vertical' + size?: 'tiny' | 'small' | 'medium' | 'large' | 'xlarge' + validation?: (x: any) => void +} + +function InputNumber({ + defaultValue, + descriptionText, + error, + icon, + inputRef, + label, + afterLabel, + beforeLabel, + labelOptional, + layout, + value = undefined, + actions, + size = 'medium', + validation, + id = '', + name = '', + ...props +}: Props) { + const __styles = styleHandler('inputNumber') + + const { + formContextOnChange, + values, + errors, + handleBlur, + touched, + fieldLevelValidation, + } = useFormContext() + + if (values && !value) value = values[id || name] + + function handleBlurEvent(e: React.FocusEvent) { + if (handleBlur) handleBlur(e) + if (props.onBlur) props.onBlur(e) + } + + if (!error) { + if (errors && !error) error = errors[id || name] + error = touched && touched[id || name] ? error : undefined + } + + function onInputChange(e: React.ChangeEvent) { + if (props.onChange) props.onChange(e) + // update form + if (formContextOnChange) formContextOnChange(e) + // run field level validation + if (validation) fieldLevelValidation(id, validation(e.target.value)) + } + + useEffect(() => { + if (validation) fieldLevelValidation(id, validation(value)) + }, []) + + // const inputClasses = [InputNumberStyles['sbui-inputnumber']] + let inputClasses = [__styles.base] + + // const iconUpClasses = [ + // InputNumberStyles['sbui-inputnumber-button'], + // InputNumberStyles['sbui-inputnumber-button-up'], + // ] + + // const inputRefCurrent = inputRef + // ? inputRef + // : React.createRef() + + // const iconDownClasses = [ + // InputNumberStyles['sbui-inputnumber-button'], + // InputNumberStyles['sbui-inputnumber-button-down'], + // ] + + // const iconNavClasses = [InputNumberStyles['sbui-inputnumber-nav']] + + // if (size) { + // inputClasses.push(InputNumberStyles[`sbui-inputnumber--${size}`]) + // iconNavClasses.push(InputNumberStyles[`sbui-inputnumber-nav--${size}`]) + // } + + if (error) inputClasses.push(__styles.variants.error) + if (!error) inputClasses.push(__styles.variants.standard) + if (icon) inputClasses.push(__styles.with_icon) + if (size) inputClasses.push(__styles.size[size]) + if (props.disabled) inputClasses.push(__styles.disabled) + // if (borderless) + // inputClasses.push(InputNumberStyles['sbui-inputnumber--borderless']) + + // const onClickChevronUp = () => { + // inputRefCurrent.current?.stepUp() + // if (onChange) { + // inputRefCurrent.current?.dispatchEvent( + // new InputEvent('change', { + // view: window, + // bubbles: true, + // cancelable: false, + // }) + // ) + // } + // } + + // const onClickChevronDown = () => { + // inputRefCurrent.current?.stepDown() + // if (onChange) { + // inputRefCurrent.current?.dispatchEvent( + // new InputEvent('change', { + // view: window, + // bubbles: true, + // cancelable: false, + // }) + // ) + // } + // } + + return ( +
+ +
+ + {/*
+ { + e.preventDefault() + }} + /> + { + e.preventDefault() + }} + /> +
*/} + {icon && } + {error || actions ? ( +
+ {error && } + {actions && actions} +
+ ) : null} +
+
+
+ ) +} + +export default InputNumber diff --git a/packages/ui/src/components/InputNumber/index.ts b/packages/ui/src/components/InputNumber/index.ts new file mode 100644 index 00000000000..a3996279268 --- /dev/null +++ b/packages/ui/src/components/InputNumber/index.ts @@ -0,0 +1 @@ +export { default as InputNumber } from './InputNumber' diff --git a/packages/ui/src/components/InputOld/Input.css b/packages/ui/src/components/InputOld/Input.css new file mode 100644 index 00000000000..da67b809b72 --- /dev/null +++ b/packages/ui/src/components/InputOld/Input.css @@ -0,0 +1,15 @@ +.form-input:disabled { + @apply bg-gray-100 cursor-not-allowed; +} + +.form-input--small { + @apply text-sm py-1; +} + +.form-input--medium { + @apply text-base; +} + +.form-input--error { + @apply border-red-500; +} diff --git a/packages/ui/src/components/InputOld/Input.js b/packages/ui/src/components/InputOld/Input.js new file mode 100644 index 00000000000..036f9fe179b --- /dev/null +++ b/packages/ui/src/components/InputOld/Input.js @@ -0,0 +1,43 @@ +import React from 'react' +import PropTypes from 'prop-types' +import './Input.css' + +export const SIZES = ['small', 'medium'] + +const Input = ({ + className = '', + type='text', + size = 'medium', + isError = false, + children, + ...props +}) => { + const classes = [] + if (size) { + const sizeClasses = { + small: 'form-input--small', + medium: 'form-input--medium', + } + classes.push(sizeClasses[size]) + } + + if (isError) { + classes.push('form-input--error') + } + + return ( + + ) +} + +Input.propTypes = { + size: PropTypes.oneOf(SIZES), + isError: PropTypes.bool, + className: PropTypes.string, +} + +export default Input diff --git a/packages/ui/src/components/InputOld/Input.stories.js b/packages/ui/src/components/InputOld/Input.stories.js new file mode 100644 index 00000000000..90faec6c033 --- /dev/null +++ b/packages/ui/src/components/InputOld/Input.stories.js @@ -0,0 +1,14 @@ +import React from 'react' + +import { Input } from '.' + +export default { + title: 'Archive/Input Old', + component: Input, +} + +export const Default = (args) => +Default.args = { + placeholder: 'Type text here ...', + disabled: false +} diff --git a/packages/ui/src/components/InputOld/Input.test.js b/packages/ui/src/components/InputOld/Input.test.js new file mode 100644 index 00000000000..98fb06abcf9 --- /dev/null +++ b/packages/ui/src/components/InputOld/Input.test.js @@ -0,0 +1,20 @@ +import React from 'react' +import { render, screen } from '@testing-library/react' +import Input, { SIZES } from './Input' + +describe('#Input', () => { + it('should render input correctly', async () => { + render() + expect(screen.queryByTestId('form-input')).toBeInTheDocument() + }) + + it('should have "form-input--error" class', () => { + render() + expect(screen.queryByTestId('form-input')).toHaveClass('form-input border-solid form-input--error') + }) + + it.each(SIZES)('should have "form-input--%s" class', (size) => { + render() + expect(screen.queryByTestId('form-input')).toHaveClass(`form-input border-solid form-input--${size}`) + }) +}) \ No newline at end of file diff --git a/packages/ui/src/components/InputOld/index.js b/packages/ui/src/components/InputOld/index.js new file mode 100644 index 00000000000..ae5c54e5bfb --- /dev/null +++ b/packages/ui/src/components/InputOld/index.js @@ -0,0 +1 @@ +export { default as Input } from './Input' diff --git a/packages/ui/src/components/Introduction/Introduction.css b/packages/ui/src/components/Introduction/Introduction.css new file mode 100644 index 00000000000..1f3f0af43a7 --- /dev/null +++ b/packages/ui/src/components/Introduction/Introduction.css @@ -0,0 +1,5 @@ +@tailwind 'tailwindcss/base'; +/* Start purging... */ +@tailwind components; +@tailwind utilities; +/* Stop purging. */ diff --git a/packages/ui/src/components/Introduction/Introduction.stories.mdx b/packages/ui/src/components/Introduction/Introduction.stories.mdx new file mode 100644 index 00000000000..ad31a53a00b --- /dev/null +++ b/packages/ui/src/components/Introduction/Introduction.stories.mdx @@ -0,0 +1,217 @@ +import { Meta } from '@storybook/addon-docs/blocks' +import Code from './assets/code-brackets.svg' +import Colors from './assets/colors.svg' +import Comments from './assets/comments.svg' +import Direction from './assets/direction.svg' +import Flow from './assets/flow.svg' +import Plugin from './assets/plugin.svg' +import Repo from './assets/repo.svg' +import StackAlt from './assets/stackalt.svg' + +import './Introduction.css' + + + + + +# Welcome to Storybook + +Storybook helps you build UI components in isolation from your app's business logic, data, and context. +That makes it easy to develop hard-to-reach states. Save these UI states as **stories** to revisit during development, testing, or QA. + +Browse example stories now by navigating to them in the sidebar. +View their code in the `src/storybook-examples` directory to learn how they work. +We recommend building UIs with a [**component-driven**](https://componentdriven.org) process starting with atomic components and ending with pages. + +
Configure
+ + + +
Learn
+ + + +
+ TipEdit the Markdown in{' '} + src/storybook-examples/welcome.mdx +
diff --git a/packages/ui/src/components/Introduction/assets/code-brackets.svg b/packages/ui/src/components/Introduction/assets/code-brackets.svg new file mode 100644 index 00000000000..73de9477600 --- /dev/null +++ b/packages/ui/src/components/Introduction/assets/code-brackets.svg @@ -0,0 +1 @@ +illustration/code-brackets \ No newline at end of file diff --git a/packages/ui/src/components/Introduction/assets/colors.svg b/packages/ui/src/components/Introduction/assets/colors.svg new file mode 100644 index 00000000000..17d58d516e1 --- /dev/null +++ b/packages/ui/src/components/Introduction/assets/colors.svg @@ -0,0 +1 @@ +illustration/colors \ No newline at end of file diff --git a/packages/ui/src/components/Introduction/assets/comments.svg b/packages/ui/src/components/Introduction/assets/comments.svg new file mode 100644 index 00000000000..6493a139f52 --- /dev/null +++ b/packages/ui/src/components/Introduction/assets/comments.svg @@ -0,0 +1 @@ +illustration/comments \ No newline at end of file diff --git a/packages/ui/src/components/Introduction/assets/direction.svg b/packages/ui/src/components/Introduction/assets/direction.svg new file mode 100644 index 00000000000..65676ac2722 --- /dev/null +++ b/packages/ui/src/components/Introduction/assets/direction.svg @@ -0,0 +1 @@ +illustration/direction \ No newline at end of file diff --git a/packages/ui/src/components/Introduction/assets/flow.svg b/packages/ui/src/components/Introduction/assets/flow.svg new file mode 100644 index 00000000000..8ac27db403c --- /dev/null +++ b/packages/ui/src/components/Introduction/assets/flow.svg @@ -0,0 +1 @@ +illustration/flow \ No newline at end of file diff --git a/packages/ui/src/components/Introduction/assets/plugin.svg b/packages/ui/src/components/Introduction/assets/plugin.svg new file mode 100644 index 00000000000..29e5c690c0a --- /dev/null +++ b/packages/ui/src/components/Introduction/assets/plugin.svg @@ -0,0 +1 @@ +illustration/plugin \ No newline at end of file diff --git a/packages/ui/src/components/Introduction/assets/repo.svg b/packages/ui/src/components/Introduction/assets/repo.svg new file mode 100644 index 00000000000..f386ee902c1 --- /dev/null +++ b/packages/ui/src/components/Introduction/assets/repo.svg @@ -0,0 +1 @@ +illustration/repo \ No newline at end of file diff --git a/packages/ui/src/components/Introduction/assets/stackalt.svg b/packages/ui/src/components/Introduction/assets/stackalt.svg new file mode 100644 index 00000000000..9b7ad274350 --- /dev/null +++ b/packages/ui/src/components/Introduction/assets/stackalt.svg @@ -0,0 +1 @@ +illustration/stackalt \ No newline at end of file diff --git a/packages/ui/src/components/Listbox/Listbox2.tsx b/packages/ui/src/components/Listbox/Listbox2.tsx new file mode 100644 index 00000000000..5366c6062b5 --- /dev/null +++ b/packages/ui/src/components/Listbox/Listbox2.tsx @@ -0,0 +1,344 @@ +/* This example requires Tailwind CSS v2.0+ */ +import React, { useEffect, useRef, useState } from 'react' +import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu' +import { FormLayout } from '../../lib/Layout/FormLayout' + +import InputIconContainer from '../../lib/Layout/InputIconContainer' +import InputErrorIcon from '../../lib/Layout/InputErrorIcon' +import { IconCheck } from '../Icon/icons/IconCheck' + +import { useFormContext } from '../Form/FormContext' +import { flatten } from 'lodash' + +import { SelectContext } from './SelectContext' + +import styleHandler from '../../lib/theme/styleHandler' + +function classNames(...classes: any) { + return classes.filter(Boolean).join(' ') +} + +export interface Props + extends Omit, 'size'> { + className?: string + children: React.ReactNode + descriptionText?: string + error?: string + icon?: any + id?: string + label?: string + labelOptional?: string + layout?: 'horizontal' | 'vertical' + style?: React.CSSProperties + value?: any + reveal?: boolean + actions?: React.ReactNode + size?: 'tiny' | 'small' | 'medium' | 'large' | 'xlarge' + defaultValue?: any + borderless?: boolean + validation?: (x: any) => void + optionsWidth?: number + // override the button prop for onchange we only return a single value + // rather than a ChangeEvent + onChange?: (x: any) => void +} + +function Listbox({ + children, + className, + descriptionText, + error, + icon, + id = '', + name = '', + label, + labelOptional, + layout, + value = undefined, + onChange, + onFocus, + onBlur, + style, + size = 'medium', + defaultValue, + borderless = false, + validation, + disabled, + optionsWidth, +}: Props) { + const [selected, setSelected] = useState(undefined) + const [selectedNode, setSelectedNode] = useState({}) + + const __styles = styleHandler('listbox') + + const triggerRef = useRef(null) + + const { + formContextOnChange, + values, + errors, + handleBlur, + touched, + fieldLevelValidation, + } = useFormContext() + + if (values && !value) { + defaultValue = values[id || name] + } + + function handleBlurEvent(e: React.FocusEvent) { + if (handleBlur) handleBlur(e) + if (onBlur) onBlur(e) + } + + if (!error) { + if (errors && !error) error = errors[id || name] + error = touched && touched[id || name] ? error : undefined + } + + useEffect(() => { + if (value) { + setSelected(value) + } + }, [value]) + + useEffect(() => { + // handle listbox options width size + + function handleResize() { + // Set window width/height to state + + document.documentElement.style.setProperty( + '--width-listbox', + `${optionsWidth ? optionsWidth : triggerRef.current?.offsetWidth}px` + ) + } + + // Add event listener + window.addEventListener('resize', handleResize) + + // Call handler right away so state gets updated with initial window size + handleResize() + + // Remove event listener on cleanup + return () => window.removeEventListener('resize', handleResize) + }, []) + + useEffect(() => { + const data: any = children + const content: any = flatten(data) + + function findNode(_value: any) { + return content.find((node: any) => node.props.value === _value) + } + + /* + * value prop overrides everything + */ + if (value) { + setSelected(value) + const node: any = findNode(value) + setSelectedNode(node?.props ? node.props : undefined) + return + } + + /* + * if no value prop, then use selected state + */ + if (selected) { + const node: any = findNode(selected) + setSelectedNode(node?.props ? node.props : undefined) + return + } else if (defaultValue) { + setSelected(defaultValue) + const node: any = findNode(selected) + setSelectedNode(node?.props ? node.props : undefined) + return + } else { + /* + * if no selected value (including a `defaultvalue`), then use first child + */ + setSelectedNode(content[0].props) + return + } + }, [selected]) + + function handleOnChange(value: any) { + if (onChange) onChange(value) + setSelected(value) + + /* + * Create change event for formik + * formik expects an input change event + */ + let event: any = {} + event.target = { + type: 'select', + name: name, + id: id, + value: value, + checked: undefined, + // outerHTML: undefined, + // options: undefined, + // multiple: undefined, + } + + // update form + // Create a new 'change' event + if (formContextOnChange) formContextOnChange(event) + // run field level validation + if (validation) fieldLevelValidation(id, validation(value)) + } + + let selectClasses = [__styles.container, __styles.base] + if (error) selectClasses.push(__styles.variants.error) + if (!error) selectClasses.push(__styles.variants.standard) + // if (icon) selectClasses.push(SelectStyles['sbui-listbox--with-icon']) + if (icon) selectClasses.push(__styles.with_icon) + // if (size) selectClasses.push(SelectStyles[`sbui-listbox--${size}`]) + if (size) selectClasses.push(__styles.size[size]) + // if (borderless) selectClasses.push(SelectStyles['sbui-listbox--borderless']) + if (disabled) selectClasses.push(__styles.disabled) + + return ( + + + + + + +
+ + {children} + +
+
+
+
+ ) +} + +interface OptionProps { + id?: string + value: any + label: string + disabled?: boolean + children?: React.ReactNode + className?: string + addOnBefore?: ({ active, selected }: any) => React.ReactNode +} + +type addOnBefore = { + selected: boolean + active: boolean +} + +function SelectOption({ + id, + value, + label, + disabled = false, + children, + className = '', + addOnBefore, +}: OptionProps) { + const __styles = styleHandler('listbox') + + return ( + + {({ onChange, selected }) => { + const active = selected === value ? true : false + + return ( + (!disabled ? onChange(value) : {})} + > +
+ {addOnBefore && addOnBefore({ active, selected })} + + {typeof children === 'function' + ? children({ active, selected }) + : children} + +
+ + {active ? ( + + + ) : null} +
+ ) + }} +
+ ) +} + +Listbox.Option = SelectOption + +export default Listbox diff --git a/packages/ui/src/components/Listbox/SelectContext.tsx b/packages/ui/src/components/Listbox/SelectContext.tsx new file mode 100644 index 00000000000..83a3621d376 --- /dev/null +++ b/packages/ui/src/components/Listbox/SelectContext.tsx @@ -0,0 +1,8 @@ +import { createContext } from 'react' + +// Make sure the shape of the default value passed to +// createContext matches the shape that the consumers expect! +export const SelectContext = createContext({ + onChange: (e: any) => {}, + selected: undefined, +}) diff --git a/packages/ui/src/components/Listbox/SelectStyled.module.css b/packages/ui/src/components/Listbox/SelectStyled.module.css new file mode 100644 index 00000000000..e2cc7c937ff --- /dev/null +++ b/packages/ui/src/components/Listbox/SelectStyled.module.css @@ -0,0 +1,145 @@ +/* .sbui-listbox-container { + @apply relative; +} */ + +/* .sbui-listbox { + @apply block w-full bg-white pl-3 pr-10 py-2 text-sm rounded-md transition-all; + @apply text-gray-700 border border-solid border-gray-300; + @apply cursor-default focus:outline-none focus:ring-1 focus:ring-brand-600 focus:border-brand-600; + @apply dark:bg-transparent dark:text-white dark:border-gray-500; + @apply dark:focus:border-brand-500; + -webkit-appearance: none; + -moz-appearance: none; + text-indent: 1px; + text-overflow: ''; + box-shadow: 0 0 0 2px rgba(255, 255, 255, 0); + transition: box-shadow 0.3s ease-in-out; */ + +/* // temporary fix + // + // temporary fix for supabase apps + // tailwind @base styles adds a dropdown chevron + // using background image as default + // */ +/* background-image: none; +} */ + +.sbui-listbox:focus { + box-shadow: 0 0 0 2px rgba(62, 207, 142, 0.1); +} + +.sbui-listbox--error { + @apply border-red-500 dark:border-red-500; +} + +.sbui-listbox--borderless { + @apply border-transparent shadow-none; +} + +/* + Select sizes +*/ + +/* .sbui-listbox--tiny { + @apply px-2.5 py-1.5 text-xs; +} +.sbui-listbox--small { + @apply px-3 py-2 text-sm leading-4; +} +.sbui-listbox--medium { + @apply px-4 py-2 text-sm; +} +.sbui-listbox--large { + @apply px-4 py-2 text-base; +} +.sbui-listbox--xlarge { + @apply px-6 py-3 text-base; +} */ + +/* .sbui-listbox-actions-container { + @apply absolute inset-y-0 right-0 pl-3 pr-1 mr-5 flex items-center; +} */ + +/* + Select icon +*/ + +/* .sbui-listbox--with-icon { + @apply pl-10; +} */ + +/* + Add on before +*/ + +/* .sbui-listbox-addonbefore { + @apply w-full flex flex-row items-center space-x-3; +} */ + +.sbui-listbox-label { + @apply truncate; +} + +/* + Select Chevron +*/ + +.sbui-listbox-chevron-container { + @apply absolute inset-y-0 right-0 flex items-center pr-2 pointer-events-none; +} + +.sbui-listbox-chevron { + @apply h-5 w-5 text-gray-400; +} + +/* + Option +*/ + +/* .sbui-listbox-option-container { + @apply list-none p-0 absolute mt-1 w-full bg-white dark:bg-gray-800 shadow-lg border border-solid border-gray-100 dark:border-gray-600 max-h-60 rounded-md py-1 text-base ring-1 ring-black ring-opacity-5 overflow-auto focus:outline-none sm:text-sm z-10; +} */ + +/* .sbui-listbox-option { + @apply cursor-pointer select-none relative py-2 pl-3 pr-9 text-gray-900 dark:text-white; +} */ + +/* .sbui-listbox-option--active { + @apply text-brand-600 dark:text-brand-600 bg-brand-600 bg-opacity-20; +} + +.sbui-listbox-option--disabled { + @apply cursor-not-allowed opacity-50; +} */ + +/* .sbui-listbox-option__inner { + @apply flex items-center space-x-3; +} */ + +/* .sbui-listbox-option__check { + @apply absolute inset-y-0 right-0 flex items-center pr-3; +} + +.sbui-listbox-option__check--active { + @apply text-brand-600; +} */ + +.sbui-listbox-option__check__icon { + @apply h-5 w-5; +} + +/* + Transition +*/ + +.sbui-listbox-transition--leave { + @apply transition ease-in duration-100; +} + +.sbui-listbox-transition--leave-from { + @apply opacity-100; +} + +.sbui-listbox-transition--leave-to { + @apply opacity-0; +} diff --git a/packages/ui/src/components/Listbox/SelectStyled.stories.tsx b/packages/ui/src/components/Listbox/SelectStyled.stories.tsx new file mode 100644 index 00000000000..bbba34198a0 --- /dev/null +++ b/packages/ui/src/components/Listbox/SelectStyled.stories.tsx @@ -0,0 +1,399 @@ +import React, { useState } from 'react' + +import Listbox from './Listbox2' +import { IconBook, IconUser } from '../../index' +import { Button } from '../Button' +import Typography from '../Typography' + +export default { + title: 'Data Input/Listbox', + component: Listbox, +} + +const { Option } = Listbox + +const options = [ + { value: 'one', label: 'one' }, + { value: 'two', label: 'two' }, + { value: 'three', label: 'three' }, + { value: 'four', label: 'four' }, +] + +export const Default = (args: any) => ( + + {options.map((option) => { + return ( + { + // console.log('selected', selected) + // console.log('active', active) + return {option.label} + }} + /> + ) + })} + +) + +export const ListBoxDisabled = (args: any) => ( + + + Option 1 + + + Option 2 + + + Option 3 + + +) + +export const WithDisabled = (args: any) => ( + + + Option 1 + + + Option 2 + + + Option 3 + + +) + +const people = [ + { + value: 1, + label: 'Wade Cooper', + avatar: + 'https://images.unsplash.com/photo-1491528323818-fdd1faba62cc?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80', + }, + { + value: 2, + label: 'Arlene Mccoy', + avatar: + 'https://images.unsplash.com/photo-1550525811-e5869dd03032?ixlib=rb-1.2.1&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80', + }, + { + value: 3, + label: 'Devon Webb', + avatar: + 'https://images.unsplash.com/photo-1500648767791-00dcc994a43e?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2.25&w=256&h=256&q=80', + }, + { + value: 4, + label: 'Tom Cook', + avatar: + 'https://images.unsplash.com/photo-1472099645785-5658abf4ff4e?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80', + }, + { + value: 5, + label: 'Tanya Fox', + avatar: + 'https://images.unsplash.com/photo-1494790108377-be9c29b29330?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80', + }, + { + value: 6, + label: 'Hellen Schmidt', + avatar: + 'https://images.unsplash.com/photo-1487412720507-e7ab37603c6f?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80', + }, + { + value: 7, + label: 'Caroline Schultz', + avatar: + 'https://images.unsplash.com/photo-1568409938619-12e139227838?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80', + }, + { + value: 8, + label: 'Mason Heaney', + avatar: + 'https://images.unsplash.com/photo-1531427186611-ecfd6d936c79?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80', + }, + { + value: 9, + label: 'Claudie Smitham', + avatar: + 'https://images.unsplash.com/photo-1584486520270-19eca1efcce5?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80', + }, + { + value: 10, + label: 'Emil Schaefer', + avatar: + 'https://images.unsplash.com/photo-1561505457-3bcad021f8ee?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80', + }, +] + +export const People = (args: any) => ( +
+ + {people.map((person) => { + return ( + [ + , + ]} + children={({ active, selected }: any) => { + // console.log('selected', selected) + // console.log('active', active) + return ( + + {person.label} + + ) + }} + /> + ) + })} + +
+) + +People.args = { + disabled: false, + label: 'Label', + layout: 'vertical', + size: 'medium', +} + +export const WithState = (args: any) => { + const [value, setValue] = useState('foo') + return ( + setValue(value)} + label="Choose a person" + layout="horizontal" + descriptionText="Choose a person for this role" + > + + foo + + {people.map((person) => { + return ( + [ + , + ]} + children={({ active, selected }: any) => { + return ( + + {person.label} + + ) + }} + /> + ) + })} + + ) +} + +WithState.args = { + disabled: false, + label: 'Label', + layout: 'vertical', + size: 'medium', +} + +export const WithIcon = (args: any) => ( +
+ } + label="Choose a person" + layout="horizontal" + descriptionText="Choose a person for this role" + > + {people.map((person) => { + return ( + [ + , + ]} + children={({ active, selected }: any) => { + // console.log('selected', selected) + // console.log('active', active) + return ( + + {person.label} + + ) + }} + /> + ) + })} + +
+) + +WithIcon.args = { + disabled: false, + label: 'Label', + layout: 'vertical', + size: 'medium', +} + +// export const Default = (args: any) => ( +// +// +// +// +// +// ) + +// export const withCheckboxes = (args: any) => + +export const ErrorState = (args: any) => ( + + {people.map((person) => { + return ( + [ + , + ]} + > + {person.label} + + ) + })} + +) + +ErrorState.args = { + label: 'Choose a person', + descriptionText: 'Choose a person for this role', +} + +export const ListBoxChildrenPropChange = (args: any) => { + const [countries, setCountries] = useState([ + 'England', + 'Wales', + 'Scotland', + 'Ireland', + ]) + + function handlePop() { + console.log('handlepop') + let _data = [] + _data = countries + _data.pop() + setCountries([..._data]) + + console.log(countries) + } + + return ( + <> + {countries.map((country) => { + return {country} + })} + + {countries.map((country) => { + return ( + + {country} + + ) + })} + + Disabled + + + + + ) +} + +ListBoxChildrenPropChange.args = { + label: 'Choose a country', +} + +export const ValueChange = (args: any) => { + const [countries, setCountries] = useState([ + 'England', + 'Wales', + 'Scotland', + 'Ireland', + ]) + + const [value, setValue] = useState('England') + + function handleRandom() { + const random = countries[Math.floor(Math.random() * countries.length)] + setValue(random) + } + + return ( + <> + current value: {value} +
+ + {countries.map((country) => { + return ( + + {country} + + ) + })} + + Disabled + + +
+ + + ) +} + +ValueChange.args = { + label: 'Choose a country', +} diff --git a/packages/ui/src/components/Listbox/SelectStyled.test.js b/packages/ui/src/components/Listbox/SelectStyled.test.js new file mode 100644 index 00000000000..ca4eca6aa86 --- /dev/null +++ b/packages/ui/src/components/Listbox/SelectStyled.test.js @@ -0,0 +1,27 @@ +import React from 'react' +import { render, screen } from '@testing-library/react' +import Select from './Listbox' + +describe('#Select', () => { + it('should render select correctly', async () => { + render( + + ) + expect(screen.queryByTestId('form-select')).toBeInTheDocument() + }) + + it('should have "form-select--error" class', () => { + render( + + ) + expect(screen.queryByTestId('form-select')).toHaveClass( + 'form-select border-solid form-select--error' + ) + }) +}) diff --git a/packages/ui/src/components/Listbox/index.tsx b/packages/ui/src/components/Listbox/index.tsx new file mode 100644 index 00000000000..79f42296955 --- /dev/null +++ b/packages/ui/src/components/Listbox/index.tsx @@ -0,0 +1,3 @@ +import Listbox from './Listbox2' +export default Listbox +export { default as Listbox } from './Listbox2' diff --git a/packages/ui/src/components/Loading/Loading.module.css b/packages/ui/src/components/Loading/Loading.module.css new file mode 100644 index 00000000000..fe814195451 --- /dev/null +++ b/packages/ui/src/components/Loading/Loading.module.css @@ -0,0 +1,20 @@ +.sbui-loading { + @apply transition-all relative; +} + +.sbui-loading--active .sbui-loading-content { + opacity: 0.4; +} +.sbui-loading-content { + @apply transition-opacity duration-300; +} + +.sbui-loading-spinner { + @apply text-brand-800 animate-spin; + margin: auto; + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; +} diff --git a/packages/ui/src/components/Loading/Loading.stories.tsx b/packages/ui/src/components/Loading/Loading.stories.tsx new file mode 100644 index 00000000000..1283e417d1a --- /dev/null +++ b/packages/ui/src/components/Loading/Loading.stories.tsx @@ -0,0 +1,23 @@ +import React, { useState } from 'react' + +import { Loading } from '.' +import { Card } from '../Card' + +export default { + title: 'Utilities/Loading', + component: Loading, +} + +export const Default = (args: any) => { + return ( + <> + + + + + ) +} + +Default.args = { + active: true, +} diff --git a/packages/ui/src/components/Loading/Loading.tsx b/packages/ui/src/components/Loading/Loading.tsx new file mode 100644 index 00000000000..fe5de53dff5 --- /dev/null +++ b/packages/ui/src/components/Loading/Loading.tsx @@ -0,0 +1,28 @@ +import React from 'react' +import styleHandler from '../../lib/theme/styleHandler' +import { IconLoader } from './../../../index' + +interface Props { + children: React.ReactNode + active: boolean +} +export default function Loading({ children, active }: Props) { + const __styles = styleHandler('loading') + + let classNames = [__styles.base] + + let contentClasses = [__styles.content.base] + + if (active) { + contentClasses.push(__styles.content.active) + } + + let spinnerClasses = [__styles.spinner] + + return ( +
+
{children}
+ {active && } +
+ ) +} diff --git a/packages/ui/src/components/Loading/index.tsx b/packages/ui/src/components/Loading/index.tsx new file mode 100644 index 00000000000..10f5e3f5c36 --- /dev/null +++ b/packages/ui/src/components/Loading/index.tsx @@ -0,0 +1 @@ +export { default as Loading } from './Loading' diff --git a/packages/ui/src/components/Menu/Menu.module.css b/packages/ui/src/components/Menu/Menu.module.css new file mode 100644 index 00000000000..189981a4242 --- /dev/null +++ b/packages/ui/src/components/Menu/Menu.module.css @@ -0,0 +1,35 @@ +.sbui-menu__item { + @apply px-4 py-2; + @apply cursor-pointer; + @apply hover:bg-gray-100 dark:hover:bg-dark-700 transition-colors duration-150; +} + +.sbui-menu__group { + @apply px-4 py-2; +} + +.sbui-menu__content { + @apply w-full; +} + +.sbui-menu__item--active { + @apply bg-gray-100; + @apply dark:bg-gray-600; + + @apply text-gray-900; + @apply dark:text-white; +} + +.sbui-menu__item--active .sbui-menu__content { + @apply text-gray-600; + @apply dark:text-white; +} + +.sbui-menu__item--active--bar { + @apply border-l-4 border-brand-500; + border-left-style: solid; +} + +.sbui-menu__item--rounded { + @apply rounded; +} diff --git a/packages/ui/src/components/Menu/Menu.stories.tsx b/packages/ui/src/components/Menu/Menu.stories.tsx new file mode 100644 index 00000000000..4ba2d746e57 --- /dev/null +++ b/packages/ui/src/components/Menu/Menu.stories.tsx @@ -0,0 +1,136 @@ +import React from 'react' + +import { Divider } from '../Divider' +import { IconMail } from './../../index' +import Typography from '../Typography' + +import { Menu } from './' +import { Button } from '../Button' +import { IconDatabase } from '../Icon/icons/IconDatabase' +import { IconMenu } from '../Icon/icons/IconMenu' +import { IconRefreshCcw } from '../Icon/icons/IconRefreshCcw' + +export default { + title: 'Navigation/Menu', + component: Menu, +} + +const SampleIcon = () => + +export const Default = (args: any) => ( + + }>Account settings + + }>Account settings + }>Account settings + +) + +export const withActiveState = (args: any) => ( + + }>Account settings + + }> + Account settings + + }>Account settings + +) + +export const pills = (args: any) => ( + + }>Account settings + + }> + Account settings + + }>Account settings + +) + +export const border = (args: any) => ( + + }>Account settings + + }> + Account settings + + }>Account settings + +) + +export const Groups = () => ( + + + }>Account settings + }>Account settings + }>Account settings + + }>Account settings + }>Account settings + +) + +export const PillsAndGroups = () => ( + + + }>Account settings + } active> + Account settings + + }>Account settings + + }>Account settings + }>Account settings + +) + +export const BorderAndGroups = () => ( + + + }>Account settings + }>Account settings + } active> + Account settings + + + }>Account settings + }>Account settings + +) + +export const CustomNode = () => ( + + +
+ All tables + +
+ + } + /> + }> +
+ Account settings + +
+
+ }> +
+ Account settings + +
+
+ } active> + Account settings + + + }>Account settings + }>Account settings +
+) diff --git a/packages/ui/src/components/Menu/Menu.tsx b/packages/ui/src/components/Menu/Menu.tsx new file mode 100644 index 00000000000..b57d781ddd5 --- /dev/null +++ b/packages/ui/src/components/Menu/Menu.tsx @@ -0,0 +1,139 @@ +import React from 'react' +import { Space } from '../Space' +import Typography from '../Typography' +import { MenuContextProvider, useMenuContext } from './MenuContext' + +import styleHandler from '../../lib/theme/styleHandler' + +interface MenuProps { + children: React.ReactNode + className?: string + style?: React.CSSProperties + type?: 'text' | 'pills' | 'border' +} + +function Menu({ children, className, style, type = 'text' }: MenuProps) { + return ( + + ) +} + +interface ItemProps { + children: React.ReactNode + icon?: React.ReactNode + active?: boolean + rounded?: boolean + onClick?: any + doNotCloseOverlay?: boolean + showActiveBar?: boolean + style?: React.CSSProperties +} + +export function Item({ + children, + icon, + active, + rounded, + onClick, + doNotCloseOverlay = false, + showActiveBar = false, + style, +}: ItemProps) { + const __styles = styleHandler('menu') + + const { type } = useMenuContext() + + let classes = [__styles.item.base] + + classes.push(__styles.item.variants[type].base) + + if (active) { + classes.push(__styles.item.variants[type].active) + } else { + classes.push(__styles.item.variants[type].normal) + } + + let contentClasses = [__styles.item.content.base] + if (active) { + contentClasses.push(__styles.item.content.active) + } else { + contentClasses.push(__styles.item.content.normal) + } + + let iconClasses = [__styles.item.icon.base] + if (active) { + iconClasses.push(__styles.item.icon.active) + } else { + iconClasses.push(__styles.item.icon.normal) + } + + return ( +
  • + + {icon && {icon}} + {children} + +
  • + ) +} + +interface GroupProps { + children?: React.ReactNode + icon?: React.ReactNode + title: string +} + +export function Group({ children, icon, title }: GroupProps) { + const __styles = styleHandler('menu') + const { type } = useMenuContext() + return ( +
    + {icon && {icon}} + {title} + {children} +
    + ) +} + +interface MiscProps { + children: React.ReactNode +} + +export function Misc({ children }: MiscProps) { + return ( +
    + + + {children} + + +
    + ) +} + +Menu.Item = Item +Menu.Group = Group +Menu.Misc = Misc +export default Menu diff --git a/packages/ui/src/components/Menu/MenuContext.tsx b/packages/ui/src/components/Menu/MenuContext.tsx new file mode 100644 index 00000000000..3e8b71ab3d8 --- /dev/null +++ b/packages/ui/src/components/Menu/MenuContext.tsx @@ -0,0 +1,36 @@ +import React, { createContext, useContext } from 'react' + +interface ContextProps { + type: 'text' | 'pills' | 'border' +} + +interface Provider extends ContextProps { + children?: React.ReactNode +} + +// Make sure the shape of the default value passed to +// createContext matches the shape that the consumers expect! +const MenuContext = createContext({ + type: 'text', +}) + +export const MenuContextProvider = (props: Provider) => { + const { type } = props + + const value = { + type: type, + } + + return ( + {props.children} + ) +} + +// context helper to avoid using a consumer component +export const useMenuContext = () => { + const context = useContext(MenuContext) + if (context === undefined) { + throw new Error(`MenuContext must be used within a MenuContextProvider.`) + } + return context +} diff --git a/packages/ui/src/components/Menu/index.tsx b/packages/ui/src/components/Menu/index.tsx new file mode 100644 index 00000000000..03d4d6a4092 --- /dev/null +++ b/packages/ui/src/components/Menu/index.tsx @@ -0,0 +1 @@ +export { default as Menu } from './Menu' diff --git a/packages/ui/src/components/Modal/Modal.module.css b/packages/ui/src/components/Modal/Modal.module.css new file mode 100644 index 00000000000..447c46d3585 --- /dev/null +++ b/packages/ui/src/components/Modal/Modal.module.css @@ -0,0 +1,137 @@ +/* + Modal animations imported first as so placement styles are not affected. +*/ + +/* overlay animation */ +.sbui-modal-overlay--enter { + @apply ease-out duration-200; +} +.sbui-modal-overlay--enterFrom { + @apply opacity-0; +} +.sbui-modal-overlay--enterTo { + @apply opacity-100; +} +.sbui-modal-overlay--leave { + @apply ease-in duration-150; +} +.sbui-modal-overlay--leaveFrom { + @apply opacity-100; +} +.sbui-modal-overlay--leaveTo { + @apply opacity-0; +} + +/* modal animation */ +.sbui-modal--enter { + @apply ease-out duration-150 delay-150; +} +.sbui-modal--enterFrom { + @apply opacity-0 translate-y-4 sm:translate-y-0 transform sm:scale-95; +} +.sbui-modal--enterTo { + @apply opacity-100 translate-y-0 transform sm:scale-100; +} +.sbui-modal--leave { + @apply ease-in duration-150; +} +.sbui-modal--leaveFrom { + @apply opacity-100 translate-y-0 transform sm:scale-100; +} +.sbui-modal--leaveTo { + @apply opacity-0 translate-y-4 sm:translate-y-0 transform sm:scale-95; +} + +.sbui-modal-container { + @apply fixed z-50 inset-0; +} + +.sbui-modal-flex-container { + @apply flex items-end justify-center min-h-screen pt-4 px-6 pb-20 text-center sm:block sm:p-0; +} + +.sbui-modal-overlay-container { + @apply fixed inset-0 transition-opacity; +} + +.sbui-modal-overlay { + @apply absolute inset-0 bg-gray-900 opacity-75; +} + +.sbui-modal-div-trick { + @apply hidden sm:inline-block sm:align-middle sm:h-screen; +} + +/* .sbui-modal { + @apply inline-block bg-white dark:bg-dark-800 rounded-lg text-left overflow-hidden shadow-xl transform transition-all align-middle; + @apply border-gray-400 border border-solid; + @apply dark:border-gray-600 border border-solid; + + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); +} */ + +.sbui-modal--tiny { + @apply sm:align-middle sm:w-full sm:max-w-xs; +} + +.sbui-modal--small { + @apply sm:align-middle sm:w-full sm:max-w-sm; +} + +.sbui-modal--medium { + @apply sm:align-middle sm:w-full sm:max-w-lg; +} + +.sbui-modal--large { + @apply sm:align-middle sm:w-full max-w-xl; +} + +.sbui-modal-content { + @apply px-6 pt-5 pb-5 sm:p-6; +} + +.sbui-modal-footer { + @apply sm:flex sm:flex-row justify-end; +} + +.sbui-modal-footer--with-bg { + @apply bg-gray-50 dark:bg-dark-600 px-6 py-3 sm:px-6 sm:flex sm:flex-row justify-end; +} + +.sbui-modal-icon-container { + @apply mx-auto flex-shrink-0 flex items-center justify-center h-12 w-12 rounded-full sm:mx-0 sm:h-10 sm:w-10; +} + +.sbui-modal-icon-container--danger { + @apply text-red-600 bg-red-600 bg-opacity-20; +} + +.sbui-modal-icon-container--warning { + @apply text-yellow-500 bg-yellow-500 bg-opacity-20; +} + +.sbui-modal-icon-container--success { + @apply text-brand-500 bg-brand-500 bg-opacity-20; +} + +.sbui-modal-close-container { + @apply absolute right-1 top-1; +} + +.sbui-modal-close-container button, +.dark .sbui-modal-close-container button { + @apply text-gray-300; + @apply hover:text-gray-400; + + /* @apply dark:text-dark-400; */ + @apply hover:text-dark-300; + + @apply hover:bg-transparent; +} + +.sbui-sidepanel__trigger { + @apply border-none bg-transparent p-0 focus:ring-0; +} diff --git a/packages/ui/src/components/Modal/Modal.stories.tsx b/packages/ui/src/components/Modal/Modal.stories.tsx new file mode 100644 index 00000000000..bf1f499fe05 --- /dev/null +++ b/packages/ui/src/components/Modal/Modal.stories.tsx @@ -0,0 +1,602 @@ +import { actions } from '@storybook/addon-actions' +import React, { useState } from 'react' +import { action } from '@storybook/addon-actions' + +import { Modal } from '.' +import Typography from '../Typography' +import { Badge } from '../Badge' +import { Form } from '../Form' +import { Button } from '../Button' +import { Space } from '../Space' +import { IconTrash, IconAlertCircle, IconCheck } from './../../index' +import { Dropdown } from '../Dropdown' +import { IconGlobe } from '../Icon/icons/IconGlobe' +import { IconLink2 } from '../Icon/icons/IconLink2' +import { Input } from '../Input' + +export default { + title: 'Overlays/Modal', + component: Modal, + argTypes: { onClick: { action: 'clicked' } }, +} + +export const withUseState = () => { + const [visible, setVisible] = useState(false) + + return ( + <> +
    +
    +

    Delete your project

    +

    + It will be sad to see you go +

    +
    + +
    +
    + setVisible(!visible)} + header={ +
    + {/*
    + +
    */} +
    +

    Delete your project

    + Are you sure? +
    +
    + } + contentStyle={{ padding: 0 }} + hideFooter + > +
    { + setTimeout(() => { + // alert(JSON.stringify(values, null, 2)) + setSubmitting(false) + setVisible(false) + }, 400) + }} + validate={(values) => { + const errors: any = {} + if (!values.name) { + errors.name = 'Project name is required' + } else if (values.name !== 'MyProject') { + errors.name = 'Does not match project name' + } + return errors + }} + > + {({ isSubmitting, errors, touched }: any) => { + console.log('errors in form', errors) + console.log('touched in form', touched) + return ( +
    +
    + + + + Once deleted, this project cannot be restored. Please + proceed carefully. + + +
    +
    +

    + This action cannot be undone. This will permanently delete + the project{' '} + + MyProject + + . +

    +
    +
    +
    + +
    +
    +
    + +
    +
    + ) + }} +
    +
    +
    + + ) +} + +export const Default = (args: any) => ( + +
    + +
    +
    +

    This is the title

    + This is the title +
    +
    + } + > + + Modal content is inserted here, if you need to insert anything into the + Modal you can do so via{' '} + {'{children}'} + + +) + +export const withIcon = (args: any) => ( + + + Modal content is inserted here, if you need to insert anything into the + Modal you can do so via{' '} + {'{children}'} + + +) + +export const withVerticalLayout = (args: any) => ( + + + Modal content is inserted here, if you need to insert anything into the + Modal you can do so via{' '} + {'{children}'} + + +) + +export const withCloseButton = (args: any) => ( + + + This Modal has a close button on the top right + {'{children}'} + + +) + +export const rightAlignedFooter = (args: any) => ( + + + Modal content is inserted here, if you need to insert anything into the + Modal you can do so via{' '} + {'{children}'} + + +) + +export const hideFooter = (args: any) => ( + + + Modal content is inserted here, if you need to insert anything into the + Modal you can do so via{' '} + {'{children}'} + + +) + +export const withFooterBackground = (args: any) => ( + + + Modal content is inserted here, if you need to insert anything into the + Modal you can do so via{' '} + {'{children}'} + + +) + +export const customFooter = (args: any) => ( + + + Modal content is inserted here, if you need to insert anything into the + Modal you can do so via{' '} + {'{children}'} + + +) + +export const customFooterVertical = (args: any) => ( + + + Modal content is inserted here, if you need to insert anything into the + Modal you can do so via{' '} + {'{children}'} + + +) + +export const LongModal = () => ( +
    +

    + Modal content is inserted here, if you need to insert anything into the + Modal you can do so via +

    +

    + Modal content is inserted here, if you need to insert anything into the + Modal you can do so via +

    +

    + Modal content is inserted here, if you need to insert anything into the + Modal you can do so via +

    +

    + Modal content is inserted here, if you need to insert anything into the + Modal you can do so via +

    +

    + Modal content is inserted here, if you need to insert anything into the + Modal you can do so via +

    +

    + Modal content is inserted here, if you need to insert anything into the + Modal you can do so via +

    +

    + Modal content is inserted here, if you need to insert anything into the + Modal you can do so via +

    +

    + Modal content is inserted here, if you need to insert anything into the + Modal you can do so via +

    +

    + Modal content is inserted here, if you need to insert anything into the + Modal you can do so via +

    +

    + Modal content is inserted here, if you need to insert anything into the + Modal you can do so via +

    +

    + Modal content is inserted here, if you need to insert anything into the + Modal you can do so via +

    +

    + Modal content is inserted here, if you need to insert anything into the + Modal you can do so via +

    +

    + Modal content is inserted here, if you need to insert anything into the + Modal you can do so via +

    +

    + Modal content is inserted here, if you need to insert anything into the + Modal you can do so via +

    +

    + Modal content is inserted here, if you need to insert anything into the + Modal you can do so via +

    +

    + Modal content is inserted here, if you need to insert anything into the + Modal you can do so via +

    +

    + Modal content is inserted here, if you need to insert anything into the + Modal you can do so via +

    +

    + Modal content is inserted here, if you need to insert anything into the + Modal you can do so via +

    +

    + Modal content is inserted here, if you need to insert anything into the + Modal you can do so via +

    +

    + Modal content is inserted here, if you need to insert anything into the + Modal you can do so via +

    +

    + Modal content is inserted here, if you need to insert anything into the + Modal you can do so via +

    +

    + Modal content is inserted here, if you need to insert anything into the + Modal you can do so via +

    +

    + Modal content is inserted here, if you need to insert anything into the + Modal you can do so via +

    +

    + Modal content is inserted here, if you need to insert anything into the + Modal you can do so via +

    +

    + Modal content is inserted here, if you need to insert anything into the + Modal you can do so via +

    +

    + Modal content is inserted here, if you need to insert anything into the + Modal you can do so via +

    +

    + Modal content is inserted here, if you need to insert anything into the + Modal you can do so via +

    +

    + Modal content is inserted here, if you need to insert anything into the + Modal you can do so via +

    +

    + Modal content is inserted here, if you need to insert anything into the + Modal you can do so via +

    +

    + Modal content is inserted here, if you need to insert anything into the + Modal you can do so via +

    + + +

    + Modal content is inserted here, if you need to insert anything into + the Modal you can do so via +

    +

    + Modal content is inserted here, if you need to insert anything into + the Modal you can do so via +

    +

    + Modal content is inserted here, if you need to insert anything into + the Modal you can do so via +

    +

    + Modal content is inserted here, if you need to insert anything into + the Modal you can do so via +

    +

    + Modal content is inserted here, if you need to insert anything into + the Modal you can do so via +

    +

    + Modal content is inserted here, if you need to insert anything into + the Modal you can do so via +

    +

    + Modal content is inserted here, if you need to insert anything into + the Modal you can do so via +

    +

    + Modal content is inserted here, if you need to insert anything into + the Modal you can do so via +

    +

    + Modal content is inserted here, if you need to insert anything into + the Modal you can do so via +

    +

    + Modal content is inserted here, if you need to insert anything into + the Modal you can do so via +

    +

    + Modal content is inserted here, if you need to insert anything into + the Modal you can do so via +

    +

    + Modal content is inserted here, if you need to insert anything into + the Modal you can do so via +

    +

    + Modal content is inserted here, if you need to insert anything into + the Modal you can do so via +

    +

    + Modal content is inserted here, if you need to insert anything into + the Modal you can do so via +

    + {'{children}'} +
    +
    +
    +) + +export const customFooterOneButton = (args: any) => + +export const modalWithDropdowns = () => { + const [visible, setVisible] = useState(false) + + return ( + <> + + setVisible(!visible)} + hideFooter + // className="pointer-events-auto" + > + + console.log('item 1 clicked')}> + Item 1 + + console.log('item 2 clicked')}> + Item 2 + + + } + > + + + + + ) +} + +Default.args = { + visible: true, + onCancel: action('onCancel'), + onConfirm: action('onConfirm'), + title: 'This is the title of the modal', + description: 'And i am the description', + size: 'medium', +} + +withFooterBackground.args = { + visible: true, + footerBackground: true, + onCancel: action('onCancel'), + onConfirm: action('onConfirm'), + title: 'This is the title of the modal', + description: 'And i am the description', +} + +const icon = + +withIcon.args = { + visible: true, + showIcon: true, + onCancel: action('onCancel'), + onConfirm: action('onConfirm'), + title: 'This is the title of the modal', + description: 'And i am the description', + icon: icon, +} + +withCloseButton.args = { + visible: true, + closable: true, + onCancel: action('onCancel'), + onConfirm: action('onConfirm'), + title: 'This Modal has a close button on the top right', + description: 'And i am the description', +} + +withVerticalLayout.args = { + visible: true, + size: 'small', + layout: 'vertical', + onCancel: action('onCancel'), + onConfirm: action('onConfirm'), + title: 'This is the title of the modal', + description: 'And i am the description', + icon: icon, +} + +rightAlignedFooter.args = { + visible: true, + alignFooter: 'right', + onCancel: action('onCancel'), + onConfirm: action('onConfirm'), + title: 'This is the title of the modal', + description: 'And i am the description', +} + +hideFooter.args = { + visible: true, + hideFooter: true, + onCancel: action('onCancel'), + onConfirm: action('onConfirm'), + title: 'This is the title of the modal', + description: 'And i am the description', +} + +customFooter.args = { + visible: true, + onCancel: action('onCancel'), + onConfirm: action('onConfirm'), + title: 'This is the title of the modal', + description: 'And i am the description', + customFooter: [ + +
    + + Proceed with caution + +
    + + +
    , + ], +} + +customFooterVertical.args = { + visible: true, + size: 'small', + onCancel: action('onCancel'), + onConfirm: action('onConfirm'), + title: 'This is the title of the modal', + description: 'And i am the description', + layout: 'vertical', + customFooter: [ + + + + , + ], +} + +customFooterOneButton.args = { + visible: true, + size: 'small', + icon: , + onCancel: action('onCancel'), + onConfirm: action('onConfirm'), + title: 'Payment succesful', + description: + 'Lorem ipsum dolor sit amet consectetur adipisicing elit. Consequatur amet labore.', + layout: 'vertical', + customFooter: [ + + + , + ], +} diff --git a/packages/ui/src/components/Modal/Modal.tsx b/packages/ui/src/components/Modal/Modal.tsx new file mode 100644 index 00000000000..f0e7b240c53 --- /dev/null +++ b/packages/ui/src/components/Modal/Modal.tsx @@ -0,0 +1,197 @@ +import React, { useEffect } from 'react' +// @ts-ignore +import ModalStyles from './Modal.module.css' +import { Button, IconX, Space } from './../../../index' +import { AnimationTailwindClasses } from '../../types' + +import * as Dialog from '@radix-ui/react-dialog' + +import { Transition } from '@headlessui/react' +import styleHandler from '../../lib/theme/styleHandler' + +// import { Transition } from '@tailwindui/react' +// Merge Radix Props to surface in the modal component +export type ModalProps = RadixProps & Props + +interface RadixProps + extends Dialog.DialogProps, + Pick< + Dialog.DialogContentProps, + | 'onOpenAutoFocus' + | 'onCloseAutoFocus' + | 'onEscapeKeyDown' + | 'onPointerDownOutside' + | 'onInteractOutside' + > {} + +interface Props { + children?: React.ReactNode + customFooter?: React.ReactNode + closable?: boolean + description?: string + hideFooter?: boolean + alignFooter?: 'right' | 'left' + layout?: 'horizontal' | 'vertical' + icon?: React.ReactNode + loading?: boolean + onCancel?: any + cancelText?: string + onConfirm?: any + confirmText?: string + showIcon?: boolean + footerBackground?: boolean + title?: string | React.ReactNode + variant?: 'danger' | 'warning' | 'success' + visible: boolean + size?: 'tiny' | 'small' | 'medium' | 'large' | 'xlarge' | 'xxlarge' + style?: React.CSSProperties + overlayStyle?: React.CSSProperties + contentStyle?: React.CSSProperties + className?: string + overlayClassName?: string + transition?: AnimationTailwindClasses + transitionOverlay?: AnimationTailwindClasses + triggerElement?: React.ReactNode + header?: React.ReactNode +} + +const Modal = ({ + children, + customFooter = undefined, + closable, + description, + hideFooter = false, + alignFooter = 'left', + layout = 'horizontal', + loading = false, + cancelText = 'Cancel', + onConfirm = () => {}, + onCancel = () => {}, + confirmText = 'Confirm', + showIcon = false, + title, + footerBackground, + icon, + variant = 'success', + visible = false, + size = 'large', + style, + overlayStyle, + contentStyle, + className = '', + overlayClassName, + triggerElement, + header, + ...props +}: ModalProps) => { + const [open, setOpen] = React.useState(visible ? visible : false) + + const __styles = styleHandler('modal') + + useEffect(() => { + setOpen(visible) + }, [visible]) + + function stopPropagation(e: React.MouseEvent) { + e.stopPropagation() + } + + // let footerClasses = [ModalStyles['sbui-modal-footer']] + if (footerBackground) { + // footerClasses.push(ModalStyles['sbui-modal-footer--with-bg']) + } + + let modalClasses = [ + __styles.base, + // ModalStyles[`sbui-modal`], + // ModalStyles[`sbui-modal--${size}`], + ] + // if (className) modalClasses.push(className) + + // let overlayClasses = [ModalStyles['sbui-modal-overlay']] + // if (overlayClassName) overlayClasses.push(overlayClassName) + + const footerContent = customFooter ? ( + customFooter + ) : ( + + + + + ) + + function handleOpenChange(open: boolean) { + if (visible !== undefined && !open) { + // controlled component behaviour + onCancel() + } else { + // un-controlled component behaviour + setOpen(open) + } + } + + return ( + + {triggerElement && ( + + {triggerElement} + + )} + + + + + {header &&
    {header}
    } + {/*
    */} + {children} + {/*
    */} + {!hideFooter &&
    {footerContent}
    } + {/* {closable && ( +
    +
    + )} */} +
    +
    +
    +
    + ) +} + +function Content({ children }: { children: React.ReactNode }) { + const __styles = styleHandler('modal') + return
    {children}
    +} + +export function Seperator() { + const __styles = styleHandler('modal') + + return
    +} + +Modal.Content = Content +Modal.Seperator = Seperator +export default Modal diff --git a/packages/ui/src/components/Modal/index.tsx b/packages/ui/src/components/Modal/index.tsx new file mode 100644 index 00000000000..7a4f2d1dc1e --- /dev/null +++ b/packages/ui/src/components/Modal/index.tsx @@ -0,0 +1 @@ +export { default as Modal } from './Modal' diff --git a/packages/ui/src/components/Popover/Popover.module.css b/packages/ui/src/components/Popover/Popover.module.css new file mode 100644 index 00000000000..9ae30064daa --- /dev/null +++ b/packages/ui/src/components/Popover/Popover.module.css @@ -0,0 +1,63 @@ +.sbui-popover__content { + @apply bg-bg-primary-light dark:bg-bg-secondary-dark p-0; + @apply border; + @apply rounded; + @apply shadow; + border-style: solid; + border-width: 1px; +} + +/* @keyframes fadeIn { + from { + transform: scale(0.95); + opacity: 0; + } + to { + transform: scale(1); + opacity: 1; + } +} + +@keyframes fadeOut { + from { + transform: scale(1); + opacity: 1; + } + to { + transform: scale(0.95); + opacity: 0; + } +} */ + +/* .sbui-popover__content { + transform-origin: var(--radix-popover-menu-content-transform-origin); +} + +.sbui-popover__content[data-state='open'] { + animation: fadeIn 50ms ease-out; +} + +.sbui-popover__content[data-state='closed'] { + animation: fadeOut 50ms ease-in; +} */ + +/* .sbui-popover__trigger { + @apply border-none bg-transparent p-0 focus:ring-0; +} */ + +.sbui-popover__arrow { + @apply fill-current text-bg-primary-light dark:text-bg-secondary-dark; + @apply border-0 border-t; + border-style: solid; +} + +.sbui-popover__close { + @apply absolute top-1 right-0; + @apply bg-transparent cursor-pointer border-none; + + @apply text-gray-300; + @apply hover:text-gray-400; + + @apply dark:text-dark-400; + @apply dark:hover:text-dark-300; +} diff --git a/packages/ui/src/components/Popover/Popover.stories.tsx b/packages/ui/src/components/Popover/Popover.stories.tsx new file mode 100644 index 00000000000..ef195dc0d3f --- /dev/null +++ b/packages/ui/src/components/Popover/Popover.stories.tsx @@ -0,0 +1,73 @@ +import { Button } from '../Button' +import { Divider } from '../Divider' +import { IconChevronDown } from '../../index' +import Typography from '../Typography' + +import { Popover } from '.' +import { IconLogIn } from '../Icon/icons/IconLogIn' +import { Input } from '../Input' + +export default { + title: 'Navigation/Popover', + component: Popover, +} + +export const Default = (args: any) => ( +
    + + +
    Filter
    + +
    + } + overlay={[ + <> +
    + + + + + +
    + , + ]} + > + + +
    +) + +Default.args = {} diff --git a/packages/ui/src/components/Popover/Popover.tsx b/packages/ui/src/components/Popover/Popover.tsx new file mode 100644 index 00000000000..42ff4b97205 --- /dev/null +++ b/packages/ui/src/components/Popover/Popover.tsx @@ -0,0 +1,112 @@ +import React from 'react' + +import * as RadixPopover from '@radix-ui/react-popover' +import type * as RadixPopoverTypes from '@radix-ui/react-popover/' + +import { IconX } from '../Icon/icons/IconX' + +import styleHandler from '../../lib/theme/styleHandler' + +interface RootProps { + align?: RadixPopoverTypes.PopoverContentProps['align'] + ariaLabel?: string + arrow?: boolean + children?: React.ReactNode + className?: string + defaultOpen?: boolean + modal?: boolean + onOpenChange?: RadixPopoverTypes.PopoverProps['onOpenChange'] + open?: boolean + overlay?: React.ReactNode + portalled?: boolean + showClose?: boolean + side?: RadixPopoverTypes.PopoverContentProps['side'] + sideOffset?: RadixPopoverTypes.PopoverContentProps['sideOffset'] + style?: React.CSSProperties + header?: React.ReactNode + footer?: React.ReactNode + size?: 'tiny' | 'small' | 'medium' | 'large' | 'xlarge' | 'content' +} + +function Popover({ + align = 'center', + ariaLabel, + arrow = false, + children, + className, + defaultOpen = false, + modal, + onOpenChange, + open, + overlay, + portalled, + side = 'bottom', + sideOffset = 6, + style, + header, + footer, + size = 'content', +}: RootProps) { + const __styles = styleHandler('popover') + + let classes = [__styles.content, __styles.size[size]] + if (className) { + classes.push(className) + } + + return ( + + + {children} + + + + {arrow && ( + + )} + {header &&
    {header}
    } + {overlay} + {footer &&
    {footer}
    } +
    +
    + ) +} + +function Close() { + const __styles = styleHandler('popover') + + return ( + + + + ) +} + +function Seperator() { + const __styles = styleHandler('popover') + + return
    +} + +Popover.Seperator = Seperator +Popover.Close = Close +export default Popover diff --git a/packages/ui/src/components/Popover/index.tsx b/packages/ui/src/components/Popover/index.tsx new file mode 100644 index 00000000000..c6e06a314a2 --- /dev/null +++ b/packages/ui/src/components/Popover/index.tsx @@ -0,0 +1 @@ +export { default as Popover } from './Popover' diff --git a/packages/ui/src/components/Radio/Radio.module.css b/packages/ui/src/components/Radio/Radio.module.css new file mode 100644 index 00000000000..32a6bad70f2 --- /dev/null +++ b/packages/ui/src/components/Radio/Radio.module.css @@ -0,0 +1,109 @@ +/* .sbui-radio-fieldset { + @apply border-none p-0 m-0; +} */ + +.sbui-radio-container { + @apply relative cursor-pointer flex p-0 py-2 border-none; +} + +/* .sbui-radio-container--card { + @apply p-4 border border-solid border-gray-200 dark:border-gray-500; +} */ + +.sbui-radio-container--card--active { + @apply bg-brand-100 bg-opacity-20 border-brand-200 dark:border-brand-200 z-10; +} + +/* .sbui-radio-container--card:first-child { + @apply rounded-tl-md rounded-tr-md; +} + +.sbui-radio-container--card:last-child { + @apply rounded-bl-md rounded-br-md; +} */ + +.sbui-radio-label { + @apply flex flex-row cursor-pointer; +} + +.sbui-radio-label-text { + @apply block text-sm font-medium dark:text-white; +} + +.sbui-radio-label-text .sbui-radio__label-text-before, +.sbui-radio-label-text .sbui-radio__label-text-after { + @apply text-gray-400 dark:text-gray-300; +} + +.sbui-radio-label-description { + @apply block text-sm text-gray-400 dark:text-gray-300; +} + +/* .sbui-radio { + @apply h-4 w-4 ml-0 mr-3.5 rounded-2xl border border-solid transition-all; + + @apply text-brand-600 cursor-pointer border-gray-500; + @apply focus:ring-brand-500 hover:border-brand-700 focus:outline-none; + + @apply dark:bg-transparent dark:hover:border-brand-700; +} */ + +/* .sbui-radio:checked { + border-color: transparent; + background-color: currentColor; + background-size: 100% 100%; + background-position: center; + background-repeat: no-repeat; +} + +.sbui-radio:checked { + background-image: url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3ccircle cx='8' cy='8' r='3'/%3e%3c/svg%3e"); +} */ + +/* .sbui-radio { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + -webkit-print-color-adjust: exact; + color-adjust: exact; + background-origin: border-box; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + flex-shrink: 0; +} */ + +.sbui-radio-group-contents { + @apply dark:bg-transparent rounded-md -space-y-px; +} + +/* + Label sizes +*/ + +.sbui-radio-container--tiny .sbui-radio-label, +.sbui-radio-container--tiny .sbui-radio-label-text, +.sbui-radio-container--tiny .sbui-radio-label-description { + @apply text-xs; +} +.sbui-radio-container--small .sbui-radio-label, +.sbui-radio-container--small .sbui-radio-label-text, +.sbui-radio-container--small .sbui-radio-label-description { + @apply text-sm; +} +.sbui-radio-container--medium .sbui-radio-label, +.sbui-radio-container--medium .sbui-radio-label-text, +.sbui-radio-container--medium .sbui-radio-label-description { + @apply text-sm; +} +.sbui-radio-container--large .sbui-radio-label, +.sbui-radio-container--large .sbui-radio-label-text, +.sbui-radio-container--large .sbui-radio-label-description { + @apply text-base; +} +.sbui-radio-container--xlarge .sbui-radio-label, +.sbui-radio-container--xlarge .sbui-radio-label-text, +.sbui-radio-container--xlarge .sbui-radio-label-description { + @apply text-base; +} diff --git a/packages/ui/src/components/Radio/Radio.stories.tsx b/packages/ui/src/components/Radio/Radio.stories.tsx new file mode 100644 index 00000000000..b2b17c3267f --- /dev/null +++ b/packages/ui/src/components/Radio/Radio.stories.tsx @@ -0,0 +1,355 @@ +import React from 'react' + +import { action } from '@storybook/addon-actions' + +import Radio from '.' + +const stackedOptions = [ + { + label: 'Hobby', + description: '8GB / 4 CPUs · 160 GB SSD disk', + value: '1', + align: 'vertical', + optionalLabel:
    $40 / mo
    , + }, + { + label: 'Startup', + description: '12GB / 6 CPUs · 256 GB SSD disk', + value: '2', + align: 'vertical', + optionalLabel:
    $40 / mo
    , + }, + { + label: 'Business', + description: '16GB / 8 CPUs · 512 GB SSD disk', + value: '3', + align: 'vertical', + optionalLabel:
    $40 / mo
    , + }, + { + label: 'Enterprise', + description: '32GB / 12 CPUs · 1024 GB SSD disk', + value: '4', + align: 'vertical', + optionalLabel:
    $40 / mo
    , + }, +] + +const smallOptions = [ + { + label: '4 GB', + value: '1', + }, + { + label: '8GB', + value: '2', + }, + { + label: '16GB', + value: '3', + }, + { + label: '32GB', + value: '3', + }, + { + label: '64GB', + value: '4', + }, + { + label: '128GB', + value: '5', + disabled: true, + }, +] + +const options = [ + { + label: 'Comments', + description: + 'Get notified when someones posts a comment on a posting. Get notified when someones posts a comment on a posting Get notified when someones posts a comment on a posting.', + value: '1', + align: 'vertical', + }, + { + label: 'Candidates', + description: + 'Get notified when a candidate applies for a job. Get notified when a candidate applies for a job. Get notified when a candidate applies for a job. Get notified when a candidate applies for a job. Get notified when a candidate applies for a job. ', + value: '2', + align: 'vertical', + }, + { + label: 'Offers', + description: 'Get notified when a candidate accepts or rejects an offer.', + value: '3', + align: 'vertical', + }, + { + label: 'Offers4', + description: 'Get notified when a candidate accepts or rejects an offer.', + value: '4', + align: 'vertical', + }, + { + label: 'Offers5', + description: 'Get notified when a candidate accepts or rejects an offer.', + value: '5', + align: 'vertical', + }, +] + +export default { + title: 'Data Input/Radio', + component: Radio, + argTypes: { onChange: { action: 'onChange' } }, +} + +interface onToggleProps { + e?: any +} + +export const SimpleList = (args: any) => ( + + + + + +) + +SimpleList.args = { + descriptionText: 'This is optional description', + label: 'Radio group main label', + labelOptional: 'This is an optional label', + layout: 'vertical', + name: 'SimpleList-example', + align: 'vertical', +} + +export const ListWithDescription = (args: any) => ( + + + + + +) + +ListWithDescription.args = { + descriptionText: 'This is optional description', + label: 'Radio group main label', + labelOptional: 'This is an optional label', + layout: 'vertical', + name: 'radiogroup-example-1', + align: 'vertical', +} + +export const ListWithInlineDescription = (args: any) => ( + + + + + +) + +ListWithInlineDescription.args = { + descriptionText: 'This is optional description', + label: 'Radio group main label', + labelOptional: 'This is an optional label', + layout: 'vertical', + name: 'radiogroup-example-1', + align: 'vertical', +} + +export const largeCards = (args: any) => ( + + + + + +) + +largeCards.args = { + descriptionText: 'This is optional description', + label: 'Radio group main label', + labelOptional: 'This is an optional label', + layout: 'vertical', + name: 'radiogroup-example-1', + align: 'vertical', + type: 'large-cards', +} + +export const withOptionsObj = (args: any) => + +export const withCards = (args: any) => ( + + {options.map((x, i) => ( + + ))} + +) + +export const withStackedCards = (args: any) => ( + + {stackedOptions.map((x, i) => ( + +) + +export const withSmallCards = (args: any) => ( + + {smallOptions.map((x, i) => ( + +) + +export const withCardsAndOptions = (args: any) => + +export const withBeforeAndAfterLabels = (args: any) => + +withOptionsObj.args = { + className: 'font-sans', + descriptionText: 'This is optional description', + disabled: false, + error: '', + label: 'Radio group main label', + labelOptional: 'This is an optional label', + layout: 'vertical', + name: 'radiogroup-example-2', + options: options, +} + +withCards.args = { + className: 'font-sans', + descriptionText: 'This is optional description', + disabled: false, + error: '', + label: 'Radio group main label', + labelOptional: 'This is an optional label', + layout: 'horizontal', + name: 'radiogroup-example-3', + type: 'cards', + align: 'vertical', +} + +withStackedCards.args = { + className: 'font-sans', + descriptionText: 'This is optional description', + disabled: false, + error: '', + label: 'Radio group main label', + labelOptional: 'This is an optional label', + layout: 'horizontal', + name: 'radiogroup-example-3', + type: 'stacked-cards', + align: 'vertical', +} + +withSmallCards.args = { + className: 'font-sans', + descriptionText: 'This is optional description', + disabled: false, + error: '', + label: 'Radio group main label', + labelOptional: 'This is an optional label', + layout: 'vertical', + name: 'radiogroup-example-3', + type: 'small-cards', + align: 'horizontal', +} + +withCardsAndOptions.args = { + className: 'font-sans', + descriptionText: 'This is optional description', + disabled: false, + error: '', + label: 'Radio group main label', + labelOptional: 'This is an optional label', + layout: 'horizontal', + name: 'radiogroup-example-3', + options: options, + type: 'cards', + align: 'vertical', +} + +withBeforeAndAfterLabels.args = { + label: 'Label', + beforeLabel: 'Before : ', + afterLabel: ' : After', + options: [ + { + label: 'Label', + beforeLabel: 'Before : ', + afterLabel: ' : After', + description: 'Description', + }, + ], +} diff --git a/packages/ui/src/components/Radio/Radio.tsx b/packages/ui/src/components/Radio/Radio.tsx new file mode 100644 index 00000000000..86265df382f --- /dev/null +++ b/packages/ui/src/components/Radio/Radio.tsx @@ -0,0 +1,290 @@ +import React, { useEffect, useState, createRef } from 'react' +import { FormLayout } from '../../lib/Layout/FormLayout' +import { RadioContext } from './RadioContext' + +import { useFormContext } from '../Form/FormContext' + +import defaultTheme from '../../lib/theme/defaultTheme' +import styleHandler from '../../lib/theme/styleHandler' + +import randomIdGenerator from './../../utils/randomIdGenerator' + +interface GroupProps { + allowedValues?: any + checkboxes?: any + id?: any + layout?: 'horizontal' | 'vertical' + error?: any + descriptionText?: any + label?: any + afterLabel?: string + beforeLabel?: string + labelOptional?: any + name?: any + type?: 'cards' | 'list' | 'small-cards' | 'large-cards' + transform?: any + value?: any + className?: any + children?: React.ReactNode + options?: Array + onChange?(x: React.ChangeEvent): void + size?: 'tiny' | 'small' | 'medium' | 'large' | 'xlarge' + validation?: (x: any) => void + groupClassName?: string + labelsLayout?: 'horizontal' | 'vertical' +} + +function RadioGroup({ + id, + layout, + error, + descriptionText, + label, + afterLabel, + beforeLabel, + labelOptional, + children, + className, + type = 'list', + options, + value, + name, + onChange, + size = 'medium', + validation, + groupClassName, + labelsLayout = 'vertical', +}: GroupProps) { + const [activeId, setActiveId] = useState('') + + const __styles = styleHandler('radio') + + const { + formContextOnChange, + values, + errors, + // handleBlur, + touched, + fieldLevelValidation, + } = useFormContext() + + if (values && !value) value = values[id || name] + // console.log('errors in. radio group', errors) + // console.log('values in radio group', values) + + if (!error) { + if (errors && !error) error = errors[id || name] + error = touched && touched[id || name] ? error : undefined + } + + useEffect(() => { + if (validation) fieldLevelValidation(id, validation(value)) + }, []) + + useEffect(() => { + setActiveId(value) + }, [value]) + + function parentCallback(e: React.ChangeEvent) { + if (onChange) onChange(e) + // update form + if (formContextOnChange) { + formContextOnChange(e) + } + // run field level validation + if (validation) fieldLevelValidation(id, validation(e.target.value)) + setActiveId(e.target.id) + } + + return ( +
    + +
    + + {options + ? options.map((option: InputProps) => { + return ( + + ) + }) + : children} + +
    +
    +
    + ) +} + +interface InputProps extends Omit, 'size'> { + label: string + afterLabel?: string + beforeLabel?: string + description?: string + size?: 'tiny' | 'small' | 'medium' | 'large' | 'xlarge' + hidden?: boolean + align?: 'vertical' | 'horizontal' + optionalLabel?: 'string' | React.ReactNode + addOnBefore?: React.ReactNode +} + +function Radio({ + id = randomIdGenerator(), + disabled, + value, + label, + afterLabel, + beforeLabel, + description, + name, + checked, + onChange, + onBlur, + hidden = false, + size = 'medium', + align = 'vertical', + optionalLabel, + addOnBefore, +}: InputProps) { + const __styles = styleHandler('radio') + + const inputName = name + + const { handleBlur } = useFormContext() + + function handleBlurEvent(e: React.FocusEvent) { + if (handleBlur) handleBlur(e) + if (onBlur) onBlur(e) + } + + return ( + + {({ parentCallback, type, name, activeId, parentSize }) => { + // if id does not exist, use label + + const markupId = id + + // if name does not exist on Radio then use Context Name from Radio.Group + const markupName = name || inputName + + // console.log('markupName', markupName) + // @ts-ignore + size = parentSize || size + + // check if radio id is via parent component + // then check if radio checked prop is true or false + // if no boolean exists the checkbox will rely on native control + const active = + activeId === markupId ? true : checked ? true : checked === false ? false : undefined + + let classes = [ + __styles.variants[type].container.base, + // __styles.variants[type].container.align[align], + type === 'list' && !hidden && __styles.variants[type].container.size[size], + ] + + classes.push(__styles.variants[type].base) + classes.push(__styles.variants[type].size[size]) + + if (active) { + classes.push(__styles.variants[type].active) + } else { + classes.push(__styles.variants[type].inactive) + } + + if (disabled) { + classes.push(__styles.disabled) + } + + if (type !== 'list') hidden = true + + function onInputChange(e: React.ChangeEvent) { + // '`onChange` callback for parent component + if (parentCallback) { + parentCallback(e) + } + // '`onChange` callback for this component + if (onChange) onChange(e) + } + + return ( + + ) + }} + + ) +} + +Radio.Group = RadioGroup + +export default Radio diff --git a/packages/ui/src/components/Radio/RadioContext.tsx b/packages/ui/src/components/Radio/RadioContext.tsx new file mode 100644 index 00000000000..08bcd309eaf --- /dev/null +++ b/packages/ui/src/components/Radio/RadioContext.tsx @@ -0,0 +1,11 @@ +import { createContext } from 'react' + +// Make sure the shape of the default value passed to +// createContext matches the shape that the consumers expect! +export const RadioContext = createContext({ + parentCallback: (e: any) => {}, + type: '', + name: '', + activeId: '', + parentSize: '', +}) diff --git a/packages/ui/src/components/Radio/index.tsx b/packages/ui/src/components/Radio/index.tsx new file mode 100644 index 00000000000..7089f813ecf --- /dev/null +++ b/packages/ui/src/components/Radio/index.tsx @@ -0,0 +1,3 @@ +import Radio from './Radio' +export default Radio +export { default as Radio } from './Radio' diff --git a/packages/ui/src/components/RadioOld/Radio.css b/packages/ui/src/components/RadioOld/Radio.css new file mode 100644 index 00000000000..e69de29bb2d diff --git a/packages/ui/src/components/RadioOld/Radio.js b/packages/ui/src/components/RadioOld/Radio.js new file mode 100644 index 00000000000..df1a3adeb63 --- /dev/null +++ b/packages/ui/src/components/RadioOld/Radio.js @@ -0,0 +1,26 @@ +import React from 'react' +import PropTypes from 'prop-types' +import './Radio.css' + +const Radio = ({ + className = '', + label = '', + containerClassName = '', + children, + ...props +}) => { + + return ( + + ) +} + +Radio.propTypes = { + label: PropTypes.string, + className: PropTypes.string, +} + +export default Radio diff --git a/packages/ui/src/components/RadioOld/Radio.stories.js b/packages/ui/src/components/RadioOld/Radio.stories.js new file mode 100644 index 00000000000..db71931862c --- /dev/null +++ b/packages/ui/src/components/RadioOld/Radio.stories.js @@ -0,0 +1,26 @@ +import React from 'react' + +import { Radio } from '.' + +export default { + title: 'Archive/Radio', + component: Radio, +} + +export const Default = (args) => ( +
    +
    + +
    +
    + +
    +
    + +
    +
    +) + +Default.args = { + disabled: false, +} diff --git a/packages/ui/src/components/RadioOld/Radio.test.js b/packages/ui/src/components/RadioOld/Radio.test.js new file mode 100644 index 00000000000..7eaa33451b4 --- /dev/null +++ b/packages/ui/src/components/RadioOld/Radio.test.js @@ -0,0 +1,19 @@ +import React from 'react' +import { render, screen } from '@testing-library/react' +import Radio from './Radio' + +describe('#Radio', () => { + it('should render radio correctly', () => { + render( + + ) + expect(screen.queryByTestId('form-radio')).toBeInTheDocument() + }) + + it('should show label', () => { + render( + + ) + expect(screen.queryByText('JavaScript')).toBeInTheDocument() + }) +}) \ No newline at end of file diff --git a/packages/ui/src/components/RadioOld/index.js b/packages/ui/src/components/RadioOld/index.js new file mode 100644 index 00000000000..e200e77534e --- /dev/null +++ b/packages/ui/src/components/RadioOld/index.js @@ -0,0 +1 @@ +export { default as Radio } from './Radio' diff --git a/packages/ui/src/components/Select/Select.module.css b/packages/ui/src/components/Select/Select.module.css new file mode 100644 index 00000000000..3da01903c65 --- /dev/null +++ b/packages/ui/src/components/Select/Select.module.css @@ -0,0 +1,86 @@ +.sbui-select-container { + @apply relative; +} + +.sbui-select { + @apply block w-full bg-white pl-3 pr-10 py-2 text-sm rounded-md shadow-sm transition-all; + + @apply text-input-value-light border border-solid border-input-border-light; + @apply focus:ring-input-border-focus-light focus:border-input-border-focus-light focus:outline-none; + + @apply dark:bg-transparent dark:text-input-value-dark dark:border-input-border-dark; + @apply dark:focus:border-input-border-focus-dark dark:focus:ring-input-border-focus-dark; + -webkit-appearance: none; + -moz-appearance: none; + text-overflow: ''; + /* box-shadow: 0 0 0 2px rgba(255, 255, 255, 0); */ + transition: box-shadow 0.3s ease-in-out; + + /* // temporary fix + // + // temporary fix for supabase apps + // tailwind @base styles adds a dropdown chevron + // using background image as default + // */ + background-image: none; +} + +.sbui-select option { + @apply bg-white text-gray-800; +} + +.sbui-select:focus { + box-shadow: 0 0 0 2px rgba(62, 207, 142, 0.1); +} + +.sbui-select--error { + @apply border-red-500 dark:border-red-500; +} + +.sbui-select--borderless { + @apply border-transparent shadow-none; +} + +/* + Select sizes +*/ + +.sbui-select--tiny { + @apply px-2.5 py-1.5 text-xs; +} +.sbui-select--small { + @apply px-3 py-2 text-sm leading-4; +} +.sbui-select--medium { + @apply px-4 py-2 text-sm; +} +.sbui-select--large { + @apply px-4 py-2 text-base; +} +.sbui-select--xlarge { + @apply px-6 py-3 text-base; +} + +.sbui-select-actions-container { + @apply absolute inset-y-0 right-0 pl-3 pr-1 mr-5 flex items-center; +} + +/* + Select icon +*/ + +.sbui-select--with-icon { + @apply pl-10; +} + +/* + Select Chevron +*/ + +.sbui-select-chevron-container { + @apply absolute inset-y-0 right-0 flex items-center pr-2 pointer-events-none; +} + +.sbui-select-chevron { + @apply h-5 w-5 text-gray-400; +} diff --git a/packages/ui/src/components/Select/Select.stories.tsx b/packages/ui/src/components/Select/Select.stories.tsx new file mode 100644 index 00000000000..b69cad8efd9 --- /dev/null +++ b/packages/ui/src/components/Select/Select.stories.tsx @@ -0,0 +1,183 @@ +import React from 'react' + +import Select from '.' +import { IconBook } from '../../index' + +const { Option, OptGroup } = Select + +export default { + title: 'Data Input/Select', + component: Select, +} + +export const Default = (args: any) => ( + +) + +export const withCheckboxes = (args: any) => + + + + +) + +export const withOptionGroup = (args: any) => ( + +) + +export const withIcon = (args: any) => ( + +) + +export const withOptionLabel = (args: any) => ( + +) + +export const withBeforeAndAfterLabel = (args: any) => ( + +) + +export const withDescription = (args: any) => ( + +) + +export const size = (args: any) => ( + +) + +const data = ['England', 'Wales', 'Scotland', 'Ireland'] +const icon = + +Default.args = { + disabled: false, + label: 'Label', + className: 'font-sans', + layout: 'vertical', + children: [ + <> + + + + , + ], +} + +withOptionGroup.args = { + placeholder: 'Type text here ...', + disabled: false, + label: 'Input with an error message', + className: 'font-sans', + value: 'Value of input', + layout: 'vertical', +} + +withCheckboxes.args = { + disabled: false, + checkboxes: data, + allowedValues: data, + className: 'font-sans', + layout: 'vertical', +} + +ErrorState.args = { + placeholder: 'Type text here ...', + disabled: false, + label: 'Input with an error message', + className: 'font-sans', + value: 'Value of input', + error: 'Your password must be less than 4 characters.', + allowedValues: data, + layout: 'vertical', +} + +withIcon.args = { + placeholder: 'Type text here ...', + disabled: false, + label: 'Input with an Icon', + className: 'font-sans', + value: 'Value of input', + icon: icon, + allowedValues: data, + layout: 'vertical', +} + +withOptionLabel.args = { + placeholder: 'Type text here ...', + disabled: false, + label: 'Input with an error message', + className: 'font-sans', + value: 'Value of input', + labelOptional: 'This is required', + allowedValues: data, + layout: 'vertical', +} + +withBeforeAndAfterLabel.args = { + placeholder: 'Type text here ...', + disabled: false, + label: 'Label', + beforeLabel: 'Before : ', + afterLabel: ' : After', + className: 'font-sans', + value: 'Value of input', + labelOptional: 'This is required', + allowedValues: data, + layout: 'vertical', +} + +withDescription.args = { + placeholder: 'Type text here ...', + disabled: false, + label: 'Input with an error message', + className: 'font-sans', + value: 'Value of input', + descriptionText: 'Make your password short and easy to guess', + allowedValues: data, + layout: 'vertical', +} + +size.args = { + placeholder: 'Type text here ...', + disabled: false, + label: 'Input with a size selected', + value: 'Value of input', + descriptionText: 'Choose a different size and font and padding will change', + allowedValues: data, + layout: 'vertical', + size: 'tiny', +} diff --git a/packages/ui/src/components/Select/Select.test.js b/packages/ui/src/components/Select/Select.test.js new file mode 100644 index 00000000000..2615c4dd687 --- /dev/null +++ b/packages/ui/src/components/Select/Select.test.js @@ -0,0 +1,27 @@ +import React from 'react' +import { render, screen } from '@testing-library/react' +import Select from './Select' + +describe('#Select', () => { + it('should render select correctly', async () => { + render( + + ) + expect(screen.queryByTestId('form-select')).toBeInTheDocument() + }) + + it('should have "form-select--error" class', () => { + render( + + ) + expect(screen.queryByTestId('form-select')).toHaveClass( + 'sbui-select sbui-select--error sbui-select--medium' + ) + }) +}) diff --git a/packages/ui/src/components/Select/Select.tsx b/packages/ui/src/components/Select/Select.tsx new file mode 100644 index 00000000000..d51e9e87c8b --- /dev/null +++ b/packages/ui/src/components/Select/Select.tsx @@ -0,0 +1,184 @@ +import React, { useEffect } from 'react' +import { FormLayout } from '../../lib/Layout/FormLayout' +import InputErrorIcon from '../../lib/Layout/InputErrorIcon' +import InputIconContainer from '../../lib/Layout/InputIconContainer' + +import { useFormContext } from '../Form/FormContext' + +import defaultTheme from '../../lib/theme/defaultTheme' +import styleHandler from '../../lib/theme/styleHandler' + +interface OptionProps { + value: string + children: React.ReactNode + selected?: boolean +} + +interface OptGroupProps { + label: string + children: React.ReactNode +} + +export interface Props extends Omit, 'size'> { + autofocus?: boolean + children: React.ReactNode + descriptionText?: string + error?: string + icon?: any + inputRef?: string + label?: string + afterLabel?: string + beforeLabel?: string + labelOptional?: string + layout?: 'horizontal' | 'vertical' + reveal?: boolean + actions?: React.ReactNode + size?: 'tiny' | 'small' | 'medium' | 'large' | 'xlarge' + borderless?: boolean + validation?: (x: any) => void +} + +export const ColLayout = (props: any) =>
    {props.children}
    + +function Select({ + autoComplete, + autofocus, + children, + className, + descriptionText, + disabled, + error, + icon, + id = '', + inputRef, + label, + afterLabel, + beforeLabel, + labelOptional, + layout, + name = '', + onChange, + onBlur, + placeholder, + required, + value = undefined, + defaultValue = undefined, + style, + size = 'medium', + borderless = false, + validation, + ...props +}: Props) { + const { formContextOnChange, values, errors, handleBlur, touched, fieldLevelValidation } = + useFormContext() + + if (values && !value) value = values[id] + + function handleBlurEvent(e: React.FocusEvent) { + if (handleBlur) handleBlur(e) + if (onBlur) onBlur(e) + } + + if (!error) { + if (errors && !error) error = errors[id || name] + error = touched && touched[id || name] ? error : undefined + } + + function onInputChange(e: React.ChangeEvent) { + if (onChange) onChange(e) + // update form + if (formContextOnChange) formContextOnChange(e) + // run field level validation + if (validation) fieldLevelValidation(id, validation(e.target.value)) + } + + useEffect(() => { + if (validation) fieldLevelValidation(id, validation(value)) + }, []) + + const __styles = styleHandler('select') + + let classesContainer = [__styles.container] + if (className) classesContainer.push(className) + + let classes = [__styles.base] + if (error) classes.push(__styles.variants.error) + if (!error) classes.push(__styles.variants.standard) + if (icon) classes.push(__styles.with_icon) + if (size) classes.push(__styles.size[size]) + if (disabled) classes.push(__styles.disabled) + + return ( + +
    + + {icon && } + {error && ( +
    + {error && } +
    + )} + + + +
    +
    + ) +} + +export function Option({ value, children, selected }: OptionProps) { + return ( + + ) +} + +export function OptGroup({ label, children }: OptGroupProps) { + return {children} +} + +Select.Option = Option +Select.OptGroup = OptGroup + +export default Select diff --git a/packages/ui/src/components/Select/index.tsx b/packages/ui/src/components/Select/index.tsx new file mode 100644 index 00000000000..631a630e25f --- /dev/null +++ b/packages/ui/src/components/Select/index.tsx @@ -0,0 +1,3 @@ +import Select from './Select' +export default Select +export { default as Select } from './Select' diff --git a/packages/ui/src/components/SidePanel/SidePanel.module.css b/packages/ui/src/components/SidePanel/SidePanel.module.css new file mode 100644 index 00000000000..edb7edff6ec --- /dev/null +++ b/packages/ui/src/components/SidePanel/SidePanel.module.css @@ -0,0 +1,124 @@ +/* + Side Panel animations imported first as so placement styles are not affected. +*/ + +/* overlay animation */ +.sbui-sidepanel-overlay--enter { + @apply ease-out duration-200; +} +.sbui-sidepanel-overlay--enterFrom { + @apply opacity-0; +} +.sbui-sidepanel-overlay--enterTo { + @apply opacity-100; +} +.sbui-sidepanel-overlay--leave { + @apply ease-in duration-200; +} +.sbui-sidepanel-overlay--leaveFrom { + @apply opacity-100; +} +.sbui-sidepanel-overlay--leaveTo { + @apply opacity-0; +} + +/* panel animation */ +.sbui-sidepanel--enter { + @apply transform transition ease-in-out duration-200 lg:duration-300; +} +.sbui-sidepanel--enterFrom { + @apply translate-x-full; +} +.sbui-sidepanel--enterFrom--left { + @apply -translate-x-full; +} +.sbui-sidepanel--enterTo { + @apply translate-x-0; +} +.sbui-sidepanel--leave { + @apply transform transition ease-in-out duration-200 lg:duration-300; +} +.sbui-sidepanel--leaveFrom { + @apply translate-x-0; +} +.sbui-sidepanel--leaveTo { + @apply translate-x-full; +} +.sbui-sidepanel--leaveTo--left { + @apply -translate-x-full; +} + +/* .sbui-sidepanel-overlay-container { + @apply fixed inset-0 transition-opacity; +} */ + +/* .sbui-sidepanel-overlay { + @apply absolute inset-0 bg-scale-300 opacity-75; +} */ + +.sbui-sidepanel--left { + @apply left-0 pr-10; +} + +.sbui-sidepanel--right { + @apply right-0 pl-10; +} + +.sbui-sidepanel--medium { + @apply w-screen max-w-md h-full; +} + +.sbui-sidepanel--wide { + @apply w-screen max-w-2xl h-full; +} + +/* .sbui-sidepanel-fixed { + @apply fixed inset-0 overflow-hidden; +} */ + +/* .sbui-sidepanel-absolute { + @apply absolute inset-0 overflow-hidden; +} */ + +/* .sbui-sidepanel-container { + @apply absolute inset-y-0 max-w-full flex h-screen; +} */ + +/* .sbui-sidepanel { + @apply h-full flex flex-col bg-white dark:bg-dark-700 shadow-xl; +} */ + +.sbui-sidepanel-header { + @apply space-y-1 py-6 px-4 bg-gray-50 dark:bg-dark-600 sm:px-6; +} + +.sbui-sidepanel-close-container { + @apply h-7 flex items-center; +} + +.sbui-sidepanel-close-container button, +.dark .sbui-sidepanel-close-container button { + @apply text-gray-300; + @apply hover:text-gray-400; + + /* @apply dark:text-dark-400; */ + /* @apply dark:hover:text-dark-300; */ + + @apply hover:bg-transparent; +} + +/* .sbui-sidepanel-content { + @apply relative flex-1 px-4 sm:px-6; +} */ + +.sbui-sidepanel-footer-container { + @apply p-4 bg-gray-50 dark:bg-dark-600; +} + +.sbui-sidepanel-footer { + @apply flex flex-shrink-0; +} + +.sbui-sidepanel__trigger { + @apply border-none bg-transparent p-0 focus:ring-0; +} diff --git a/packages/ui/src/components/SidePanel/SidePanel.stories.tsx b/packages/ui/src/components/SidePanel/SidePanel.stories.tsx new file mode 100644 index 00000000000..d96178102ce --- /dev/null +++ b/packages/ui/src/components/SidePanel/SidePanel.stories.tsx @@ -0,0 +1,261 @@ +import { action } from '@storybook/addon-actions' +import React, { useState } from 'react' +import { Button, Space, Typography } from '../../index' + +import { SidePanel } from './index' + +export default { + title: 'Overlays/SidePanel', + component: SidePanel, +} + +const content = ( + + SidePanel content is inserted here, if you need to insert anything into the + SidePanel you can do so via + children + +) + +export const Default = (args: any) => ( + <> + +

    This is the title

    +

    This is the title

    + + } + > + {content} +
    + +) + +export const withWideLayout = (args: any) => ( + <> + {content} + +) + +export const leftAlignedFooter = (args: any) => ( + <> + {content} + +) + +export const leftAligned = (args: any) => ( + <> + {content} + +) + +export const hideFooter = (args: any) => ( + <> + {content} + +) + +export const customFooter = (args: any) => ( + <> + {content} + +) + +export const triggerElement = (args: any) => ( + <> + + + This was opened with a trigger element + + + +) + +export const nestedSidepanels = (args: any) => { + const [panel1Visible, setPanel1Visible] = useState(false) + const [panel2Visible, setPanel2Visible] = useState(false) + + return ( + <> +
    +
    +

    + Shall we nest some components? +

    +

    yea sure, go on then.

    +
    + +
    + setPanel1Visible(false)} + onConfirm={() => setPanel1Visible(false)} + > +
    +

    + This Sidepanel was opened with a trigger element +

    + +

    + You can open a nested panel by clicking the button below +

    + + +
    + setPanel2Visible(false)} + onConfirm={() => setPanel2Visible(false)} + > + + +
    + + ) +} + +export const longContent = (args: any) => ( + <> + +

    This is a paragraph

    +

    This is a paragraph

    +

    This is a paragraph

    +

    This is a paragraph

    +

    This is a paragraph

    +

    This is a paragraph

    +

    This is a paragraph

    +

    This is a paragraph

    +

    This is a paragraph

    +

    This is a paragraph

    +

    This is a paragraph

    +

    This is a paragraph

    +

    This is a paragraph

    +

    This is a paragraph

    +

    This is a paragraph

    +

    This is a paragraph

    +

    This is a paragraph

    +

    This is a paragraph

    +

    This is a paragraph

    +

    This is a paragraph

    +

    This is a paragraph

    +

    This is a paragraph

    +

    This is a paragraph

    +

    This is a paragraph

    +

    This is a paragraph

    +

    This is a paragraph

    +

    This is a paragraph

    +

    This is a paragraph

    +

    This is a paragraph

    +

    This is a paragraph

    +

    This is a paragraph

    +

    This is a paragraph

    +

    This is a paragraph

    +

    This is a paragraph

    +

    This is a paragraph

    +

    This is a paragraph

    +

    This is a paragraph

    +

    This is a paragraph

    +

    This is a paragraph

    +

    This is a paragraph

    +

    This is a paragraph

    +

    This is a paragraph

    +

    This is a paragraph

    +

    This is a paragraph

    +

    This is a paragraph

    +
    + +) + +Default.args = { + visible: true, + onCancel: action('onCancel'), + onConfirm: action('onConfirm'), + title: 'This is the title of the SidePanel', + description: 'And i am the description', +} + +withWideLayout.args = { + visible: true, + size: 'large', + onCancel: action('onCancel'), + onConfirm: action('onConfirm'), + title: 'This is the title of the SidePanel', + description: 'And i am the description', +} + +leftAlignedFooter.args = { + visible: true, + alignFooter: 'left', + onCancel: action('onCancel'), + onConfirm: action('onConfirm'), + title: 'This is the title of the SidePanel', + description: 'And i am the description', +} + +leftAligned.args = { + visible: true, + align: 'left', + onCancel: action('onCancel'), + onConfirm: action('onConfirm'), + title: 'This is the title of the SidePanel', + description: 'And i am the description', +} + +hideFooter.args = { + visible: true, + hideFooter: true, + onCancel: action('onCancel'), + onConfirm: action('onConfirm'), + title: 'This is the title of the SidePanel', + description: 'And i am the description', +} + +customFooter.args = { + visible: true, + onCancel: action('onCancel'), + onConfirm: action('onConfirm'), + title: 'This is the title of the SidePanel', + description: 'And i am the description', + customFooter: [ + + + + , + ], +} + +triggerElement.args = { + visible: true, + onCancel: action('onCancel'), + onConfirm: action('onConfirm'), + title: 'This is the title of the SidePanel', + description: 'And i am the description', + triggerElement: , +} + +longContent.args = { + visible: true, + header: 'Long content', +} diff --git a/packages/ui/src/components/SidePanel/SidePanel.tsx b/packages/ui/src/components/SidePanel/SidePanel.tsx new file mode 100644 index 00000000000..6b54d4aeacc --- /dev/null +++ b/packages/ui/src/components/SidePanel/SidePanel.tsx @@ -0,0 +1,132 @@ +import React from 'react' +import { Button } from '../../../index' +import * as Dialog from '@radix-ui/react-dialog' +import styleHandler from '../../lib/theme/styleHandler' + +export type SidePanelProps = RadixProps & CustomProps + +interface RadixProps + extends Dialog.DialogProps, + Pick< + Dialog.DialogContentProps, + | 'onOpenAutoFocus' + | 'onCloseAutoFocus' + | 'onEscapeKeyDown' + | 'onPointerDownOutside' + | 'onInteractOutside' + > {} + +interface CustomProps { + id?: String | undefined + className?: String + children?: React.ReactNode + header?: string | React.ReactNode + visible: boolean + size?: 'medium' | 'large' + loading?: boolean + align?: 'right' | 'left' + hideFooter?: boolean + customFooter?: React.ReactNode + onCancel?: () => void + cancelText?: String + onConfirm?: () => void + confirmText?: String + triggerElement?: React.ReactNode +} + +const SidePanel = ({ + id, + className, + children, + header, + visible, + open, + size = 'medium', + loading, + align = 'right', + hideFooter = false, + customFooter = undefined, + onConfirm, + onCancel, + confirmText = 'Confirm', + cancelText = 'Cancel', + triggerElement, + defaultOpen, + ...props +}: SidePanelProps) => { + const __styles = styleHandler('sidepanel') + + // function stopPropagation(e: React.MouseEvent) { + // e.stopPropagation() + // } + + const footerContent = customFooter ? ( + customFooter + ) : ( +
    + + +
    + ) + + function handleOpenChange(open: boolean) { + if (visible !== undefined && !open) { + // controlled component behaviour + if (onCancel) onCancel() + } else { + // un-controlled component behaviour + // setOpen(open) + } + } + + open = open || visible + + return ( + + {triggerElement && ( + {triggerElement} + )} + + + + + {header &&
    {header}
    } +
    {children}
    + {!hideFooter && footerContent} +
    +
    +
    + ) +} + +export function Seperator() { + let __styles = styleHandler('sidepanel') + + return
    +} + +export function Content({ children }: { children: React.ReactNode }) { + let __styles = styleHandler('sidepanel') + + return
    {children}
    +} + +SidePanel.Content = Content +SidePanel.Seperator = Seperator +export default SidePanel diff --git a/packages/ui/src/components/SidePanel/index.tsx b/packages/ui/src/components/SidePanel/index.tsx new file mode 100644 index 00000000000..6dc75ef8cd9 --- /dev/null +++ b/packages/ui/src/components/SidePanel/index.tsx @@ -0,0 +1 @@ +export { default as SidePanel } from './SidePanel' diff --git a/packages/ui/src/components/Space/Space.module.css b/packages/ui/src/components/Space/Space.module.css new file mode 100644 index 00000000000..8c34e324523 --- /dev/null +++ b/packages/ui/src/components/Space/Space.module.css @@ -0,0 +1,397 @@ +.sbui-space { + /* @apply flex; */ +} + +.sbui-space-row { + /* @apply flex flex-row items-center; */ +} + +.sbui-space-col { + /* @apply flex flex-col; */ +} + +.sbui-space-y-0 { + /* @apply space-y-0; */ +} +.sbui-space-y-0.5 { + /* @apply space-y-0.5; */ +} +.sbui-space-y-1 { + /* @apply space-y-1; */ +} +.sbui-space-y-1.5 { + /* @apply space-y-1.5; */ +} +.sbui-space-y-2 { + /* @apply space-y-2; */ +} +.sbui-space-y-2.5 { + /* @apply space-y-2.5; */ +} +.sbui-space-y-3 { + /* @apply space-y-3; */ +} +.sbui-space-y-3.5 { + /* @apply space-y-3.5; */ +} +.sbui-space-y-4 { + /* @apply space-y-4; */ +} +.sbui-space-y-5 { + /* @apply space-y-5; */ +} +.sbui-space-y-6 { + /* @apply space-y-6; */ +} +.sbui-space-y-7 { + /* @apply space-y-7; */ +} +.sbui-space-y-8 { + /* @apply space-y-8; */ +} +.sbui-space-y-9 { + /* @apply space-y-9; */ +} +.sbui-space-y-10 { + /* @apply space-y-10; */ +} +.sbui-space-y-11 { + /* @apply space-y-11; */ +} +.sbui-space-y-12 { + /* @apply space-y-12; */ +} +.sbui-space-y-14 { + /* @apply space-y-14; */ +} +.sbui-space-y-16 { + /* @apply space-y-16; */ +} +.sbui-space-y-20 { + /* @apply space-y-20; */ +} +.sbui-space-y-24 { + /* @apply space-y-24; */ +} +.sbui-space-y-28 { + /* @apply space-y-28; */ +} +.sbui-space-y-32 { + /* @apply space-y-32; */ +} +.sbui-space-y-36 { + /* @apply space-y-36; */ +} +.sbui-space-y-40 { + /* @apply space-y-40; */ +} +.sbui-space-y-44 { + /* @apply space-y-44; */ +} +.sbui-space-y-48 { + /* @apply space-y-48; */ +} +.sbui-space-y-52 { + /* @apply space-y-52; */ +} +.sbui-space-y-56 { + /* @apply space-y-56; */ +} +.sbui-space-y-60 { + /* @apply space-y-60; */ +} +.sbui-space-y-64 { + /* @apply space-y-64; */ +} +.sbui-space-y-72 { + /* @apply space-y-72; */ +} +.sbui-space-y-80 { + /* @apply space-y-80; */ +} +.sbui-space-y-96 { + /* @apply space-y-96; */ +} +.sbui-space-y-px { + /* @apply space-y-px; */ +} +.sbui-space-x-0 { + /* @apply space-x-0; */ +} +.sbui-space-x-1 { + /* @apply space-x-1; */ +} +.sbui-space-x-2 { + /* @apply space-x-2; */ +} +.sbui-space-x-3 { + /* @apply space-x-3; */ +} +.sbui-space-x-4 { + /* @apply space-x-4; */ +} +.sbui-space-x-5 { + /* @apply space-x-5; */ +} +.sbui-space-x-6 { + /* @apply space-x-6; */ +} +.sbui-space-x-7 { + /* @apply space-x-7; */ +} +.sbui-space-x-8 { + /* @apply space-x-8; */ +} +.sbui-space-x-9 { + /* @apply space-x-9; */ +} +.sbui-space-x-10 { + /* @apply space-x-10; */ +} +.sbui-space-x-11 { + /* @apply space-x-11; */ +} +.sbui-space-x-12 { + /* @apply space-x-12; */ +} +.sbui-space-x-14 { + /* @apply space-x-14; */ +} +.sbui-space-x-16 { + /* @apply space-x-16; */ +} +.sbui-space-x-20 { + /* @apply space-x-20; */ +} +.sbui-space-x-24 { + /* @apply space-x-24; */ +} +.sbui-space-x-28 { + /* @apply space-x-28; */ +} +.sbui-space-x-32 { + /* @apply space-x-32; */ +} +.sbui-space-x-36 { + /* @apply space-x-36; */ +} +.sbui-space-x-40 { + /* @apply space-x-40; */ +} +.sbui-space-x-44 { + /* @apply space-x-44; */ +} +.sbui-space-x-48 { + /* @apply space-x-48; */ +} +.sbui-space-x-52 { + /* @apply space-x-52; */ +} +.sbui-space-x-56 { + /* @apply space-x-56; */ +} +.sbui-space-x-60 { + /* @apply space-x-60; */ +} +.sbui-space-x-64 { + /* @apply space-x-64; */ +} +.sbui-space-x-72 { + /* @apply space-x-72; */ +} +.sbui-space-x-80 { + /* @apply space-x-80; */ +} +.sbui-space-x-96 { + /* @apply space-x-96; */ +} +.sbui-space-x-px { + /* @apply space-x-px; */ +} +.sbui-minus-space-y-0 { + /* @apply -space-y-0; */ +} +.sbui-minus-space-y-1 { + /* @apply -space-y-1; */ +} +.sbui-minus-space-y-2 { + /* @apply -space-y-2; */ +} +.sbui-minus-space-y-3 { + /* @apply -space-y-3; */ +} +.sbui-minus-space-y-4 { + /* @apply -space-y-4; */ +} +.sbui-minus-space-y-5 { + /* @apply -space-y-5; */ +} +.sbui-minus-space-y-6 { + /* @apply -space-y-6; */ +} +.sbui-minus-space-y-7 { + /* @apply -space-y-7; */ +} +.sbui-minus-space-y-8 { + /* @apply -space-y-8; */ +} +.sbui-minus-space-y-9 { + /* @apply -space-y-9; */ +} +.sbui-minus-space-y-10 { + /* @apply -space-y-10; */ +} +.sbui-minus-space-y-11 { + /* @apply -space-y-11; */ +} +.sbui-minus-space-y-12 { + /* @apply -space-y-12; */ +} +.sbui-minus-space-y-14 { + /* @apply -space-y-14; */ +} +.sbui-minus-space-y-16 { + /* @apply -space-y-16; */ +} +.sbui-minus-space-y-20 { + /* @apply -space-y-20; */ +} +.sbui-minus-space-y-24 { + /* @apply -space-y-24; */ +} +.sbui-minus-space-y-28 { + /* @apply -space-y-28; */ +} +.sbui-minus-space-y-32 { + /* @apply -space-y-32; */ +} +.sbui-minus-space-y-36 { + /* @apply -space-y-36; */ +} +.sbui-minus-space-y-40 { + /* @apply -space-y-40; */ +} +.sbui-minus-space-y-44 { + /* @apply -space-y-44; */ +} +.sbui-minus-space-y-48 { + /* @apply -space-y-48; */ +} +.sbui-minus-space-y-52 { + /* @apply -space-y-52; */ +} +.sbui-minus-space-y-56 { + /* @apply -space-y-56; */ +} +.sbui-minus-space-y-60 { + /* @apply -space-y-60; */ +} +.sbui-minus-space-y-64 { + /* @apply -space-y-64; */ +} +.sbui-minus-space-y-72 { + /* @apply -space-y-72; */ +} +.sbui-minus-space-y-80 { + /* @apply -space-y-80; */ +} +.sbui-minus-space-y-96 { + /* @apply -space-y-96; */ +} +.sbui-minus-space-y-px { + /* @apply -space-y-px; */ +} + +.sbui-minus-space-x-0 { + /* @apply -space-x-0; */ +} +.sbui-minus-space-x-1 { + /* @apply -space-x-1; */ +} +.sbui-minus-space-x-2 { + /* @apply -space-x-2; */ +} +.sbui-minus-space-x-3 { + /* @apply -space-x-3; */ +} +.sbui-minus-space-x-4 { + /* @apply -space-x-4; */ +} +.sbui-minus-space-x-5 { + /* @apply -space-x-5; */ +} +.sbui-minus-space-x-6 { + /* @apply -space-x-6; */ +} +.sbui-minus-space-x-7 { + /* @apply -space-x-7; */ +} +.sbui-minus-space-x-8 { + /* @apply -space-x-8; */ +} +.sbui-minus-space-x-9 { + /* @apply -space-x-9; */ +} +.sbui-minus-space-x-10 { + /* @apply -space-x-10; */ +} +.sbui-minus-space-x-11 { + /* @apply -space-x-11; */ +} +.sbui-minus-space-x-12 { + /* @apply -space-x-12; */ +} +.sbui-minus-space-x-14 { + /* @apply -space-x-14; */ +} +.sbui-minus-space-x-16 { + /* @apply -space-x-16; */ +} +.sbui-minus-space-x-20 { + /* @apply -space-x-20; */ +} +.sbui-minus-space-x-24 { + /* @apply -space-x-24; */ +} +.sbui-minus-space-x-28 { + /* @apply -space-x-28; */ +} +.sbui-minus-space-x-32 { + /* @apply -space-x-32; */ +} +.sbui-minus-space-x-36 { + /* @apply -space-x-36; */ +} +.sbui-minus-space-x-40 { + /* @apply -space-x-40; */ +} +.sbui-minus-space-x-44 { + /* @apply -space-x-44; */ +} +.sbui-minus-space-x-48 { + /* @apply -space-x-48; */ +} +.sbui-minus-space-x-52 { + /* @apply -space-x-52; */ +} +.sbui-minus-space-x-56 { + /* @apply -space-x-56; */ +} +.sbui-minus-space-x-60 { + /* @apply -space-x-60; */ +} +.sbui-minus-space-x-64 { + /* @apply -space-x-64; */ +} +.sbui-minus-space-x-72 { + /* @apply -space-x-72; */ +} +.sbui-minus-space-x-80 { + /* @apply -space-x-80; */ +} +.sbui-minus-space-x-96 { + /* @apply -space-x-96; */ +} +/* .sbui-minus-space-x-px { + /* @apply -space-x-; */ +} */ diff --git a/packages/ui/src/components/Space/Space.tsx b/packages/ui/src/components/Space/Space.tsx new file mode 100644 index 00000000000..c5c75cefa1b --- /dev/null +++ b/packages/ui/src/components/Space/Space.tsx @@ -0,0 +1,43 @@ +import React from 'react' +// @ts-ignore +// import SpaceStyles from './Space.module.css' + +function Space({ + direction, + size = 2, + className, + block, + style, + minus, + children, +}: any) { + // const classes = [] + // classes.push(direction === 'vertical' ? 'sbui-space-col' : 'sbui-space-row') + // classes.push( + // SpaceStyles[ + // 'sbui-' + + // (minus ? 'minus-' : '') + + // 'space-' + + // (direction === 'vertical' ? 'y' : 'x') + + // '-' + + // size + // ] + // ) + // if (block) { + // classes.push(SpaceStyles['sbui-space--block']) + // } + // if (className) { + // classes.push(className) + // } + + return ( +
    + {children} +
    + ) +} + +export default Space diff --git a/packages/ui/src/components/Space/index.tsx b/packages/ui/src/components/Space/index.tsx new file mode 100644 index 00000000000..9813d7e8b65 --- /dev/null +++ b/packages/ui/src/components/Space/index.tsx @@ -0,0 +1 @@ +export { default as Space } from './Space' diff --git a/packages/ui/src/components/Tabs/Tabs.module.css b/packages/ui/src/components/Tabs/Tabs.module.css new file mode 100644 index 00000000000..9769765d554 --- /dev/null +++ b/packages/ui/src/components/Tabs/Tabs.module.css @@ -0,0 +1,43 @@ +/* .sbui-tab-button-underline { + @apply rounded-none; +.sbui-tab-button-underline { + @apply rounded-none border-none; + @apply hover:text-gray-600 hover:bg-transparent; + @apply dark:hover:text-white dark:hover:bg-transparent; + border-bottom-style: solid; + border-bottom-width: 2px; + margin-bottom: -1px; + padding-left: 0; + padding-right: 0; +} + +.sbui-tab-button-underline--active { + @apply border-brand-700; + @apply rounded-none; + @apply text-gray-600; + @apply dark:text-white; + border-bottom-style: solid; + border-bottom-width: 2px; +} + +.sbui-tab-bar--scrollable { + overflow: auto; + white-space: nowrap; + -ms-overflow-style: none; /* IE and Edge */ + scrollbar-width: none; /* Firefox */ +} + +/* Hide scrollbar for Chrome, Safari and Opera */ +.sbui-tab-bar--scrollable::-webkit-scrollbar { + display: none; +} + +.sbui-tab-bar-inner-container { + flex-grow: 1; +} + +/* base */ +.sbui-tab-bar-container { + justify-content: space-between; + width: 100%; +} */ diff --git a/packages/ui/src/components/Tabs/Tabs.stories.tsx b/packages/ui/src/components/Tabs/Tabs.stories.tsx new file mode 100644 index 00000000000..17ed4f3c317 --- /dev/null +++ b/packages/ui/src/components/Tabs/Tabs.stories.tsx @@ -0,0 +1,165 @@ +import React from 'react' +import { Button } from '../Button' +import { IconMail } from '../../index' +import Typography from '../Typography' + +import { Tabs } from './' + +export default { + title: 'Displays/Tabs', + component: Tabs, +} + +export const Default = (args: any) => ( + + + Content for the first panel + + + Content for the second panel + + + Content for the third panel + + +) + +export const Underlined = (args: any) => ( + + + Content for the first panel + + + Content for the second panel + + + Content for the third panel + + +) + +export const WithIcons = (args: any) => ( + + }> + Content for the first panel + + }> + Content for the second panel + + }> + Content for the third panel + + +) + +export const LargeButtons = (args: any) => ( + + + Content for the first panel + + + Content for the second panel + + + Content for the third panel + + +) + +export const BlockTabs = (args: any) => ( + + + Content for the first panel + + + Content for the second panel + + + Content for the third panel + + +) + +const limit = 30 +let infitniteSroll: JSX.Element[] = [] + +for (var i = 0; i < limit; i++) { + infitniteSroll.push( + + Content for the panel {i} + + ) +} + +export const Scroll = (args: any) => ( + + {infitniteSroll} + +) + +export const addOnBefore = (args: any) => ( + + + Content for the first panel + + + Content for the second panel + + + Content for the third panel + + +) + +export const addOnAfter = (args: any) => ( + + + Content for the first panel + + + Content for the second panel + + + Content for the third panel + + +) + +export const OneTab = () => ( + + + Content for the first panel + + +) + +Default.args = {} +Underlined.args = { + type: 'underlined', +} +WithIcons.args = { + type: 'underlined', +} +LargeButtons.args = { + type: 'underlined', + size: 'large', +} +BlockTabs.args = { + type: 'underlined', + block: true, +} +Scroll.args = { + type: 'underlined', + block: true, + scrollable: true, +} +addOnBefore.args = { + type: 'underlined', + size: 'large', + addOnBefore: , +} +addOnAfter.args = { + type: 'underlined', + size: 'large', + addOnAfter: , +} diff --git a/packages/ui/src/components/Tabs/Tabs.tsx b/packages/ui/src/components/Tabs/Tabs.tsx new file mode 100644 index 00000000000..b9625bc84c6 --- /dev/null +++ b/packages/ui/src/components/Tabs/Tabs.tsx @@ -0,0 +1,152 @@ +import React, { useState } from 'react' +import { TabsContext } from './TabsContext' + +import * as TabsPrimitive from '@radix-ui/react-tabs' + +// @ts-ignore +// import TabsStyles from './Tabs.module.css' + +import styleHandler from '../../lib/theme/styleHandler' + +interface TabsProps { + type?: 'pills' | 'underlined' | 'cards' + children: any + defaultActiveId?: string + activeId?: string + size?: 'tiny' | 'small' | 'medium' | 'large' | 'xlarge' + block?: boolean + tabBarGutter?: number + tabBarStyle?: React.CSSProperties + onChange?: any + onClick?: any + scrollable?: boolean + addOnBefore?: React.ReactNode + addOnAfter?: React.ReactNode + listClassNames?: string +} + +function Tabs({ + children, + defaultActiveId, + activeId, + type = 'pills', + size = 'tiny', + block, + onChange, + onClick, + scrollable, + addOnBefore, + addOnAfter, + listClassNames, +}: TabsProps) { + const [activeTab, setActiveTab] = useState( + defaultActiveId + ? defaultActiveId + : // if no defaultActiveId is set use the first panel + children && children[0].props + ? children[0].props.id + : '' + ) + + let __styles = styleHandler('tabs') + + // activeId state can be overriden externally with `active` + // defaults to use activeTab + const active = activeId ? activeId : activeTab + + function onTabClick(id: string) { + const newTabSelected = id !== active + setActiveTab(id) + if (onClick) onClick(id) + if (onChange && newTabSelected) onChange(id) + } + + // for styling the tabs for underline style + const underlined = type === 'underlined' + // for styling the tabs for cards style + + const listClasses = [__styles[type].list] + if (scrollable) listClasses.push(__styles.scrollable) + if (listClassNames) listClasses.push(listClassNames) + + // if only 1 react child, it needs to be converted to a list/array + // this is so 1 tab can be displayed + if (children && !Array.isArray(children)) { + children = [children] + } + + return ( + + + {addOnBefore} + {children.map((tab: any) => { + const activeMatch = active === tab.props.id + + const triggerClasses = [__styles[type].base, __styles.size[size]] + if (activeMatch) { + triggerClasses.push(__styles[type].active) + } else { + triggerClasses.push(__styles[type].inactive) + } + if (block) { + triggerClasses.push(__styles.block) + } + + return ( + { + if (e.keyCode === 13) { + e.preventDefault() + onTabClick(tab.props.id) + } + }} + onClick={() => onTabClick(tab.props.id)} + key={`${tab.props.id}-tab-button`} + value={tab.props.id} + className={triggerClasses.join(' ')} + > + {tab.props.icon} + {tab.props.label} + + ) + })} + {/* */} + {addOnAfter} + + + {children} + + + ) +} + +interface PanelProps { + children?: React.ReactNode + id: string + label?: string + icon?: React.ReactNode +} + +export function Panel({ children, id }: PanelProps) { + let __styles = styleHandler('tabs') + + return ( + + {({ activeId }) => { + const active = activeId === id + return ( + + {children} + + ) + }} + + ) +} + +Tabs.Panel = Panel +export default Tabs diff --git a/packages/ui/src/components/Tabs/TabsContext.tsx b/packages/ui/src/components/Tabs/TabsContext.tsx new file mode 100644 index 00000000000..b4a3471f16b --- /dev/null +++ b/packages/ui/src/components/Tabs/TabsContext.tsx @@ -0,0 +1,7 @@ +import { createContext } from 'react' + +// Make sure the shape of the default value passed to +// createContext matches the shape that the consumers expect! +export const TabsContext = createContext({ + activeId: '', +}) diff --git a/packages/ui/src/components/Tabs/index.tsx b/packages/ui/src/components/Tabs/index.tsx new file mode 100644 index 00000000000..91e13405f93 --- /dev/null +++ b/packages/ui/src/components/Tabs/index.tsx @@ -0,0 +1 @@ +export { default as Tabs } from './Tabs' diff --git a/packages/ui/src/components/Textarea/Textarea.css b/packages/ui/src/components/Textarea/Textarea.css new file mode 100644 index 00000000000..22080ce9ee4 --- /dev/null +++ b/packages/ui/src/components/Textarea/Textarea.css @@ -0,0 +1,11 @@ +.form-textarea:disabled { + @apply bg-gray-100 cursor-not-allowed; +} + +.form-textarea--error { + @apply border-red-500; +} + +.form-textarea--borderless { + @apply border-none; +} diff --git a/packages/ui/src/components/Textarea/Textarea.js b/packages/ui/src/components/Textarea/Textarea.js new file mode 100644 index 00000000000..3d1aa7e35b6 --- /dev/null +++ b/packages/ui/src/components/Textarea/Textarea.js @@ -0,0 +1,38 @@ +import React from 'react' +import PropTypes from 'prop-types' +import './Textarea.css' + +const Textarea = ({ + className = '', + isError = false, + rows = 3, + children, + borderless = false, + ...props +}) => { + const classes = [] + + if (isError) { + classes.push('form-textarea--error') + } + + if (borderless) { + classes.push('form-textarea--borderless') + } + + return ( +