├── .env.local.example ├── .eslintrc.json ├── .github └── workflows │ ├── coana-analysis.yml │ └── coana-guardrail.yml ├── .gitignore ├── .prettierrc ├── CODE_OF_CONDUCT.md ├── LICENSE ├── README.md ├── next.config.js ├── package.json ├── src ├── app │ ├── back-link.tsx │ ├── favicon.ico │ ├── globals.css │ ├── layout.tsx │ ├── page.tsx │ ├── using-hosted-authkit │ │ ├── README.md │ │ ├── basic │ │ │ ├── callback │ │ │ │ └── route.ts │ │ │ └── page.tsx │ │ ├── page.tsx │ │ ├── with-nextjs │ │ │ ├── callback │ │ │ │ └── route.ts │ │ │ └── page.tsx │ │ └── with-session │ │ │ ├── auth.ts │ │ │ ├── callback │ │ │ └── route.ts │ │ │ └── page.tsx │ └── using-your-own-ui │ │ ├── README.md │ │ ├── mfa │ │ ├── mfa.ts │ │ └── page.tsx │ │ ├── page.tsx │ │ ├── reset-password │ │ ├── page.tsx │ │ └── reset-password.ts │ │ ├── sign-in │ │ ├── email-password │ │ │ ├── email-password.ts │ │ │ └── page.tsx │ │ ├── github-oauth │ │ │ ├── callback │ │ │ │ └── route.ts │ │ │ └── page.tsx │ │ ├── google-oauth │ │ │ ├── callback │ │ │ │ └── route.ts │ │ │ └── page.tsx │ │ ├── magic-auth │ │ │ ├── magic-auth.ts │ │ │ └── page.tsx │ │ ├── microsoft-oauth │ │ │ ├── callback │ │ │ │ └── route.ts │ │ │ └── page.tsx │ │ └── sso │ │ │ ├── callback │ │ │ └── route.ts │ │ │ └── page.tsx │ │ ├── sign-up │ │ ├── email-password │ │ │ ├── email-password.ts │ │ │ └── page.tsx │ │ └── magic-auth │ │ │ ├── magic-auth.ts │ │ │ └── page.tsx │ │ ├── update-user │ │ ├── page.tsx │ │ └── update-user.ts │ │ ├── users-table │ │ ├── loading.tsx │ │ ├── page.tsx │ │ └── users-table.ts │ │ └── verify-email │ │ ├── page.tsx │ │ └── verify-email.ts └── middleware.ts ├── tsconfig.json └── yarn.lock /.env.local.example: -------------------------------------------------------------------------------- 1 | # Retrieved from the WorkOS dashboard 2 | WORKOS_CLIENT_ID= 3 | WORKOS_API_KEY= 4 | 5 | # Needed for authkit-nextjs library example, defined in WorkOS dashboard 6 | WORKOS_REDIRECT_URI= 7 | 8 | # Needed for authkit-nextjs library example. Must be at least 32 characters long 9 | WORKOS_COOKIE_PASSWORD= 10 | 11 | # Only needed for the Single Sign-On example 12 | SSO_ENABLED_ORGANIZATION_ID= 13 | 14 | -------------------------------------------------------------------------------- /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "next/core-web-vitals" 3 | } 4 | -------------------------------------------------------------------------------- /.github/workflows/coana-analysis.yml: -------------------------------------------------------------------------------- 1 | name: Coana Vulnerability Analysis 2 | 3 | on: 4 | schedule: 5 | - cron: "0 3 * * *" # every day at 3 AM 6 | workflow_dispatch: 7 | inputs: 8 | tags: 9 | description: "Manually run vulnerability analysis" 10 | # Required by the return-dispatch action 11 | distinct_id: 12 | 13 | jobs: 14 | coana-vulnerability-analysis: 15 | runs-on: ubuntu-latest 16 | 17 | steps: 18 | - name: Checkout code 19 | uses: actions/checkout@v4 20 | 21 | - name: Run Coana CLI 22 | id: coana-cli 23 | uses: docker://coana/coana:latest@sha256:74144ed0fc9d7da87dcd45ccd12458cc7c25ad23e47eebd7ceb4860ed396d63e 24 | with: 25 | args: | 26 | coana run . \ 27 | --api-key ${{ secrets.COANA_API_KEY }} \ 28 | --repo-url https://github.com/${{github.repository}} 29 | -------------------------------------------------------------------------------- /.github/workflows/coana-guardrail.yml: -------------------------------------------------------------------------------- 1 | name: Coana Guardrail 2 | 3 | on: pull_request 4 | 5 | jobs: 6 | guardrail: 7 | runs-on: ubuntu-latest 8 | 9 | steps: 10 | - name: Checkout the ${{github.base_ref}} branch 11 | uses: actions/checkout@v4 12 | with: 13 | ref: ${{github.base_ref}} # checkout the base branch (usually master/main). 14 | 15 | - name: Fetch the PR branch 16 | run: | 17 | git fetch ${{ github.event.pull_request.head.repo.clone_url }} ${{ github.head_ref }}:${{ github.head_ref }} --depth=1 18 | 19 | - name: Get list of changed files relative to the main/master branch 20 | id: changed-files 21 | run: | 22 | echo "all_changed_files=$(git diff --name-only ${{ github.base_ref }} ${{ github.head_ref }} | tr '\n' ' ')" >> $GITHUB_OUTPUT 23 | 24 | - name: Use Node.js 20.x 25 | uses: actions/setup-node@v4 26 | with: 27 | node-version: 20.x 28 | 29 | - name: Run Coana on the ${{github.base_ref}} branch 30 | run: | 31 | npx @coana-tech/cli run . \ 32 | --guardrail-mode \ 33 | --api-key ${{ secrets.COANA_API_KEY || 'api-key-unavailable' }} \ 34 | -o /tmp/main-branch \ 35 | --changed-files ${{ steps.changed-files.outputs.all_changed_files }} \ 36 | --lightweight-reachability \ 37 | 38 | # Reset file permissions. 39 | # This is necessary because the Coana CLI may add 40 | # new files with root ownership since it's using docker. 41 | # These files will not be deleted by the clean step in checkout 42 | # if the permissions are not reset. 43 | - name: Reset file permissions 44 | run: sudo chown -R $USER:$USER . 45 | 46 | - name: Checkout the current branch 47 | uses: actions/checkout@v4 48 | with: 49 | clean: true 50 | 51 | - name: Run Coana on the current branch 52 | run: | 53 | npx @coana-tech/cli run . \ 54 | --guardrail-mode \ 55 | --api-key ${{ secrets.COANA_API_KEY || 'api-key-unavailable' }} \ 56 | -o /tmp/current-branch \ 57 | --changed-files ${{ steps.changed-files.outputs.all_changed_files }} \ 58 | --lightweight-reachability \ 59 | 60 | - name: Run Report Comparison 61 | run: | 62 | npx @coana-tech/cli compare-reports \ 63 | --api-key ${{ secrets.COANA_API_KEY || 'api-key-unavailable' }} \ 64 | /tmp/main-branch/coana-report.json \ 65 | /tmp/current-branch/coana-report.json 66 | env: 67 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 68 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | .yarn/install-state.gz 8 | 9 | # testing 10 | /coverage 11 | 12 | # next.js 13 | /.next/ 14 | /out/ 15 | 16 | # production 17 | /build 18 | 19 | # misc 20 | .DS_Store 21 | *.pem 22 | 23 | # debug 24 | npm-debug.log* 25 | yarn-debug.log* 26 | yarn-error.log* 27 | 28 | # local env files 29 | .env*.local 30 | 31 | # vercel 32 | .vercel 33 | 34 | # typescript 35 | *.tsbuildinfo 36 | next-env.d.ts 37 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "printWidth": 100, 3 | "singleQuote": true 4 | } 5 | -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Contributor Covenant Code of Conduct 2 | 3 | ## Our Pledge 4 | 5 | We as members, contributors, and leaders pledge to make participation in our 6 | community a harassment-free experience for everyone, regardless of age, body 7 | size, visible or invisible disability, ethnicity, sex characteristics, gender 8 | identity and expression, level of experience, education, socio-economic status, 9 | nationality, personal appearance, race, religion, or sexual identity 10 | and orientation. 11 | 12 | We pledge to act and interact in ways that contribute to an open, welcoming, 13 | diverse, inclusive, and healthy community. 14 | 15 | ## Our Standards 16 | 17 | Examples of behavior that contributes to a positive environment for our 18 | community include: 19 | 20 | * Demonstrating empathy and kindness toward other people 21 | * Being respectful of differing opinions, viewpoints, and experiences 22 | * Giving and gracefully accepting constructive feedback 23 | * Accepting responsibility and apologizing to those affected by our mistakes, 24 | and learning from the experience 25 | * Focusing on what is best not just for us as individuals, but for the 26 | overall community 27 | 28 | Examples of unacceptable behavior include: 29 | 30 | * The use of sexualized language or imagery, and sexual attention or 31 | advances of any kind 32 | * Trolling, insulting or derogatory comments, and personal or political attacks 33 | * Public or private harassment 34 | * Publishing others' private information, such as a physical or email 35 | address, without their explicit permission 36 | * Other conduct which could reasonably be considered inappropriate in a 37 | professional setting 38 | 39 | ## Enforcement Responsibilities 40 | 41 | Community leaders are responsible for clarifying and enforcing our standards of 42 | acceptable behavior and will take appropriate and fair corrective action in 43 | response to any behavior that they deem inappropriate, threatening, offensive, 44 | or harmful. 45 | 46 | Community leaders have the right and responsibility to remove, edit, or reject 47 | comments, commits, code, wiki edits, issues, and other contributions that are 48 | not aligned to this Code of Conduct, and will communicate reasons for moderation 49 | decisions when appropriate. 50 | 51 | ## Scope 52 | 53 | This Code of Conduct applies within all community spaces, and also applies when 54 | an individual is officially representing the community in public spaces. 55 | Examples of representing our community include using an official e-mail address, 56 | posting via an official social media account, or acting as an appointed 57 | representative at an online or offline event. 58 | 59 | ## Enforcement 60 | 61 | Instances of abusive, harassing, or otherwise unacceptable behavior may be 62 | reported to the community leaders responsible for enforcement at 63 | support@workos.com. 64 | All complaints will be reviewed and investigated promptly and fairly. 65 | 66 | All community leaders are obligated to respect the privacy and security of the 67 | reporter of any incident. 68 | 69 | ## Enforcement Guidelines 70 | 71 | Community leaders will follow these Community Impact Guidelines in determining 72 | the consequences for any action they deem in violation of this Code of Conduct: 73 | 74 | ### 1. Correction 75 | 76 | **Community Impact**: Use of inappropriate language or other behavior deemed 77 | unprofessional or unwelcome in the community. 78 | 79 | **Consequence**: A private, written warning from community leaders, providing 80 | clarity around the nature of the violation and an explanation of why the 81 | behavior was inappropriate. A public apology may be requested. 82 | 83 | ### 2. Warning 84 | 85 | **Community Impact**: A violation through a single incident or series 86 | of actions. 87 | 88 | **Consequence**: A warning with consequences for continued behavior. No 89 | interaction with the people involved, including unsolicited interaction with 90 | those enforcing the Code of Conduct, for a specified period of time. This 91 | includes avoiding interactions in community spaces as well as external channels 92 | like social media. Violating these terms may lead to a temporary or 93 | permanent ban. 94 | 95 | ### 3. Temporary Ban 96 | 97 | **Community Impact**: A serious violation of community standards, including 98 | sustained inappropriate behavior. 99 | 100 | **Consequence**: A temporary ban from any sort of interaction or public 101 | communication with the community for a specified period of time. No public or 102 | private interaction with the people involved, including unsolicited interaction 103 | with those enforcing the Code of Conduct, is allowed during this period. 104 | Violating these terms may lead to a permanent ban. 105 | 106 | ### 4. Permanent Ban 107 | 108 | **Community Impact**: Demonstrating a pattern of violation of community 109 | standards, including sustained inappropriate behavior, harassment of an 110 | individual, or aggression toward or disparagement of classes of individuals. 111 | 112 | **Consequence**: A permanent ban from any sort of public interaction within 113 | the community. 114 | 115 | ## Attribution 116 | 117 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], 118 | version 2.0, available at 119 | https://www.contributor-covenant.org/version/2/0/code_of_conduct.html. 120 | 121 | Community Impact Guidelines were inspired by [Mozilla's code of conduct 122 | enforcement ladder](https://github.com/mozilla/diversity). 123 | 124 | [homepage]: https://www.contributor-covenant.org 125 | 126 | For answers to common questions about this code of conduct, see the FAQ at 127 | https://www.contributor-covenant.org/faq. Translations are available at 128 | https://www.contributor-covenant.org/translations. 129 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023 WorkOS 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

2 | 3 |

AuthKit

4 |

How to use AuthKit's hosted UI or build your own frontend with the headless User Management APIs

5 |

Explore the docs ↗

6 |

7 | 8 |

9 | Screenshot of hosted UI AuthKit in light mode 10 |

11 | 12 | ## Examples 13 | 14 | There are two ways to use AuthKit and this repository contains examples for both: 15 | 16 | - [Using AuthKit's hosted UI](./src/app/using-hosted-authkit) 17 | This is the fastest way to add authentication to your app with AuthKit and WorkOS User Management. It includes a fully themeable hosted UI that handles all of your authentication flows. When you're ready to go to production you can point it to a custom domain (`auth.yourapp.com`) to match your application. 18 | - [Using your own custom UI](./src/app/using-your-own-ui) 19 | Use all of the features of AuthKit, but build out the UI yourself in your own codebase by integrating directly with the headless WorkOS User Management APIs. Your authentication UI will be self-hosted in your application. 20 | 21 | ## Prerequisites 22 | 23 | You will need a [WorkOS account](https://dashboard.workos.com/signup). 24 | 25 | ## Running the example 26 | 27 | 1. Install dependencies with `npm install` or `yarn install` 28 | 2. Set up your **Environment variables** by signing into your [WorkOS dashboard](https://dashboard.workos.com), navigate to **API Keys** and copy the **Client ID** and the **Secret Key** (API Key). 29 | Rename the `.env.local.example` file to `.env.local` and supply your _Client ID_ and _Secret Key_. 30 | 31 | ```bash 32 | WORKOS_CLIENT_ID="" 33 | WORKOS_API_KEY="" 34 | ``` 35 | 36 | 3. Configure redirects in your [WorkOS dashboard](https://dashboard.workos.com), navigate to **Redirects** and add the following urls: 37 | 38 | ```bash 39 | http://localhost:3000/using-your-own-ui/sign-in/google-oauth/callback 40 | ``` 41 | 42 | ```bash 43 | http://localhost:3000/using-your-own-ui/sign-in/microsoft-oauth/callback 44 | ``` 45 | 46 | ```bash 47 | http://localhost:3000/using-your-own-ui/sign-in/github-oauth/callback 48 | ``` 49 | 50 | ```bash 51 | http://localhost:3000/using-your-own-ui/sign-in/sso/callback 52 | ``` 53 | 54 | ```bash 55 | http://localhost:3000/using-hosted-authkit/basic/callback 56 | ``` 57 | 58 | ```bash 59 | http://localhost:3000/using-hosted-authkit/with-session/callback 60 | ``` 61 | 62 | ```bash 63 | http://localhost:3000/using-hosted-authkit/with-nextjs/callback 64 | ``` 65 | 66 | 4. Run the example with `npm run dev` or `yarn dev` and navigate to http://localhost:3000 67 | -------------------------------------------------------------------------------- /next.config.js: -------------------------------------------------------------------------------- 1 | /** @type {import('next').NextConfig} */ 2 | const nextConfig = {} 3 | 4 | module.exports = nextConfig 5 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "authkit", 3 | "version": "0.1.0", 4 | "private": true, 5 | "scripts": { 6 | "dev": "next dev", 7 | "build": "next build", 8 | "start": "next start", 9 | "lint": "next lint" 10 | }, 11 | "dependencies": { 12 | "@workos-inc/authkit-nextjs": "0.4.2", 13 | "@workos-inc/node": "^6.7.0", 14 | "jose": "^5.2.3", 15 | "next": "14.1.4", 16 | "react": "^18", 17 | "react-dom": "^18" 18 | }, 19 | "devDependencies": { 20 | "@types/node": "^20", 21 | "@types/react": "^18", 22 | "@types/react-dom": "^18", 23 | "eslint": "^8", 24 | "eslint-config-next": "14.1.4", 25 | "typescript": "^5" 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/app/back-link.tsx: -------------------------------------------------------------------------------- 1 | 'use client'; 2 | 3 | import Link from 'next/link'; 4 | import { usePathname } from 'next/navigation'; 5 | 6 | export default function BackLink() { 7 | const pathname = usePathname(); 8 | const segments = pathname.split('/').filter(Boolean); 9 | if (segments.length === 0) return null; 10 | if (segments.length === 1) return Home; 11 | return Examples; 12 | } 13 | -------------------------------------------------------------------------------- /src/app/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/workos/authkit/fd6389734169fd8d70b4a503573cc2724f189918/src/app/favicon.ico -------------------------------------------------------------------------------- /src/app/globals.css: -------------------------------------------------------------------------------- 1 | ::selection { 2 | background-color: #003eff3e; 3 | } 4 | 5 | body { 6 | margin: 0; 7 | font-size: 20px; 8 | } 9 | 10 | a { 11 | color: black; 12 | text-decoration-thickness: 1px; 13 | text-underline-offset: 2px; 14 | text-decoration-color: #888; 15 | } 16 | 17 | /* back link */ 18 | body > a { 19 | position: fixed; 20 | top: 12px; 21 | left: 12px; 22 | } 23 | 24 | main { 25 | display: flex; 26 | flex-direction: column; 27 | align-items: center; 28 | justify-content: center; 29 | min-height: 100vh; 30 | box-sizing: border-box; 31 | padding-top: 48px; 32 | } 33 | 34 | h1 { 35 | text-align: center; 36 | margin: 0; 37 | margin-top: auto; 38 | margin-bottom: 24px; 39 | } 40 | h1:has(+ h2) { 41 | margin-bottom: 8px; 42 | } 43 | 44 | h2 { 45 | text-align: center; 46 | margin: 0; 47 | margin-bottom: 32px; 48 | } 49 | 50 | h2:has(+ ul) { 51 | margin-top: 24px; 52 | margin-bottom: 8px; 53 | } 54 | 55 | main > form { 56 | display: flex; 57 | flex-direction: column; 58 | width: 400px; 59 | gap: 24px; 60 | margin-bottom: auto; 61 | } 62 | 63 | /* field (label + input) */ 64 | form > div { 65 | display: flex; 66 | flex-direction: column; 67 | gap: 8px; 68 | } 69 | 70 | label { 71 | font-size: 16px; 72 | font-weight: bold; 73 | } 74 | 75 | input { 76 | width: 100%; 77 | box-sizing: border-box; 78 | border: 2px solid black; 79 | border-radius: 4px; 80 | font-size: 20px; 81 | font-family: inherit; 82 | height: 48px; 83 | padding: 0 12px; 84 | } 85 | 86 | button, 87 | :where(main, form) > a { 88 | display: flex; 89 | align-items: center; 90 | justify-content: center; 91 | width: 100%; 92 | box-sizing: border-box; 93 | background-color: black; 94 | color: white; 95 | border-radius: 4px; 96 | font-size: 20px; 97 | height: 48px; 98 | font-family: inherit; 99 | border: 0; 100 | padding: 0 12px; 101 | margin: 8px 0; 102 | cursor: pointer; 103 | text-decoration: none; 104 | } 105 | button:active, 106 | :where(main, form) > a:active { 107 | background-color: #333; 108 | } 109 | main > a { 110 | width: 400px; 111 | margin-bottom: auto; 112 | } 113 | 114 | pre { 115 | font-size: 16px; 116 | box-sizing: border-box; 117 | min-height: 250px; 118 | height: auto; 119 | overflow: auto; 120 | width: 100vw; 121 | margin: 0; 122 | margin-top: 40px; 123 | bottom: 0; 124 | left: 0; 125 | right: 0; 126 | padding: 20px; 127 | background-color: #fafafa; 128 | border-top: 1px solid #eee; 129 | } 130 | 131 | /* lists for index pages */ 132 | ul { 133 | text-align: center; 134 | list-style-type: none; 135 | margin: 0; 136 | padding-left: 0; 137 | } 138 | 139 | h2 + ul:not(:last-child) { 140 | margin-bottom: 36px; 141 | } 142 | 143 | h1 + ul:last-child, 144 | h2 + ul:last-child { 145 | margin-bottom: auto; 146 | padding-bottom: 48px; 147 | } 148 | 149 | li { 150 | margin: 8px 0; 151 | } 152 | 153 | /* table for users table page */ 154 | main:has(table) h1 { 155 | margin-top: 0; 156 | } 157 | 158 | table { 159 | width: 100%; 160 | border-collapse: collapse; 161 | } 162 | th, 163 | td { 164 | text-align: left; 165 | padding: 12px 24px; 166 | border-bottom: 1px solid black; 167 | } 168 | table + nav { 169 | box-sizing: border-box; 170 | display: flex; 171 | align-items: center; 172 | justify-content: space-between; 173 | padding: 24px; 174 | width: 100%; 175 | gap: 24px; 176 | margin-bottom: auto; 177 | color: #888; 178 | } 179 | table button { 180 | margin: 0; 181 | } 182 | -------------------------------------------------------------------------------- /src/app/layout.tsx: -------------------------------------------------------------------------------- 1 | import type { Metadata } from 'next'; 2 | import { Inter } from 'next/font/google'; 3 | 4 | import './globals.css'; 5 | import BackLink from './back-link'; 6 | 7 | const inter = Inter({ subsets: ['latin'] }); 8 | 9 | export const metadata: Metadata = { 10 | title: 'AuthKit', 11 | description: 'A collection of examples for AuthKit', 12 | }; 13 | 14 | export default function RootLayout({ children }: { children: React.ReactNode }) { 15 | return ( 16 | 17 | 18 | 19 | {children} 20 | 21 | 22 | ); 23 | } 24 | -------------------------------------------------------------------------------- /src/app/page.tsx: -------------------------------------------------------------------------------- 1 | import Link from 'next/link'; 2 | 3 | export default function Home() { 4 | return ( 5 |
6 |

Examples

7 |
    8 |
  • 9 | Using your own UI 10 |
  • 11 |
  • 12 | Using hosted AuthKit 13 |
  • 14 |
15 |
16 | ); 17 | } 18 | -------------------------------------------------------------------------------- /src/app/using-hosted-authkit/README.md: -------------------------------------------------------------------------------- 1 |

2 | 3 |

Using AuthKit's hosted UI

4 |

How to use AuthKit with themeable hosted UI

5 |

View the examples  ·  Explore the docs ↗

6 |


7 |

8 | 9 | ## Setup 10 | 11 | First, ensure you have set up the [environment variables](/#environment-variables) and [redirects](/#redirects). 12 | 13 | For each example, you will need to ensure the applicable authentication method is enabled in your WorkOS dashboard. To do so navigate to **Authentication** and edit the applicable authentication method and ensure it is set to **Enabled**. 14 | 15 | For the Google OAuth and Microsoft OAuth examples, WorkOS provides demo app credentials to use in your WorkOS staging environment. This allows you to test these authentication flows without having to set up your own OAuth apps. 16 | 17 | In order to test Single Sign-On, you will need to create an organization in your WorkOS dashboard. Navigate to **Organizations** and then **Create organization**. Enter a name for this organization, and optionally add a domain that the members will use to sign in. You will also need to create a Single Sign-On connection in the WorkOS dashboard for this organization. On this organization's detail page, navigate to the authentication section, find **Single Sign-On**. For the purposes of this example, we will use the **Configure Manually** feature to create a new connection. This requires you to have access to an identity provider (IdP) for testing such as Entra ID (Azure AD), Google Workspace, or Okta. 18 | 19 | ## Examples 20 | 21 | - [Basic authentication](./basic/page.tsx). How to use AuthKit's hosted UI with any authentication method (Email + Password, Magic Auth, Google OAuth, Microsoft OAuth, and Single Sign-On). 22 | - [Using the authkit-nextjs library](./with-nextjs/page.tsx). How to use AuthKit's hosted UI in Next.js with managed client-side sessions and impersonation. 23 | - [With client-side sessions](./with-session/page.tsx). How to use AuthKit's hosted UI and manage sessions client-side using JavaScript Web Tokens (JWTs). 24 | 25 | ### Next.js 26 | 27 | For the `authkit-nextjs` example, you'll need to add the following to your environment variables: 28 | 29 | ```bash 30 | # Needed for authkit-nextjs library example, defined in WorkOS dashboard 31 | WORKOS_REDIRECT_URI= 32 | 33 | # Needed for authkit-nextjs library example. Must be at least 32 characters long 34 | WORKOS_COOKIE_PASSWORD= 35 | ``` 36 | 37 | To generate a secure cookie password, you can use the [1Password generator](https://1password.com/password-generator/) or use the `openssl` library to generate a strong password on the command line: 38 | 39 | ```bash 40 | openssl rand -base64 24 41 | ``` 42 | 43 | ### Sessions 44 | 45 | For the example with client-side sessions, you will need to add a JWT secret as an environment variable. It can be any random base64 string for testing locally. You can use the `openssl` library to easily generate a key. 46 | 47 | ```bash 48 | openssl rand -base64 32 49 | ``` 50 | 51 | And update the `.env.local` file: 52 | 53 | ```bash 54 | # ... 55 | JWT_SECRET_KEY="" 56 | ``` 57 | -------------------------------------------------------------------------------- /src/app/using-hosted-authkit/basic/callback/route.ts: -------------------------------------------------------------------------------- 1 | import { WorkOS } from '@workos-inc/node'; 2 | import { redirect } from 'next/navigation'; 3 | 4 | // This is a Next.js Route Handler. 5 | // 6 | // If your application is a single page app (SPA) with a separate backend you will need to: 7 | // - create a backend endpoint to handle the request 8 | // - adapt the code below in your endpoint 9 | // 10 | // Please also note that for the sake of simplicity, we directly return the user here in the query string. 11 | // In a real application, you would probably store the user in a token (JWT) 12 | // and store that token in your DB or use cookies (See `with-session` example for more details). 13 | 14 | const workos = new WorkOS(process.env.WORKOS_API_KEY); 15 | 16 | export async function GET(request: Request) { 17 | const code = new URL(request.url).searchParams.get('code') || ''; 18 | 19 | let response; 20 | 21 | try { 22 | response = await workos.userManagement.authenticateWithCode({ 23 | clientId: process.env.WORKOS_CLIENT_ID || '', 24 | code, 25 | }); 26 | } catch (error) { 27 | response = error; 28 | } 29 | 30 | if (response) { 31 | redirect( 32 | `http://localhost:3000/using-hosted-authkit/basic?response=${JSON.stringify(response)}` 33 | ); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/app/using-hosted-authkit/basic/page.tsx: -------------------------------------------------------------------------------- 1 | import { WorkOS } from '@workos-inc/node'; 2 | 3 | // This example uses Next.js with React Server Components. 4 | // Because this page is an RSC, the code stays on the server, which allows 5 | // us to use the WorkOS Node SDK without exposing our API key to the client. 6 | // 7 | // If your application is a single page app (SPA), you will need to: 8 | // - create a form that can POST to an endpoint in your backend 9 | // - call the `getAuthorizationURL` method in that endpoint 10 | // - redirect the user to the returned URL 11 | 12 | const workos = new WorkOS(process.env.WORKOS_API_KEY); 13 | 14 | export default function Basic({ 15 | searchParams, 16 | }: { 17 | searchParams: { [key: string]: string | string[] | undefined }; 18 | }) { 19 | const authKitUrl = workos.userManagement.getAuthorizationUrl({ 20 | clientId: process.env.WORKOS_CLIENT_ID || '', 21 | provider: 'authkit', 22 | redirectUri: 'http://localhost:3000/using-hosted-authkit/basic/callback', 23 | }); 24 | 25 | const result = JSON.parse(String(searchParams.response ?? '{ "error": null }')); 26 | 27 | return ( 28 |
29 |

Using hosted AuthKit

30 |

Basic example

31 | Sign-in with AuthKit 32 |
{JSON.stringify(result, null, 2)}
33 |
34 | ); 35 | } 36 | -------------------------------------------------------------------------------- /src/app/using-hosted-authkit/page.tsx: -------------------------------------------------------------------------------- 1 | import Link from 'next/link'; 2 | 3 | export default function UsingHostedAuthKit() { 4 | return ( 5 |
6 |

Using hosted AuthKit

7 |
    8 |
  • 9 | Basic example 10 |
  • 11 |
  • 12 | With Next.js library 13 |
  • 14 |
  • 15 | With session 16 |
  • 17 |
18 |
19 | ); 20 | } 21 | -------------------------------------------------------------------------------- /src/app/using-hosted-authkit/with-nextjs/callback/route.ts: -------------------------------------------------------------------------------- 1 | import { handleAuth } from '@workos-inc/authkit-nextjs'; 2 | 3 | export const GET = handleAuth({ returnPathname: '/using-hosted-authkit/with-nextjs/' }); 4 | -------------------------------------------------------------------------------- /src/app/using-hosted-authkit/with-nextjs/page.tsx: -------------------------------------------------------------------------------- 1 | import { getSignInUrl, getUser, signOut } from '@workos-inc/authkit-nextjs'; 2 | 3 | export default async function WithNextjs() { 4 | // Retrieves the user from the session or returns `null` if no user is signed in 5 | const { user } = await getUser(); 6 | 7 | // Get the URL to redirect the user to AuthKit to sign in 8 | const signInUrl = await getSignInUrl(); 9 | 10 | return ( 11 |
12 |

Using hosted AuthKit

13 |

With Next.js library

14 | {user ? ( 15 | <> 16 |

Welcome back {user?.firstName && `, ${user?.firstName}`}

17 |
{ 19 | 'use server'; 20 | await signOut(); 21 | }} 22 | > 23 | 24 |
25 | 26 | ) : ( 27 | Sign in 28 | )} 29 |
{JSON.stringify(user, null, 2)}
30 |
31 | ); 32 | } 33 | -------------------------------------------------------------------------------- /src/app/using-hosted-authkit/with-session/auth.ts: -------------------------------------------------------------------------------- 1 | import { cookies } from 'next/headers'; 2 | import { redirect } from 'next/navigation'; 3 | import { jwtVerify } from 'jose'; 4 | import type { User } from '@workos-inc/node'; 5 | 6 | export function getJwtSecretKey() { 7 | const secret = process.env.JWT_SECRET_KEY; 8 | 9 | if (!secret) { 10 | throw new Error('JWT_SECRET_KEY is not set'); 11 | } 12 | 13 | return new Uint8Array(Buffer.from(secret, 'base64')); 14 | } 15 | 16 | export async function verifyJwtToken(token: string) { 17 | try { 18 | const { payload } = await jwtVerify(token, getJwtSecretKey()); 19 | return payload; 20 | } catch (error) { 21 | return null; 22 | } 23 | } 24 | 25 | // Verify the JWT and return the user 26 | export async function getUser(): Promise<{ 27 | isAuthenticated: boolean; 28 | user?: User | null; 29 | }> { 30 | const token = cookies().get('token')?.value; 31 | 32 | if (token) { 33 | const verifiedToken = await verifyJwtToken(token); 34 | if (verifiedToken) { 35 | return { 36 | isAuthenticated: true, 37 | user: verifiedToken.user as User | null, 38 | }; 39 | } 40 | } 41 | 42 | return { isAuthenticated: false }; 43 | } 44 | 45 | // Clear the session and redirect to the home page 46 | export async function signOut() { 47 | cookies().delete('token'); 48 | redirect('/using-hosted-authkit/with-session'); 49 | } 50 | -------------------------------------------------------------------------------- /src/app/using-hosted-authkit/with-session/callback/route.ts: -------------------------------------------------------------------------------- 1 | import { WorkOS } from '@workos-inc/node'; 2 | import { NextResponse } from 'next/server'; 3 | import { SignJWT } from 'jose'; 4 | import { getJwtSecretKey } from '../auth'; 5 | 6 | // This is a Next.js Route Handler. 7 | // 8 | // If your application is a single page app (SPA) with a separate backend you will need to: 9 | // - create a backend endpoint to handle the request 10 | // - adapt the code below in your endpoint 11 | 12 | const workos = new WorkOS(process.env.WORKOS_API_KEY); 13 | 14 | export async function GET(request: Request) { 15 | const url = new URL(request.url); 16 | const code = url.searchParams.get('code') || ''; 17 | 18 | try { 19 | const { user } = await workos.userManagement.authenticateWithCode({ 20 | clientId: process.env.WORKOS_CLIENT_ID || '', 21 | code, 22 | }); 23 | 24 | // Create a JWT with the user's information 25 | // Here you might lookup and retrieve user details from your database 26 | const token = await new SignJWT({ user }) 27 | .setProtectedHeader({ alg: 'HS256', typ: 'JWT' }) 28 | .setIssuedAt() 29 | .setExpirationTime('1h') 30 | .sign(getJwtSecretKey()); 31 | 32 | // Cleanup params 33 | url.searchParams.delete('code'); 34 | 35 | // Store the session and redirect to the application 36 | url.pathname = '/using-hosted-authkit/with-session'; 37 | const response = NextResponse.redirect(url); 38 | 39 | response.cookies.set({ 40 | name: 'token', 41 | value: token, 42 | httpOnly: true, 43 | path: '/', 44 | secure: true, 45 | sameSite: 'lax', 46 | }); 47 | 48 | return response; 49 | } catch (error) { 50 | return NextResponse.json(error); 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /src/app/using-hosted-authkit/with-session/page.tsx: -------------------------------------------------------------------------------- 1 | import { WorkOS } from '@workos-inc/node'; 2 | import { getUser, signOut } from './auth'; 3 | 4 | // This example uses Next.js with React Server Components. 5 | // Because this page is an RSC, the code stays on the server, which allows 6 | // us to use the WorkOS Node SDK without exposing our API key to the client. 7 | // 8 | // If your application is a single page app (SPA), you will need to: 9 | // - create a form that can POST to an endpoint in your backend 10 | // - call the `getAuthorizationURL` method in that endpoint 11 | // - redirect the user to the returned URL 12 | 13 | const workos = new WorkOS(process.env.WORKOS_API_KEY); 14 | 15 | export default async function WithSession() { 16 | const { isAuthenticated, user } = await getUser(); 17 | 18 | const authKitUrl = workos.userManagement.getAuthorizationUrl({ 19 | clientId: process.env.WORKOS_CLIENT_ID || '', 20 | provider: 'authkit', 21 | redirectUri: 'http://localhost:3000/using-hosted-authkit/with-session/callback', 22 | }); 23 | 24 | return ( 25 |
26 |

With session

27 | 28 | {isAuthenticated ? ( 29 | <> 30 |

Welcome back{user?.firstName && `, ${user?.firstName}`}

31 |

You are now authenticated into the application.

32 | 33 |
{ 35 | 'use server'; 36 | await signOut(); 37 | }} 38 | > 39 | 40 |
41 | 42 | ) : ( 43 | <> 44 |

Sign-in

45 |

Sign-in to view your account details

46 | Sign-in 47 | 48 | )} 49 | 50 |
{JSON.stringify({ user }, null, 2)}
51 |
52 | ); 53 | } 54 | -------------------------------------------------------------------------------- /src/app/using-your-own-ui/README.md: -------------------------------------------------------------------------------- 1 |

2 | 3 |

Using AuthKit with your own UI

4 |

How to use AuthKit with your own frontend using headless User Management APIs

5 |

View the examples  ·  Explore the docs ↗

6 |


7 |

8 | 9 | ## Setup 10 | 11 | First, ensure you have set up the [environment variables](/#environment-variables) and [redirects](/#redirects). 12 | 13 | For each example, you will need to ensure the applicable authentication method is enabled in your WorkOS dashboard. To do so navigate to **Authentication** and edit the applicable authentication method and ensure it is set to **Enabled**. 14 | 15 | For the Google OAuth and Microsoft OAuth examples, WorkOS provides demo app credentials to use in your WorkOS staging environment. This allows you to test these authentication flows without having to set up your own OAuth apps. 16 | 17 | ## Examples 18 | 19 | ### Sign-up 20 | 21 | - [Email + Password](./sign-up/email-password/page.tsx) 22 | - [Magic Auth](./sign-up/magic-auth/page.tsx) 23 | 24 | ### Sign-in 25 | 26 | - [Email + Password](./sign-in/email-password/page.tsx) 27 | - [Magic Auth](./sign-in/magic-auth/page.tsx) 28 | - [Google OAuth](./sign-in/google-oauth/page.tsx) 29 | - [Microsoft OAuth](./sign-in/microsoft-oauth/page.tsx) 30 | - [Single Sign-On](./sign-in/sso/page.tsx) 31 | 32 | For the Single Sign-On example, you will need to create an organization in your WorkOS dashboard. Navigate to **Organizations** and then **Create organization**. Enter a name for this organization, and optionally add a domain that the members will use to sign in. You will also need to create a Single Sign-On connection in the WorkOS dashboard for this organization. On this organization's detail page, navigate to the authentication section, find **Single Sign-On**. For the purposes of this example, we will use the **Configure Manually** feature to create a new connection. This requires you to have access to an identity provider (IdP) for testing such as Entra ID (Azure AD), Google Workspace, or Okta. 33 | 34 | You will also need to copy the **Organization ID** from the organization you created with the active Single Sign-On connection. This is located below the organization's name on its detail page (beginning with `org_`). Copy it and add it to your `.env.local` file. 35 | 36 | ```bash 37 | SSO_ENABLED_ORGANIZATION_ID="" 38 | ``` 39 | 40 | ### Other 41 | 42 | - [Multi-Factor Auth](./mfa/page.tsx) 43 | - [Verify email](./verify-email/page.tsx) 44 | - [Reset password](./reset-password/page.tsx) 45 | - [Users table](./users-table/page.tsx) 46 | - [Update user](./update-user/page.tsx) 47 | -------------------------------------------------------------------------------- /src/app/using-your-own-ui/mfa/mfa.ts: -------------------------------------------------------------------------------- 1 | 'use server'; 2 | 3 | // These are Next.js server actions. 4 | // 5 | // If your application is a single page app (SPA) with a separate backend you will need to: 6 | // - create a backend endpoint to handle each request 7 | // - adapt the code below in each of those endpoints 8 | // 9 | // Please also note that for the sake of simplicity, we return all errors here. 10 | // In a real application, you should pay attention to which errors make it 11 | // to the client for security reasons. 12 | 13 | import { WorkOS } from '@workos-inc/node'; 14 | 15 | const workos = new WorkOS(process.env.WORKOS_API_KEY); 16 | 17 | export async function signIn(prevState: any, formData: FormData): Promise { 18 | try { 19 | // For the sake of simplicity, we directly return the user here. 20 | // In a real application, you would probably store the user in a token (JWT) 21 | // and store that token in your DB or use cookies. 22 | return await workos.userManagement.authenticateWithPassword({ 23 | clientId: process.env.WORKOS_CLIENT_ID || '', 24 | email: String(formData.get('email')), 25 | password: String(formData.get('password')), 26 | }); 27 | } catch (error) { 28 | const err = JSON.parse(JSON.stringify(error)); 29 | 30 | if (err.rawData.code === 'mfa_enrollment') { 31 | const { authenticationFactor, authenticationChallenge } = 32 | await workos.userManagement.enrollAuthFactor({ 33 | userId: err.rawData.user.id, 34 | type: 'totp', 35 | totpIssuer: 'WorkOS', 36 | totpUser: err.rawData.user.email, 37 | }); 38 | return { 39 | authenticationFactor, 40 | authenticationChallenge, 41 | pendingAuthenticationToken: err.rawData.pending_authentication_token, 42 | }; 43 | } 44 | 45 | if (err.rawData.code === 'mfa_challenge') { 46 | const challenge = await workos.mfa.challengeFactor({ 47 | authenticationFactorId: err.rawData.authentication_factors[0].id, 48 | }); 49 | return { 50 | authenticationChallenge: challenge, 51 | pendingAuthenticationToken: err.rawData.pending_authentication_token, 52 | }; 53 | } 54 | 55 | return { error: err }; 56 | } 57 | } 58 | 59 | export async function verifyTotp(prevState: any, formData: FormData) { 60 | try { 61 | // For the sake of simplicity, we directly return the user here. 62 | // In a real application, you would probably store the user in a token (JWT) 63 | // and store that token in your DB or use cookies. 64 | return await workos.userManagement.authenticateWithTotp({ 65 | clientId: process.env.WORKOS_CLIENT_ID || '', 66 | authenticationChallengeId: String(formData.get('authenticationChallengeId')), 67 | pendingAuthenticationToken: String(formData.get('pendingAuthenticationToken')), 68 | code: String(formData.get('code')), 69 | }); 70 | } catch (error) { 71 | return { error: JSON.parse(JSON.stringify(error)) }; 72 | } 73 | } 74 | 75 | type UnpackPromise = T extends Promise ? U : T; 76 | type AuthenticateResponse = UnpackPromise< 77 | ReturnType 78 | >; 79 | type EnrollResponse = UnpackPromise>; 80 | type SignInResponse = 81 | | AuthenticateResponse 82 | | { 83 | authenticationFactor?: EnrollResponse['authenticationFactor']; 84 | authenticationChallenge: EnrollResponse['authenticationChallenge']; 85 | pendingAuthenticationToken: string; 86 | } 87 | | { error: any }; 88 | -------------------------------------------------------------------------------- /src/app/using-your-own-ui/mfa/page.tsx: -------------------------------------------------------------------------------- 1 | 'use client'; 2 | 3 | import { useFormState } from 'react-dom'; 4 | import { signIn, verifyTotp } from './mfa'; 5 | import Image from 'next/image'; 6 | 7 | export default function Mfa() { 8 | // This example uses Next.js server actions to call functions on the server side. 9 | // 10 | // If your application is a single page app (SPA), you will need to: 11 | // - handle the form submission in `
` 12 | // - make an API call to your backend (e.g using `fetch`) 13 | const [signInState, signInAction] = useFormState(signIn, { error: null }); 14 | const [verifyState, verifyAction] = useFormState(verifyTotp, { error: null }); 15 | 16 | if (!('authenticationChallenge' in signInState) || 'user' in signInState) { 17 | return ( 18 |
19 |

Multi-Factor Auth

20 |

Sign-in

21 | 22 | 23 |
24 | 25 | 34 |
35 | 36 |
37 | 38 | 46 |
47 | 48 | 49 | 50 | 51 |
{JSON.stringify(signInState, null, 2)}
52 |
53 | ); 54 | } 55 | 56 | return ( 57 |
58 |

Multi-Factor Auth

59 | 60 | {signInState.authenticationFactor ? ( 61 | <> 62 |

Enroll

63 |

Scan the QR code

64 | QR code 70 |

then

71 | 72 | ) : ( 73 |

Verify

74 | )} 75 | 76 |
77 |
78 | 79 | 89 |
90 | 91 | 96 | 97 | 102 | 103 | 104 |
105 | 106 |
{JSON.stringify(verifyState, null, 2)}
107 |
108 | ); 109 | } 110 | -------------------------------------------------------------------------------- /src/app/using-your-own-ui/page.tsx: -------------------------------------------------------------------------------- 1 | import Link from 'next/link'; 2 | 3 | export default function UsingYourOwnUi() { 4 | return ( 5 |
6 |

Using your own UI

7 | 8 |

Sign-up

9 |
    10 |
  • 11 | Email + Password 12 |
  • 13 |
  • 14 | Magic Auth 15 |
  • 16 |
17 | 18 |

Sign-in

19 |
    20 |
  • 21 | Email + Password 22 |
  • 23 |
  • 24 | Magic Auth 25 |
  • 26 |
  • 27 | GitHub OAuth 28 |
  • 29 |
  • 30 | Google OAuth 31 |
  • 32 |
  • 33 | Microsoft OAuth 34 |
  • 35 |
  • 36 | Single Sign-On 37 |
  • 38 |
39 | 40 |

Other

41 |
    42 |
  • 43 | Multi-Factor Auth 44 |
  • 45 |
  • 46 | Verify email 47 |
  • 48 |
  • 49 | Reset password 50 |
  • 51 |
  • 52 | Users table 53 |
  • 54 |
  • 55 | Update user 56 |
  • 57 |
58 |
59 | ); 60 | } 61 | -------------------------------------------------------------------------------- /src/app/using-your-own-ui/reset-password/page.tsx: -------------------------------------------------------------------------------- 1 | 'use client'; 2 | 3 | import { useFormState } from 'react-dom'; 4 | import { sendReset, resetPassword } from './reset-password'; 5 | 6 | export default function ResetPassword({ 7 | searchParams, 8 | }: { 9 | searchParams: { token?: string; email?: string }; 10 | }) { 11 | const { token, email } = searchParams; 12 | 13 | // This example uses Next.js server actions to call functions on the server side. 14 | // 15 | // If your application is a single page app (SPA), you will need to: 16 | // - handle the form submission in `
` 17 | // - make an API call to your backend (e.g using `fetch`) 18 | const [sendResetState, sendResetAction] = useFormState(sendReset, { error: null }); 19 | const [resetPasswordState, resetPasswordAction] = useFormState(resetPassword, { error: null }); 20 | 21 | if (!token) { 22 | return ( 23 |
24 |

Reset password

25 | 26 | 27 |
28 | 29 | 38 |
39 | 40 | 41 | 42 | 43 |
{JSON.stringify(sendResetState, null, 2)}
44 |
45 | ); 46 | } 47 | 48 | return ( 49 |
50 |

Reset password

51 | 52 |
53 |
54 | 55 | 64 |
65 | 66 | 67 | 68 | {email && ( 69 | // We also include the email in a hidden input so that password managers can update the password on the correct account. 70 | // https://developer.1password.com/docs/web/compatible-website-design/#password-change-and-reset-forms 71 | 78 | )} 79 | 80 | 81 |
82 | 83 |
{JSON.stringify(resetPasswordState, null, 2)}
84 |
85 | ); 86 | } 87 | -------------------------------------------------------------------------------- /src/app/using-your-own-ui/reset-password/reset-password.ts: -------------------------------------------------------------------------------- 1 | 'use server'; 2 | 3 | // These are Next.js server actions. 4 | // 5 | // If your application is a single page app (SPA) with a separate backend you will need to: 6 | // - create a backend endpoint to handle each request 7 | // - adapt the code below in each of those endpoints 8 | // 9 | // Please also note that for the sake of simplicity, we return all errors here. 10 | // In a real application, you should pay attention to which errors make it 11 | // to the client for security reasons. 12 | 13 | import { WorkOS } from '@workos-inc/node'; 14 | 15 | const workos = new WorkOS(process.env.WORKOS_API_KEY); 16 | 17 | export async function sendReset(prevState: any, formData: FormData) { 18 | try { 19 | const email = String(formData.get('email')); 20 | return await workos.userManagement.sendPasswordResetEmail({ 21 | email, 22 | passwordResetUrl: `http://localhost:3000/using-your-own-ui/reset-password?email=${email}`, 23 | }); 24 | } catch (error) { 25 | return { error: JSON.parse(JSON.stringify(error)) }; 26 | } 27 | } 28 | 29 | export async function resetPassword(prevState: any, formData: FormData) { 30 | try { 31 | return await workos.userManagement.resetPassword({ 32 | newPassword: String(formData.get('newPassword')), 33 | token: String(formData.get('token')), 34 | }); 35 | } catch (error) { 36 | return { error: JSON.parse(JSON.stringify(error)) }; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /src/app/using-your-own-ui/sign-in/email-password/email-password.ts: -------------------------------------------------------------------------------- 1 | 'use server'; 2 | 3 | // These are Next.js server actions. 4 | // 5 | // If your application is a single page app (SPA) with a separate backend you will need to: 6 | // - create a backend endpoint to handle each request 7 | // - adapt the code below in each of those endpoints 8 | // 9 | // Please also note that for the sake of simplicity, we return all errors here. 10 | // In a real application, you should pay attention to which errors make it 11 | // to the client for security reasons. 12 | 13 | import { WorkOS } from '@workos-inc/node'; 14 | 15 | const workos = new WorkOS(process.env.WORKOS_API_KEY); 16 | 17 | export async function signIn(prevState: any, formData: FormData) { 18 | try { 19 | // For the sake of simplicity, we directly return the user here. 20 | // In a real application, you would probably store the user in a token (JWT) 21 | // and store that token in your DB or use cookies. 22 | return await workos.userManagement.authenticateWithPassword({ 23 | clientId: process.env.WORKOS_CLIENT_ID || '', 24 | email: String(formData.get('email')), 25 | password: String(formData.get('password')), 26 | }); 27 | } catch (error) { 28 | return { error: JSON.parse(JSON.stringify(error)) }; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/app/using-your-own-ui/sign-in/email-password/page.tsx: -------------------------------------------------------------------------------- 1 | 'use client'; 2 | 3 | import { useFormState } from 'react-dom'; 4 | import { signIn } from './email-password'; 5 | 6 | export default function SignInWithEmailPassword() { 7 | // This example uses Next.js server actions to call functions on the server side. 8 | // 9 | // If your application is a single page app (SPA), you will need to: 10 | // - handle the form submission in `
` 11 | // - make an API call to your backend (e.g using `fetch`) 12 | const [signInState, signInAction] = useFormState(signIn, { error: null }); 13 | 14 | return ( 15 |
16 |

Sign-in

17 |

Email + Password

18 | 19 | 20 |
21 | 22 | 31 |
32 | 33 |
34 | 35 | 43 |
44 | 45 | 46 | 47 | 48 |
{JSON.stringify(signInState, null, 2)}
49 |
50 | ); 51 | } 52 | -------------------------------------------------------------------------------- /src/app/using-your-own-ui/sign-in/github-oauth/callback/route.ts: -------------------------------------------------------------------------------- 1 | import { WorkOS } from '@workos-inc/node'; 2 | import { redirect } from 'next/navigation'; 3 | 4 | // This is a Next.js Route Handler. 5 | // 6 | // If your application is a single page app (SPA) with a separate backend you will need to: 7 | // - create a backend endpoint to handle the request 8 | // - adapt the code below in your endpoint 9 | // 10 | // Please also note that for the sake of simplicity, we directly return the user here in the query string. 11 | // In a real application, you would probably store the user in a token (JWT) 12 | // and store that token in your DB or use cookies. 13 | 14 | const workos = new WorkOS(process.env.WORKOS_API_KEY); 15 | 16 | export async function GET(request: Request) { 17 | const code = new URL(request.url).searchParams.get('code') || ''; 18 | 19 | let response; 20 | 21 | try { 22 | response = await workos.userManagement.authenticateWithCode({ 23 | clientId: process.env.WORKOS_CLIENT_ID || '', 24 | code, 25 | }); 26 | } catch (error) { 27 | response = error; 28 | } 29 | 30 | if (response) { 31 | redirect( 32 | `http://localhost:3000/using-your-own-ui/sign-in/github-oauth?response=${JSON.stringify( 33 | response 34 | )}` 35 | ); 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /src/app/using-your-own-ui/sign-in/github-oauth/page.tsx: -------------------------------------------------------------------------------- 1 | import { WorkOS } from '@workos-inc/node'; 2 | 3 | // This example uses Next.js with React Server Components. 4 | // Because this page is an RSC, the code stays on the server, which allows 5 | // us to use the WorkOS Node SDK without exposing our API key to the client. 6 | // 7 | // If your application is a single page app (SPA), you will need to: 8 | // - create a form that can POST to an endpoint in your backend 9 | // - call the `getAuthorizationURL` method in that endpoint 10 | // - redirect the user to the returned URL 11 | 12 | const workos = new WorkOS(process.env.WORKOS_API_KEY); 13 | 14 | export default function SignInWithGitHubOAuth({ 15 | searchParams, 16 | }: { 17 | searchParams: { [key: string]: string | string[] | undefined }; 18 | }) { 19 | const githubOAuthUrl = workos.userManagement.getAuthorizationUrl({ 20 | clientId: process.env.WORKOS_CLIENT_ID || '', 21 | provider: 'GitHubOAuth', 22 | redirectUri: 'http://localhost:3000/using-your-own-ui/sign-in/github-oauth/callback', 23 | }); 24 | 25 | const result = JSON.parse(String(searchParams.response ?? '{ "error": null }')); 26 | 27 | return ( 28 |
29 |

Sign-in

30 |

GitHub OAuth

31 | Continue with GitHub 32 |
{JSON.stringify(result, null, 2)}
33 |
34 | ); 35 | } 36 | -------------------------------------------------------------------------------- /src/app/using-your-own-ui/sign-in/google-oauth/callback/route.ts: -------------------------------------------------------------------------------- 1 | import { WorkOS } from '@workos-inc/node'; 2 | import { redirect } from 'next/navigation'; 3 | 4 | // This is a Next.js Route Handler. 5 | // 6 | // If your application is a single page app (SPA) with a separate backend you will need to: 7 | // - create a backend endpoint to handle the request 8 | // - adapt the code below in your endpoint 9 | // 10 | // Please also note that for the sake of simplicity, we directly return the user here in the query string. 11 | // In a real application, you would probably store the user in a token (JWT) 12 | // and store that token in your DB or use cookies. 13 | 14 | const workos = new WorkOS(process.env.WORKOS_API_KEY); 15 | 16 | export async function GET(request: Request) { 17 | const code = new URL(request.url).searchParams.get('code') || ''; 18 | 19 | let response; 20 | 21 | try { 22 | response = await workos.userManagement.authenticateWithCode({ 23 | clientId: process.env.WORKOS_CLIENT_ID || '', 24 | code, 25 | }); 26 | } catch (error) { 27 | response = error; 28 | } 29 | 30 | if (response) { 31 | redirect( 32 | `http://localhost:3000/using-your-own-ui/sign-in/google-oauth?response=${JSON.stringify( 33 | response 34 | )}` 35 | ); 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /src/app/using-your-own-ui/sign-in/google-oauth/page.tsx: -------------------------------------------------------------------------------- 1 | import { WorkOS } from '@workos-inc/node'; 2 | 3 | // This example uses Next.js with React Server Components. 4 | // Because this page is an RSC, the code stays on the server, which allows 5 | // us to use the WorkOS Node SDK without exposing our API key to the client. 6 | // 7 | // If your application is a single page app (SPA), you will need to: 8 | // - create a form that can POST to an endpoint in your backend 9 | // - call the `getAuthorizationURL` method in that endpoint 10 | // - redirect the user to the returned URL 11 | 12 | const workos = new WorkOS(process.env.WORKOS_API_KEY); 13 | 14 | export default function SignInWithGoogleOAuth({ 15 | searchParams, 16 | }: { 17 | searchParams: { [key: string]: string | string[] | undefined }; 18 | }) { 19 | const googleOAuthUrl = workos.userManagement.getAuthorizationUrl({ 20 | clientId: process.env.WORKOS_CLIENT_ID || '', 21 | provider: 'GoogleOAuth', 22 | redirectUri: 'http://localhost:3000/using-your-own-ui/sign-in/google-oauth/callback', 23 | }); 24 | 25 | const result = JSON.parse(String(searchParams.response ?? '{ "error": null }')); 26 | 27 | return ( 28 |
29 |

Sign-in

30 |

Google OAuth

31 | Continue with Google 32 |
{JSON.stringify(result, null, 2)}
33 |
34 | ); 35 | } 36 | -------------------------------------------------------------------------------- /src/app/using-your-own-ui/sign-in/magic-auth/magic-auth.ts: -------------------------------------------------------------------------------- 1 | 'use server'; 2 | 3 | // These are Next.js server actions. 4 | // 5 | // If your application is a single page app (SPA) with a separate backend you will need to: 6 | // - create a backend endpoint to handle each request 7 | // - adapt the code below in each of those endpoints 8 | // 9 | // Please also note that for the sake of simplicity, we return all errors here. 10 | // In a real application, you should pay attention to which errors make it 11 | // to the client for security reasons. 12 | 13 | import { WorkOS } from '@workos-inc/node'; 14 | 15 | const workos = new WorkOS(process.env.WORKOS_API_KEY); 16 | 17 | export async function sendCode(prevState: any, formData: FormData) { 18 | try { 19 | return await workos.userManagement.sendMagicAuthCode({ 20 | email: String(formData.get('email')), 21 | }); 22 | } catch (error) { 23 | return { error: JSON.parse(JSON.stringify(error)) }; 24 | } 25 | } 26 | 27 | export async function signIn(prevState: any, formData: FormData) { 28 | try { 29 | // For the sake of simplicity, we directly return the user here. 30 | // In a real application, you would probably store the user in a token (JWT) 31 | // and store that token in your DB or use cookies. 32 | return await workos.userManagement.authenticateWithMagicAuth({ 33 | clientId: process.env.WORKOS_CLIENT_ID || '', 34 | code: String(formData.get('code')), 35 | email: String(formData.get('email')), 36 | }); 37 | } catch (error) { 38 | return { error: JSON.parse(JSON.stringify(error)) }; 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /src/app/using-your-own-ui/sign-in/magic-auth/page.tsx: -------------------------------------------------------------------------------- 1 | 'use client'; 2 | 3 | import * as React from 'react'; 4 | import { useFormState } from 'react-dom'; 5 | import { sendCode, signIn } from './magic-auth'; 6 | 7 | export default function SignInWithMagicAuth() { 8 | // This example uses Next.js server actions to call functions on the server side. 9 | // 10 | // If your application is a single page app (SPA), you will need to: 11 | // - handle the form submission in `
` 12 | // - make an API call to your backend (e.g using `fetch`) 13 | const [sendCodeState, sendCodeAction] = useFormState(sendCode, { error: null }); 14 | const [signInState, signInAction] = useFormState(signIn, { error: null }); 15 | const [email, setEmail] = React.useState(''); 16 | 17 | if (sendCodeState?.error === null) { 18 | return ( 19 |
20 |

Sign-in

21 |

Magic Auth

22 | 23 | 24 |
25 | 26 | setEmail(event.target.value)} 35 | /> 36 |
37 | 38 | 39 | 40 | 41 |
{JSON.stringify(sendCodeState, null, 2)}
42 |
43 | ); 44 | } 45 | 46 | return ( 47 |
48 |

Sign-in

49 |

Magic Auth

50 | 51 |
52 |
53 | 54 | 64 |
65 | 66 | {/* we need the email to authenticate with the code */} 67 | 68 | 69 | 70 |
71 | 72 |
{JSON.stringify(signInState, null, 2)}
73 |
74 | ); 75 | } 76 | -------------------------------------------------------------------------------- /src/app/using-your-own-ui/sign-in/microsoft-oauth/callback/route.ts: -------------------------------------------------------------------------------- 1 | import { WorkOS } from '@workos-inc/node'; 2 | import { redirect } from 'next/navigation'; 3 | 4 | // This is a Next.js Route Handler. 5 | // 6 | // If your application is a single page app (SPA) with a separate backend you will need to: 7 | // - create a backend endpoint to handle the request 8 | // - adapt the code below in your endpoint 9 | // 10 | // Please also note that for the sake of simplicity, we directly return the user here in the query string. 11 | // In a real application, you would probably store the user in a token (JWT) 12 | // and store that token in your DB or use cookies. 13 | 14 | const workos = new WorkOS(process.env.WORKOS_API_KEY); 15 | 16 | export async function GET(request: Request) { 17 | const code = new URL(request.url).searchParams.get('code') || ''; 18 | 19 | let response; 20 | 21 | try { 22 | response = await workos.userManagement.authenticateWithCode({ 23 | clientId: process.env.WORKOS_CLIENT_ID || '', 24 | code, 25 | }); 26 | } catch (error) { 27 | response = error; 28 | } 29 | 30 | if (response) { 31 | redirect( 32 | `http://localhost:3000/using-your-own-ui/sign-in/microsoft-oauth?response=${JSON.stringify( 33 | response 34 | )}` 35 | ); 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /src/app/using-your-own-ui/sign-in/microsoft-oauth/page.tsx: -------------------------------------------------------------------------------- 1 | import { WorkOS } from '@workos-inc/node'; 2 | 3 | // This example uses Next.js with React Server Components. 4 | // Because this page is an RSC, the code stays on the server, which allows 5 | // us to use the WorkOS Node SDK without exposing our API key to the client. 6 | // 7 | // If your application is a single page app (SPA), you will need to: 8 | // - create a form that can POST to an endpoint in your backend 9 | // - call the `getAuthorizationURL` method in that endpoint 10 | // - redirect the user to the returned URL 11 | 12 | const workos = new WorkOS(process.env.WORKOS_API_KEY); 13 | 14 | export default function SignInWithMicrosoftOAuth({ 15 | searchParams, 16 | }: { 17 | searchParams: { [key: string]: string | string[] | undefined }; 18 | }) { 19 | const microsoftOAuthUrl = workos.userManagement.getAuthorizationUrl({ 20 | clientId: process.env.WORKOS_CLIENT_ID || '', 21 | provider: 'MicrosoftOAuth', 22 | redirectUri: 'http://localhost:3000/using-your-own-ui/sign-in/microsoft-oauth/callback', 23 | }); 24 | 25 | const result = JSON.parse(String(searchParams.response ?? '{ "error": null }')); 26 | 27 | return ( 28 |
29 |

Sign-in

30 |

Microsoft OAuth

31 | Continue with Microsoft 32 |
{JSON.stringify(result, null, 2)}
33 |
34 | ); 35 | } 36 | -------------------------------------------------------------------------------- /src/app/using-your-own-ui/sign-in/sso/callback/route.ts: -------------------------------------------------------------------------------- 1 | import { WorkOS } from '@workos-inc/node'; 2 | import { redirect } from 'next/navigation'; 3 | 4 | // This is a Next.js Route Handler. 5 | // 6 | // If your application is a single page app (SPA) with a separate backend you will need to: 7 | // - create a backend endpoint to handle the request 8 | // - adapt the code below in your endpoint 9 | // 10 | // Please also note that for the sake of simplicity, we directly return the user here in the query string. 11 | // In a real application, you would probably store the user in a token (JWT) 12 | // and store that token in your DB or use cookies. 13 | 14 | const workos = new WorkOS(process.env.WORKOS_API_KEY); 15 | 16 | export async function GET(request: Request) { 17 | const code = new URL(request.url).searchParams.get('code') || ''; 18 | 19 | let response; 20 | 21 | try { 22 | response = await workos.userManagement.authenticateWithCode({ 23 | clientId: process.env.WORKOS_CLIENT_ID || '', 24 | code, 25 | }); 26 | } catch (error) { 27 | response = error; 28 | } 29 | 30 | if (response) { 31 | redirect( 32 | `http://localhost:3000/using-your-own-ui/sign-in/sso?response=${JSON.stringify(response)}` 33 | ); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/app/using-your-own-ui/sign-in/sso/page.tsx: -------------------------------------------------------------------------------- 1 | import { WorkOS } from '@workos-inc/node'; 2 | 3 | // This example uses Next.js with React Server Components. 4 | // Because this page is an RSC, the code stays on the server, which allows 5 | // us to use the WorkOS Node SDK without exposing our API key to the client. 6 | // 7 | // If your application is a single page app (SPA), you will need to: 8 | // - create a form that can POST to an endpoint in your backend 9 | // - call the `getAuthorizationURL` method in that endpoint 10 | // - redirect the user to the returned URL 11 | 12 | const workos = new WorkOS(process.env.WORKOS_API_KEY); 13 | 14 | export default function SignInWithSSO({ 15 | searchParams, 16 | }: { 17 | searchParams: { [key: string]: string | string[] | undefined }; 18 | }) { 19 | const ssoUrl = workos.userManagement.getAuthorizationUrl({ 20 | clientId: process.env.WORKOS_CLIENT_ID || '', 21 | organizationId: process.env.SSO_ENABLED_ORGANIZATION_ID || '', 22 | redirectUri: 'http://localhost:3000/using-your-own-ui/sign-in/sso/callback', 23 | }); 24 | 25 | const result = JSON.parse(String(searchParams.response ?? '{ "error": null }')); 26 | 27 | return ( 28 |
29 |

Sign-in

30 |

Single Sign-On

31 | Continue with SSO 32 |
{JSON.stringify(result, null, 2)}
33 |
34 | ); 35 | } 36 | -------------------------------------------------------------------------------- /src/app/using-your-own-ui/sign-up/email-password/email-password.ts: -------------------------------------------------------------------------------- 1 | 'use server'; 2 | 3 | // These are Next.js server actions. 4 | // 5 | // If your application is a single page app (SPA) with a separate backend you will need to: 6 | // - create a backend endpoint to handle each request 7 | // - adapt the code below in each of those endpoints 8 | // 9 | // Please also note that for the sake of simplicity, we return all errors here. 10 | // In a real application, you should pay attention to which errors make it 11 | // to the client for security reasons. 12 | 13 | import { WorkOS } from '@workos-inc/node'; 14 | 15 | const workos = new WorkOS(process.env.WORKOS_API_KEY); 16 | 17 | export async function signUp(prevState: any, formData: FormData) { 18 | try { 19 | // For the sake of simplicity, we directly return the user here. 20 | // In a real application, you would probably redirect the user to sign-in. 21 | return await workos.userManagement.createUser({ 22 | email: String(formData.get('email')), 23 | password: String(formData.get('password')), 24 | firstName: String(formData.get('firstName')), 25 | lastName: String(formData.get('lastName')), 26 | }); 27 | } catch (error) { 28 | return { error: JSON.parse(JSON.stringify(error)) }; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/app/using-your-own-ui/sign-up/email-password/page.tsx: -------------------------------------------------------------------------------- 1 | 'use client'; 2 | 3 | import { useFormState } from 'react-dom'; 4 | import { signUp } from './email-password'; 5 | 6 | export default function SignUpWithEmailPassword() { 7 | // This example uses Next.js server actions to call functions on the server side. 8 | // 9 | // If your application is a single page app (SPA), you will need to: 10 | // - handle the form submission in `
` 11 | // - make an API call to your backend (e.g using `fetch`) 12 | const [signUpState, signUpAction] = useFormState(signUp, { error: null }); 13 | 14 | return ( 15 |
16 |

Sign-up

17 |

Email + Password

18 | 19 | 20 |
21 | 22 | 31 |
32 | 33 |
34 | 35 | 43 |
44 | 45 |
46 | 47 | 48 |
49 | 50 |
51 | 52 | 53 |
54 | 55 | 56 | 57 | 58 |
{JSON.stringify(signUpState, null, 2)}
59 |
60 | ); 61 | } 62 | -------------------------------------------------------------------------------- /src/app/using-your-own-ui/sign-up/magic-auth/magic-auth.ts: -------------------------------------------------------------------------------- 1 | 'use server'; 2 | 3 | // These are Next.js server actions. 4 | // 5 | // If your application is a single page app (SPA) with a separate backend you will need to: 6 | // - create a backend endpoint to handle each request 7 | // - adapt the code below in each of those endpoints 8 | // 9 | // Please also note that for the sake of simplicity, we return all errors here. 10 | // In a real application, you should pay attention to which errors make it 11 | // to the client for security reasons. 12 | 13 | import { WorkOS } from '@workos-inc/node'; 14 | 15 | const workos = new WorkOS(process.env.WORKOS_API_KEY); 16 | 17 | export async function signUp(prevState: any, formData: FormData) { 18 | try { 19 | // For the sake of simplicity, we directly return the user here. 20 | // In a real application, you would probably send a magic code email 21 | // and redirect the user to a page where they can enter the code. 22 | // See the `sign-in/magic-auth` example for more details. 23 | return await workos.userManagement.createUser({ 24 | email: String(formData.get('email')), 25 | password: undefined, 26 | firstName: String(formData.get('firstName')), 27 | lastName: String(formData.get('lastName')), 28 | }); 29 | } catch (error) { 30 | return { error: JSON.parse(JSON.stringify(error)) }; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/app/using-your-own-ui/sign-up/magic-auth/page.tsx: -------------------------------------------------------------------------------- 1 | 'use client'; 2 | 3 | import { useFormState } from 'react-dom'; 4 | import { signUp } from './magic-auth'; 5 | 6 | export default function SignUpWithMagicAuth() { 7 | // This example uses Next.js server actions to call functions on the server side. 8 | // 9 | // If your application is a single page app (SPA), you will need to: 10 | // - handle the form submission in `
` 11 | // - make an API call to your backend (e.g using `fetch`) 12 | const [signUpState, signUpAction] = useFormState(signUp, { error: null }); 13 | 14 | return ( 15 |
16 |

Sign-up

17 |

Magic Auth

18 | 19 | 20 |
21 | 22 | 31 |
32 | 33 |
34 | 35 | 36 |
37 | 38 |
39 | 40 | 41 |
42 | 43 | 44 | 45 | 46 |
{JSON.stringify(signUpState, null, 2)}
47 |
48 | ); 49 | } 50 | -------------------------------------------------------------------------------- /src/app/using-your-own-ui/update-user/page.tsx: -------------------------------------------------------------------------------- 1 | 'use client'; 2 | 3 | import { useFormState } from 'react-dom'; 4 | import { getUser, updateUser } from './update-user'; 5 | 6 | export default function UpdateUser() { 7 | // This example uses Next.js server actions to call functions on the server side. 8 | // 9 | // If your application is a single page app (SPA), you will need to: 10 | // - handle the form submission in `
` 11 | // - make an API call to your backend (e.g using `fetch`) 12 | const [getUserState, getUserAction] = useFormState(getUser, { error: null }); 13 | const [updateUserState, updateUserAction] = useFormState(updateUser, { error: null }); 14 | 15 | if (!('user' in getUserState)) { 16 | return ( 17 |
18 |

Update user

19 | 20 | 21 |
22 | 23 | 32 |
33 | 34 | 35 | 36 | 37 |
{JSON.stringify(getUserState, null, 2)}
38 |
39 | ); 40 | } 41 | 42 | return ( 43 |
44 |

Update user

45 | 46 |
47 |
48 | 49 | 50 |
51 | 52 |
53 | 54 | 62 |
63 | 64 |
65 | 66 | 73 |
74 | 75 | 76 | 77 | 78 |
79 | 80 |
{JSON.stringify(updateUserState, null, 2)}
81 |
82 | ); 83 | } 84 | -------------------------------------------------------------------------------- /src/app/using-your-own-ui/update-user/update-user.ts: -------------------------------------------------------------------------------- 1 | 'use server'; 2 | 3 | // These are Next.js server actions. 4 | // 5 | // If your application is a single page app (SPA) with a separate backend you will need to: 6 | // - create a backend endpoint to handle each request 7 | // - adapt the code below in each of those endpoints 8 | // 9 | // Please also note that for the sake of simplicity, we return all errors here. 10 | // In a real application, you should pay attention to which errors make it 11 | // to the client for security reasons. 12 | 13 | import { WorkOS } from '@workos-inc/node'; 14 | import type { User } from '@workos-inc/node'; 15 | import { revalidatePath } from 'next/cache'; 16 | 17 | const workos = new WorkOS(process.env.WORKOS_API_KEY); 18 | 19 | export async function getUser(prevState: any, formData: FormData): Promise { 20 | try { 21 | const users = await workos.userManagement.listUsers({ email: String(formData.get('email')) }); 22 | const user = users.data[0]; 23 | return { user }; 24 | } catch (error) { 25 | return { error: JSON.parse(JSON.stringify(error)) }; 26 | } 27 | } 28 | 29 | export async function updateUser(prevState: any, formData: FormData): Promise { 30 | try { 31 | const user = await workos.userManagement.updateUser({ 32 | userId: String(formData.get('userId')), 33 | firstName: String(formData.get('firstName')), 34 | lastName: String(formData.get('lastName')), 35 | }); 36 | revalidatePath('/users-table'); 37 | return { user }; 38 | } catch (error) { 39 | return { error: JSON.parse(JSON.stringify(error)) }; 40 | } 41 | } 42 | 43 | type Response = { user: User } | { error: any }; 44 | -------------------------------------------------------------------------------- /src/app/using-your-own-ui/users-table/loading.tsx: -------------------------------------------------------------------------------- 1 | export default function Loading() { 2 | return ( 3 |
4 |

Users

5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 14 | 15 | 16 | {Array.from({ length: 3 }, (_, i) => ( 17 | 18 | 19 | 20 | 21 | 24 | 25 | ))} 26 | 27 |
EmailNameVerified 13 |
22 | 23 |
28 | 29 |
30 | ); 31 | } 32 | -------------------------------------------------------------------------------- /src/app/using-your-own-ui/users-table/page.tsx: -------------------------------------------------------------------------------- 1 | import { WorkOS } from '@workos-inc/node'; 2 | import type { User } from '@workos-inc/node'; 3 | import Link from 'next/link'; 4 | import { deleteUser } from './users-table'; 5 | 6 | // This example uses Next.js with React Server Components. 7 | // Because this page is an RSC, the code stays on the server, which allows 8 | // us to use the WorkOS Node SDK without exposing our API key to the client. 9 | // 10 | // If your application is a single page app (SPA), you will need to: 11 | // - create a backend endpoint to return the list of users 12 | // - adapt the code below in your endpoint 13 | // - make an API call to your backend (e.g using `fetch`) 14 | 15 | const workos = new WorkOS(process.env.WORKOS_API_KEY); 16 | 17 | export default async function UsersTable({ 18 | searchParams, 19 | }: { 20 | searchParams: { before?: string; after?: string }; 21 | }) { 22 | const users = await workos.userManagement.listUsers({ limit: 5, ...searchParams }); 23 | const { before, after } = users.listMetadata; 24 | 25 | return ( 26 |
27 |

Users

28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 37 | 38 | 39 | {users.data.map((user) => ( 40 | 41 | 42 | 43 | 44 | 50 | 51 | ))} 52 | 53 |
EmailNameVerified 36 |
{user.email}{formatName(user)}{user.emailVerified ? 'Yes' : 'No'} 45 |
46 | 47 | 48 |
49 |
54 | 55 | 59 |
60 | ); 61 | } 62 | 63 | function formatName(user: User) { 64 | if (user.firstName && user.lastName) { 65 | return `${user.firstName} ${user.lastName}`; 66 | } else { 67 | return user.lastName ?? user.firstName ?? ''; 68 | } 69 | } 70 | -------------------------------------------------------------------------------- /src/app/using-your-own-ui/users-table/users-table.ts: -------------------------------------------------------------------------------- 1 | 'use server'; 2 | 3 | // These are Next.js server actions. 4 | // 5 | // If your application is a single page app (SPA) with a separate backend you will need to: 6 | // - create a backend endpoint to handle each request 7 | // - adapt the code below in each of those endpoints 8 | // 9 | // Please also note that for the sake of simplicity, we return all errors here. 10 | // In a real application, you should pay attention to which errors make it 11 | // to the client for security reasons. 12 | 13 | import { WorkOS } from '@workos-inc/node'; 14 | import { revalidatePath } from 'next/cache'; 15 | 16 | const workos = new WorkOS(process.env.WORKOS_API_KEY); 17 | 18 | export async function deleteUser(formData: FormData) { 19 | try { 20 | await workos.userManagement.deleteUser(String(formData.get('userId'))); 21 | revalidatePath('/users-table'); 22 | } catch (error) { 23 | console.log(error); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/app/using-your-own-ui/verify-email/page.tsx: -------------------------------------------------------------------------------- 1 | 'use client'; 2 | 3 | import { useFormState } from 'react-dom'; 4 | import { sendCode, verifyEmail } from './verify-email'; 5 | 6 | export default function VerifyEmail() { 7 | // This example uses Next.js server actions to call functions on the server side. 8 | // 9 | // If your application is a single page app (SPA), you will need to: 10 | // - handle the form submission in `
` 11 | // - make an API call to your backend (e.g using `fetch`) 12 | const [sendCodeState, sendCodeAction] = useFormState(sendCode, { error: null }); 13 | const [verifyEmailState, verifyEmailAction] = useFormState(verifyEmail, { error: null }); 14 | 15 | if (!('user' in sendCodeState)) { 16 | return ( 17 |
18 |

Verify email

19 | 20 | 21 |
22 | 23 | 32 |
33 | 34 | 35 | 36 | 37 |
{JSON.stringify(sendCodeState, null, 2)}
38 |
39 | ); 40 | } 41 | 42 | return ( 43 |
44 |

Verify email

45 | 46 |
47 |
48 | 49 | 59 |
60 | 61 | 62 | 63 | 64 |
65 | 66 |
{JSON.stringify(verifyEmailState, null, 2)}
67 |
68 | ); 69 | } 70 | -------------------------------------------------------------------------------- /src/app/using-your-own-ui/verify-email/verify-email.ts: -------------------------------------------------------------------------------- 1 | 'use server'; 2 | 3 | // These are Next.js server actions. 4 | // 5 | // If your application is a single page app (SPA) with a separate backend you will need to: 6 | // - create a backend endpoint to handle each request 7 | // - adapt the code below in each of those endpoints 8 | // 9 | // Please also note that for the sake of simplicity, we return all errors here. 10 | // In a real application, you should pay attention to which errors make it 11 | // to the client for security reasons. 12 | 13 | import { WorkOS } from '@workos-inc/node'; 14 | import { revalidatePath } from 'next/cache'; 15 | 16 | const workos = new WorkOS(process.env.WORKOS_API_KEY); 17 | 18 | export async function sendCode(prevState: any, formData: FormData) { 19 | try { 20 | const users = await workos.userManagement.listUsers({ email: String(formData.get('email')) }); 21 | const user = users.data[0]; 22 | return await workos.userManagement.sendVerificationEmail({ userId: user.id }); 23 | } catch (error) { 24 | return { error: JSON.parse(JSON.stringify(error)) }; 25 | } 26 | } 27 | 28 | export async function verifyEmail(prevState: any, formData: FormData) { 29 | try { 30 | const response = await workos.userManagement.verifyEmail({ 31 | userId: String(formData.get('userId')), 32 | code: String(formData.get('code')), 33 | }); 34 | revalidatePath('/users-table'); 35 | return response; 36 | } catch (error) { 37 | return { error: JSON.parse(JSON.stringify(error)) }; 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /src/middleware.ts: -------------------------------------------------------------------------------- 1 | // This file is only used in conjunction with the authkit-nextjs library 2 | import { authkitMiddleware } from '@workos-inc/authkit-nextjs'; 3 | 4 | export default authkitMiddleware({ debug: true }); 5 | 6 | // Match against pages that require auth, e.g.: 7 | export const config = { matcher: ['/using-hosted-authkit/with-nextjs'] }; 8 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "lib": ["dom", "dom.iterable", "esnext"], 5 | "allowJs": true, 6 | "skipLibCheck": true, 7 | "strict": true, 8 | "noEmit": true, 9 | "esModuleInterop": true, 10 | "module": "esnext", 11 | "moduleResolution": "bundler", 12 | "resolveJsonModule": true, 13 | "isolatedModules": true, 14 | "jsx": "preserve", 15 | "incremental": true, 16 | "plugins": [ 17 | { 18 | "name": "next" 19 | } 20 | ], 21 | "paths": { 22 | "@/*": ["./src/*"] 23 | } 24 | }, 25 | "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"], 26 | "exclude": ["node_modules"] 27 | } 28 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # This file is generated by running "yarn install" inside your project. 2 | # Manual changes might be lost - proceed with caution! 3 | 4 | __metadata: 5 | version: 6 6 | cacheKey: 10c0 7 | 8 | "@aashutoshrathi/word-wrap@npm:^1.2.3": 9 | version: 1.2.6 10 | resolution: "@aashutoshrathi/word-wrap@npm:1.2.6" 11 | checksum: 53c2b231a61a46792b39a0d43bc4f4f776bb4542aa57ee04930676802e5501282c2fc8aac14e4cd1f1120ff8b52616b6ff5ab539ad30aa2277d726444b71619f 12 | languageName: node 13 | linkType: hard 14 | 15 | "@babel/runtime@npm:^7.23.2": 16 | version: 7.24.1 17 | resolution: "@babel/runtime@npm:7.24.1" 18 | dependencies: 19 | regenerator-runtime: "npm:^0.14.0" 20 | checksum: 500c6a99ddd84f37c7bc5dbc84777af47b1372b20e879941670451d55484faf18a673c5ebee9ca2b0f36208a729417873b35b1b92e76f811620f6adf7b8cb0f1 21 | languageName: node 22 | linkType: hard 23 | 24 | "@eslint-community/eslint-utils@npm:^4.2.0": 25 | version: 4.4.0 26 | resolution: "@eslint-community/eslint-utils@npm:4.4.0" 27 | dependencies: 28 | eslint-visitor-keys: "npm:^3.3.0" 29 | peerDependencies: 30 | eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 31 | checksum: 7e559c4ce59cd3a06b1b5a517b593912e680a7f981ae7affab0d01d709e99cd5647019be8fafa38c350305bc32f1f7d42c7073edde2ab536c745e365f37b607e 32 | languageName: node 33 | linkType: hard 34 | 35 | "@eslint-community/regexpp@npm:^4.6.1": 36 | version: 4.10.0 37 | resolution: "@eslint-community/regexpp@npm:4.10.0" 38 | checksum: c5f60ef1f1ea7649fa7af0e80a5a79f64b55a8a8fa5086de4727eb4c86c652aedee407a9c143b8995d2c0b2d75c1222bec9ba5d73dbfc1f314550554f0979ef4 39 | languageName: node 40 | linkType: hard 41 | 42 | "@eslint/eslintrc@npm:^2.1.4": 43 | version: 2.1.4 44 | resolution: "@eslint/eslintrc@npm:2.1.4" 45 | dependencies: 46 | ajv: "npm:^6.12.4" 47 | debug: "npm:^4.3.2" 48 | espree: "npm:^9.6.0" 49 | globals: "npm:^13.19.0" 50 | ignore: "npm:^5.2.0" 51 | import-fresh: "npm:^3.2.1" 52 | js-yaml: "npm:^4.1.0" 53 | minimatch: "npm:^3.1.2" 54 | strip-json-comments: "npm:^3.1.1" 55 | checksum: 32f67052b81768ae876c84569ffd562491ec5a5091b0c1e1ca1e0f3c24fb42f804952fdd0a137873bc64303ba368a71ba079a6f691cee25beee9722d94cc8573 56 | languageName: node 57 | linkType: hard 58 | 59 | "@eslint/js@npm:8.57.0": 60 | version: 8.57.0 61 | resolution: "@eslint/js@npm:8.57.0" 62 | checksum: 9a518bb8625ba3350613903a6d8c622352ab0c6557a59fe6ff6178bf882bf57123f9d92aa826ee8ac3ee74b9c6203fe630e9ee00efb03d753962dcf65ee4bd94 63 | languageName: node 64 | linkType: hard 65 | 66 | "@humanwhocodes/config-array@npm:^0.11.14": 67 | version: 0.11.14 68 | resolution: "@humanwhocodes/config-array@npm:0.11.14" 69 | dependencies: 70 | "@humanwhocodes/object-schema": "npm:^2.0.2" 71 | debug: "npm:^4.3.1" 72 | minimatch: "npm:^3.0.5" 73 | checksum: 66f725b4ee5fdd8322c737cb5013e19fac72d4d69c8bf4b7feb192fcb83442b035b92186f8e9497c220e58b2d51a080f28a73f7899bc1ab288c3be172c467541 74 | languageName: node 75 | linkType: hard 76 | 77 | "@humanwhocodes/module-importer@npm:^1.0.1": 78 | version: 1.0.1 79 | resolution: "@humanwhocodes/module-importer@npm:1.0.1" 80 | checksum: 909b69c3b86d482c26b3359db16e46a32e0fb30bd306a3c176b8313b9e7313dba0f37f519de6aa8b0a1921349e505f259d19475e123182416a506d7f87e7f529 81 | languageName: node 82 | linkType: hard 83 | 84 | "@humanwhocodes/object-schema@npm:^2.0.2": 85 | version: 2.0.2 86 | resolution: "@humanwhocodes/object-schema@npm:2.0.2" 87 | checksum: 6fd83dc320231d71c4541d0244051df61f301817e9f9da9fd4cb7e44ec8aacbde5958c1665b0c419401ab935114fdf532a6ad5d4e7294b1af2f347dd91a6983f 88 | languageName: node 89 | linkType: hard 90 | 91 | "@isaacs/cliui@npm:^8.0.2": 92 | version: 8.0.2 93 | resolution: "@isaacs/cliui@npm:8.0.2" 94 | dependencies: 95 | string-width: "npm:^5.1.2" 96 | string-width-cjs: "npm:string-width@^4.2.0" 97 | strip-ansi: "npm:^7.0.1" 98 | strip-ansi-cjs: "npm:strip-ansi@^6.0.1" 99 | wrap-ansi: "npm:^8.1.0" 100 | wrap-ansi-cjs: "npm:wrap-ansi@^7.0.0" 101 | checksum: b1bf42535d49f11dc137f18d5e4e63a28c5569de438a221c369483731e9dac9fb797af554e8bf02b6192d1e5eba6e6402cf93900c3d0ac86391d00d04876789e 102 | languageName: node 103 | linkType: hard 104 | 105 | "@next/env@npm:14.1.4": 106 | version: 14.1.4 107 | resolution: "@next/env@npm:14.1.4" 108 | checksum: 35f5e817bb47993565bc4b2b9961f9697e0f08b05bc008984de7e89c3626f4ef6db314629a52302786b2f386539005666b7ad56b441e45cc79b0a49835f8062b 109 | languageName: node 110 | linkType: hard 111 | 112 | "@next/eslint-plugin-next@npm:14.1.4": 113 | version: 14.1.4 114 | resolution: "@next/eslint-plugin-next@npm:14.1.4" 115 | dependencies: 116 | glob: "npm:10.3.10" 117 | checksum: fb49237153bf528ef3939e1ceae0f658e44abcf0ca155d8042c7961f523e4d9aeba3de18532b633734f3b5524b644e9c3c5187089e0d400896c1c35812bbbdd3 118 | languageName: node 119 | linkType: hard 120 | 121 | "@next/swc-darwin-arm64@npm:14.1.4": 122 | version: 14.1.4 123 | resolution: "@next/swc-darwin-arm64@npm:14.1.4" 124 | conditions: os=darwin & cpu=arm64 125 | languageName: node 126 | linkType: hard 127 | 128 | "@next/swc-darwin-x64@npm:14.1.4": 129 | version: 14.1.4 130 | resolution: "@next/swc-darwin-x64@npm:14.1.4" 131 | conditions: os=darwin & cpu=x64 132 | languageName: node 133 | linkType: hard 134 | 135 | "@next/swc-linux-arm64-gnu@npm:14.1.4": 136 | version: 14.1.4 137 | resolution: "@next/swc-linux-arm64-gnu@npm:14.1.4" 138 | conditions: os=linux & cpu=arm64 & libc=glibc 139 | languageName: node 140 | linkType: hard 141 | 142 | "@next/swc-linux-arm64-musl@npm:14.1.4": 143 | version: 14.1.4 144 | resolution: "@next/swc-linux-arm64-musl@npm:14.1.4" 145 | conditions: os=linux & cpu=arm64 & libc=musl 146 | languageName: node 147 | linkType: hard 148 | 149 | "@next/swc-linux-x64-gnu@npm:14.1.4": 150 | version: 14.1.4 151 | resolution: "@next/swc-linux-x64-gnu@npm:14.1.4" 152 | conditions: os=linux & cpu=x64 & libc=glibc 153 | languageName: node 154 | linkType: hard 155 | 156 | "@next/swc-linux-x64-musl@npm:14.1.4": 157 | version: 14.1.4 158 | resolution: "@next/swc-linux-x64-musl@npm:14.1.4" 159 | conditions: os=linux & cpu=x64 & libc=musl 160 | languageName: node 161 | linkType: hard 162 | 163 | "@next/swc-win32-arm64-msvc@npm:14.1.4": 164 | version: 14.1.4 165 | resolution: "@next/swc-win32-arm64-msvc@npm:14.1.4" 166 | conditions: os=win32 & cpu=arm64 167 | languageName: node 168 | linkType: hard 169 | 170 | "@next/swc-win32-ia32-msvc@npm:14.1.4": 171 | version: 14.1.4 172 | resolution: "@next/swc-win32-ia32-msvc@npm:14.1.4" 173 | conditions: os=win32 & cpu=ia32 174 | languageName: node 175 | linkType: hard 176 | 177 | "@next/swc-win32-x64-msvc@npm:14.1.4": 178 | version: 14.1.4 179 | resolution: "@next/swc-win32-x64-msvc@npm:14.1.4" 180 | conditions: os=win32 & cpu=x64 181 | languageName: node 182 | linkType: hard 183 | 184 | "@nodelib/fs.scandir@npm:2.1.5": 185 | version: 2.1.5 186 | resolution: "@nodelib/fs.scandir@npm:2.1.5" 187 | dependencies: 188 | "@nodelib/fs.stat": "npm:2.0.5" 189 | run-parallel: "npm:^1.1.9" 190 | checksum: 732c3b6d1b1e967440e65f284bd06e5821fedf10a1bea9ed2bb75956ea1f30e08c44d3def9d6a230666574edbaf136f8cfd319c14fd1f87c66e6a44449afb2eb 191 | languageName: node 192 | linkType: hard 193 | 194 | "@nodelib/fs.stat@npm:2.0.5, @nodelib/fs.stat@npm:^2.0.2": 195 | version: 2.0.5 196 | resolution: "@nodelib/fs.stat@npm:2.0.5" 197 | checksum: 88dafe5e3e29a388b07264680dc996c17f4bda48d163a9d4f5c1112979f0ce8ec72aa7116122c350b4e7976bc5566dc3ddb579be1ceaacc727872eb4ed93926d 198 | languageName: node 199 | linkType: hard 200 | 201 | "@nodelib/fs.walk@npm:^1.2.3, @nodelib/fs.walk@npm:^1.2.8": 202 | version: 1.2.8 203 | resolution: "@nodelib/fs.walk@npm:1.2.8" 204 | dependencies: 205 | "@nodelib/fs.scandir": "npm:2.1.5" 206 | fastq: "npm:^1.6.0" 207 | checksum: db9de047c3bb9b51f9335a7bb46f4fcfb6829fb628318c12115fbaf7d369bfce71c15b103d1fc3b464812d936220ee9bc1c8f762d032c9f6be9acc99249095b1 208 | languageName: node 209 | linkType: hard 210 | 211 | "@pkgjs/parseargs@npm:^0.11.0": 212 | version: 0.11.0 213 | resolution: "@pkgjs/parseargs@npm:0.11.0" 214 | checksum: 5bd7576bb1b38a47a7fc7b51ac9f38748e772beebc56200450c4a817d712232b8f1d3ef70532c80840243c657d491cf6a6be1e3a214cff907645819fdc34aadd 215 | languageName: node 216 | linkType: hard 217 | 218 | "@rushstack/eslint-patch@npm:^1.3.3": 219 | version: 1.8.0 220 | resolution: "@rushstack/eslint-patch@npm:1.8.0" 221 | checksum: b8cb64176fe6f0778fccb8294f98acd325625cf75968cf3537c4d51b5d9b7dc62e3cbb82165aa473830555070ff6cc0d01ca64da3d734a5d0ce1bd90b5f24d7e 222 | languageName: node 223 | linkType: hard 224 | 225 | "@swc/helpers@npm:0.5.2": 226 | version: 0.5.2 227 | resolution: "@swc/helpers@npm:0.5.2" 228 | dependencies: 229 | tslib: "npm:^2.4.0" 230 | checksum: b6fa49bcf6c00571d0eb7837b163f8609960d4d77538160585e27ed167361e9776bd6e5eb9646ffac2fb4d43c58df9ca50dab9d96ab097e6591bc82a75fd1164 231 | languageName: node 232 | linkType: hard 233 | 234 | "@types/json5@npm:^0.0.29": 235 | version: 0.0.29 236 | resolution: "@types/json5@npm:0.0.29" 237 | checksum: 6bf5337bc447b706bb5b4431d37686aa2ea6d07cfd6f79cc31de80170d6ff9b1c7384a9c0ccbc45b3f512bae9e9f75c2e12109806a15331dc94e8a8db6dbb4ac 238 | languageName: node 239 | linkType: hard 240 | 241 | "@types/node@npm:^20": 242 | version: 20.11.30 243 | resolution: "@types/node@npm:20.11.30" 244 | dependencies: 245 | undici-types: "npm:~5.26.4" 246 | checksum: 867cfaf969c6d8850d8d7304e7ab739898a50ecb1395b61ff2335644f5f48d7a46fbc4a14cee967aed65ec134b61a746edae70d1f32f11321ccf29165e3bc4e6 247 | languageName: node 248 | linkType: hard 249 | 250 | "@types/prop-types@npm:*": 251 | version: 15.7.12 252 | resolution: "@types/prop-types@npm:15.7.12" 253 | checksum: 1babcc7db6a1177779f8fde0ccc78d64d459906e6ef69a4ed4dd6339c920c2e05b074ee5a92120fe4e9d9f1a01c952f843ebd550bee2332fc2ef81d1706878f8 254 | languageName: node 255 | linkType: hard 256 | 257 | "@types/react-dom@npm:^18": 258 | version: 18.2.22 259 | resolution: "@types/react-dom@npm:18.2.22" 260 | dependencies: 261 | "@types/react": "npm:*" 262 | checksum: cd85b5f402126e44b8c7b573e74737389816abcc931b2b14d8f946ba81cce8637ea490419488fcae842efb1e2f69853bc30522e43fd8359e1007d4d14b8d8146 263 | languageName: node 264 | linkType: hard 265 | 266 | "@types/react@npm:*, @types/react@npm:^18": 267 | version: 18.2.72 268 | resolution: "@types/react@npm:18.2.72" 269 | dependencies: 270 | "@types/prop-types": "npm:*" 271 | csstype: "npm:^3.0.2" 272 | checksum: fe8a17a4067ab9d432ab1034967a8b2a773125e47ae84ee00e428a8b6c48912ab22d244ae6128663b119a38716a642bc5be019fcd2b3b2f4ab3c9b0200a6cc2d 273 | languageName: node 274 | linkType: hard 275 | 276 | "@typescript-eslint/parser@npm:^5.4.2 || ^6.0.0": 277 | version: 6.21.0 278 | resolution: "@typescript-eslint/parser@npm:6.21.0" 279 | dependencies: 280 | "@typescript-eslint/scope-manager": "npm:6.21.0" 281 | "@typescript-eslint/types": "npm:6.21.0" 282 | "@typescript-eslint/typescript-estree": "npm:6.21.0" 283 | "@typescript-eslint/visitor-keys": "npm:6.21.0" 284 | debug: "npm:^4.3.4" 285 | peerDependencies: 286 | eslint: ^7.0.0 || ^8.0.0 287 | peerDependenciesMeta: 288 | typescript: 289 | optional: true 290 | checksum: a8f99820679decd0d115c0af61903fb1de3b1b5bec412dc72b67670bf636de77ab07f2a68ee65d6da7976039bbf636907f9d5ca546db3f0b98a31ffbc225bc7d 291 | languageName: node 292 | linkType: hard 293 | 294 | "@typescript-eslint/scope-manager@npm:6.21.0": 295 | version: 6.21.0 296 | resolution: "@typescript-eslint/scope-manager@npm:6.21.0" 297 | dependencies: 298 | "@typescript-eslint/types": "npm:6.21.0" 299 | "@typescript-eslint/visitor-keys": "npm:6.21.0" 300 | checksum: eaf868938d811cbbea33e97e44ba7050d2b6892202cea6a9622c486b85ab1cf801979edf78036179a8ba4ac26f1dfdf7fcc83a68c1ff66be0b3a8e9a9989b526 301 | languageName: node 302 | linkType: hard 303 | 304 | "@typescript-eslint/types@npm:6.21.0": 305 | version: 6.21.0 306 | resolution: "@typescript-eslint/types@npm:6.21.0" 307 | checksum: 020631d3223bbcff8a0da3efbdf058220a8f48a3de221563996ad1dcc30d6c08dadc3f7608cc08830d21c0d565efd2db19b557b9528921c78aabb605eef2d74d 308 | languageName: node 309 | linkType: hard 310 | 311 | "@typescript-eslint/typescript-estree@npm:6.21.0": 312 | version: 6.21.0 313 | resolution: "@typescript-eslint/typescript-estree@npm:6.21.0" 314 | dependencies: 315 | "@typescript-eslint/types": "npm:6.21.0" 316 | "@typescript-eslint/visitor-keys": "npm:6.21.0" 317 | debug: "npm:^4.3.4" 318 | globby: "npm:^11.1.0" 319 | is-glob: "npm:^4.0.3" 320 | minimatch: "npm:9.0.3" 321 | semver: "npm:^7.5.4" 322 | ts-api-utils: "npm:^1.0.1" 323 | peerDependenciesMeta: 324 | typescript: 325 | optional: true 326 | checksum: af1438c60f080045ebb330155a8c9bb90db345d5069cdd5d01b67de502abb7449d6c75500519df829f913a6b3f490ade3e8215279b6bdc63d0fb0ae61034df5f 327 | languageName: node 328 | linkType: hard 329 | 330 | "@typescript-eslint/visitor-keys@npm:6.21.0": 331 | version: 6.21.0 332 | resolution: "@typescript-eslint/visitor-keys@npm:6.21.0" 333 | dependencies: 334 | "@typescript-eslint/types": "npm:6.21.0" 335 | eslint-visitor-keys: "npm:^3.4.1" 336 | checksum: 7395f69739cfa1cb83c1fb2fad30afa2a814756367302fb4facd5893eff66abc807e8d8f63eba94ed3b0fe0c1c996ac9a1680bcbf0f83717acedc3f2bb724fbf 337 | languageName: node 338 | linkType: hard 339 | 340 | "@ungap/structured-clone@npm:^1.2.0": 341 | version: 1.2.0 342 | resolution: "@ungap/structured-clone@npm:1.2.0" 343 | checksum: 8209c937cb39119f44eb63cf90c0b73e7c754209a6411c707be08e50e29ee81356dca1a848a405c8bdeebfe2f5e4f831ad310ae1689eeef65e7445c090c6657d 344 | languageName: node 345 | linkType: hard 346 | 347 | "@workos-inc/authkit-nextjs@npm:0.4.2": 348 | version: 0.4.2 349 | resolution: "@workos-inc/authkit-nextjs@npm:0.4.2" 350 | dependencies: 351 | "@workos-inc/node": ^6.7.0 352 | iron-session: ^8.0.1 353 | jose: ^5.2.3 354 | peerDependencies: 355 | next: ^13.5.4 || ^14.0.3 356 | react: ^18.0 357 | react-dom: ^18.0 358 | checksum: 8/7a2332919911ce2f1be154689fa45deec49bb6ec4c506278cf28940003ea4c9bb2c766c37b7764597c9cdbc0d6c1f9b52673bb4aae27bbb24c709d3a3970c88f 359 | languageName: node 360 | linkType: hard 361 | 362 | "@workos-inc/node@npm:^6.7.0": 363 | version: 6.7.0 364 | resolution: "@workos-inc/node@npm:6.7.0" 365 | dependencies: 366 | pluralize: "npm:8.0.0" 367 | checksum: ff7b8767319482fe4accfc801de89a2f76916a54275fbf5260814a15ff6bf785e41da4145545c2511a391ebf475f9924d516650991d3465061f8ca2329e10877 368 | languageName: node 369 | linkType: hard 370 | 371 | "acorn-jsx@npm:^5.3.2": 372 | version: 5.3.2 373 | resolution: "acorn-jsx@npm:5.3.2" 374 | peerDependencies: 375 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 376 | checksum: 4c54868fbef3b8d58927d5e33f0a4de35f59012fe7b12cf9dfbb345fb8f46607709e1c4431be869a23fb63c151033d84c4198fa9f79385cec34fcb1dd53974c1 377 | languageName: node 378 | linkType: hard 379 | 380 | "acorn@npm:^8.9.0": 381 | version: 8.11.3 382 | resolution: "acorn@npm:8.11.3" 383 | bin: 384 | acorn: bin/acorn 385 | checksum: 3ff155f8812e4a746fee8ecff1f227d527c4c45655bb1fad6347c3cb58e46190598217551b1500f18542d2bbe5c87120cb6927f5a074a59166fbdd9468f0a299 386 | languageName: node 387 | linkType: hard 388 | 389 | "ajv@npm:^6.12.4": 390 | version: 6.12.6 391 | resolution: "ajv@npm:6.12.6" 392 | dependencies: 393 | fast-deep-equal: "npm:^3.1.1" 394 | fast-json-stable-stringify: "npm:^2.0.0" 395 | json-schema-traverse: "npm:^0.4.1" 396 | uri-js: "npm:^4.2.2" 397 | checksum: 41e23642cbe545889245b9d2a45854ebba51cda6c778ebced9649420d9205f2efb39cb43dbc41e358409223b1ea43303ae4839db682c848b891e4811da1a5a71 398 | languageName: node 399 | linkType: hard 400 | 401 | "ansi-regex@npm:^5.0.1": 402 | version: 5.0.1 403 | resolution: "ansi-regex@npm:5.0.1" 404 | checksum: 9a64bb8627b434ba9327b60c027742e5d17ac69277960d041898596271d992d4d52ba7267a63ca10232e29f6107fc8a835f6ce8d719b88c5f8493f8254813737 405 | languageName: node 406 | linkType: hard 407 | 408 | "ansi-regex@npm:^6.0.1": 409 | version: 6.0.1 410 | resolution: "ansi-regex@npm:6.0.1" 411 | checksum: cbe16dbd2c6b2735d1df7976a7070dd277326434f0212f43abf6d87674095d247968209babdaad31bb00882fa68807256ba9be340eec2f1004de14ca75f52a08 412 | languageName: node 413 | linkType: hard 414 | 415 | "ansi-styles@npm:^4.0.0, ansi-styles@npm:^4.1.0": 416 | version: 4.3.0 417 | resolution: "ansi-styles@npm:4.3.0" 418 | dependencies: 419 | color-convert: "npm:^2.0.1" 420 | checksum: 895a23929da416f2bd3de7e9cb4eabd340949328ab85ddd6e484a637d8f6820d485f53933446f5291c3b760cbc488beb8e88573dd0f9c7daf83dccc8fe81b041 421 | languageName: node 422 | linkType: hard 423 | 424 | "ansi-styles@npm:^6.1.0": 425 | version: 6.2.1 426 | resolution: "ansi-styles@npm:6.2.1" 427 | checksum: 5d1ec38c123984bcedd996eac680d548f31828bd679a66db2bdf11844634dde55fec3efa9c6bb1d89056a5e79c1ac540c4c784d592ea1d25028a92227d2f2d5c 428 | languageName: node 429 | linkType: hard 430 | 431 | "argparse@npm:^2.0.1": 432 | version: 2.0.1 433 | resolution: "argparse@npm:2.0.1" 434 | checksum: c5640c2d89045371c7cedd6a70212a04e360fd34d6edeae32f6952c63949e3525ea77dbec0289d8213a99bbaeab5abfa860b5c12cf88a2e6cf8106e90dd27a7e 435 | languageName: node 436 | linkType: hard 437 | 438 | "aria-query@npm:^5.3.0": 439 | version: 5.3.0 440 | resolution: "aria-query@npm:5.3.0" 441 | dependencies: 442 | dequal: "npm:^2.0.3" 443 | checksum: 2bff0d4eba5852a9dd578ecf47eaef0e82cc52569b48469b0aac2db5145db0b17b7a58d9e01237706d1e14b7a1b0ac9b78e9c97027ad97679dd8f91b85da1469 444 | languageName: node 445 | linkType: hard 446 | 447 | "array-buffer-byte-length@npm:^1.0.1": 448 | version: 1.0.1 449 | resolution: "array-buffer-byte-length@npm:1.0.1" 450 | dependencies: 451 | call-bind: "npm:^1.0.5" 452 | is-array-buffer: "npm:^3.0.4" 453 | checksum: f5cdf54527cd18a3d2852ddf73df79efec03829e7373a8322ef5df2b4ef546fb365c19c71d6b42d641cb6bfe0f1a2f19bc0ece5b533295f86d7c3d522f228917 454 | languageName: node 455 | linkType: hard 456 | 457 | "array-includes@npm:^3.1.6, array-includes@npm:^3.1.7": 458 | version: 3.1.8 459 | resolution: "array-includes@npm:3.1.8" 460 | dependencies: 461 | call-bind: "npm:^1.0.7" 462 | define-properties: "npm:^1.2.1" 463 | es-abstract: "npm:^1.23.2" 464 | es-object-atoms: "npm:^1.0.0" 465 | get-intrinsic: "npm:^1.2.4" 466 | is-string: "npm:^1.0.7" 467 | checksum: 5b1004d203e85873b96ddc493f090c9672fd6c80d7a60b798da8a14bff8a670ff95db5aafc9abc14a211943f05220dacf8ea17638ae0af1a6a47b8c0b48ce370 468 | languageName: node 469 | linkType: hard 470 | 471 | "array-union@npm:^2.1.0": 472 | version: 2.1.0 473 | resolution: "array-union@npm:2.1.0" 474 | checksum: 429897e68110374f39b771ec47a7161fc6a8fc33e196857c0a396dc75df0b5f65e4d046674db764330b6bb66b39ef48dd7c53b6a2ee75cfb0681e0c1a7033962 475 | languageName: node 476 | linkType: hard 477 | 478 | "array.prototype.findlast@npm:^1.2.4": 479 | version: 1.2.5 480 | resolution: "array.prototype.findlast@npm:1.2.5" 481 | dependencies: 482 | call-bind: "npm:^1.0.7" 483 | define-properties: "npm:^1.2.1" 484 | es-abstract: "npm:^1.23.2" 485 | es-errors: "npm:^1.3.0" 486 | es-object-atoms: "npm:^1.0.0" 487 | es-shim-unscopables: "npm:^1.0.2" 488 | checksum: ddc952b829145ab45411b9d6adcb51a8c17c76bf89c9dd64b52d5dffa65d033da8c076ed2e17091779e83bc892b9848188d7b4b33453c5565e65a92863cb2775 489 | languageName: node 490 | linkType: hard 491 | 492 | "array.prototype.findlastindex@npm:^1.2.3": 493 | version: 1.2.5 494 | resolution: "array.prototype.findlastindex@npm:1.2.5" 495 | dependencies: 496 | call-bind: "npm:^1.0.7" 497 | define-properties: "npm:^1.2.1" 498 | es-abstract: "npm:^1.23.2" 499 | es-errors: "npm:^1.3.0" 500 | es-object-atoms: "npm:^1.0.0" 501 | es-shim-unscopables: "npm:^1.0.2" 502 | checksum: 962189487728b034f3134802b421b5f39e42ee2356d13b42d2ddb0e52057ffdcc170b9524867f4f0611a6f638f4c19b31e14606e8bcbda67799e26685b195aa3 503 | languageName: node 504 | linkType: hard 505 | 506 | "array.prototype.flat@npm:^1.3.1, array.prototype.flat@npm:^1.3.2": 507 | version: 1.3.2 508 | resolution: "array.prototype.flat@npm:1.3.2" 509 | dependencies: 510 | call-bind: "npm:^1.0.2" 511 | define-properties: "npm:^1.2.0" 512 | es-abstract: "npm:^1.22.1" 513 | es-shim-unscopables: "npm:^1.0.0" 514 | checksum: a578ed836a786efbb6c2db0899ae80781b476200617f65a44846cb1ed8bd8b24c8821b83703375d8af639c689497b7b07277060024b9919db94ac3e10dc8a49b 515 | languageName: node 516 | linkType: hard 517 | 518 | "array.prototype.flatmap@npm:^1.3.2": 519 | version: 1.3.2 520 | resolution: "array.prototype.flatmap@npm:1.3.2" 521 | dependencies: 522 | call-bind: "npm:^1.0.2" 523 | define-properties: "npm:^1.2.0" 524 | es-abstract: "npm:^1.22.1" 525 | es-shim-unscopables: "npm:^1.0.0" 526 | checksum: 67b3f1d602bb73713265145853128b1ad77cc0f9b833c7e1e056b323fbeac41a4ff1c9c99c7b9445903caea924d9ca2450578d9011913191aa88cc3c3a4b54f4 527 | languageName: node 528 | linkType: hard 529 | 530 | "array.prototype.toreversed@npm:^1.1.2": 531 | version: 1.1.2 532 | resolution: "array.prototype.toreversed@npm:1.1.2" 533 | dependencies: 534 | call-bind: "npm:^1.0.2" 535 | define-properties: "npm:^1.2.0" 536 | es-abstract: "npm:^1.22.1" 537 | es-shim-unscopables: "npm:^1.0.0" 538 | checksum: 2b7627ea85eae1e80ecce665a500cc0f3355ac83ee4a1a727562c7c2a1d5f1c0b4dd7b65c468ec6867207e452ba01256910a2c0b41486bfdd11acf875a7a3435 539 | languageName: node 540 | linkType: hard 541 | 542 | "array.prototype.tosorted@npm:^1.1.3": 543 | version: 1.1.3 544 | resolution: "array.prototype.tosorted@npm:1.1.3" 545 | dependencies: 546 | call-bind: "npm:^1.0.5" 547 | define-properties: "npm:^1.2.1" 548 | es-abstract: "npm:^1.22.3" 549 | es-errors: "npm:^1.1.0" 550 | es-shim-unscopables: "npm:^1.0.2" 551 | checksum: a27e1ca51168ecacf6042901f5ef021e43c8fa04b6c6b6f2a30bac3645cd2b519cecbe0bc45db1b85b843f64dc3207f0268f700b4b9fbdec076d12d432cf0865 552 | languageName: node 553 | linkType: hard 554 | 555 | "arraybuffer.prototype.slice@npm:^1.0.3": 556 | version: 1.0.3 557 | resolution: "arraybuffer.prototype.slice@npm:1.0.3" 558 | dependencies: 559 | array-buffer-byte-length: "npm:^1.0.1" 560 | call-bind: "npm:^1.0.5" 561 | define-properties: "npm:^1.2.1" 562 | es-abstract: "npm:^1.22.3" 563 | es-errors: "npm:^1.2.1" 564 | get-intrinsic: "npm:^1.2.3" 565 | is-array-buffer: "npm:^3.0.4" 566 | is-shared-array-buffer: "npm:^1.0.2" 567 | checksum: d32754045bcb2294ade881d45140a5e52bda2321b9e98fa514797b7f0d252c4c5ab0d1edb34112652c62fa6a9398def568da63a4d7544672229afea283358c36 568 | languageName: node 569 | linkType: hard 570 | 571 | "ast-types-flow@npm:^0.0.8": 572 | version: 0.0.8 573 | resolution: "ast-types-flow@npm:0.0.8" 574 | checksum: f2a0ba8055353b743c41431974521e5e852a9824870cd6fce2db0e538ac7bf4da406bbd018d109af29ff3f8f0993f6a730c9eddbd0abd031fbcb29ca75c1014e 575 | languageName: node 576 | linkType: hard 577 | 578 | "authkit@workspace:.": 579 | version: 0.0.0-use.local 580 | resolution: "authkit@workspace:." 581 | dependencies: 582 | "@types/node": ^20 583 | "@types/react": ^18 584 | "@types/react-dom": ^18 585 | "@workos-inc/authkit-nextjs": 0.4.2 586 | "@workos-inc/node": ^6.7.0 587 | eslint: ^8 588 | eslint-config-next: 14.1.4 589 | jose: ^5.2.3 590 | next: 14.1.4 591 | react: ^18 592 | react-dom: ^18 593 | typescript: ^5 594 | languageName: unknown 595 | linkType: soft 596 | 597 | "available-typed-arrays@npm:^1.0.7": 598 | version: 1.0.7 599 | resolution: "available-typed-arrays@npm:1.0.7" 600 | dependencies: 601 | possible-typed-array-names: "npm:^1.0.0" 602 | checksum: d07226ef4f87daa01bd0fe80f8f310982e345f372926da2e5296aecc25c41cab440916bbaa4c5e1034b453af3392f67df5961124e4b586df1e99793a1374bdb2 603 | languageName: node 604 | linkType: hard 605 | 606 | "axe-core@npm:=4.7.0": 607 | version: 4.7.0 608 | resolution: "axe-core@npm:4.7.0" 609 | checksum: 89ac5712b5932ac7d23398b4cb5ba081c394a086e343acc68ba49c83472706e18e0799804e8388c779dcdacc465377deb29f2714241d3fbb389cf3a6b275c9ba 610 | languageName: node 611 | linkType: hard 612 | 613 | "axobject-query@npm:^3.2.1": 614 | version: 3.2.1 615 | resolution: "axobject-query@npm:3.2.1" 616 | dependencies: 617 | dequal: "npm:^2.0.3" 618 | checksum: f7debc2012e456139b57d888c223f6d3cb4b61eb104164a85e3d346273dd6ef0bc9a04b6660ca9407704a14a8e05fa6b6eb9d55f44f348c7210de7ffb350c3a7 619 | languageName: node 620 | linkType: hard 621 | 622 | "balanced-match@npm:^1.0.0": 623 | version: 1.0.2 624 | resolution: "balanced-match@npm:1.0.2" 625 | checksum: 9308baf0a7e4838a82bbfd11e01b1cb0f0cf2893bc1676c27c2a8c0e70cbae1c59120c3268517a8ae7fb6376b4639ef81ca22582611dbee4ed28df945134aaee 626 | languageName: node 627 | linkType: hard 628 | 629 | "brace-expansion@npm:^1.1.7": 630 | version: 1.1.11 631 | resolution: "brace-expansion@npm:1.1.11" 632 | dependencies: 633 | balanced-match: "npm:^1.0.0" 634 | concat-map: "npm:0.0.1" 635 | checksum: 695a56cd058096a7cb71fb09d9d6a7070113c7be516699ed361317aca2ec169f618e28b8af352e02ab4233fb54eb0168460a40dc320bab0034b36ab59aaad668 636 | languageName: node 637 | linkType: hard 638 | 639 | "brace-expansion@npm:^2.0.1": 640 | version: 2.0.1 641 | resolution: "brace-expansion@npm:2.0.1" 642 | dependencies: 643 | balanced-match: "npm:^1.0.0" 644 | checksum: b358f2fe060e2d7a87aa015979ecea07f3c37d4018f8d6deb5bd4c229ad3a0384fe6029bb76cd8be63c81e516ee52d1a0673edbe2023d53a5191732ae3c3e49f 645 | languageName: node 646 | linkType: hard 647 | 648 | "braces@npm:^3.0.2": 649 | version: 3.0.2 650 | resolution: "braces@npm:3.0.2" 651 | dependencies: 652 | fill-range: "npm:^7.0.1" 653 | checksum: 321b4d675791479293264019156ca322163f02dc06e3c4cab33bb15cd43d80b51efef69b0930cfde3acd63d126ebca24cd0544fa6f261e093a0fb41ab9dda381 654 | languageName: node 655 | linkType: hard 656 | 657 | "busboy@npm:1.6.0": 658 | version: 1.6.0 659 | resolution: "busboy@npm:1.6.0" 660 | dependencies: 661 | streamsearch: "npm:^1.1.0" 662 | checksum: fa7e836a2b82699b6e074393428b91ae579d4f9e21f5ac468e1b459a244341d722d2d22d10920cdd849743dbece6dca11d72de939fb75a7448825cf2babfba1f 663 | languageName: node 664 | linkType: hard 665 | 666 | "call-bind@npm:^1.0.2, call-bind@npm:^1.0.5, call-bind@npm:^1.0.6, call-bind@npm:^1.0.7": 667 | version: 1.0.7 668 | resolution: "call-bind@npm:1.0.7" 669 | dependencies: 670 | es-define-property: "npm:^1.0.0" 671 | es-errors: "npm:^1.3.0" 672 | function-bind: "npm:^1.1.2" 673 | get-intrinsic: "npm:^1.2.4" 674 | set-function-length: "npm:^1.2.1" 675 | checksum: a3ded2e423b8e2a265983dba81c27e125b48eefb2655e7dfab6be597088da3d47c47976c24bc51b8fd9af1061f8f87b4ab78a314f3c77784b2ae2ba535ad8b8d 676 | languageName: node 677 | linkType: hard 678 | 679 | "callsites@npm:^3.0.0": 680 | version: 3.1.0 681 | resolution: "callsites@npm:3.1.0" 682 | checksum: fff92277400eb06c3079f9e74f3af120db9f8ea03bad0e84d9aede54bbe2d44a56cccb5f6cf12211f93f52306df87077ecec5b712794c5a9b5dac6d615a3f301 683 | languageName: node 684 | linkType: hard 685 | 686 | "caniuse-lite@npm:^1.0.30001579": 687 | version: 1.0.30001600 688 | resolution: "caniuse-lite@npm:1.0.30001600" 689 | checksum: b4f764db5d4f8cb3eb2827a170a20e6b2f4b8c3d80169efcf56bf3d6b8b3e6dd1c740141f0d0b10b2233f49ee8b496e2d1e044a36c54750a106bad2f6477f2db 690 | languageName: node 691 | linkType: hard 692 | 693 | "chalk@npm:^4.0.0": 694 | version: 4.1.2 695 | resolution: "chalk@npm:4.1.2" 696 | dependencies: 697 | ansi-styles: "npm:^4.1.0" 698 | supports-color: "npm:^7.1.0" 699 | checksum: 4a3fef5cc34975c898ffe77141450f679721df9dde00f6c304353fa9c8b571929123b26a0e4617bde5018977eb655b31970c297b91b63ee83bb82aeb04666880 700 | languageName: node 701 | linkType: hard 702 | 703 | "client-only@npm:0.0.1": 704 | version: 0.0.1 705 | resolution: "client-only@npm:0.0.1" 706 | checksum: 9d6cfd0c19e1c96a434605added99dff48482152af791ec4172fb912a71cff9027ff174efd8cdb2160cc7f377543e0537ffc462d4f279bc4701de3f2a3c4b358 707 | languageName: node 708 | linkType: hard 709 | 710 | "color-convert@npm:^2.0.1": 711 | version: 2.0.1 712 | resolution: "color-convert@npm:2.0.1" 713 | dependencies: 714 | color-name: "npm:~1.1.4" 715 | checksum: 37e1150172f2e311fe1b2df62c6293a342ee7380da7b9cfdba67ea539909afbd74da27033208d01d6d5cfc65ee7868a22e18d7e7648e004425441c0f8a15a7d7 716 | languageName: node 717 | linkType: hard 718 | 719 | "color-name@npm:~1.1.4": 720 | version: 1.1.4 721 | resolution: "color-name@npm:1.1.4" 722 | checksum: a1a3f914156960902f46f7f56bc62effc6c94e84b2cae157a526b1c1f74b677a47ec602bf68a61abfa2b42d15b7c5651c6dbe72a43af720bc588dff885b10f95 723 | languageName: node 724 | linkType: hard 725 | 726 | "concat-map@npm:0.0.1": 727 | version: 0.0.1 728 | resolution: "concat-map@npm:0.0.1" 729 | checksum: c996b1cfdf95b6c90fee4dae37e332c8b6eb7d106430c17d538034c0ad9a1630cb194d2ab37293b1bdd4d779494beee7786d586a50bd9376fd6f7bcc2bd4c98f 730 | languageName: node 731 | linkType: hard 732 | 733 | "cookie@npm:0.6.0": 734 | version: 0.6.0 735 | resolution: "cookie@npm:0.6.0" 736 | checksum: f2318b31af7a31b4ddb4a678d024514df5e705f9be5909a192d7f116cfb6d45cbacf96a473fa733faa95050e7cff26e7832bb3ef94751592f1387b71c8956686 737 | languageName: node 738 | linkType: hard 739 | 740 | "cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.2": 741 | version: 7.0.3 742 | resolution: "cross-spawn@npm:7.0.3" 743 | dependencies: 744 | path-key: "npm:^3.1.0" 745 | shebang-command: "npm:^2.0.0" 746 | which: "npm:^2.0.1" 747 | checksum: 5738c312387081c98d69c98e105b6327b069197f864a60593245d64c8089c8a0a744e16349281210d56835bb9274130d825a78b2ad6853ca13cfbeffc0c31750 748 | languageName: node 749 | linkType: hard 750 | 751 | "csstype@npm:^3.0.2": 752 | version: 3.1.3 753 | resolution: "csstype@npm:3.1.3" 754 | checksum: 80c089d6f7e0c5b2bd83cf0539ab41474198579584fa10d86d0cafe0642202343cbc119e076a0b1aece191989477081415d66c9fefbf3c957fc2fc4b7009f248 755 | languageName: node 756 | linkType: hard 757 | 758 | "damerau-levenshtein@npm:^1.0.8": 759 | version: 1.0.8 760 | resolution: "damerau-levenshtein@npm:1.0.8" 761 | checksum: 4c2647e0f42acaee7d068756c1d396e296c3556f9c8314bac1ac63ffb236217ef0e7e58602b18bb2173deec7ec8e0cac8e27cccf8f5526666b4ff11a13ad54a3 762 | languageName: node 763 | linkType: hard 764 | 765 | "data-view-buffer@npm:^1.0.1": 766 | version: 1.0.1 767 | resolution: "data-view-buffer@npm:1.0.1" 768 | dependencies: 769 | call-bind: "npm:^1.0.6" 770 | es-errors: "npm:^1.3.0" 771 | is-data-view: "npm:^1.0.1" 772 | checksum: 8984119e59dbed906a11fcfb417d7d861936f16697a0e7216fe2c6c810f6b5e8f4a5281e73f2c28e8e9259027190ac4a33e2a65fdd7fa86ac06b76e838918583 773 | languageName: node 774 | linkType: hard 775 | 776 | "data-view-byte-length@npm:^1.0.1": 777 | version: 1.0.1 778 | resolution: "data-view-byte-length@npm:1.0.1" 779 | dependencies: 780 | call-bind: "npm:^1.0.7" 781 | es-errors: "npm:^1.3.0" 782 | is-data-view: "npm:^1.0.1" 783 | checksum: b7d9e48a0cf5aefed9ab7d123559917b2d7e0d65531f43b2fd95b9d3a6b46042dd3fca597c42bba384e66b70d7ad66ff23932f8367b241f53d93af42cfe04ec2 784 | languageName: node 785 | linkType: hard 786 | 787 | "data-view-byte-offset@npm:^1.0.0": 788 | version: 1.0.0 789 | resolution: "data-view-byte-offset@npm:1.0.0" 790 | dependencies: 791 | call-bind: "npm:^1.0.6" 792 | es-errors: "npm:^1.3.0" 793 | is-data-view: "npm:^1.0.1" 794 | checksum: 21b0d2e53fd6e20cc4257c873bf6d36d77bd6185624b84076c0a1ddaa757b49aaf076254006341d35568e89f52eecd1ccb1a502cfb620f2beca04f48a6a62a8f 795 | languageName: node 796 | linkType: hard 797 | 798 | "debug@npm:^3.2.7": 799 | version: 3.2.7 800 | resolution: "debug@npm:3.2.7" 801 | dependencies: 802 | ms: "npm:^2.1.1" 803 | checksum: 37d96ae42cbc71c14844d2ae3ba55adf462ec89fd3a999459dec3833944cd999af6007ff29c780f1c61153bcaaf2c842d1e4ce1ec621e4fc4923244942e4a02a 804 | languageName: node 805 | linkType: hard 806 | 807 | "debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.4": 808 | version: 4.3.4 809 | resolution: "debug@npm:4.3.4" 810 | dependencies: 811 | ms: "npm:2.1.2" 812 | peerDependenciesMeta: 813 | supports-color: 814 | optional: true 815 | checksum: cedbec45298dd5c501d01b92b119cd3faebe5438c3917ff11ae1bff86a6c722930ac9c8659792824013168ba6db7c4668225d845c633fbdafbbf902a6389f736 816 | languageName: node 817 | linkType: hard 818 | 819 | "deep-is@npm:^0.1.3": 820 | version: 0.1.4 821 | resolution: "deep-is@npm:0.1.4" 822 | checksum: 7f0ee496e0dff14a573dc6127f14c95061b448b87b995fc96c017ce0a1e66af1675e73f1d6064407975bc4ea6ab679497a29fff7b5b9c4e99cb10797c1ad0b4c 823 | languageName: node 824 | linkType: hard 825 | 826 | "define-data-property@npm:^1.0.1, define-data-property@npm:^1.1.4": 827 | version: 1.1.4 828 | resolution: "define-data-property@npm:1.1.4" 829 | dependencies: 830 | es-define-property: "npm:^1.0.0" 831 | es-errors: "npm:^1.3.0" 832 | gopd: "npm:^1.0.1" 833 | checksum: dea0606d1483eb9db8d930d4eac62ca0fa16738b0b3e07046cddfacf7d8c868bbe13fa0cb263eb91c7d0d527960dc3f2f2471a69ed7816210307f6744fe62e37 834 | languageName: node 835 | linkType: hard 836 | 837 | "define-properties@npm:^1.1.3, define-properties@npm:^1.2.0, define-properties@npm:^1.2.1": 838 | version: 1.2.1 839 | resolution: "define-properties@npm:1.2.1" 840 | dependencies: 841 | define-data-property: "npm:^1.0.1" 842 | has-property-descriptors: "npm:^1.0.0" 843 | object-keys: "npm:^1.1.1" 844 | checksum: 88a152319ffe1396ccc6ded510a3896e77efac7a1bfbaa174a7b00414a1747377e0bb525d303794a47cf30e805c2ec84e575758512c6e44a993076d29fd4e6c3 845 | languageName: node 846 | linkType: hard 847 | 848 | "dequal@npm:^2.0.3": 849 | version: 2.0.3 850 | resolution: "dequal@npm:2.0.3" 851 | checksum: f98860cdf58b64991ae10205137c0e97d384c3a4edc7f807603887b7c4b850af1224a33d88012009f150861cbee4fa2d322c4cc04b9313bee312e47f6ecaa888 852 | languageName: node 853 | linkType: hard 854 | 855 | "dir-glob@npm:^3.0.1": 856 | version: 3.0.1 857 | resolution: "dir-glob@npm:3.0.1" 858 | dependencies: 859 | path-type: "npm:^4.0.0" 860 | checksum: dcac00920a4d503e38bb64001acb19df4efc14536ada475725e12f52c16777afdee4db827f55f13a908ee7efc0cb282e2e3dbaeeb98c0993dd93d1802d3bf00c 861 | languageName: node 862 | linkType: hard 863 | 864 | "doctrine@npm:^2.1.0": 865 | version: 2.1.0 866 | resolution: "doctrine@npm:2.1.0" 867 | dependencies: 868 | esutils: "npm:^2.0.2" 869 | checksum: b6416aaff1f380bf56c3b552f31fdf7a69b45689368deca72d28636f41c16bb28ec3ebc40ace97db4c1afc0ceeb8120e8492fe0046841c94c2933b2e30a7d5ac 870 | languageName: node 871 | linkType: hard 872 | 873 | "doctrine@npm:^3.0.0": 874 | version: 3.0.0 875 | resolution: "doctrine@npm:3.0.0" 876 | dependencies: 877 | esutils: "npm:^2.0.2" 878 | checksum: c96bdccabe9d62ab6fea9399fdff04a66e6563c1d6fb3a3a063e8d53c3bb136ba63e84250bbf63d00086a769ad53aef92d2bd483f03f837fc97b71cbee6b2520 879 | languageName: node 880 | linkType: hard 881 | 882 | "eastasianwidth@npm:^0.2.0": 883 | version: 0.2.0 884 | resolution: "eastasianwidth@npm:0.2.0" 885 | checksum: 26f364ebcdb6395f95124fda411f63137a4bfb5d3a06453f7f23dfe52502905bd84e0488172e0f9ec295fdc45f05c23d5d91baf16bd26f0fe9acd777a188dc39 886 | languageName: node 887 | linkType: hard 888 | 889 | "emoji-regex@npm:^8.0.0": 890 | version: 8.0.0 891 | resolution: "emoji-regex@npm:8.0.0" 892 | checksum: b6053ad39951c4cf338f9092d7bfba448cdfd46fe6a2a034700b149ac9ffbc137e361cbd3c442297f86bed2e5f7576c1b54cc0a6bf8ef5106cc62f496af35010 893 | languageName: node 894 | linkType: hard 895 | 896 | "emoji-regex@npm:^9.2.2": 897 | version: 9.2.2 898 | resolution: "emoji-regex@npm:9.2.2" 899 | checksum: af014e759a72064cf66e6e694a7fc6b0ed3d8db680427b021a89727689671cefe9d04151b2cad51dbaf85d5ba790d061cd167f1cf32eb7b281f6368b3c181639 900 | languageName: node 901 | linkType: hard 902 | 903 | "enhanced-resolve@npm:^5.12.0": 904 | version: 5.16.0 905 | resolution: "enhanced-resolve@npm:5.16.0" 906 | dependencies: 907 | graceful-fs: "npm:^4.2.4" 908 | tapable: "npm:^2.2.0" 909 | checksum: dd69669cbb638ccacefd03e04d5e195ee6a99b7f5f8012f86d2df7781834de357923e06064ea621137c4ce0b37cc12b872b4e6d1ac6ab15fe98e7f1dfbbb08c4 910 | languageName: node 911 | linkType: hard 912 | 913 | "es-abstract@npm:^1.22.1, es-abstract@npm:^1.22.3, es-abstract@npm:^1.23.0, es-abstract@npm:^1.23.1, es-abstract@npm:^1.23.2": 914 | version: 1.23.2 915 | resolution: "es-abstract@npm:1.23.2" 916 | dependencies: 917 | array-buffer-byte-length: "npm:^1.0.1" 918 | arraybuffer.prototype.slice: "npm:^1.0.3" 919 | available-typed-arrays: "npm:^1.0.7" 920 | call-bind: "npm:^1.0.7" 921 | data-view-buffer: "npm:^1.0.1" 922 | data-view-byte-length: "npm:^1.0.1" 923 | data-view-byte-offset: "npm:^1.0.0" 924 | es-define-property: "npm:^1.0.0" 925 | es-errors: "npm:^1.3.0" 926 | es-object-atoms: "npm:^1.0.0" 927 | es-set-tostringtag: "npm:^2.0.3" 928 | es-to-primitive: "npm:^1.2.1" 929 | function.prototype.name: "npm:^1.1.6" 930 | get-intrinsic: "npm:^1.2.4" 931 | get-symbol-description: "npm:^1.0.2" 932 | globalthis: "npm:^1.0.3" 933 | gopd: "npm:^1.0.1" 934 | has-property-descriptors: "npm:^1.0.2" 935 | has-proto: "npm:^1.0.3" 936 | has-symbols: "npm:^1.0.3" 937 | hasown: "npm:^2.0.2" 938 | internal-slot: "npm:^1.0.7" 939 | is-array-buffer: "npm:^3.0.4" 940 | is-callable: "npm:^1.2.7" 941 | is-data-view: "npm:^1.0.1" 942 | is-negative-zero: "npm:^2.0.3" 943 | is-regex: "npm:^1.1.4" 944 | is-shared-array-buffer: "npm:^1.0.3" 945 | is-string: "npm:^1.0.7" 946 | is-typed-array: "npm:^1.1.13" 947 | is-weakref: "npm:^1.0.2" 948 | object-inspect: "npm:^1.13.1" 949 | object-keys: "npm:^1.1.1" 950 | object.assign: "npm:^4.1.5" 951 | regexp.prototype.flags: "npm:^1.5.2" 952 | safe-array-concat: "npm:^1.1.2" 953 | safe-regex-test: "npm:^1.0.3" 954 | string.prototype.trim: "npm:^1.2.9" 955 | string.prototype.trimend: "npm:^1.0.8" 956 | string.prototype.trimstart: "npm:^1.0.7" 957 | typed-array-buffer: "npm:^1.0.2" 958 | typed-array-byte-length: "npm:^1.0.1" 959 | typed-array-byte-offset: "npm:^1.0.2" 960 | typed-array-length: "npm:^1.0.5" 961 | unbox-primitive: "npm:^1.0.2" 962 | which-typed-array: "npm:^1.1.15" 963 | checksum: 1262ebb7cdb79f255fc7d1f4505c0de2d88d117a0b21d0c984c28a0126efa717ef011f07d502353987cbade39f12c0a5ae59aef0b1231a51ce1b991e4e87c8bb 964 | languageName: node 965 | linkType: hard 966 | 967 | "es-define-property@npm:^1.0.0": 968 | version: 1.0.0 969 | resolution: "es-define-property@npm:1.0.0" 970 | dependencies: 971 | get-intrinsic: "npm:^1.2.4" 972 | checksum: 6bf3191feb7ea2ebda48b577f69bdfac7a2b3c9bcf97307f55fd6ef1bbca0b49f0c219a935aca506c993d8c5d8bddd937766cb760cd5e5a1071351f2df9f9aa4 973 | languageName: node 974 | linkType: hard 975 | 976 | "es-errors@npm:^1.1.0, es-errors@npm:^1.2.1, es-errors@npm:^1.3.0": 977 | version: 1.3.0 978 | resolution: "es-errors@npm:1.3.0" 979 | checksum: 0a61325670072f98d8ae3b914edab3559b6caa980f08054a3b872052640d91da01d38df55df797fcc916389d77fc92b8d5906cf028f4db46d7e3003abecbca85 980 | languageName: node 981 | linkType: hard 982 | 983 | "es-iterator-helpers@npm:^1.0.15, es-iterator-helpers@npm:^1.0.17": 984 | version: 1.0.18 985 | resolution: "es-iterator-helpers@npm:1.0.18" 986 | dependencies: 987 | call-bind: "npm:^1.0.7" 988 | define-properties: "npm:^1.2.1" 989 | es-abstract: "npm:^1.23.0" 990 | es-errors: "npm:^1.3.0" 991 | es-set-tostringtag: "npm:^2.0.3" 992 | function-bind: "npm:^1.1.2" 993 | get-intrinsic: "npm:^1.2.4" 994 | globalthis: "npm:^1.0.3" 995 | has-property-descriptors: "npm:^1.0.2" 996 | has-proto: "npm:^1.0.3" 997 | has-symbols: "npm:^1.0.3" 998 | internal-slot: "npm:^1.0.7" 999 | iterator.prototype: "npm:^1.1.2" 1000 | safe-array-concat: "npm:^1.1.2" 1001 | checksum: 93be402e01fa3d8bf62fcadd2fb3055126ffcfe8846911b10b85918ef46775252696c84e6191ec8125bedb61e92242ad1a54a86118436ba19814720cb9ff4aed 1002 | languageName: node 1003 | linkType: hard 1004 | 1005 | "es-object-atoms@npm:^1.0.0": 1006 | version: 1.0.0 1007 | resolution: "es-object-atoms@npm:1.0.0" 1008 | dependencies: 1009 | es-errors: "npm:^1.3.0" 1010 | checksum: 1fed3d102eb27ab8d983337bb7c8b159dd2a1e63ff833ec54eea1311c96d5b08223b433060ba240541ca8adba9eee6b0a60cdbf2f80634b784febc9cc8b687b4 1011 | languageName: node 1012 | linkType: hard 1013 | 1014 | "es-set-tostringtag@npm:^2.0.3": 1015 | version: 2.0.3 1016 | resolution: "es-set-tostringtag@npm:2.0.3" 1017 | dependencies: 1018 | get-intrinsic: "npm:^1.2.4" 1019 | has-tostringtag: "npm:^1.0.2" 1020 | hasown: "npm:^2.0.1" 1021 | checksum: f22aff1585eb33569c326323f0b0d175844a1f11618b86e193b386f8be0ea9474cfbe46df39c45d959f7aa8f6c06985dc51dd6bce5401645ec5a74c4ceaa836a 1022 | languageName: node 1023 | linkType: hard 1024 | 1025 | "es-shim-unscopables@npm:^1.0.0, es-shim-unscopables@npm:^1.0.2": 1026 | version: 1.0.2 1027 | resolution: "es-shim-unscopables@npm:1.0.2" 1028 | dependencies: 1029 | hasown: "npm:^2.0.0" 1030 | checksum: f495af7b4b7601a4c0cfb893581c352636e5c08654d129590386a33a0432cf13a7bdc7b6493801cadd990d838e2839b9013d1de3b880440cb537825e834fe783 1031 | languageName: node 1032 | linkType: hard 1033 | 1034 | "es-to-primitive@npm:^1.2.1": 1035 | version: 1.2.1 1036 | resolution: "es-to-primitive@npm:1.2.1" 1037 | dependencies: 1038 | is-callable: "npm:^1.1.4" 1039 | is-date-object: "npm:^1.0.1" 1040 | is-symbol: "npm:^1.0.2" 1041 | checksum: 0886572b8dc075cb10e50c0af62a03d03a68e1e69c388bd4f10c0649ee41b1fbb24840a1b7e590b393011b5cdbe0144b776da316762653685432df37d6de60f1 1042 | languageName: node 1043 | linkType: hard 1044 | 1045 | "escape-string-regexp@npm:^4.0.0": 1046 | version: 4.0.0 1047 | resolution: "escape-string-regexp@npm:4.0.0" 1048 | checksum: 9497d4dd307d845bd7f75180d8188bb17ea8c151c1edbf6b6717c100e104d629dc2dfb687686181b0f4b7d732c7dfdc4d5e7a8ff72de1b0ca283a75bbb3a9cd9 1049 | languageName: node 1050 | linkType: hard 1051 | 1052 | "eslint-config-next@npm:14.1.4": 1053 | version: 14.1.4 1054 | resolution: "eslint-config-next@npm:14.1.4" 1055 | dependencies: 1056 | "@next/eslint-plugin-next": "npm:14.1.4" 1057 | "@rushstack/eslint-patch": "npm:^1.3.3" 1058 | "@typescript-eslint/parser": "npm:^5.4.2 || ^6.0.0" 1059 | eslint-import-resolver-node: "npm:^0.3.6" 1060 | eslint-import-resolver-typescript: "npm:^3.5.2" 1061 | eslint-plugin-import: "npm:^2.28.1" 1062 | eslint-plugin-jsx-a11y: "npm:^6.7.1" 1063 | eslint-plugin-react: "npm:^7.33.2" 1064 | eslint-plugin-react-hooks: "npm:^4.5.0 || 5.0.0-canary-7118f5dd7-20230705" 1065 | peerDependencies: 1066 | eslint: ^7.23.0 || ^8.0.0 1067 | typescript: ">=3.3.1" 1068 | peerDependenciesMeta: 1069 | typescript: 1070 | optional: true 1071 | checksum: 05f1108a2192708b4d4dab2bcb454c551bb8af5802c99f7abf98318ade95d52ed9459a03f3fa6498b2d144a0f8e846c27cdc1b23370962da83d22fdfb3d50bde 1072 | languageName: node 1073 | linkType: hard 1074 | 1075 | "eslint-import-resolver-node@npm:^0.3.6, eslint-import-resolver-node@npm:^0.3.9": 1076 | version: 0.3.9 1077 | resolution: "eslint-import-resolver-node@npm:0.3.9" 1078 | dependencies: 1079 | debug: "npm:^3.2.7" 1080 | is-core-module: "npm:^2.13.0" 1081 | resolve: "npm:^1.22.4" 1082 | checksum: 0ea8a24a72328a51fd95aa8f660dcca74c1429806737cf10261ab90cfcaaf62fd1eff664b76a44270868e0a932711a81b250053942595bcd00a93b1c1575dd61 1083 | languageName: node 1084 | linkType: hard 1085 | 1086 | "eslint-import-resolver-typescript@npm:^3.5.2": 1087 | version: 3.6.1 1088 | resolution: "eslint-import-resolver-typescript@npm:3.6.1" 1089 | dependencies: 1090 | debug: "npm:^4.3.4" 1091 | enhanced-resolve: "npm:^5.12.0" 1092 | eslint-module-utils: "npm:^2.7.4" 1093 | fast-glob: "npm:^3.3.1" 1094 | get-tsconfig: "npm:^4.5.0" 1095 | is-core-module: "npm:^2.11.0" 1096 | is-glob: "npm:^4.0.3" 1097 | peerDependencies: 1098 | eslint: "*" 1099 | eslint-plugin-import: "*" 1100 | checksum: cb1cb4389916fe78bf8c8567aae2f69243dbfe624bfe21078c56ad46fa1ebf0634fa7239dd3b2055ab5c27359e4b4c28b69b11fcb3a5df8a9e6f7add8e034d86 1101 | languageName: node 1102 | linkType: hard 1103 | 1104 | "eslint-module-utils@npm:^2.7.4, eslint-module-utils@npm:^2.8.0": 1105 | version: 2.8.1 1106 | resolution: "eslint-module-utils@npm:2.8.1" 1107 | dependencies: 1108 | debug: "npm:^3.2.7" 1109 | peerDependenciesMeta: 1110 | eslint: 1111 | optional: true 1112 | checksum: 1aeeb97bf4b688d28de136ee57c824480c37691b40fa825c711a4caf85954e94b99c06ac639d7f1f6c1d69223bd21bcb991155b3e589488e958d5b83dfd0f882 1113 | languageName: node 1114 | linkType: hard 1115 | 1116 | "eslint-plugin-import@npm:^2.28.1": 1117 | version: 2.29.1 1118 | resolution: "eslint-plugin-import@npm:2.29.1" 1119 | dependencies: 1120 | array-includes: "npm:^3.1.7" 1121 | array.prototype.findlastindex: "npm:^1.2.3" 1122 | array.prototype.flat: "npm:^1.3.2" 1123 | array.prototype.flatmap: "npm:^1.3.2" 1124 | debug: "npm:^3.2.7" 1125 | doctrine: "npm:^2.1.0" 1126 | eslint-import-resolver-node: "npm:^0.3.9" 1127 | eslint-module-utils: "npm:^2.8.0" 1128 | hasown: "npm:^2.0.0" 1129 | is-core-module: "npm:^2.13.1" 1130 | is-glob: "npm:^4.0.3" 1131 | minimatch: "npm:^3.1.2" 1132 | object.fromentries: "npm:^2.0.7" 1133 | object.groupby: "npm:^1.0.1" 1134 | object.values: "npm:^1.1.7" 1135 | semver: "npm:^6.3.1" 1136 | tsconfig-paths: "npm:^3.15.0" 1137 | peerDependencies: 1138 | eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 1139 | checksum: 5f35dfbf4e8e67f741f396987de9504ad125c49f4144508a93282b4ea0127e052bde65ab6def1f31b6ace6d5d430be698333f75bdd7dca3bc14226c92a083196 1140 | languageName: node 1141 | linkType: hard 1142 | 1143 | "eslint-plugin-jsx-a11y@npm:^6.7.1": 1144 | version: 6.8.0 1145 | resolution: "eslint-plugin-jsx-a11y@npm:6.8.0" 1146 | dependencies: 1147 | "@babel/runtime": "npm:^7.23.2" 1148 | aria-query: "npm:^5.3.0" 1149 | array-includes: "npm:^3.1.7" 1150 | array.prototype.flatmap: "npm:^1.3.2" 1151 | ast-types-flow: "npm:^0.0.8" 1152 | axe-core: "npm:=4.7.0" 1153 | axobject-query: "npm:^3.2.1" 1154 | damerau-levenshtein: "npm:^1.0.8" 1155 | emoji-regex: "npm:^9.2.2" 1156 | es-iterator-helpers: "npm:^1.0.15" 1157 | hasown: "npm:^2.0.0" 1158 | jsx-ast-utils: "npm:^3.3.5" 1159 | language-tags: "npm:^1.0.9" 1160 | minimatch: "npm:^3.1.2" 1161 | object.entries: "npm:^1.1.7" 1162 | object.fromentries: "npm:^2.0.7" 1163 | peerDependencies: 1164 | eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 1165 | checksum: 199b883e526e6f9d7c54cb3f094abc54f11a1ec816db5fb6cae3b938eb0e503acc10ccba91ca7451633a9d0b9abc0ea03601844a8aba5fe88c5e8897c9ac8f49 1166 | languageName: node 1167 | linkType: hard 1168 | 1169 | "eslint-plugin-react-hooks@npm:^4.5.0 || 5.0.0-canary-7118f5dd7-20230705": 1170 | version: 5.0.0-canary-7118f5dd7-20230705 1171 | resolution: "eslint-plugin-react-hooks@npm:5.0.0-canary-7118f5dd7-20230705" 1172 | peerDependencies: 1173 | eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 1174 | checksum: 554c4e426bfeb126155510dcba8345391426af147ee629f1c56c9ef6af08340d11008213e4e15b0138830af2c4439d7158da2091987f7efb01aeab662c44b274 1175 | languageName: node 1176 | linkType: hard 1177 | 1178 | "eslint-plugin-react@npm:^7.33.2": 1179 | version: 7.34.1 1180 | resolution: "eslint-plugin-react@npm:7.34.1" 1181 | dependencies: 1182 | array-includes: "npm:^3.1.7" 1183 | array.prototype.findlast: "npm:^1.2.4" 1184 | array.prototype.flatmap: "npm:^1.3.2" 1185 | array.prototype.toreversed: "npm:^1.1.2" 1186 | array.prototype.tosorted: "npm:^1.1.3" 1187 | doctrine: "npm:^2.1.0" 1188 | es-iterator-helpers: "npm:^1.0.17" 1189 | estraverse: "npm:^5.3.0" 1190 | jsx-ast-utils: "npm:^2.4.1 || ^3.0.0" 1191 | minimatch: "npm:^3.1.2" 1192 | object.entries: "npm:^1.1.7" 1193 | object.fromentries: "npm:^2.0.7" 1194 | object.hasown: "npm:^1.1.3" 1195 | object.values: "npm:^1.1.7" 1196 | prop-types: "npm:^15.8.1" 1197 | resolve: "npm:^2.0.0-next.5" 1198 | semver: "npm:^6.3.1" 1199 | string.prototype.matchall: "npm:^4.0.10" 1200 | peerDependencies: 1201 | eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 1202 | checksum: 7c61b1314d37a4ac2f2474f9571f801f1a1a5d81dcd4abbb5d07145406518722fb792367267757ee116bde254be9753242d6b93c9619110398b3fe1746e4848c 1203 | languageName: node 1204 | linkType: hard 1205 | 1206 | "eslint-scope@npm:^7.2.2": 1207 | version: 7.2.2 1208 | resolution: "eslint-scope@npm:7.2.2" 1209 | dependencies: 1210 | esrecurse: "npm:^4.3.0" 1211 | estraverse: "npm:^5.2.0" 1212 | checksum: 613c267aea34b5a6d6c00514e8545ef1f1433108097e857225fed40d397dd6b1809dffd11c2fde23b37ca53d7bf935fe04d2a18e6fc932b31837b6ad67e1c116 1213 | languageName: node 1214 | linkType: hard 1215 | 1216 | "eslint-visitor-keys@npm:^3.3.0, eslint-visitor-keys@npm:^3.4.1, eslint-visitor-keys@npm:^3.4.3": 1217 | version: 3.4.3 1218 | resolution: "eslint-visitor-keys@npm:3.4.3" 1219 | checksum: 92708e882c0a5ffd88c23c0b404ac1628cf20104a108c745f240a13c332a11aac54f49a22d5762efbffc18ecbc9a580d1b7ad034bf5f3cc3307e5cbff2ec9820 1220 | languageName: node 1221 | linkType: hard 1222 | 1223 | "eslint@npm:^8": 1224 | version: 8.57.0 1225 | resolution: "eslint@npm:8.57.0" 1226 | dependencies: 1227 | "@eslint-community/eslint-utils": "npm:^4.2.0" 1228 | "@eslint-community/regexpp": "npm:^4.6.1" 1229 | "@eslint/eslintrc": "npm:^2.1.4" 1230 | "@eslint/js": "npm:8.57.0" 1231 | "@humanwhocodes/config-array": "npm:^0.11.14" 1232 | "@humanwhocodes/module-importer": "npm:^1.0.1" 1233 | "@nodelib/fs.walk": "npm:^1.2.8" 1234 | "@ungap/structured-clone": "npm:^1.2.0" 1235 | ajv: "npm:^6.12.4" 1236 | chalk: "npm:^4.0.0" 1237 | cross-spawn: "npm:^7.0.2" 1238 | debug: "npm:^4.3.2" 1239 | doctrine: "npm:^3.0.0" 1240 | escape-string-regexp: "npm:^4.0.0" 1241 | eslint-scope: "npm:^7.2.2" 1242 | eslint-visitor-keys: "npm:^3.4.3" 1243 | espree: "npm:^9.6.1" 1244 | esquery: "npm:^1.4.2" 1245 | esutils: "npm:^2.0.2" 1246 | fast-deep-equal: "npm:^3.1.3" 1247 | file-entry-cache: "npm:^6.0.1" 1248 | find-up: "npm:^5.0.0" 1249 | glob-parent: "npm:^6.0.2" 1250 | globals: "npm:^13.19.0" 1251 | graphemer: "npm:^1.4.0" 1252 | ignore: "npm:^5.2.0" 1253 | imurmurhash: "npm:^0.1.4" 1254 | is-glob: "npm:^4.0.0" 1255 | is-path-inside: "npm:^3.0.3" 1256 | js-yaml: "npm:^4.1.0" 1257 | json-stable-stringify-without-jsonify: "npm:^1.0.1" 1258 | levn: "npm:^0.4.1" 1259 | lodash.merge: "npm:^4.6.2" 1260 | minimatch: "npm:^3.1.2" 1261 | natural-compare: "npm:^1.4.0" 1262 | optionator: "npm:^0.9.3" 1263 | strip-ansi: "npm:^6.0.1" 1264 | text-table: "npm:^0.2.0" 1265 | bin: 1266 | eslint: bin/eslint.js 1267 | checksum: 00bb96fd2471039a312435a6776fe1fd557c056755eaa2b96093ef3a8508c92c8775d5f754768be6b1dddd09fdd3379ddb231eeb9b6c579ee17ea7d68000a529 1268 | languageName: node 1269 | linkType: hard 1270 | 1271 | "espree@npm:^9.6.0, espree@npm:^9.6.1": 1272 | version: 9.6.1 1273 | resolution: "espree@npm:9.6.1" 1274 | dependencies: 1275 | acorn: "npm:^8.9.0" 1276 | acorn-jsx: "npm:^5.3.2" 1277 | eslint-visitor-keys: "npm:^3.4.1" 1278 | checksum: 1a2e9b4699b715347f62330bcc76aee224390c28bb02b31a3752e9d07549c473f5f986720483c6469cf3cfb3c9d05df612ffc69eb1ee94b54b739e67de9bb460 1279 | languageName: node 1280 | linkType: hard 1281 | 1282 | "esquery@npm:^1.4.2": 1283 | version: 1.5.0 1284 | resolution: "esquery@npm:1.5.0" 1285 | dependencies: 1286 | estraverse: "npm:^5.1.0" 1287 | checksum: a084bd049d954cc88ac69df30534043fb2aee5555b56246493f42f27d1e168f00d9e5d4192e46f10290d312dc30dc7d58994d61a609c579c1219d636996f9213 1288 | languageName: node 1289 | linkType: hard 1290 | 1291 | "esrecurse@npm:^4.3.0": 1292 | version: 4.3.0 1293 | resolution: "esrecurse@npm:4.3.0" 1294 | dependencies: 1295 | estraverse: "npm:^5.2.0" 1296 | checksum: 81a37116d1408ded88ada45b9fb16dbd26fba3aadc369ce50fcaf82a0bac12772ebd7b24cd7b91fc66786bf2c1ac7b5f196bc990a473efff972f5cb338877cf5 1297 | languageName: node 1298 | linkType: hard 1299 | 1300 | "estraverse@npm:^5.1.0, estraverse@npm:^5.2.0, estraverse@npm:^5.3.0": 1301 | version: 5.3.0 1302 | resolution: "estraverse@npm:5.3.0" 1303 | checksum: 1ff9447b96263dec95d6d67431c5e0771eb9776427421260a3e2f0fdd5d6bd4f8e37a7338f5ad2880c9f143450c9b1e4fc2069060724570a49cf9cf0312bd107 1304 | languageName: node 1305 | linkType: hard 1306 | 1307 | "esutils@npm:^2.0.2": 1308 | version: 2.0.3 1309 | resolution: "esutils@npm:2.0.3" 1310 | checksum: 9a2fe69a41bfdade834ba7c42de4723c97ec776e40656919c62cbd13607c45e127a003f05f724a1ea55e5029a4cf2de444b13009f2af71271e42d93a637137c7 1311 | languageName: node 1312 | linkType: hard 1313 | 1314 | "fast-deep-equal@npm:^3.1.1, fast-deep-equal@npm:^3.1.3": 1315 | version: 3.1.3 1316 | resolution: "fast-deep-equal@npm:3.1.3" 1317 | checksum: 40dedc862eb8992c54579c66d914635afbec43350afbbe991235fdcb4e3a8d5af1b23ae7e79bef7d4882d0ecee06c3197488026998fb19f72dc95acff1d1b1d0 1318 | languageName: node 1319 | linkType: hard 1320 | 1321 | "fast-glob@npm:^3.2.9, fast-glob@npm:^3.3.1": 1322 | version: 3.3.2 1323 | resolution: "fast-glob@npm:3.3.2" 1324 | dependencies: 1325 | "@nodelib/fs.stat": "npm:^2.0.2" 1326 | "@nodelib/fs.walk": "npm:^1.2.3" 1327 | glob-parent: "npm:^5.1.2" 1328 | merge2: "npm:^1.3.0" 1329 | micromatch: "npm:^4.0.4" 1330 | checksum: 42baad7b9cd40b63e42039132bde27ca2cb3a4950d0a0f9abe4639ea1aa9d3e3b40f98b1fe31cbc0cc17b664c9ea7447d911a152fa34ec5b72977b125a6fc845 1331 | languageName: node 1332 | linkType: hard 1333 | 1334 | "fast-json-stable-stringify@npm:^2.0.0": 1335 | version: 2.1.0 1336 | resolution: "fast-json-stable-stringify@npm:2.1.0" 1337 | checksum: 7f081eb0b8a64e0057b3bb03f974b3ef00135fbf36c1c710895cd9300f13c94ba809bb3a81cf4e1b03f6e5285610a61abbd7602d0652de423144dfee5a389c9b 1338 | languageName: node 1339 | linkType: hard 1340 | 1341 | "fast-levenshtein@npm:^2.0.6": 1342 | version: 2.0.6 1343 | resolution: "fast-levenshtein@npm:2.0.6" 1344 | checksum: 111972b37338bcb88f7d9e2c5907862c280ebf4234433b95bc611e518d192ccb2d38119c4ac86e26b668d75f7f3894f4ff5c4982899afced7ca78633b08287c4 1345 | languageName: node 1346 | linkType: hard 1347 | 1348 | "fastq@npm:^1.6.0": 1349 | version: 1.17.1 1350 | resolution: "fastq@npm:1.17.1" 1351 | dependencies: 1352 | reusify: "npm:^1.0.4" 1353 | checksum: 1095f16cea45fb3beff558bb3afa74ca7a9250f5a670b65db7ed585f92b4b48381445cd328b3d87323da81e43232b5d5978a8201bde84e0cd514310f1ea6da34 1354 | languageName: node 1355 | linkType: hard 1356 | 1357 | "file-entry-cache@npm:^6.0.1": 1358 | version: 6.0.1 1359 | resolution: "file-entry-cache@npm:6.0.1" 1360 | dependencies: 1361 | flat-cache: "npm:^3.0.4" 1362 | checksum: 58473e8a82794d01b38e5e435f6feaf648e3f36fdb3a56e98f417f4efae71ad1c0d4ebd8a9a7c50c3ad085820a93fc7494ad721e0e4ebc1da3573f4e1c3c7cdd 1363 | languageName: node 1364 | linkType: hard 1365 | 1366 | "fill-range@npm:^7.0.1": 1367 | version: 7.0.1 1368 | resolution: "fill-range@npm:7.0.1" 1369 | dependencies: 1370 | to-regex-range: "npm:^5.0.1" 1371 | checksum: 7cdad7d426ffbaadf45aeb5d15ec675bbd77f7597ad5399e3d2766987ed20bda24d5fac64b3ee79d93276f5865608bb22344a26b9b1ae6c4d00bd94bf611623f 1372 | languageName: node 1373 | linkType: hard 1374 | 1375 | "find-up@npm:^5.0.0": 1376 | version: 5.0.0 1377 | resolution: "find-up@npm:5.0.0" 1378 | dependencies: 1379 | locate-path: "npm:^6.0.0" 1380 | path-exists: "npm:^4.0.0" 1381 | checksum: 062c5a83a9c02f53cdd6d175a37ecf8f87ea5bbff1fdfb828f04bfa021441bc7583e8ebc0872a4c1baab96221fb8a8a275a19809fb93fbc40bd69ec35634069a 1382 | languageName: node 1383 | linkType: hard 1384 | 1385 | "flat-cache@npm:^3.0.4": 1386 | version: 3.2.0 1387 | resolution: "flat-cache@npm:3.2.0" 1388 | dependencies: 1389 | flatted: "npm:^3.2.9" 1390 | keyv: "npm:^4.5.3" 1391 | rimraf: "npm:^3.0.2" 1392 | checksum: b76f611bd5f5d68f7ae632e3ae503e678d205cf97a17c6ab5b12f6ca61188b5f1f7464503efae6dc18683ed8f0b41460beb48ac4b9ac63fe6201296a91ba2f75 1393 | languageName: node 1394 | linkType: hard 1395 | 1396 | "flatted@npm:^3.2.9": 1397 | version: 3.3.1 1398 | resolution: "flatted@npm:3.3.1" 1399 | checksum: 324166b125ee07d4ca9bcf3a5f98d915d5db4f39d711fba640a3178b959919aae1f7cfd8aabcfef5826ed8aa8a2aa14cc85b2d7d18ff638ddf4ae3df39573eaf 1400 | languageName: node 1401 | linkType: hard 1402 | 1403 | "for-each@npm:^0.3.3": 1404 | version: 0.3.3 1405 | resolution: "for-each@npm:0.3.3" 1406 | dependencies: 1407 | is-callable: "npm:^1.1.3" 1408 | checksum: 22330d8a2db728dbf003ec9182c2d421fbcd2969b02b4f97ec288721cda63eb28f2c08585ddccd0f77cb2930af8d958005c9e72f47141dc51816127a118f39aa 1409 | languageName: node 1410 | linkType: hard 1411 | 1412 | "foreground-child@npm:^3.1.0": 1413 | version: 3.1.1 1414 | resolution: "foreground-child@npm:3.1.1" 1415 | dependencies: 1416 | cross-spawn: "npm:^7.0.0" 1417 | signal-exit: "npm:^4.0.1" 1418 | checksum: 9700a0285628abaeb37007c9a4d92bd49f67210f09067638774338e146c8e9c825c5c877f072b2f75f41dc6a2d0be8664f79ffc03f6576649f54a84fb9b47de0 1419 | languageName: node 1420 | linkType: hard 1421 | 1422 | "fs.realpath@npm:^1.0.0": 1423 | version: 1.0.0 1424 | resolution: "fs.realpath@npm:1.0.0" 1425 | checksum: 444cf1291d997165dfd4c0d58b69f0e4782bfd9149fd72faa4fe299e68e0e93d6db941660b37dd29153bf7186672ececa3b50b7e7249477b03fdf850f287c948 1426 | languageName: node 1427 | linkType: hard 1428 | 1429 | "function-bind@npm:^1.1.2": 1430 | version: 1.1.2 1431 | resolution: "function-bind@npm:1.1.2" 1432 | checksum: d8680ee1e5fcd4c197e4ac33b2b4dce03c71f4d91717292785703db200f5c21f977c568d28061226f9b5900cbcd2c84463646134fd5337e7925e0942bc3f46d5 1433 | languageName: node 1434 | linkType: hard 1435 | 1436 | "function.prototype.name@npm:^1.1.5, function.prototype.name@npm:^1.1.6": 1437 | version: 1.1.6 1438 | resolution: "function.prototype.name@npm:1.1.6" 1439 | dependencies: 1440 | call-bind: "npm:^1.0.2" 1441 | define-properties: "npm:^1.2.0" 1442 | es-abstract: "npm:^1.22.1" 1443 | functions-have-names: "npm:^1.2.3" 1444 | checksum: 9eae11294905b62cb16874adb4fc687927cda3162285e0ad9612e6a1d04934005d46907362ea9cdb7428edce05a2f2c3dabc3b2d21e9fd343e9bb278230ad94b 1445 | languageName: node 1446 | linkType: hard 1447 | 1448 | "functions-have-names@npm:^1.2.3": 1449 | version: 1.2.3 1450 | resolution: "functions-have-names@npm:1.2.3" 1451 | checksum: 33e77fd29bddc2d9bb78ab3eb854c165909201f88c75faa8272e35899e2d35a8a642a15e7420ef945e1f64a9670d6aa3ec744106b2aa42be68ca5114025954ca 1452 | languageName: node 1453 | linkType: hard 1454 | 1455 | "get-intrinsic@npm:^1.1.3, get-intrinsic@npm:^1.2.1, get-intrinsic@npm:^1.2.3, get-intrinsic@npm:^1.2.4": 1456 | version: 1.2.4 1457 | resolution: "get-intrinsic@npm:1.2.4" 1458 | dependencies: 1459 | es-errors: "npm:^1.3.0" 1460 | function-bind: "npm:^1.1.2" 1461 | has-proto: "npm:^1.0.1" 1462 | has-symbols: "npm:^1.0.3" 1463 | hasown: "npm:^2.0.0" 1464 | checksum: 0a9b82c16696ed6da5e39b1267104475c47e3a9bdbe8b509dfe1710946e38a87be70d759f4bb3cda042d76a41ef47fe769660f3b7c0d1f68750299344ffb15b7 1465 | languageName: node 1466 | linkType: hard 1467 | 1468 | "get-symbol-description@npm:^1.0.2": 1469 | version: 1.0.2 1470 | resolution: "get-symbol-description@npm:1.0.2" 1471 | dependencies: 1472 | call-bind: "npm:^1.0.5" 1473 | es-errors: "npm:^1.3.0" 1474 | get-intrinsic: "npm:^1.2.4" 1475 | checksum: 867be6d63f5e0eb026cb3b0ef695ec9ecf9310febb041072d2e142f260bd91ced9eeb426b3af98791d1064e324e653424afa6fd1af17dee373bea48ae03162bc 1476 | languageName: node 1477 | linkType: hard 1478 | 1479 | "get-tsconfig@npm:^4.5.0": 1480 | version: 4.7.3 1481 | resolution: "get-tsconfig@npm:4.7.3" 1482 | dependencies: 1483 | resolve-pkg-maps: "npm:^1.0.0" 1484 | checksum: b15ca9d5d0887ebfccadc9fe88b6ff3827a5691ec90e7608a5e9c74bef959c14aba62f6bb88ac7f50322395731789a2cf654244f00e10f4f76349911b6846d6f 1485 | languageName: node 1486 | linkType: hard 1487 | 1488 | "glob-parent@npm:^5.1.2": 1489 | version: 5.1.2 1490 | resolution: "glob-parent@npm:5.1.2" 1491 | dependencies: 1492 | is-glob: "npm:^4.0.1" 1493 | checksum: cab87638e2112bee3f839ef5f6e0765057163d39c66be8ec1602f3823da4692297ad4e972de876ea17c44d652978638d2fd583c6713d0eb6591706825020c9ee 1494 | languageName: node 1495 | linkType: hard 1496 | 1497 | "glob-parent@npm:^6.0.2": 1498 | version: 6.0.2 1499 | resolution: "glob-parent@npm:6.0.2" 1500 | dependencies: 1501 | is-glob: "npm:^4.0.3" 1502 | checksum: 317034d88654730230b3f43bb7ad4f7c90257a426e872ea0bf157473ac61c99bf5d205fad8f0185f989be8d2fa6d3c7dce1645d99d545b6ea9089c39f838e7f8 1503 | languageName: node 1504 | linkType: hard 1505 | 1506 | "glob@npm:10.3.10": 1507 | version: 10.3.10 1508 | resolution: "glob@npm:10.3.10" 1509 | dependencies: 1510 | foreground-child: "npm:^3.1.0" 1511 | jackspeak: "npm:^2.3.5" 1512 | minimatch: "npm:^9.0.1" 1513 | minipass: "npm:^5.0.0 || ^6.0.2 || ^7.0.0" 1514 | path-scurry: "npm:^1.10.1" 1515 | bin: 1516 | glob: dist/esm/bin.mjs 1517 | checksum: 13d8a1feb7eac7945f8c8480e11cd4a44b24d26503d99a8d8ac8d5aefbf3e9802a2b6087318a829fad04cb4e829f25c5f4f1110c68966c498720dd261c7e344d 1518 | languageName: node 1519 | linkType: hard 1520 | 1521 | "glob@npm:^7.1.3": 1522 | version: 7.2.3 1523 | resolution: "glob@npm:7.2.3" 1524 | dependencies: 1525 | fs.realpath: "npm:^1.0.0" 1526 | inflight: "npm:^1.0.4" 1527 | inherits: "npm:2" 1528 | minimatch: "npm:^3.1.1" 1529 | once: "npm:^1.3.0" 1530 | path-is-absolute: "npm:^1.0.0" 1531 | checksum: 65676153e2b0c9095100fe7f25a778bf45608eeb32c6048cf307f579649bcc30353277b3b898a3792602c65764e5baa4f643714dfbdfd64ea271d210c7a425fe 1532 | languageName: node 1533 | linkType: hard 1534 | 1535 | "globals@npm:^13.19.0": 1536 | version: 13.24.0 1537 | resolution: "globals@npm:13.24.0" 1538 | dependencies: 1539 | type-fest: "npm:^0.20.2" 1540 | checksum: d3c11aeea898eb83d5ec7a99508600fbe8f83d2cf00cbb77f873dbf2bcb39428eff1b538e4915c993d8a3b3473fa71eeebfe22c9bb3a3003d1e26b1f2c8a42cd 1541 | languageName: node 1542 | linkType: hard 1543 | 1544 | "globalthis@npm:^1.0.3": 1545 | version: 1.0.3 1546 | resolution: "globalthis@npm:1.0.3" 1547 | dependencies: 1548 | define-properties: "npm:^1.1.3" 1549 | checksum: 0db6e9af102a5254630351557ac15e6909bc7459d3e3f6b001e59fe784c96d31108818f032d9095739355a88467459e6488ff16584ee6250cd8c27dec05af4b0 1550 | languageName: node 1551 | linkType: hard 1552 | 1553 | "globby@npm:^11.1.0": 1554 | version: 11.1.0 1555 | resolution: "globby@npm:11.1.0" 1556 | dependencies: 1557 | array-union: "npm:^2.1.0" 1558 | dir-glob: "npm:^3.0.1" 1559 | fast-glob: "npm:^3.2.9" 1560 | ignore: "npm:^5.2.0" 1561 | merge2: "npm:^1.4.1" 1562 | slash: "npm:^3.0.0" 1563 | checksum: b39511b4afe4bd8a7aead3a27c4ade2b9968649abab0a6c28b1a90141b96ca68ca5db1302f7c7bd29eab66bf51e13916b8e0a3d0ac08f75e1e84a39b35691189 1564 | languageName: node 1565 | linkType: hard 1566 | 1567 | "gopd@npm:^1.0.1": 1568 | version: 1.0.1 1569 | resolution: "gopd@npm:1.0.1" 1570 | dependencies: 1571 | get-intrinsic: "npm:^1.1.3" 1572 | checksum: 505c05487f7944c552cee72087bf1567debb470d4355b1335f2c262d218ebbff805cd3715448fe29b4b380bae6912561d0467233e4165830efd28da241418c63 1573 | languageName: node 1574 | linkType: hard 1575 | 1576 | "graceful-fs@npm:^4.2.11, graceful-fs@npm:^4.2.4": 1577 | version: 4.2.11 1578 | resolution: "graceful-fs@npm:4.2.11" 1579 | checksum: 386d011a553e02bc594ac2ca0bd6d9e4c22d7fa8cfbfc448a6d148c59ea881b092db9dbe3547ae4b88e55f1b01f7c4a2ecc53b310c042793e63aa44cf6c257f2 1580 | languageName: node 1581 | linkType: hard 1582 | 1583 | "graphemer@npm:^1.4.0": 1584 | version: 1.4.0 1585 | resolution: "graphemer@npm:1.4.0" 1586 | checksum: e951259d8cd2e0d196c72ec711add7115d42eb9a8146c8eeda5b8d3ac91e5dd816b9cd68920726d9fd4490368e7ed86e9c423f40db87e2d8dfafa00fa17c3a31 1587 | languageName: node 1588 | linkType: hard 1589 | 1590 | "has-bigints@npm:^1.0.1, has-bigints@npm:^1.0.2": 1591 | version: 1.0.2 1592 | resolution: "has-bigints@npm:1.0.2" 1593 | checksum: 724eb1485bfa3cdff6f18d95130aa190561f00b3fcf9f19dc640baf8176b5917c143b81ec2123f8cddb6c05164a198c94b13e1377c497705ccc8e1a80306e83b 1594 | languageName: node 1595 | linkType: hard 1596 | 1597 | "has-flag@npm:^4.0.0": 1598 | version: 4.0.0 1599 | resolution: "has-flag@npm:4.0.0" 1600 | checksum: 2e789c61b7888d66993e14e8331449e525ef42aac53c627cc53d1c3334e768bcb6abdc4f5f0de1478a25beec6f0bd62c7549058b7ac53e924040d4f301f02fd1 1601 | languageName: node 1602 | linkType: hard 1603 | 1604 | "has-property-descriptors@npm:^1.0.0, has-property-descriptors@npm:^1.0.2": 1605 | version: 1.0.2 1606 | resolution: "has-property-descriptors@npm:1.0.2" 1607 | dependencies: 1608 | es-define-property: "npm:^1.0.0" 1609 | checksum: 253c1f59e80bb476cf0dde8ff5284505d90c3bdb762983c3514d36414290475fe3fd6f574929d84de2a8eec00d35cf07cb6776205ff32efd7c50719125f00236 1610 | languageName: node 1611 | linkType: hard 1612 | 1613 | "has-proto@npm:^1.0.1, has-proto@npm:^1.0.3": 1614 | version: 1.0.3 1615 | resolution: "has-proto@npm:1.0.3" 1616 | checksum: 35a6989f81e9f8022c2f4027f8b48a552de714938765d019dbea6bb547bd49ce5010a3c7c32ec6ddac6e48fc546166a3583b128f5a7add8b058a6d8b4afec205 1617 | languageName: node 1618 | linkType: hard 1619 | 1620 | "has-symbols@npm:^1.0.2, has-symbols@npm:^1.0.3": 1621 | version: 1.0.3 1622 | resolution: "has-symbols@npm:1.0.3" 1623 | checksum: e6922b4345a3f37069cdfe8600febbca791c94988c01af3394d86ca3360b4b93928bbf395859158f88099cb10b19d98e3bbab7c9ff2c1bd09cf665ee90afa2c3 1624 | languageName: node 1625 | linkType: hard 1626 | 1627 | "has-tostringtag@npm:^1.0.0, has-tostringtag@npm:^1.0.2": 1628 | version: 1.0.2 1629 | resolution: "has-tostringtag@npm:1.0.2" 1630 | dependencies: 1631 | has-symbols: "npm:^1.0.3" 1632 | checksum: a8b166462192bafe3d9b6e420a1d581d93dd867adb61be223a17a8d6dad147aa77a8be32c961bb2f27b3ef893cae8d36f564ab651f5e9b7938ae86f74027c48c 1633 | languageName: node 1634 | linkType: hard 1635 | 1636 | "hasown@npm:^2.0.0, hasown@npm:^2.0.1, hasown@npm:^2.0.2": 1637 | version: 2.0.2 1638 | resolution: "hasown@npm:2.0.2" 1639 | dependencies: 1640 | function-bind: "npm:^1.1.2" 1641 | checksum: 3769d434703b8ac66b209a4cca0737519925bbdb61dd887f93a16372b14694c63ff4e797686d87c90f08168e81082248b9b028bad60d4da9e0d1148766f56eb9 1642 | languageName: node 1643 | linkType: hard 1644 | 1645 | "ignore@npm:^5.2.0": 1646 | version: 5.3.1 1647 | resolution: "ignore@npm:5.3.1" 1648 | checksum: 703f7f45ffb2a27fb2c5a8db0c32e7dee66b33a225d28e8db4e1be6474795f606686a6e3bcc50e1aa12f2042db4c9d4a7d60af3250511de74620fbed052ea4cd 1649 | languageName: node 1650 | linkType: hard 1651 | 1652 | "import-fresh@npm:^3.2.1": 1653 | version: 3.3.0 1654 | resolution: "import-fresh@npm:3.3.0" 1655 | dependencies: 1656 | parent-module: "npm:^1.0.0" 1657 | resolve-from: "npm:^4.0.0" 1658 | checksum: 7f882953aa6b740d1f0e384d0547158bc86efbf2eea0f1483b8900a6f65c5a5123c2cf09b0d542cc419d0b98a759ecaeb394237e97ea427f2da221dc3cd80cc3 1659 | languageName: node 1660 | linkType: hard 1661 | 1662 | "imurmurhash@npm:^0.1.4": 1663 | version: 0.1.4 1664 | resolution: "imurmurhash@npm:0.1.4" 1665 | checksum: 8b51313850dd33605c6c9d3fd9638b714f4c4c40250cff658209f30d40da60f78992fb2df5dabee4acf589a6a82bbc79ad5486550754bd9ec4e3fc0d4a57d6a6 1666 | languageName: node 1667 | linkType: hard 1668 | 1669 | "inflight@npm:^1.0.4": 1670 | version: 1.0.6 1671 | resolution: "inflight@npm:1.0.6" 1672 | dependencies: 1673 | once: "npm:^1.3.0" 1674 | wrappy: "npm:1" 1675 | checksum: 7faca22584600a9dc5b9fca2cd5feb7135ac8c935449837b315676b4c90aa4f391ec4f42240178244b5a34e8bede1948627fda392ca3191522fc46b34e985ab2 1676 | languageName: node 1677 | linkType: hard 1678 | 1679 | "inherits@npm:2": 1680 | version: 2.0.4 1681 | resolution: "inherits@npm:2.0.4" 1682 | checksum: 4e531f648b29039fb7426fb94075e6545faa1eb9fe83c29f0b6d9e7263aceb4289d2d4557db0d428188eeb449cc7c5e77b0a0b2c4e248ff2a65933a0dee49ef2 1683 | languageName: node 1684 | linkType: hard 1685 | 1686 | "internal-slot@npm:^1.0.7": 1687 | version: 1.0.7 1688 | resolution: "internal-slot@npm:1.0.7" 1689 | dependencies: 1690 | es-errors: "npm:^1.3.0" 1691 | hasown: "npm:^2.0.0" 1692 | side-channel: "npm:^1.0.4" 1693 | checksum: f8b294a4e6ea3855fc59551bbf35f2b832cf01fd5e6e2a97f5c201a071cc09b49048f856e484b67a6c721da5e55736c5b6ddafaf19e2dbeb4a3ff1821680de6c 1694 | languageName: node 1695 | linkType: hard 1696 | 1697 | "iron-session@npm:^8.0.1": 1698 | version: 8.0.1 1699 | resolution: "iron-session@npm:8.0.1" 1700 | dependencies: 1701 | cookie: "npm:0.6.0" 1702 | iron-webcrypto: "npm:1.0.0" 1703 | uncrypto: "npm:0.1.3" 1704 | checksum: f12e5d066cecaa5411dc8491d881b6b8d0072764c7c4a9da4fa71dfd5203d6114fd446f9101403bbf7ffcd6bd1da8f8b59868760ea020922adfee0620a35f4d8 1705 | languageName: node 1706 | linkType: hard 1707 | 1708 | "iron-webcrypto@npm:1.0.0": 1709 | version: 1.0.0 1710 | resolution: "iron-webcrypto@npm:1.0.0" 1711 | checksum: 7e9305a7d792c275cba33c770695327c8ad3f7c8021e03f7148a8b92b559ad09468f337433090eb48e195d5fda0fd2e0611afcad843eb917cffcc1c6392e8037 1712 | languageName: node 1713 | linkType: hard 1714 | 1715 | "is-array-buffer@npm:^3.0.4": 1716 | version: 3.0.4 1717 | resolution: "is-array-buffer@npm:3.0.4" 1718 | dependencies: 1719 | call-bind: "npm:^1.0.2" 1720 | get-intrinsic: "npm:^1.2.1" 1721 | checksum: 42a49d006cc6130bc5424eae113e948c146f31f9d24460fc0958f855d9d810e6fd2e4519bf19aab75179af9c298ea6092459d8cafdec523cd19e529b26eab860 1722 | languageName: node 1723 | linkType: hard 1724 | 1725 | "is-async-function@npm:^2.0.0": 1726 | version: 2.0.0 1727 | resolution: "is-async-function@npm:2.0.0" 1728 | dependencies: 1729 | has-tostringtag: "npm:^1.0.0" 1730 | checksum: 787bc931576aad525d751fc5ce211960fe91e49ac84a5c22d6ae0bc9541945fbc3f686dc590c3175722ce4f6d7b798a93f6f8ff4847fdb2199aea6f4baf5d668 1731 | languageName: node 1732 | linkType: hard 1733 | 1734 | "is-bigint@npm:^1.0.1": 1735 | version: 1.0.4 1736 | resolution: "is-bigint@npm:1.0.4" 1737 | dependencies: 1738 | has-bigints: "npm:^1.0.1" 1739 | checksum: eb9c88e418a0d195ca545aff2b715c9903d9b0a5033bc5922fec600eb0c3d7b1ee7f882dbf2e0d5a6e694e42391be3683e4368737bd3c4a77f8ac293e7773696 1740 | languageName: node 1741 | linkType: hard 1742 | 1743 | "is-boolean-object@npm:^1.1.0": 1744 | version: 1.1.2 1745 | resolution: "is-boolean-object@npm:1.1.2" 1746 | dependencies: 1747 | call-bind: "npm:^1.0.2" 1748 | has-tostringtag: "npm:^1.0.0" 1749 | checksum: 6090587f8a8a8534c0f816da868bc94f32810f08807aa72fa7e79f7e11c466d281486ffe7a788178809c2aa71fe3e700b167fe80dd96dad68026bfff8ebf39f7 1750 | languageName: node 1751 | linkType: hard 1752 | 1753 | "is-callable@npm:^1.1.3, is-callable@npm:^1.1.4, is-callable@npm:^1.2.7": 1754 | version: 1.2.7 1755 | resolution: "is-callable@npm:1.2.7" 1756 | checksum: ceebaeb9d92e8adee604076971dd6000d38d6afc40bb843ea8e45c5579b57671c3f3b50d7f04869618242c6cee08d1b67806a8cb8edaaaf7c0748b3720d6066f 1757 | languageName: node 1758 | linkType: hard 1759 | 1760 | "is-core-module@npm:^2.11.0, is-core-module@npm:^2.13.0, is-core-module@npm:^2.13.1": 1761 | version: 2.13.1 1762 | resolution: "is-core-module@npm:2.13.1" 1763 | dependencies: 1764 | hasown: "npm:^2.0.0" 1765 | checksum: 2cba9903aaa52718f11c4896dabc189bab980870aae86a62dc0d5cedb546896770ee946fb14c84b7adf0735f5eaea4277243f1b95f5cefa90054f92fbcac2518 1766 | languageName: node 1767 | linkType: hard 1768 | 1769 | "is-data-view@npm:^1.0.1": 1770 | version: 1.0.1 1771 | resolution: "is-data-view@npm:1.0.1" 1772 | dependencies: 1773 | is-typed-array: "npm:^1.1.13" 1774 | checksum: a3e6ec84efe303da859107aed9b970e018e2bee7ffcb48e2f8096921a493608134240e672a2072577e5f23a729846241d9634806e8a0e51d9129c56d5f65442d 1775 | languageName: node 1776 | linkType: hard 1777 | 1778 | "is-date-object@npm:^1.0.1, is-date-object@npm:^1.0.5": 1779 | version: 1.0.5 1780 | resolution: "is-date-object@npm:1.0.5" 1781 | dependencies: 1782 | has-tostringtag: "npm:^1.0.0" 1783 | checksum: eed21e5dcc619c48ccef804dfc83a739dbb2abee6ca202838ee1bd5f760fe8d8a93444f0d49012ad19bb7c006186e2884a1b92f6e1c056da7fd23d0a9ad5992e 1784 | languageName: node 1785 | linkType: hard 1786 | 1787 | "is-extglob@npm:^2.1.1": 1788 | version: 2.1.1 1789 | resolution: "is-extglob@npm:2.1.1" 1790 | checksum: 5487da35691fbc339700bbb2730430b07777a3c21b9ebaecb3072512dfd7b4ba78ac2381a87e8d78d20ea08affb3f1971b4af629173a6bf435ff8a4c47747912 1791 | languageName: node 1792 | linkType: hard 1793 | 1794 | "is-finalizationregistry@npm:^1.0.2": 1795 | version: 1.0.2 1796 | resolution: "is-finalizationregistry@npm:1.0.2" 1797 | dependencies: 1798 | call-bind: "npm:^1.0.2" 1799 | checksum: 81caecc984d27b1a35c68741156fc651fb1fa5e3e6710d21410abc527eb226d400c0943a167922b2e920f6b3e58b0dede9aa795882b038b85f50b3a4b877db86 1800 | languageName: node 1801 | linkType: hard 1802 | 1803 | "is-fullwidth-code-point@npm:^3.0.0": 1804 | version: 3.0.0 1805 | resolution: "is-fullwidth-code-point@npm:3.0.0" 1806 | checksum: bb11d825e049f38e04c06373a8d72782eee0205bda9d908cc550ccb3c59b99d750ff9537982e01733c1c94a58e35400661f57042158ff5e8f3e90cf936daf0fc 1807 | languageName: node 1808 | linkType: hard 1809 | 1810 | "is-generator-function@npm:^1.0.10": 1811 | version: 1.0.10 1812 | resolution: "is-generator-function@npm:1.0.10" 1813 | dependencies: 1814 | has-tostringtag: "npm:^1.0.0" 1815 | checksum: df03514df01a6098945b5a0cfa1abff715807c8e72f57c49a0686ad54b3b74d394e2d8714e6f709a71eb00c9630d48e73ca1796c1ccc84ac95092c1fecc0d98b 1816 | languageName: node 1817 | linkType: hard 1818 | 1819 | "is-glob@npm:^4.0.0, is-glob@npm:^4.0.1, is-glob@npm:^4.0.3": 1820 | version: 4.0.3 1821 | resolution: "is-glob@npm:4.0.3" 1822 | dependencies: 1823 | is-extglob: "npm:^2.1.1" 1824 | checksum: 17fb4014e22be3bbecea9b2e3a76e9e34ff645466be702f1693e8f1ee1adac84710d0be0bd9f967d6354036fd51ab7c2741d954d6e91dae6bb69714de92c197a 1825 | languageName: node 1826 | linkType: hard 1827 | 1828 | "is-map@npm:^2.0.3": 1829 | version: 2.0.3 1830 | resolution: "is-map@npm:2.0.3" 1831 | checksum: 2c4d431b74e00fdda7162cd8e4b763d6f6f217edf97d4f8538b94b8702b150610e2c64961340015fe8df5b1fcee33ccd2e9b62619c4a8a3a155f8de6d6d355fc 1832 | languageName: node 1833 | linkType: hard 1834 | 1835 | "is-negative-zero@npm:^2.0.3": 1836 | version: 2.0.3 1837 | resolution: "is-negative-zero@npm:2.0.3" 1838 | checksum: bcdcf6b8b9714063ffcfa9929c575ac69bfdabb8f4574ff557dfc086df2836cf07e3906f5bbc4f2a5c12f8f3ba56af640c843cdfc74da8caed86c7c7d66fd08e 1839 | languageName: node 1840 | linkType: hard 1841 | 1842 | "is-number-object@npm:^1.0.4": 1843 | version: 1.0.7 1844 | resolution: "is-number-object@npm:1.0.7" 1845 | dependencies: 1846 | has-tostringtag: "npm:^1.0.0" 1847 | checksum: aad266da1e530f1804a2b7bd2e874b4869f71c98590b3964f9d06cc9869b18f8d1f4778f838ecd2a11011bce20aeecb53cb269ba916209b79c24580416b74b1b 1848 | languageName: node 1849 | linkType: hard 1850 | 1851 | "is-number@npm:^7.0.0": 1852 | version: 7.0.0 1853 | resolution: "is-number@npm:7.0.0" 1854 | checksum: b4686d0d3053146095ccd45346461bc8e53b80aeb7671cc52a4de02dbbf7dc0d1d2a986e2fe4ae206984b4d34ef37e8b795ebc4f4295c978373e6575e295d811 1855 | languageName: node 1856 | linkType: hard 1857 | 1858 | "is-path-inside@npm:^3.0.3": 1859 | version: 3.0.3 1860 | resolution: "is-path-inside@npm:3.0.3" 1861 | checksum: cf7d4ac35fb96bab6a1d2c3598fe5ebb29aafb52c0aaa482b5a3ed9d8ba3edc11631e3ec2637660c44b3ce0e61a08d54946e8af30dec0b60a7c27296c68ffd05 1862 | languageName: node 1863 | linkType: hard 1864 | 1865 | "is-regex@npm:^1.1.4": 1866 | version: 1.1.4 1867 | resolution: "is-regex@npm:1.1.4" 1868 | dependencies: 1869 | call-bind: "npm:^1.0.2" 1870 | has-tostringtag: "npm:^1.0.0" 1871 | checksum: bb72aae604a69eafd4a82a93002058c416ace8cde95873589a97fc5dac96a6c6c78a9977d487b7b95426a8f5073969124dd228f043f9f604f041f32fcc465fc1 1872 | languageName: node 1873 | linkType: hard 1874 | 1875 | "is-set@npm:^2.0.3": 1876 | version: 2.0.3 1877 | resolution: "is-set@npm:2.0.3" 1878 | checksum: f73732e13f099b2dc879c2a12341cfc22ccaca8dd504e6edae26484bd5707a35d503fba5b4daad530a9b088ced1ae6c9d8200fd92e09b428fe14ea79ce8080b7 1879 | languageName: node 1880 | linkType: hard 1881 | 1882 | "is-shared-array-buffer@npm:^1.0.2, is-shared-array-buffer@npm:^1.0.3": 1883 | version: 1.0.3 1884 | resolution: "is-shared-array-buffer@npm:1.0.3" 1885 | dependencies: 1886 | call-bind: "npm:^1.0.7" 1887 | checksum: adc11ab0acbc934a7b9e5e9d6c588d4ec6682f6fea8cda5180721704fa32927582ede5b123349e32517fdadd07958973d24716c80e7ab198970c47acc09e59c7 1888 | languageName: node 1889 | linkType: hard 1890 | 1891 | "is-string@npm:^1.0.5, is-string@npm:^1.0.7": 1892 | version: 1.0.7 1893 | resolution: "is-string@npm:1.0.7" 1894 | dependencies: 1895 | has-tostringtag: "npm:^1.0.0" 1896 | checksum: 905f805cbc6eedfa678aaa103ab7f626aac9ebbdc8737abb5243acaa61d9820f8edc5819106b8fcd1839e33db21de9f0116ae20de380c8382d16dc2a601921f6 1897 | languageName: node 1898 | linkType: hard 1899 | 1900 | "is-symbol@npm:^1.0.2, is-symbol@npm:^1.0.3": 1901 | version: 1.0.4 1902 | resolution: "is-symbol@npm:1.0.4" 1903 | dependencies: 1904 | has-symbols: "npm:^1.0.2" 1905 | checksum: 9381dd015f7c8906154dbcbf93fad769de16b4b961edc94f88d26eb8c555935caa23af88bda0c93a18e65560f6d7cca0fd5a3f8a8e1df6f1abbb9bead4502ef7 1906 | languageName: node 1907 | linkType: hard 1908 | 1909 | "is-typed-array@npm:^1.1.13": 1910 | version: 1.1.13 1911 | resolution: "is-typed-array@npm:1.1.13" 1912 | dependencies: 1913 | which-typed-array: "npm:^1.1.14" 1914 | checksum: fa5cb97d4a80e52c2cc8ed3778e39f175a1a2ae4ddf3adae3187d69586a1fd57cfa0b095db31f66aa90331e9e3da79184cea9c6abdcd1abc722dc3c3edd51cca 1915 | languageName: node 1916 | linkType: hard 1917 | 1918 | "is-weakmap@npm:^2.0.2": 1919 | version: 2.0.2 1920 | resolution: "is-weakmap@npm:2.0.2" 1921 | checksum: 443c35bb86d5e6cc5929cd9c75a4024bb0fff9586ed50b092f94e700b89c43a33b186b76dbc6d54f3d3d09ece689ab38dcdc1af6a482cbe79c0f2da0a17f1299 1922 | languageName: node 1923 | linkType: hard 1924 | 1925 | "is-weakref@npm:^1.0.2": 1926 | version: 1.0.2 1927 | resolution: "is-weakref@npm:1.0.2" 1928 | dependencies: 1929 | call-bind: "npm:^1.0.2" 1930 | checksum: 1545c5d172cb690c392f2136c23eec07d8d78a7f57d0e41f10078aa4f5daf5d7f57b6513a67514ab4f073275ad00c9822fc8935e00229d0a2089e1c02685d4b1 1931 | languageName: node 1932 | linkType: hard 1933 | 1934 | "is-weakset@npm:^2.0.3": 1935 | version: 2.0.3 1936 | resolution: "is-weakset@npm:2.0.3" 1937 | dependencies: 1938 | call-bind: "npm:^1.0.7" 1939 | get-intrinsic: "npm:^1.2.4" 1940 | checksum: 8ad6141b6a400e7ce7c7442a13928c676d07b1f315ab77d9912920bf5f4170622f43126f111615788f26c3b1871158a6797c862233124507db0bcc33a9537d1a 1941 | languageName: node 1942 | linkType: hard 1943 | 1944 | "isarray@npm:^2.0.5": 1945 | version: 2.0.5 1946 | resolution: "isarray@npm:2.0.5" 1947 | checksum: 4199f14a7a13da2177c66c31080008b7124331956f47bca57dd0b6ea9f11687aa25e565a2c7a2b519bc86988d10398e3049a1f5df13c9f6b7664154690ae79fd 1948 | languageName: node 1949 | linkType: hard 1950 | 1951 | "isexe@npm:^2.0.0": 1952 | version: 2.0.0 1953 | resolution: "isexe@npm:2.0.0" 1954 | checksum: 228cfa503fadc2c31596ab06ed6aa82c9976eec2bfd83397e7eaf06d0ccf42cd1dfd6743bf9aeb01aebd4156d009994c5f76ea898d2832c1fe342da923ca457d 1955 | languageName: node 1956 | linkType: hard 1957 | 1958 | "iterator.prototype@npm:^1.1.2": 1959 | version: 1.1.2 1960 | resolution: "iterator.prototype@npm:1.1.2" 1961 | dependencies: 1962 | define-properties: "npm:^1.2.1" 1963 | get-intrinsic: "npm:^1.2.1" 1964 | has-symbols: "npm:^1.0.3" 1965 | reflect.getprototypeof: "npm:^1.0.4" 1966 | set-function-name: "npm:^2.0.1" 1967 | checksum: a32151326095e916f306990d909f6bbf23e3221999a18ba686419535dcd1749b10ded505e89334b77dc4c7a58a8508978f0eb16c2c8573e6d412eb7eb894ea79 1968 | languageName: node 1969 | linkType: hard 1970 | 1971 | "jackspeak@npm:^2.3.5": 1972 | version: 2.3.6 1973 | resolution: "jackspeak@npm:2.3.6" 1974 | dependencies: 1975 | "@isaacs/cliui": "npm:^8.0.2" 1976 | "@pkgjs/parseargs": "npm:^0.11.0" 1977 | dependenciesMeta: 1978 | "@pkgjs/parseargs": 1979 | optional: true 1980 | checksum: f01d8f972d894cd7638bc338e9ef5ddb86f7b208ce177a36d718eac96ec86638a6efa17d0221b10073e64b45edc2ce15340db9380b1f5d5c5d000cbc517dc111 1981 | languageName: node 1982 | linkType: hard 1983 | 1984 | "jose@npm:^5.2.3": 1985 | version: 5.2.3 1986 | resolution: "jose@npm:5.2.3" 1987 | checksum: 7cf02e1d1d6226b6ee136fb6c53fd4dde9cfdaf1613ceaab3a5629803eaa80cbfd77cddc38a54c55c82b8f63428677660c93fc87493818a07adc9c0c77ef16ff 1988 | languageName: node 1989 | linkType: hard 1990 | 1991 | "js-tokens@npm:^3.0.0 || ^4.0.0": 1992 | version: 4.0.0 1993 | resolution: "js-tokens@npm:4.0.0" 1994 | checksum: e248708d377aa058eacf2037b07ded847790e6de892bbad3dac0abba2e759cb9f121b00099a65195616badcb6eca8d14d975cb3e89eb1cfda644756402c8aeed 1995 | languageName: node 1996 | linkType: hard 1997 | 1998 | "js-yaml@npm:^4.1.0": 1999 | version: 4.1.0 2000 | resolution: "js-yaml@npm:4.1.0" 2001 | dependencies: 2002 | argparse: "npm:^2.0.1" 2003 | bin: 2004 | js-yaml: bin/js-yaml.js 2005 | checksum: 184a24b4eaacfce40ad9074c64fd42ac83cf74d8c8cd137718d456ced75051229e5061b8633c3366b8aada17945a7a356b337828c19da92b51ae62126575018f 2006 | languageName: node 2007 | linkType: hard 2008 | 2009 | "json-buffer@npm:3.0.1": 2010 | version: 3.0.1 2011 | resolution: "json-buffer@npm:3.0.1" 2012 | checksum: 0d1c91569d9588e7eef2b49b59851f297f3ab93c7b35c7c221e288099322be6b562767d11e4821da500f3219542b9afd2e54c5dc573107c1126ed1080f8e96d7 2013 | languageName: node 2014 | linkType: hard 2015 | 2016 | "json-schema-traverse@npm:^0.4.1": 2017 | version: 0.4.1 2018 | resolution: "json-schema-traverse@npm:0.4.1" 2019 | checksum: 108fa90d4cc6f08243aedc6da16c408daf81793bf903e9fd5ab21983cda433d5d2da49e40711da016289465ec2e62e0324dcdfbc06275a607fe3233fde4942ce 2020 | languageName: node 2021 | linkType: hard 2022 | 2023 | "json-stable-stringify-without-jsonify@npm:^1.0.1": 2024 | version: 1.0.1 2025 | resolution: "json-stable-stringify-without-jsonify@npm:1.0.1" 2026 | checksum: cb168b61fd4de83e58d09aaa6425ef71001bae30d260e2c57e7d09a5fd82223e2f22a042dedaab8db23b7d9ae46854b08bb1f91675a8be11c5cffebef5fb66a5 2027 | languageName: node 2028 | linkType: hard 2029 | 2030 | "json5@npm:^1.0.2": 2031 | version: 1.0.2 2032 | resolution: "json5@npm:1.0.2" 2033 | dependencies: 2034 | minimist: "npm:^1.2.0" 2035 | bin: 2036 | json5: lib/cli.js 2037 | checksum: 9ee316bf21f000b00752e6c2a3b79ecf5324515a5c60ee88983a1910a45426b643a4f3461657586e8aeca87aaf96f0a519b0516d2ae527a6c3e7eed80f68717f 2038 | languageName: node 2039 | linkType: hard 2040 | 2041 | "jsx-ast-utils@npm:^2.4.1 || ^3.0.0, jsx-ast-utils@npm:^3.3.5": 2042 | version: 3.3.5 2043 | resolution: "jsx-ast-utils@npm:3.3.5" 2044 | dependencies: 2045 | array-includes: "npm:^3.1.6" 2046 | array.prototype.flat: "npm:^1.3.1" 2047 | object.assign: "npm:^4.1.4" 2048 | object.values: "npm:^1.1.6" 2049 | checksum: a32679e9cb55469cb6d8bbc863f7d631b2c98b7fc7bf172629261751a6e7bc8da6ae374ddb74d5fbd8b06cf0eb4572287b259813d92b36e384024ed35e4c13e1 2050 | languageName: node 2051 | linkType: hard 2052 | 2053 | "keyv@npm:^4.5.3": 2054 | version: 4.5.4 2055 | resolution: "keyv@npm:4.5.4" 2056 | dependencies: 2057 | json-buffer: "npm:3.0.1" 2058 | checksum: aa52f3c5e18e16bb6324876bb8b59dd02acf782a4b789c7b2ae21107fab95fab3890ed448d4f8dba80ce05391eeac4bfabb4f02a20221342982f806fa2cf271e 2059 | languageName: node 2060 | linkType: hard 2061 | 2062 | "language-subtag-registry@npm:^0.3.20": 2063 | version: 0.3.22 2064 | resolution: "language-subtag-registry@npm:0.3.22" 2065 | checksum: d1e09971260a7cd3b9fdeb190d33af0b6e99c8697013537d9aaa15f7856d9d83aee128ba8078e219df0a7cf4b8dd18d1a0c188f6543b500d92a2689d2d114b70 2066 | languageName: node 2067 | linkType: hard 2068 | 2069 | "language-tags@npm:^1.0.9": 2070 | version: 1.0.9 2071 | resolution: "language-tags@npm:1.0.9" 2072 | dependencies: 2073 | language-subtag-registry: "npm:^0.3.20" 2074 | checksum: 9ab911213c4bd8bd583c850201c17794e52cb0660d1ab6e32558aadc8324abebf6844e46f92b80a5d600d0fbba7eface2c207bfaf270a1c7fd539e4c3a880bff 2075 | languageName: node 2076 | linkType: hard 2077 | 2078 | "levn@npm:^0.4.1": 2079 | version: 0.4.1 2080 | resolution: "levn@npm:0.4.1" 2081 | dependencies: 2082 | prelude-ls: "npm:^1.2.1" 2083 | type-check: "npm:~0.4.0" 2084 | checksum: effb03cad7c89dfa5bd4f6989364bfc79994c2042ec5966cb9b95990e2edee5cd8969ddf42616a0373ac49fac1403437deaf6e9050fbbaa3546093a59b9ac94e 2085 | languageName: node 2086 | linkType: hard 2087 | 2088 | "locate-path@npm:^6.0.0": 2089 | version: 6.0.0 2090 | resolution: "locate-path@npm:6.0.0" 2091 | dependencies: 2092 | p-locate: "npm:^5.0.0" 2093 | checksum: d3972ab70dfe58ce620e64265f90162d247e87159b6126b01314dd67be43d50e96a50b517bce2d9452a79409c7614054c277b5232377de50416564a77ac7aad3 2094 | languageName: node 2095 | linkType: hard 2096 | 2097 | "lodash.merge@npm:^4.6.2": 2098 | version: 4.6.2 2099 | resolution: "lodash.merge@npm:4.6.2" 2100 | checksum: 402fa16a1edd7538de5b5903a90228aa48eb5533986ba7fa26606a49db2572bf414ff73a2c9f5d5fd36b31c46a5d5c7e1527749c07cbcf965ccff5fbdf32c506 2101 | languageName: node 2102 | linkType: hard 2103 | 2104 | "loose-envify@npm:^1.1.0, loose-envify@npm:^1.4.0": 2105 | version: 1.4.0 2106 | resolution: "loose-envify@npm:1.4.0" 2107 | dependencies: 2108 | js-tokens: "npm:^3.0.0 || ^4.0.0" 2109 | bin: 2110 | loose-envify: cli.js 2111 | checksum: 655d110220983c1a4b9c0c679a2e8016d4b67f6e9c7b5435ff5979ecdb20d0813f4dec0a08674fcbdd4846a3f07edbb50a36811fd37930b94aaa0d9daceb017e 2112 | languageName: node 2113 | linkType: hard 2114 | 2115 | "lru-cache@npm:^6.0.0": 2116 | version: 6.0.0 2117 | resolution: "lru-cache@npm:6.0.0" 2118 | dependencies: 2119 | yallist: "npm:^4.0.0" 2120 | checksum: cb53e582785c48187d7a188d3379c181b5ca2a9c78d2bce3e7dee36f32761d1c42983da3fe12b55cb74e1779fa94cdc2e5367c028a9b35317184ede0c07a30a9 2121 | languageName: node 2122 | linkType: hard 2123 | 2124 | "lru-cache@npm:^9.1.1 || ^10.0.0": 2125 | version: 10.2.0 2126 | resolution: "lru-cache@npm:10.2.0" 2127 | checksum: c9847612aa2daaef102d30542a8d6d9b2c2bb36581c1bf0dc3ebf5e5f3352c772a749e604afae2e46873b930a9e9523743faac4e5b937c576ab29196774712ee 2128 | languageName: node 2129 | linkType: hard 2130 | 2131 | "merge2@npm:^1.3.0, merge2@npm:^1.4.1": 2132 | version: 1.4.1 2133 | resolution: "merge2@npm:1.4.1" 2134 | checksum: 254a8a4605b58f450308fc474c82ac9a094848081bf4c06778200207820e5193726dc563a0d2c16468810516a5c97d9d3ea0ca6585d23c58ccfff2403e8dbbeb 2135 | languageName: node 2136 | linkType: hard 2137 | 2138 | "micromatch@npm:^4.0.4": 2139 | version: 4.0.5 2140 | resolution: "micromatch@npm:4.0.5" 2141 | dependencies: 2142 | braces: "npm:^3.0.2" 2143 | picomatch: "npm:^2.3.1" 2144 | checksum: 3d6505b20f9fa804af5d8c596cb1c5e475b9b0cd05f652c5b56141cf941bd72adaeb7a436fda344235cef93a7f29b7472efc779fcdb83b478eab0867b95cdeff 2145 | languageName: node 2146 | linkType: hard 2147 | 2148 | "minimatch@npm:9.0.3, minimatch@npm:^9.0.1": 2149 | version: 9.0.3 2150 | resolution: "minimatch@npm:9.0.3" 2151 | dependencies: 2152 | brace-expansion: "npm:^2.0.1" 2153 | checksum: 85f407dcd38ac3e180f425e86553911d101455ca3ad5544d6a7cec16286657e4f8a9aa6695803025c55e31e35a91a2252b5dc8e7d527211278b8b65b4dbd5eac 2154 | languageName: node 2155 | linkType: hard 2156 | 2157 | "minimatch@npm:^3.0.5, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2": 2158 | version: 3.1.2 2159 | resolution: "minimatch@npm:3.1.2" 2160 | dependencies: 2161 | brace-expansion: "npm:^1.1.7" 2162 | checksum: 0262810a8fc2e72cca45d6fd86bd349eee435eb95ac6aa45c9ea2180e7ee875ef44c32b55b5973ceabe95ea12682f6e3725cbb63d7a2d1da3ae1163c8b210311 2163 | languageName: node 2164 | linkType: hard 2165 | 2166 | "minimist@npm:^1.2.0, minimist@npm:^1.2.6": 2167 | version: 1.2.8 2168 | resolution: "minimist@npm:1.2.8" 2169 | checksum: 19d3fcdca050087b84c2029841a093691a91259a47def2f18222f41e7645a0b7c44ef4b40e88a1e58a40c84d2ef0ee6047c55594d298146d0eb3f6b737c20ce6 2170 | languageName: node 2171 | linkType: hard 2172 | 2173 | "minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0": 2174 | version: 7.0.4 2175 | resolution: "minipass@npm:7.0.4" 2176 | checksum: 6c7370a6dfd257bf18222da581ba89a5eaedca10e158781232a8b5542a90547540b4b9b7e7f490e4cda43acfbd12e086f0453728ecf8c19e0ef6921bc5958ac5 2177 | languageName: node 2178 | linkType: hard 2179 | 2180 | "ms@npm:2.1.2": 2181 | version: 2.1.2 2182 | resolution: "ms@npm:2.1.2" 2183 | checksum: a437714e2f90dbf881b5191d35a6db792efbca5badf112f87b9e1c712aace4b4b9b742dd6537f3edf90fd6f684de897cec230abde57e87883766712ddda297cc 2184 | languageName: node 2185 | linkType: hard 2186 | 2187 | "ms@npm:^2.1.1": 2188 | version: 2.1.3 2189 | resolution: "ms@npm:2.1.3" 2190 | checksum: d924b57e7312b3b63ad21fc5b3dc0af5e78d61a1fc7cfb5457edaf26326bf62be5307cc87ffb6862ef1c2b33b0233cdb5d4f01c4c958cc0d660948b65a287a48 2191 | languageName: node 2192 | linkType: hard 2193 | 2194 | "nanoid@npm:^3.3.6": 2195 | version: 3.3.7 2196 | resolution: "nanoid@npm:3.3.7" 2197 | bin: 2198 | nanoid: bin/nanoid.cjs 2199 | checksum: e3fb661aa083454f40500473bb69eedb85dc160e763150b9a2c567c7e9ff560ce028a9f833123b618a6ea742e311138b591910e795614a629029e86e180660f3 2200 | languageName: node 2201 | linkType: hard 2202 | 2203 | "natural-compare@npm:^1.4.0": 2204 | version: 1.4.0 2205 | resolution: "natural-compare@npm:1.4.0" 2206 | checksum: f5f9a7974bfb28a91afafa254b197f0f22c684d4a1731763dda960d2c8e375b36c7d690e0d9dc8fba774c537af14a7e979129bca23d88d052fbeb9466955e447 2207 | languageName: node 2208 | linkType: hard 2209 | 2210 | "next@npm:14.1.4": 2211 | version: 14.1.4 2212 | resolution: "next@npm:14.1.4" 2213 | dependencies: 2214 | "@next/env": "npm:14.1.4" 2215 | "@next/swc-darwin-arm64": "npm:14.1.4" 2216 | "@next/swc-darwin-x64": "npm:14.1.4" 2217 | "@next/swc-linux-arm64-gnu": "npm:14.1.4" 2218 | "@next/swc-linux-arm64-musl": "npm:14.1.4" 2219 | "@next/swc-linux-x64-gnu": "npm:14.1.4" 2220 | "@next/swc-linux-x64-musl": "npm:14.1.4" 2221 | "@next/swc-win32-arm64-msvc": "npm:14.1.4" 2222 | "@next/swc-win32-ia32-msvc": "npm:14.1.4" 2223 | "@next/swc-win32-x64-msvc": "npm:14.1.4" 2224 | "@swc/helpers": "npm:0.5.2" 2225 | busboy: "npm:1.6.0" 2226 | caniuse-lite: "npm:^1.0.30001579" 2227 | graceful-fs: "npm:^4.2.11" 2228 | postcss: "npm:8.4.31" 2229 | styled-jsx: "npm:5.1.1" 2230 | peerDependencies: 2231 | "@opentelemetry/api": ^1.1.0 2232 | react: ^18.2.0 2233 | react-dom: ^18.2.0 2234 | sass: ^1.3.0 2235 | dependenciesMeta: 2236 | "@next/swc-darwin-arm64": 2237 | optional: true 2238 | "@next/swc-darwin-x64": 2239 | optional: true 2240 | "@next/swc-linux-arm64-gnu": 2241 | optional: true 2242 | "@next/swc-linux-arm64-musl": 2243 | optional: true 2244 | "@next/swc-linux-x64-gnu": 2245 | optional: true 2246 | "@next/swc-linux-x64-musl": 2247 | optional: true 2248 | "@next/swc-win32-arm64-msvc": 2249 | optional: true 2250 | "@next/swc-win32-ia32-msvc": 2251 | optional: true 2252 | "@next/swc-win32-x64-msvc": 2253 | optional: true 2254 | peerDependenciesMeta: 2255 | "@opentelemetry/api": 2256 | optional: true 2257 | sass: 2258 | optional: true 2259 | bin: 2260 | next: dist/bin/next 2261 | checksum: 7576d7af913f6e24997126b1b13c9bfd0de926ecce72b16944f9f9ba221a3563d3a16b13d7aad7774a428462534afe71879ea0ca5ad80cc9075f08773d13a3b1 2262 | languageName: node 2263 | linkType: hard 2264 | 2265 | "object-assign@npm:^4.1.1": 2266 | version: 4.1.1 2267 | resolution: "object-assign@npm:4.1.1" 2268 | checksum: 1f4df9945120325d041ccf7b86f31e8bcc14e73d29171e37a7903050e96b81323784ec59f93f102ec635bcf6fa8034ba3ea0a8c7e69fa202b87ae3b6cec5a414 2269 | languageName: node 2270 | linkType: hard 2271 | 2272 | "object-inspect@npm:^1.13.1": 2273 | version: 1.13.1 2274 | resolution: "object-inspect@npm:1.13.1" 2275 | checksum: fad603f408e345c82e946abdf4bfd774260a5ed3e5997a0b057c44153ac32c7271ff19e3a5ae39c858da683ba045ccac2f65245c12763ce4e8594f818f4a648d 2276 | languageName: node 2277 | linkType: hard 2278 | 2279 | "object-keys@npm:^1.1.1": 2280 | version: 1.1.1 2281 | resolution: "object-keys@npm:1.1.1" 2282 | checksum: b11f7ccdbc6d406d1f186cdadb9d54738e347b2692a14439ca5ac70c225fa6db46db809711b78589866d47b25fc3e8dee0b4c722ac751e11180f9380e3d8601d 2283 | languageName: node 2284 | linkType: hard 2285 | 2286 | "object.assign@npm:^4.1.4, object.assign@npm:^4.1.5": 2287 | version: 4.1.5 2288 | resolution: "object.assign@npm:4.1.5" 2289 | dependencies: 2290 | call-bind: "npm:^1.0.5" 2291 | define-properties: "npm:^1.2.1" 2292 | has-symbols: "npm:^1.0.3" 2293 | object-keys: "npm:^1.1.1" 2294 | checksum: 60108e1fa2706f22554a4648299b0955236c62b3685c52abf4988d14fffb0e7731e00aa8c6448397e3eb63d087dcc124a9f21e1980f36d0b2667f3c18bacd469 2295 | languageName: node 2296 | linkType: hard 2297 | 2298 | "object.entries@npm:^1.1.7": 2299 | version: 1.1.8 2300 | resolution: "object.entries@npm:1.1.8" 2301 | dependencies: 2302 | call-bind: "npm:^1.0.7" 2303 | define-properties: "npm:^1.2.1" 2304 | es-object-atoms: "npm:^1.0.0" 2305 | checksum: db9ea979d2956a3bc26c262da4a4d212d36f374652cc4c13efdd069c1a519c16571c137e2893d1c46e1cb0e15c88fd6419eaf410c945f329f09835487d7e65d3 2306 | languageName: node 2307 | linkType: hard 2308 | 2309 | "object.fromentries@npm:^2.0.7": 2310 | version: 2.0.8 2311 | resolution: "object.fromentries@npm:2.0.8" 2312 | dependencies: 2313 | call-bind: "npm:^1.0.7" 2314 | define-properties: "npm:^1.2.1" 2315 | es-abstract: "npm:^1.23.2" 2316 | es-object-atoms: "npm:^1.0.0" 2317 | checksum: cd4327e6c3369cfa805deb4cbbe919bfb7d3aeebf0bcaba291bb568ea7169f8f8cdbcabe2f00b40db0c20cd20f08e11b5f3a5a36fb7dd3fe04850c50db3bf83b 2318 | languageName: node 2319 | linkType: hard 2320 | 2321 | "object.groupby@npm:^1.0.1": 2322 | version: 1.0.3 2323 | resolution: "object.groupby@npm:1.0.3" 2324 | dependencies: 2325 | call-bind: "npm:^1.0.7" 2326 | define-properties: "npm:^1.2.1" 2327 | es-abstract: "npm:^1.23.2" 2328 | checksum: 60d0455c85c736fbfeda0217d1a77525956f76f7b2495edeca9e9bbf8168a45783199e77b894d30638837c654d0cc410e0e02cbfcf445bc8de71c3da1ede6a9c 2329 | languageName: node 2330 | linkType: hard 2331 | 2332 | "object.hasown@npm:^1.1.3": 2333 | version: 1.1.4 2334 | resolution: "object.hasown@npm:1.1.4" 2335 | dependencies: 2336 | define-properties: "npm:^1.2.1" 2337 | es-abstract: "npm:^1.23.2" 2338 | es-object-atoms: "npm:^1.0.0" 2339 | checksum: f23187b08d874ef1aea060118c8259eb7f99f93c15a50771d710569534119062b90e087b92952b2d0fb1bb8914d61fb0b43c57fb06f622aaad538fe6868ab987 2340 | languageName: node 2341 | linkType: hard 2342 | 2343 | "object.values@npm:^1.1.6, object.values@npm:^1.1.7": 2344 | version: 1.2.0 2345 | resolution: "object.values@npm:1.2.0" 2346 | dependencies: 2347 | call-bind: "npm:^1.0.7" 2348 | define-properties: "npm:^1.2.1" 2349 | es-object-atoms: "npm:^1.0.0" 2350 | checksum: 15809dc40fd6c5529501324fec5ff08570b7d70fb5ebbe8e2b3901afec35cf2b3dc484d1210c6c642cd3e7e0a5e18dd1d6850115337fef46bdae14ab0cb18ac3 2351 | languageName: node 2352 | linkType: hard 2353 | 2354 | "once@npm:^1.3.0": 2355 | version: 1.4.0 2356 | resolution: "once@npm:1.4.0" 2357 | dependencies: 2358 | wrappy: "npm:1" 2359 | checksum: 5d48aca287dfefabd756621c5dfce5c91a549a93e9fdb7b8246bc4c4790aa2ec17b34a260530474635147aeb631a2dcc8b32c613df0675f96041cbb8244517d0 2360 | languageName: node 2361 | linkType: hard 2362 | 2363 | "optionator@npm:^0.9.3": 2364 | version: 0.9.3 2365 | resolution: "optionator@npm:0.9.3" 2366 | dependencies: 2367 | "@aashutoshrathi/word-wrap": "npm:^1.2.3" 2368 | deep-is: "npm:^0.1.3" 2369 | fast-levenshtein: "npm:^2.0.6" 2370 | levn: "npm:^0.4.1" 2371 | prelude-ls: "npm:^1.2.1" 2372 | type-check: "npm:^0.4.0" 2373 | checksum: 66fba794d425b5be51353035cf3167ce6cfa049059cbb93229b819167687e0f48d2bc4603fcb21b091c99acb516aae1083624675b15c4765b2e4693a085e959c 2374 | languageName: node 2375 | linkType: hard 2376 | 2377 | "p-limit@npm:^3.0.2": 2378 | version: 3.1.0 2379 | resolution: "p-limit@npm:3.1.0" 2380 | dependencies: 2381 | yocto-queue: "npm:^0.1.0" 2382 | checksum: 9db675949dbdc9c3763c89e748d0ef8bdad0afbb24d49ceaf4c46c02c77d30db4e0652ed36d0a0a7a95154335fab810d95c86153105bb73b3a90448e2bb14e1a 2383 | languageName: node 2384 | linkType: hard 2385 | 2386 | "p-locate@npm:^5.0.0": 2387 | version: 5.0.0 2388 | resolution: "p-locate@npm:5.0.0" 2389 | dependencies: 2390 | p-limit: "npm:^3.0.2" 2391 | checksum: 2290d627ab7903b8b70d11d384fee714b797f6040d9278932754a6860845c4d3190603a0772a663c8cb5a7b21d1b16acb3a6487ebcafa9773094edc3dfe6009a 2392 | languageName: node 2393 | linkType: hard 2394 | 2395 | "parent-module@npm:^1.0.0": 2396 | version: 1.0.1 2397 | resolution: "parent-module@npm:1.0.1" 2398 | dependencies: 2399 | callsites: "npm:^3.0.0" 2400 | checksum: c63d6e80000d4babd11978e0d3fee386ca7752a02b035fd2435960ffaa7219dc42146f07069fb65e6e8bf1caef89daf9af7535a39bddf354d78bf50d8294f556 2401 | languageName: node 2402 | linkType: hard 2403 | 2404 | "path-exists@npm:^4.0.0": 2405 | version: 4.0.0 2406 | resolution: "path-exists@npm:4.0.0" 2407 | checksum: 8c0bd3f5238188197dc78dced15207a4716c51cc4e3624c44fc97acf69558f5ebb9a2afff486fe1b4ee148e0c133e96c5e11a9aa5c48a3006e3467da070e5e1b 2408 | languageName: node 2409 | linkType: hard 2410 | 2411 | "path-is-absolute@npm:^1.0.0": 2412 | version: 1.0.1 2413 | resolution: "path-is-absolute@npm:1.0.1" 2414 | checksum: 127da03c82172a2a50099cddbf02510c1791fc2cc5f7713ddb613a56838db1e8168b121a920079d052e0936c23005562059756d653b7c544c53185efe53be078 2415 | languageName: node 2416 | linkType: hard 2417 | 2418 | "path-key@npm:^3.1.0": 2419 | version: 3.1.1 2420 | resolution: "path-key@npm:3.1.1" 2421 | checksum: 748c43efd5a569c039d7a00a03b58eecd1d75f3999f5a28303d75f521288df4823bc057d8784eb72358b2895a05f29a070bc9f1f17d28226cc4e62494cc58c4c 2422 | languageName: node 2423 | linkType: hard 2424 | 2425 | "path-parse@npm:^1.0.7": 2426 | version: 1.0.7 2427 | resolution: "path-parse@npm:1.0.7" 2428 | checksum: 11ce261f9d294cc7a58d6a574b7f1b935842355ec66fba3c3fd79e0f036462eaf07d0aa95bb74ff432f9afef97ce1926c720988c6a7451d8a584930ae7de86e1 2429 | languageName: node 2430 | linkType: hard 2431 | 2432 | "path-scurry@npm:^1.10.1": 2433 | version: 1.10.1 2434 | resolution: "path-scurry@npm:1.10.1" 2435 | dependencies: 2436 | lru-cache: "npm:^9.1.1 || ^10.0.0" 2437 | minipass: "npm:^5.0.0 || ^6.0.2 || ^7.0.0" 2438 | checksum: e5dc78a7348d25eec61ab166317e9e9c7b46818aa2c2b9006c507a6ff48c672d011292d9662527213e558f5652ce0afcc788663a061d8b59ab495681840c0c1e 2439 | languageName: node 2440 | linkType: hard 2441 | 2442 | "path-type@npm:^4.0.0": 2443 | version: 4.0.0 2444 | resolution: "path-type@npm:4.0.0" 2445 | checksum: 666f6973f332f27581371efaf303fd6c272cc43c2057b37aa99e3643158c7e4b2626549555d88626e99ea9e046f82f32e41bbde5f1508547e9a11b149b52387c 2446 | languageName: node 2447 | linkType: hard 2448 | 2449 | "picocolors@npm:^1.0.0": 2450 | version: 1.0.0 2451 | resolution: "picocolors@npm:1.0.0" 2452 | checksum: 20a5b249e331c14479d94ec6817a182fd7a5680debae82705747b2db7ec50009a5f6648d0621c561b0572703f84dbef0858abcbd5856d3c5511426afcb1961f7 2453 | languageName: node 2454 | linkType: hard 2455 | 2456 | "picomatch@npm:^2.3.1": 2457 | version: 2.3.1 2458 | resolution: "picomatch@npm:2.3.1" 2459 | checksum: 26c02b8d06f03206fc2ab8d16f19960f2ff9e81a658f831ecb656d8f17d9edc799e8364b1f4a7873e89d9702dff96204be0fa26fe4181f6843f040f819dac4be 2460 | languageName: node 2461 | linkType: hard 2462 | 2463 | "pluralize@npm:8.0.0": 2464 | version: 8.0.0 2465 | resolution: "pluralize@npm:8.0.0" 2466 | checksum: 2044cfc34b2e8c88b73379ea4a36fc577db04f651c2909041b054c981cd863dd5373ebd030123ab058d194ae615d3a97cfdac653991e499d10caf592e8b3dc33 2467 | languageName: node 2468 | linkType: hard 2469 | 2470 | "possible-typed-array-names@npm:^1.0.0": 2471 | version: 1.0.0 2472 | resolution: "possible-typed-array-names@npm:1.0.0" 2473 | checksum: d9aa22d31f4f7680e20269db76791b41c3a32c01a373e25f8a4813b4d45f7456bfc2b6d68f752dc4aab0e0bb0721cb3d76fb678c9101cb7a16316664bc2c73fd 2474 | languageName: node 2475 | linkType: hard 2476 | 2477 | "postcss@npm:8.4.31": 2478 | version: 8.4.31 2479 | resolution: "postcss@npm:8.4.31" 2480 | dependencies: 2481 | nanoid: "npm:^3.3.6" 2482 | picocolors: "npm:^1.0.0" 2483 | source-map-js: "npm:^1.0.2" 2484 | checksum: 748b82e6e5fc34034dcf2ae88ea3d11fd09f69b6c50ecdd3b4a875cfc7cdca435c958b211e2cb52355422ab6fccb7d8f2f2923161d7a1b281029e4a913d59acf 2485 | languageName: node 2486 | linkType: hard 2487 | 2488 | "prelude-ls@npm:^1.2.1": 2489 | version: 1.2.1 2490 | resolution: "prelude-ls@npm:1.2.1" 2491 | checksum: b00d617431e7886c520a6f498a2e14c75ec58f6d93ba48c3b639cf241b54232d90daa05d83a9e9b9fef6baa63cb7e1e4602c2372fea5bc169668401eb127d0cd 2492 | languageName: node 2493 | linkType: hard 2494 | 2495 | "prop-types@npm:^15.8.1": 2496 | version: 15.8.1 2497 | resolution: "prop-types@npm:15.8.1" 2498 | dependencies: 2499 | loose-envify: "npm:^1.4.0" 2500 | object-assign: "npm:^4.1.1" 2501 | react-is: "npm:^16.13.1" 2502 | checksum: 59ece7ca2fb9838031d73a48d4becb9a7cc1ed10e610517c7d8f19a1e02fa47f7c27d557d8a5702bec3cfeccddc853579832b43f449e54635803f277b1c78077 2503 | languageName: node 2504 | linkType: hard 2505 | 2506 | "punycode@npm:^2.1.0": 2507 | version: 2.3.1 2508 | resolution: "punycode@npm:2.3.1" 2509 | checksum: 14f76a8206bc3464f794fb2e3d3cc665ae416c01893ad7a02b23766eb07159144ee612ad67af5e84fa4479ccfe67678c4feb126b0485651b302babf66f04f9e9 2510 | languageName: node 2511 | linkType: hard 2512 | 2513 | "queue-microtask@npm:^1.2.2": 2514 | version: 1.2.3 2515 | resolution: "queue-microtask@npm:1.2.3" 2516 | checksum: 900a93d3cdae3acd7d16f642c29a642aea32c2026446151f0778c62ac089d4b8e6c986811076e1ae180a694cedf077d453a11b58ff0a865629a4f82ab558e102 2517 | languageName: node 2518 | linkType: hard 2519 | 2520 | "react-dom@npm:^18": 2521 | version: 18.2.0 2522 | resolution: "react-dom@npm:18.2.0" 2523 | dependencies: 2524 | loose-envify: "npm:^1.1.0" 2525 | scheduler: "npm:^0.23.0" 2526 | peerDependencies: 2527 | react: ^18.2.0 2528 | checksum: 66dfc5f93e13d0674e78ef41f92ed21dfb80f9c4ac4ac25a4b51046d41d4d2186abc915b897f69d3d0ebbffe6184e7c5876f2af26bfa956f179225d921be713a 2529 | languageName: node 2530 | linkType: hard 2531 | 2532 | "react-is@npm:^16.13.1": 2533 | version: 16.13.1 2534 | resolution: "react-is@npm:16.13.1" 2535 | checksum: 33977da7a5f1a287936a0c85639fec6ca74f4f15ef1e59a6bc20338fc73dc69555381e211f7a3529b8150a1f71e4225525b41b60b52965bda53ce7d47377ada1 2536 | languageName: node 2537 | linkType: hard 2538 | 2539 | "react@npm:^18": 2540 | version: 18.2.0 2541 | resolution: "react@npm:18.2.0" 2542 | dependencies: 2543 | loose-envify: "npm:^1.1.0" 2544 | checksum: b562d9b569b0cb315e44b48099f7712283d93df36b19a39a67c254c6686479d3980b7f013dc931f4a5a3ae7645eae6386b4aa5eea933baa54ecd0f9acb0902b8 2545 | languageName: node 2546 | linkType: hard 2547 | 2548 | "reflect.getprototypeof@npm:^1.0.4": 2549 | version: 1.0.6 2550 | resolution: "reflect.getprototypeof@npm:1.0.6" 2551 | dependencies: 2552 | call-bind: "npm:^1.0.7" 2553 | define-properties: "npm:^1.2.1" 2554 | es-abstract: "npm:^1.23.1" 2555 | es-errors: "npm:^1.3.0" 2556 | get-intrinsic: "npm:^1.2.4" 2557 | globalthis: "npm:^1.0.3" 2558 | which-builtin-type: "npm:^1.1.3" 2559 | checksum: baf4ef8ee6ff341600f4720b251cf5a6cb552d6a6ab0fdc036988c451bf16f920e5feb0d46bd4f530a5cce568f1f7aca2d77447ca798920749cfc52783c39b55 2560 | languageName: node 2561 | linkType: hard 2562 | 2563 | "regenerator-runtime@npm:^0.14.0": 2564 | version: 0.14.1 2565 | resolution: "regenerator-runtime@npm:0.14.1" 2566 | checksum: 1b16eb2c4bceb1665c89de70dcb64126a22bc8eb958feef3cd68fe11ac6d2a4899b5cd1b80b0774c7c03591dc57d16631a7f69d2daa2ec98100e2f29f7ec4cc4 2567 | languageName: node 2568 | linkType: hard 2569 | 2570 | "regexp.prototype.flags@npm:^1.5.2": 2571 | version: 1.5.2 2572 | resolution: "regexp.prototype.flags@npm:1.5.2" 2573 | dependencies: 2574 | call-bind: "npm:^1.0.6" 2575 | define-properties: "npm:^1.2.1" 2576 | es-errors: "npm:^1.3.0" 2577 | set-function-name: "npm:^2.0.1" 2578 | checksum: 0f3fc4f580d9c349f8b560b012725eb9c002f36daa0041b3fbf6f4238cb05932191a4d7d5db3b5e2caa336d5150ad0402ed2be81f711f9308fe7e1a9bf9bd552 2579 | languageName: node 2580 | linkType: hard 2581 | 2582 | "resolve-from@npm:^4.0.0": 2583 | version: 4.0.0 2584 | resolution: "resolve-from@npm:4.0.0" 2585 | checksum: 8408eec31a3112ef96e3746c37be7d64020cda07c03a920f5024e77290a218ea758b26ca9529fd7b1ad283947f34b2291c1c0f6aa0ed34acfdda9c6014c8d190 2586 | languageName: node 2587 | linkType: hard 2588 | 2589 | "resolve-pkg-maps@npm:^1.0.0": 2590 | version: 1.0.0 2591 | resolution: "resolve-pkg-maps@npm:1.0.0" 2592 | checksum: fb8f7bbe2ca281a73b7ef423a1cbc786fb244bd7a95cbe5c3fba25b27d327150beca8ba02f622baea65919a57e061eb5005204daa5f93ed590d9b77463a567ab 2593 | languageName: node 2594 | linkType: hard 2595 | 2596 | "resolve@npm:^1.22.4": 2597 | version: 1.22.8 2598 | resolution: "resolve@npm:1.22.8" 2599 | dependencies: 2600 | is-core-module: "npm:^2.13.0" 2601 | path-parse: "npm:^1.0.7" 2602 | supports-preserve-symlinks-flag: "npm:^1.0.0" 2603 | bin: 2604 | resolve: bin/resolve 2605 | checksum: 07e179f4375e1fd072cfb72ad66d78547f86e6196c4014b31cb0b8bb1db5f7ca871f922d08da0fbc05b94e9fd42206f819648fa3b5b873ebbc8e1dc68fec433a 2606 | languageName: node 2607 | linkType: hard 2608 | 2609 | "resolve@npm:^2.0.0-next.5": 2610 | version: 2.0.0-next.5 2611 | resolution: "resolve@npm:2.0.0-next.5" 2612 | dependencies: 2613 | is-core-module: "npm:^2.13.0" 2614 | path-parse: "npm:^1.0.7" 2615 | supports-preserve-symlinks-flag: "npm:^1.0.0" 2616 | bin: 2617 | resolve: bin/resolve 2618 | checksum: a6c33555e3482ea2ec4c6e3d3bf0d78128abf69dca99ae468e64f1e30acaa318fd267fb66c8836b04d558d3e2d6ed875fe388067e7d8e0de647d3c21af21c43a 2619 | languageName: node 2620 | linkType: hard 2621 | 2622 | "resolve@patch:resolve@npm%3A^1.22.4#~builtin": 2623 | version: 1.22.8 2624 | resolution: "resolve@patch:resolve@npm%3A1.22.8#~builtin::version=1.22.8&hash=c3c19d" 2625 | dependencies: 2626 | is-core-module: "npm:^2.13.0" 2627 | path-parse: "npm:^1.0.7" 2628 | supports-preserve-symlinks-flag: "npm:^1.0.0" 2629 | bin: 2630 | resolve: bin/resolve 2631 | checksum: 8/5479b7d431cacd5185f8db64bfcb7286ae5e31eb299f4c4f404ad8aa6098b77599563ac4257cb2c37a42f59dfc06a1bec2bcf283bb448f319e37f0feb9a09847 2632 | languageName: node 2633 | linkType: hard 2634 | 2635 | "resolve@patch:resolve@npm%3A^2.0.0-next.5#~builtin": 2636 | version: 2.0.0-next.5 2637 | resolution: "resolve@patch:resolve@npm%3A2.0.0-next.5#~builtin::version=2.0.0-next.5&hash=c3c19d" 2638 | dependencies: 2639 | is-core-module: "npm:^2.13.0" 2640 | path-parse: "npm:^1.0.7" 2641 | supports-preserve-symlinks-flag: "npm:^1.0.0" 2642 | bin: 2643 | resolve: bin/resolve 2644 | checksum: 8/064d09c1808d0c51b3d90b5d27e198e6d0c5dad0eb57065fd40803d6a20553e5398b07f76739d69cbabc12547058bec6b32106ea66622375fb0d7e8fca6a846c 2645 | languageName: node 2646 | linkType: hard 2647 | 2648 | "reusify@npm:^1.0.4": 2649 | version: 1.0.4 2650 | resolution: "reusify@npm:1.0.4" 2651 | checksum: c19ef26e4e188f408922c46f7ff480d38e8dfc55d448310dfb518736b23ed2c4f547fb64a6ed5bdba92cd7e7ddc889d36ff78f794816d5e71498d645ef476107 2652 | languageName: node 2653 | linkType: hard 2654 | 2655 | "rimraf@npm:^3.0.2": 2656 | version: 3.0.2 2657 | resolution: "rimraf@npm:3.0.2" 2658 | dependencies: 2659 | glob: "npm:^7.1.3" 2660 | bin: 2661 | rimraf: bin.js 2662 | checksum: 9cb7757acb489bd83757ba1a274ab545eafd75598a9d817e0c3f8b164238dd90eba50d6b848bd4dcc5f3040912e882dc7ba71653e35af660d77b25c381d402e8 2663 | languageName: node 2664 | linkType: hard 2665 | 2666 | "run-parallel@npm:^1.1.9": 2667 | version: 1.2.0 2668 | resolution: "run-parallel@npm:1.2.0" 2669 | dependencies: 2670 | queue-microtask: "npm:^1.2.2" 2671 | checksum: 200b5ab25b5b8b7113f9901bfe3afc347e19bb7475b267d55ad0eb86a62a46d77510cb0f232507c9e5d497ebda569a08a9867d0d14f57a82ad5564d991588b39 2672 | languageName: node 2673 | linkType: hard 2674 | 2675 | "safe-array-concat@npm:^1.1.2": 2676 | version: 1.1.2 2677 | resolution: "safe-array-concat@npm:1.1.2" 2678 | dependencies: 2679 | call-bind: "npm:^1.0.7" 2680 | get-intrinsic: "npm:^1.2.4" 2681 | has-symbols: "npm:^1.0.3" 2682 | isarray: "npm:^2.0.5" 2683 | checksum: 12f9fdb01c8585e199a347eacc3bae7b5164ae805cdc8c6707199dbad5b9e30001a50a43c4ee24dc9ea32dbb7279397850e9208a7e217f4d8b1cf5d90129dec9 2684 | languageName: node 2685 | linkType: hard 2686 | 2687 | "safe-regex-test@npm:^1.0.3": 2688 | version: 1.0.3 2689 | resolution: "safe-regex-test@npm:1.0.3" 2690 | dependencies: 2691 | call-bind: "npm:^1.0.6" 2692 | es-errors: "npm:^1.3.0" 2693 | is-regex: "npm:^1.1.4" 2694 | checksum: 900bf7c98dc58f08d8523b7012b468e4eb757afa624f198902c0643d7008ba777b0bdc35810ba0b758671ce887617295fb742b3f3968991b178ceca54cb07603 2695 | languageName: node 2696 | linkType: hard 2697 | 2698 | "scheduler@npm:^0.23.0": 2699 | version: 0.23.0 2700 | resolution: "scheduler@npm:0.23.0" 2701 | dependencies: 2702 | loose-envify: "npm:^1.1.0" 2703 | checksum: b777f7ca0115e6d93e126ac490dbd82642d14983b3079f58f35519d992fa46260be7d6e6cede433a92db70306310c6f5f06e144f0e40c484199e09c1f7be53dd 2704 | languageName: node 2705 | linkType: hard 2706 | 2707 | "semver@npm:^6.3.1": 2708 | version: 6.3.1 2709 | resolution: "semver@npm:6.3.1" 2710 | bin: 2711 | semver: bin/semver.js 2712 | checksum: e3d79b609071caa78bcb6ce2ad81c7966a46a7431d9d58b8800cfa9cb6a63699b3899a0e4bcce36167a284578212d9ae6942b6929ba4aa5015c079a67751d42d 2713 | languageName: node 2714 | linkType: hard 2715 | 2716 | "semver@npm:^7.5.4": 2717 | version: 7.6.0 2718 | resolution: "semver@npm:7.6.0" 2719 | dependencies: 2720 | lru-cache: "npm:^6.0.0" 2721 | bin: 2722 | semver: bin/semver.js 2723 | checksum: fbfe717094ace0aa8d6332d7ef5ce727259815bd8d8815700853f4faf23aacbd7192522f0dc5af6df52ef4fa85a355ebd2f5d39f554bd028200d6cf481ab9b53 2724 | languageName: node 2725 | linkType: hard 2726 | 2727 | "set-function-length@npm:^1.2.1": 2728 | version: 1.2.2 2729 | resolution: "set-function-length@npm:1.2.2" 2730 | dependencies: 2731 | define-data-property: "npm:^1.1.4" 2732 | es-errors: "npm:^1.3.0" 2733 | function-bind: "npm:^1.1.2" 2734 | get-intrinsic: "npm:^1.2.4" 2735 | gopd: "npm:^1.0.1" 2736 | has-property-descriptors: "npm:^1.0.2" 2737 | checksum: 82850e62f412a258b71e123d4ed3873fa9377c216809551192bb6769329340176f109c2eeae8c22a8d386c76739855f78e8716515c818bcaef384b51110f0f3c 2738 | languageName: node 2739 | linkType: hard 2740 | 2741 | "set-function-name@npm:^2.0.1, set-function-name@npm:^2.0.2": 2742 | version: 2.0.2 2743 | resolution: "set-function-name@npm:2.0.2" 2744 | dependencies: 2745 | define-data-property: "npm:^1.1.4" 2746 | es-errors: "npm:^1.3.0" 2747 | functions-have-names: "npm:^1.2.3" 2748 | has-property-descriptors: "npm:^1.0.2" 2749 | checksum: fce59f90696c450a8523e754abb305e2b8c73586452619c2bad5f7bf38c7b6b4651895c9db895679c5bef9554339cf3ef1c329b66ece3eda7255785fbe299316 2750 | languageName: node 2751 | linkType: hard 2752 | 2753 | "shebang-command@npm:^2.0.0": 2754 | version: 2.0.0 2755 | resolution: "shebang-command@npm:2.0.0" 2756 | dependencies: 2757 | shebang-regex: "npm:^3.0.0" 2758 | checksum: a41692e7d89a553ef21d324a5cceb5f686d1f3c040759c50aab69688634688c5c327f26f3ecf7001ebfd78c01f3c7c0a11a7c8bfd0a8bc9f6240d4f40b224e4e 2759 | languageName: node 2760 | linkType: hard 2761 | 2762 | "shebang-regex@npm:^3.0.0": 2763 | version: 3.0.0 2764 | resolution: "shebang-regex@npm:3.0.0" 2765 | checksum: 1dbed0726dd0e1152a92696c76c7f06084eb32a90f0528d11acd764043aacf76994b2fb30aa1291a21bd019d6699164d048286309a278855ee7bec06cf6fb690 2766 | languageName: node 2767 | linkType: hard 2768 | 2769 | "side-channel@npm:^1.0.4, side-channel@npm:^1.0.6": 2770 | version: 1.0.6 2771 | resolution: "side-channel@npm:1.0.6" 2772 | dependencies: 2773 | call-bind: "npm:^1.0.7" 2774 | es-errors: "npm:^1.3.0" 2775 | get-intrinsic: "npm:^1.2.4" 2776 | object-inspect: "npm:^1.13.1" 2777 | checksum: d2afd163dc733cc0a39aa6f7e39bf0c436293510dbccbff446733daeaf295857dbccf94297092ec8c53e2503acac30f0b78830876f0485991d62a90e9cad305f 2778 | languageName: node 2779 | linkType: hard 2780 | 2781 | "signal-exit@npm:^4.0.1": 2782 | version: 4.1.0 2783 | resolution: "signal-exit@npm:4.1.0" 2784 | checksum: 41602dce540e46d599edba9d9860193398d135f7ff72cab629db5171516cfae628d21e7bfccde1bbfdf11c48726bc2a6d1a8fb8701125852fbfda7cf19c6aa83 2785 | languageName: node 2786 | linkType: hard 2787 | 2788 | "slash@npm:^3.0.0": 2789 | version: 3.0.0 2790 | resolution: "slash@npm:3.0.0" 2791 | checksum: e18488c6a42bdfd4ac5be85b2ced3ccd0224773baae6ad42cfbb9ec74fc07f9fa8396bd35ee638084ead7a2a0818eb5e7151111544d4731ce843019dab4be47b 2792 | languageName: node 2793 | linkType: hard 2794 | 2795 | "source-map-js@npm:^1.0.2": 2796 | version: 1.2.0 2797 | resolution: "source-map-js@npm:1.2.0" 2798 | checksum: 7e5f896ac10a3a50fe2898e5009c58ff0dc102dcb056ed27a354623a0ece8954d4b2649e1a1b2b52ef2e161d26f8859c7710350930751640e71e374fe2d321a4 2799 | languageName: node 2800 | linkType: hard 2801 | 2802 | "streamsearch@npm:^1.1.0": 2803 | version: 1.1.0 2804 | resolution: "streamsearch@npm:1.1.0" 2805 | checksum: fbd9aecc2621364384d157f7e59426f4bfd385e8b424b5aaa79c83a6f5a1c8fd2e4e3289e95de1eb3511cb96bb333d6281a9919fafce760e4edb35b2cd2facab 2806 | languageName: node 2807 | linkType: hard 2808 | 2809 | "string-width-cjs@npm:string-width@^4.2.0, string-width@npm:^4.1.0": 2810 | version: 4.2.3 2811 | resolution: "string-width@npm:4.2.3" 2812 | dependencies: 2813 | emoji-regex: "npm:^8.0.0" 2814 | is-fullwidth-code-point: "npm:^3.0.0" 2815 | strip-ansi: "npm:^6.0.1" 2816 | checksum: 1e525e92e5eae0afd7454086eed9c818ee84374bb80328fc41217ae72ff5f065ef1c9d7f72da41de40c75fa8bb3dee63d92373fd492c84260a552c636392a47b 2817 | languageName: node 2818 | linkType: hard 2819 | 2820 | "string-width@npm:^5.0.1, string-width@npm:^5.1.2": 2821 | version: 5.1.2 2822 | resolution: "string-width@npm:5.1.2" 2823 | dependencies: 2824 | eastasianwidth: "npm:^0.2.0" 2825 | emoji-regex: "npm:^9.2.2" 2826 | strip-ansi: "npm:^7.0.1" 2827 | checksum: ab9c4264443d35b8b923cbdd513a089a60de339216d3b0ed3be3ba57d6880e1a192b70ae17225f764d7adbf5994e9bb8df253a944736c15a0240eff553c678ca 2828 | languageName: node 2829 | linkType: hard 2830 | 2831 | "string.prototype.matchall@npm:^4.0.10": 2832 | version: 4.0.11 2833 | resolution: "string.prototype.matchall@npm:4.0.11" 2834 | dependencies: 2835 | call-bind: "npm:^1.0.7" 2836 | define-properties: "npm:^1.2.1" 2837 | es-abstract: "npm:^1.23.2" 2838 | es-errors: "npm:^1.3.0" 2839 | es-object-atoms: "npm:^1.0.0" 2840 | get-intrinsic: "npm:^1.2.4" 2841 | gopd: "npm:^1.0.1" 2842 | has-symbols: "npm:^1.0.3" 2843 | internal-slot: "npm:^1.0.7" 2844 | regexp.prototype.flags: "npm:^1.5.2" 2845 | set-function-name: "npm:^2.0.2" 2846 | side-channel: "npm:^1.0.6" 2847 | checksum: 915a2562ac9ab5e01b7be6fd8baa0b2b233a0a9aa975fcb2ec13cc26f08fb9a3e85d5abdaa533c99c6fc4c5b65b914eba3d80c4aff9792a4c9fed403f28f7d9d 2848 | languageName: node 2849 | linkType: hard 2850 | 2851 | "string.prototype.trim@npm:^1.2.9": 2852 | version: 1.2.9 2853 | resolution: "string.prototype.trim@npm:1.2.9" 2854 | dependencies: 2855 | call-bind: "npm:^1.0.7" 2856 | define-properties: "npm:^1.2.1" 2857 | es-abstract: "npm:^1.23.0" 2858 | es-object-atoms: "npm:^1.0.0" 2859 | checksum: dcef1a0fb61d255778155006b372dff8cc6c4394bc39869117e4241f41a2c52899c0d263ffc7738a1f9e61488c490b05c0427faa15151efad721e1a9fb2663c2 2860 | languageName: node 2861 | linkType: hard 2862 | 2863 | "string.prototype.trimend@npm:^1.0.8": 2864 | version: 1.0.8 2865 | resolution: "string.prototype.trimend@npm:1.0.8" 2866 | dependencies: 2867 | call-bind: "npm:^1.0.7" 2868 | define-properties: "npm:^1.2.1" 2869 | es-object-atoms: "npm:^1.0.0" 2870 | checksum: 0a0b54c17c070551b38e756ae271865ac6cc5f60dabf2e7e343cceae7d9b02e1a1120a824e090e79da1b041a74464e8477e2da43e2775c85392be30a6f60963c 2871 | languageName: node 2872 | linkType: hard 2873 | 2874 | "string.prototype.trimstart@npm:^1.0.7": 2875 | version: 1.0.8 2876 | resolution: "string.prototype.trimstart@npm:1.0.8" 2877 | dependencies: 2878 | call-bind: "npm:^1.0.7" 2879 | define-properties: "npm:^1.2.1" 2880 | es-object-atoms: "npm:^1.0.0" 2881 | checksum: d53af1899959e53c83b64a5fd120be93e067da740e7e75acb433849aa640782fb6c7d4cd5b84c954c84413745a3764df135a8afeb22908b86a835290788d8366 2882 | languageName: node 2883 | linkType: hard 2884 | 2885 | "strip-ansi-cjs@npm:strip-ansi@^6.0.1, strip-ansi@npm:^6.0.0, strip-ansi@npm:^6.0.1": 2886 | version: 6.0.1 2887 | resolution: "strip-ansi@npm:6.0.1" 2888 | dependencies: 2889 | ansi-regex: "npm:^5.0.1" 2890 | checksum: 1ae5f212a126fe5b167707f716942490e3933085a5ff6c008ab97ab2f272c8025d3aa218b7bd6ab25729ca20cc81cddb252102f8751e13482a5199e873680952 2891 | languageName: node 2892 | linkType: hard 2893 | 2894 | "strip-ansi@npm:^7.0.1": 2895 | version: 7.1.0 2896 | resolution: "strip-ansi@npm:7.1.0" 2897 | dependencies: 2898 | ansi-regex: "npm:^6.0.1" 2899 | checksum: a198c3762e8832505328cbf9e8c8381de14a4fa50a4f9b2160138158ea88c0f5549fb50cb13c651c3088f47e63a108b34622ec18c0499b6c8c3a5ddf6b305ac4 2900 | languageName: node 2901 | linkType: hard 2902 | 2903 | "strip-bom@npm:^3.0.0": 2904 | version: 3.0.0 2905 | resolution: "strip-bom@npm:3.0.0" 2906 | checksum: 51201f50e021ef16672593d7434ca239441b7b760e905d9f33df6e4f3954ff54ec0e0a06f100d028af0982d6f25c35cd5cda2ce34eaebccd0250b8befb90d8f1 2907 | languageName: node 2908 | linkType: hard 2909 | 2910 | "strip-json-comments@npm:^3.1.1": 2911 | version: 3.1.1 2912 | resolution: "strip-json-comments@npm:3.1.1" 2913 | checksum: 9681a6257b925a7fa0f285851c0e613cc934a50661fa7bb41ca9cbbff89686bb4a0ee366e6ecedc4daafd01e83eee0720111ab294366fe7c185e935475ebcecd 2914 | languageName: node 2915 | linkType: hard 2916 | 2917 | "styled-jsx@npm:5.1.1": 2918 | version: 5.1.1 2919 | resolution: "styled-jsx@npm:5.1.1" 2920 | dependencies: 2921 | client-only: "npm:0.0.1" 2922 | peerDependencies: 2923 | react: ">= 16.8.0 || 17.x.x || ^18.0.0-0" 2924 | peerDependenciesMeta: 2925 | "@babel/core": 2926 | optional: true 2927 | babel-plugin-macros: 2928 | optional: true 2929 | checksum: 42655cdadfa5388f8a48bb282d6b450df7d7b8cf066ac37038bd0499d3c9f084815ebd9ff9dfa12a218fd4441338851db79603498d7557207009c1cf4d609835 2930 | languageName: node 2931 | linkType: hard 2932 | 2933 | "supports-color@npm:^7.1.0": 2934 | version: 7.2.0 2935 | resolution: "supports-color@npm:7.2.0" 2936 | dependencies: 2937 | has-flag: "npm:^4.0.0" 2938 | checksum: afb4c88521b8b136b5f5f95160c98dee7243dc79d5432db7efc27efb219385bbc7d9427398e43dd6cc730a0f87d5085ce1652af7efbe391327bc0a7d0f7fc124 2939 | languageName: node 2940 | linkType: hard 2941 | 2942 | "supports-preserve-symlinks-flag@npm:^1.0.0": 2943 | version: 1.0.0 2944 | resolution: "supports-preserve-symlinks-flag@npm:1.0.0" 2945 | checksum: 6c4032340701a9950865f7ae8ef38578d8d7053f5e10518076e6554a9381fa91bd9c6850193695c141f32b21f979c985db07265a758867bac95de05f7d8aeb39 2946 | languageName: node 2947 | linkType: hard 2948 | 2949 | "tapable@npm:^2.2.0": 2950 | version: 2.2.1 2951 | resolution: "tapable@npm:2.2.1" 2952 | checksum: bc40e6efe1e554d075469cedaba69a30eeb373552aaf41caeaaa45bf56ffacc2674261b106245bd566b35d8f3329b52d838e851ee0a852120acae26e622925c9 2953 | languageName: node 2954 | linkType: hard 2955 | 2956 | "text-table@npm:^0.2.0": 2957 | version: 0.2.0 2958 | resolution: "text-table@npm:0.2.0" 2959 | checksum: 02805740c12851ea5982686810702e2f14369a5f4c5c40a836821e3eefc65ffeec3131ba324692a37608294b0fd8c1e55a2dd571ffed4909822787668ddbee5c 2960 | languageName: node 2961 | linkType: hard 2962 | 2963 | "to-regex-range@npm:^5.0.1": 2964 | version: 5.0.1 2965 | resolution: "to-regex-range@npm:5.0.1" 2966 | dependencies: 2967 | is-number: "npm:^7.0.0" 2968 | checksum: 487988b0a19c654ff3e1961b87f471702e708fa8a8dd02a298ef16da7206692e8552a0250e8b3e8759270f62e9d8314616f6da274734d3b558b1fc7b7724e892 2969 | languageName: node 2970 | linkType: hard 2971 | 2972 | "ts-api-utils@npm:^1.0.1": 2973 | version: 1.3.0 2974 | resolution: "ts-api-utils@npm:1.3.0" 2975 | peerDependencies: 2976 | typescript: ">=4.2.0" 2977 | checksum: f54a0ba9ed56ce66baea90a3fa087a484002e807f28a8ccb2d070c75e76bde64bd0f6dce98b3802834156306050871b67eec325cb4e918015a360a3f0868c77c 2978 | languageName: node 2979 | linkType: hard 2980 | 2981 | "tsconfig-paths@npm:^3.15.0": 2982 | version: 3.15.0 2983 | resolution: "tsconfig-paths@npm:3.15.0" 2984 | dependencies: 2985 | "@types/json5": "npm:^0.0.29" 2986 | json5: "npm:^1.0.2" 2987 | minimist: "npm:^1.2.6" 2988 | strip-bom: "npm:^3.0.0" 2989 | checksum: 5b4f301a2b7a3766a986baf8fc0e177eb80bdba6e396792ff92dc23b5bca8bb279fc96517dcaaef63a3b49bebc6c4c833653ec58155780bc906bdbcf7dda0ef5 2990 | languageName: node 2991 | linkType: hard 2992 | 2993 | "tslib@npm:^2.4.0": 2994 | version: 2.6.2 2995 | resolution: "tslib@npm:2.6.2" 2996 | checksum: e03a8a4271152c8b26604ed45535954c0a45296e32445b4b87f8a5abdb2421f40b59b4ca437c4346af0f28179780d604094eb64546bee2019d903d01c6c19bdb 2997 | languageName: node 2998 | linkType: hard 2999 | 3000 | "type-check@npm:^0.4.0, type-check@npm:~0.4.0": 3001 | version: 0.4.0 3002 | resolution: "type-check@npm:0.4.0" 3003 | dependencies: 3004 | prelude-ls: "npm:^1.2.1" 3005 | checksum: 7b3fd0ed43891e2080bf0c5c504b418fbb3e5c7b9708d3d015037ba2e6323a28152ec163bcb65212741fa5d2022e3075ac3c76440dbd344c9035f818e8ecee58 3006 | languageName: node 3007 | linkType: hard 3008 | 3009 | "type-fest@npm:^0.20.2": 3010 | version: 0.20.2 3011 | resolution: "type-fest@npm:0.20.2" 3012 | checksum: dea9df45ea1f0aaa4e2d3bed3f9a0bfe9e5b2592bddb92eb1bf06e50bcf98dbb78189668cd8bc31a0511d3fc25539b4cd5c704497e53e93e2d40ca764b10bfc3 3013 | languageName: node 3014 | linkType: hard 3015 | 3016 | "typed-array-buffer@npm:^1.0.2": 3017 | version: 1.0.2 3018 | resolution: "typed-array-buffer@npm:1.0.2" 3019 | dependencies: 3020 | call-bind: "npm:^1.0.7" 3021 | es-errors: "npm:^1.3.0" 3022 | is-typed-array: "npm:^1.1.13" 3023 | checksum: 9e043eb38e1b4df4ddf9dde1aa64919ae8bb909571c1cc4490ba777d55d23a0c74c7d73afcdd29ec98616d91bb3ae0f705fad4421ea147e1daf9528200b562da 3024 | languageName: node 3025 | linkType: hard 3026 | 3027 | "typed-array-byte-length@npm:^1.0.1": 3028 | version: 1.0.1 3029 | resolution: "typed-array-byte-length@npm:1.0.1" 3030 | dependencies: 3031 | call-bind: "npm:^1.0.7" 3032 | for-each: "npm:^0.3.3" 3033 | gopd: "npm:^1.0.1" 3034 | has-proto: "npm:^1.0.3" 3035 | is-typed-array: "npm:^1.1.13" 3036 | checksum: fcebeffb2436c9f355e91bd19e2368273b88c11d1acc0948a2a306792f1ab672bce4cfe524ab9f51a0505c9d7cd1c98eff4235c4f6bfef6a198f6cfc4ff3d4f3 3037 | languageName: node 3038 | linkType: hard 3039 | 3040 | "typed-array-byte-offset@npm:^1.0.2": 3041 | version: 1.0.2 3042 | resolution: "typed-array-byte-offset@npm:1.0.2" 3043 | dependencies: 3044 | available-typed-arrays: "npm:^1.0.7" 3045 | call-bind: "npm:^1.0.7" 3046 | for-each: "npm:^0.3.3" 3047 | gopd: "npm:^1.0.1" 3048 | has-proto: "npm:^1.0.3" 3049 | is-typed-array: "npm:^1.1.13" 3050 | checksum: d2628bc739732072e39269389a758025f75339de2ed40c4f91357023c5512d237f255b633e3106c461ced41907c1bf9a533c7e8578066b0163690ca8bc61b22f 3051 | languageName: node 3052 | linkType: hard 3053 | 3054 | "typed-array-length@npm:^1.0.5": 3055 | version: 1.0.6 3056 | resolution: "typed-array-length@npm:1.0.6" 3057 | dependencies: 3058 | call-bind: "npm:^1.0.7" 3059 | for-each: "npm:^0.3.3" 3060 | gopd: "npm:^1.0.1" 3061 | has-proto: "npm:^1.0.3" 3062 | is-typed-array: "npm:^1.1.13" 3063 | possible-typed-array-names: "npm:^1.0.0" 3064 | checksum: 74253d7dc488eb28b6b2711cf31f5a9dcefc9c41b0681fd1c178ed0a1681b4468581a3626d39cd4df7aee3d3927ab62be06aa9ca74e5baf81827f61641445b77 3065 | languageName: node 3066 | linkType: hard 3067 | 3068 | "typescript@npm:^5": 3069 | version: 5.4.3 3070 | resolution: "typescript@npm:5.4.3" 3071 | bin: 3072 | tsc: bin/tsc 3073 | tsserver: bin/tsserver 3074 | checksum: 22443a8760c3668e256c0b34b6b45c359ef6cecc10c42558806177a7d500ab1a7d7aac1f976d712e26989ddf6731d2fbdd3212b7c73290a45127c1c43ba2005a 3075 | languageName: node 3076 | linkType: hard 3077 | 3078 | "typescript@patch:typescript@^5#~builtin": 3079 | version: 5.4.3 3080 | resolution: "typescript@patch:typescript@npm%3A5.4.3#~builtin::version=5.4.3&hash=e012d7" 3081 | bin: 3082 | tsc: bin/tsc 3083 | tsserver: bin/tsserver 3084 | checksum: 8/3a62fe90aa79d68c9ce38ea5edb2957e62801c733b99f0e5a2b8b50922761f68f7d9a40d28c544b449866e81185cddb93cba2496d0ff3fa52ef5b1f8bcace38c 3085 | languageName: node 3086 | linkType: hard 3087 | 3088 | "unbox-primitive@npm:^1.0.2": 3089 | version: 1.0.2 3090 | resolution: "unbox-primitive@npm:1.0.2" 3091 | dependencies: 3092 | call-bind: "npm:^1.0.2" 3093 | has-bigints: "npm:^1.0.2" 3094 | has-symbols: "npm:^1.0.3" 3095 | which-boxed-primitive: "npm:^1.0.2" 3096 | checksum: 81ca2e81134167cc8f75fa79fbcc8a94379d6c61de67090986a2273850989dd3bae8440c163121b77434b68263e34787a675cbdcb34bb2f764c6b9c843a11b66 3097 | languageName: node 3098 | linkType: hard 3099 | 3100 | "uncrypto@npm:0.1.3": 3101 | version: 0.1.3 3102 | resolution: "uncrypto@npm:0.1.3" 3103 | checksum: 74a29afefd76d5b77bedc983559ceb33f5bbc8dada84ff33755d1e3355da55a4e03a10e7ce717918c436b4dfafde1782e799ebaf2aadd775612b49f7b5b2998e 3104 | languageName: node 3105 | linkType: hard 3106 | 3107 | "undici-types@npm:~5.26.4": 3108 | version: 5.26.5 3109 | resolution: "undici-types@npm:5.26.5" 3110 | checksum: bb673d7876c2d411b6eb6c560e0c571eef4a01c1c19925175d16e3a30c4c428181fb8d7ae802a261f283e4166a0ac435e2f505743aa9e45d893f9a3df017b501 3111 | languageName: node 3112 | linkType: hard 3113 | 3114 | "uri-js@npm:^4.2.2": 3115 | version: 4.4.1 3116 | resolution: "uri-js@npm:4.4.1" 3117 | dependencies: 3118 | punycode: "npm:^2.1.0" 3119 | checksum: 4ef57b45aa820d7ac6496e9208559986c665e49447cb072744c13b66925a362d96dd5a46c4530a6b8e203e5db5fe849369444440cb22ecfc26c679359e5dfa3c 3120 | languageName: node 3121 | linkType: hard 3122 | 3123 | "which-boxed-primitive@npm:^1.0.2": 3124 | version: 1.0.2 3125 | resolution: "which-boxed-primitive@npm:1.0.2" 3126 | dependencies: 3127 | is-bigint: "npm:^1.0.1" 3128 | is-boolean-object: "npm:^1.1.0" 3129 | is-number-object: "npm:^1.0.4" 3130 | is-string: "npm:^1.0.5" 3131 | is-symbol: "npm:^1.0.3" 3132 | checksum: 0a62a03c00c91dd4fb1035b2f0733c341d805753b027eebd3a304b9cb70e8ce33e25317add2fe9b5fea6f53a175c0633ae701ff812e604410ddd049777cd435e 3133 | languageName: node 3134 | linkType: hard 3135 | 3136 | "which-builtin-type@npm:^1.1.3": 3137 | version: 1.1.3 3138 | resolution: "which-builtin-type@npm:1.1.3" 3139 | dependencies: 3140 | function.prototype.name: "npm:^1.1.5" 3141 | has-tostringtag: "npm:^1.0.0" 3142 | is-async-function: "npm:^2.0.0" 3143 | is-date-object: "npm:^1.0.5" 3144 | is-finalizationregistry: "npm:^1.0.2" 3145 | is-generator-function: "npm:^1.0.10" 3146 | is-regex: "npm:^1.1.4" 3147 | is-weakref: "npm:^1.0.2" 3148 | isarray: "npm:^2.0.5" 3149 | which-boxed-primitive: "npm:^1.0.2" 3150 | which-collection: "npm:^1.0.1" 3151 | which-typed-array: "npm:^1.1.9" 3152 | checksum: 2b7b234df3443b52f4fbd2b65b731804de8d30bcc4210ec84107ef377a81923cea7f2763b7fb78b394175cea59118bf3c41b9ffd2d643cb1d748ef93b33b6bd4 3153 | languageName: node 3154 | linkType: hard 3155 | 3156 | "which-collection@npm:^1.0.1": 3157 | version: 1.0.2 3158 | resolution: "which-collection@npm:1.0.2" 3159 | dependencies: 3160 | is-map: "npm:^2.0.3" 3161 | is-set: "npm:^2.0.3" 3162 | is-weakmap: "npm:^2.0.2" 3163 | is-weakset: "npm:^2.0.3" 3164 | checksum: 3345fde20964525a04cdf7c4a96821f85f0cc198f1b2ecb4576e08096746d129eb133571998fe121c77782ac8f21cbd67745a3d35ce100d26d4e684c142ea1f2 3165 | languageName: node 3166 | linkType: hard 3167 | 3168 | "which-typed-array@npm:^1.1.14, which-typed-array@npm:^1.1.15, which-typed-array@npm:^1.1.9": 3169 | version: 1.1.15 3170 | resolution: "which-typed-array@npm:1.1.15" 3171 | dependencies: 3172 | available-typed-arrays: "npm:^1.0.7" 3173 | call-bind: "npm:^1.0.7" 3174 | for-each: "npm:^0.3.3" 3175 | gopd: "npm:^1.0.1" 3176 | has-tostringtag: "npm:^1.0.2" 3177 | checksum: 4465d5348c044032032251be54d8988270e69c6b7154f8fcb2a47ff706fe36f7624b3a24246b8d9089435a8f4ec48c1c1025c5d6b499456b9e5eff4f48212983 3178 | languageName: node 3179 | linkType: hard 3180 | 3181 | "which@npm:^2.0.1": 3182 | version: 2.0.2 3183 | resolution: "which@npm:2.0.2" 3184 | dependencies: 3185 | isexe: "npm:^2.0.0" 3186 | bin: 3187 | node-which: ./bin/node-which 3188 | checksum: 66522872a768b60c2a65a57e8ad184e5372f5b6a9ca6d5f033d4b0dc98aff63995655a7503b9c0a2598936f532120e81dd8cc155e2e92ed662a2b9377cc4374f 3189 | languageName: node 3190 | linkType: hard 3191 | 3192 | "wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": 3193 | version: 7.0.0 3194 | resolution: "wrap-ansi@npm:7.0.0" 3195 | dependencies: 3196 | ansi-styles: "npm:^4.0.0" 3197 | string-width: "npm:^4.1.0" 3198 | strip-ansi: "npm:^6.0.0" 3199 | checksum: d15fc12c11e4cbc4044a552129ebc75ee3f57aa9c1958373a4db0292d72282f54373b536103987a4a7594db1ef6a4f10acf92978f79b98c49306a4b58c77d4da 3200 | languageName: node 3201 | linkType: hard 3202 | 3203 | "wrap-ansi@npm:^8.1.0": 3204 | version: 8.1.0 3205 | resolution: "wrap-ansi@npm:8.1.0" 3206 | dependencies: 3207 | ansi-styles: "npm:^6.1.0" 3208 | string-width: "npm:^5.0.1" 3209 | strip-ansi: "npm:^7.0.1" 3210 | checksum: 138ff58a41d2f877eae87e3282c0630fc2789012fc1af4d6bd626eeb9a2f9a65ca92005e6e69a75c7b85a68479fe7443c7dbe1eb8fbaa681a4491364b7c55c60 3211 | languageName: node 3212 | linkType: hard 3213 | 3214 | "wrappy@npm:1": 3215 | version: 1.0.2 3216 | resolution: "wrappy@npm:1.0.2" 3217 | checksum: 56fece1a4018c6a6c8e28fbc88c87e0fbf4ea8fd64fc6c63b18f4acc4bd13e0ad2515189786dd2c30d3eec9663d70f4ecf699330002f8ccb547e4a18231fc9f0 3218 | languageName: node 3219 | linkType: hard 3220 | 3221 | "yallist@npm:^4.0.0": 3222 | version: 4.0.0 3223 | resolution: "yallist@npm:4.0.0" 3224 | checksum: 2286b5e8dbfe22204ab66e2ef5cc9bbb1e55dfc873bbe0d568aa943eb255d131890dfd5bf243637273d31119b870f49c18fcde2c6ffbb7a7a092b870dc90625a 3225 | languageName: node 3226 | linkType: hard 3227 | 3228 | "yocto-queue@npm:^0.1.0": 3229 | version: 0.1.0 3230 | resolution: "yocto-queue@npm:0.1.0" 3231 | checksum: dceb44c28578b31641e13695d200d34ec4ab3966a5729814d5445b194933c096b7ced71494ce53a0e8820685d1d010df8b2422e5bf2cdea7e469d97ffbea306f 3232 | languageName: node 3233 | linkType: hard 3234 | --------------------------------------------------------------------------------